AccuracyMetric automatically do ReduceOp.SUM in test_epoch_end 
my code:
    def test_step(self, batch, batch_idx):
         ...
        # self.accuracy_video = Accuracy()
        vid_acc = self.accuracy_video(video_labels_hat, video_labels)
        print("test_step, ", vid_acc)

        return {'test_loss': loss, "test_pacc": part_acc, "test_vacc": vid_acc}


    def test_epoch_end(self, outputs):
        avg_loss = torch.stack([x['test_loss'] for x in outputs]).mean()
        avg_acc = torch.stack([x['test_vacc'] for x in outputs]).mean()
        print("avg_acc_1:", avg_acc)
        dist.all_reduce(avg_loss, op=dist.ReduceOp.SUM)
        dist.all_reduce(avg_acc, op=dist.ReduceOp.SUM)
        print("avg_acc_2:", avg_acc)
        avg_acc = avg_acc / self.trainer.world_size
        return {'test_loss': avg_loss, 'test_acc': avg_acc,}

my test_step vid_acc is 0.6~0.7, normal, but in test_epoch_end, avg_acc_1=22.3333, avg_acc_2=714.6666. Does test_vacc  is already synced by dist.ReduceOp.SUM by default?  then I only need to do avg_acc = avg_acc / self.trainer.world_size?