From 4152cf4615e234b9892703a8e088cdd51937fc13 Mon Sep 17 00:00:00 2001
From: haoneng.lhn <haoneng.lhn@alibaba-inc.com>
Date: 星期四, 07 十二月 2023 14:49:34 +0800
Subject: [PATCH] fix loss normalization for ddp training

---
 funasr/models/e2e_uni_asr.py |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/funasr/models/e2e_uni_asr.py b/funasr/models/e2e_uni_asr.py
index 8bc3b42..45d90f1 100644
--- a/funasr/models/e2e_uni_asr.py
+++ b/funasr/models/e2e_uni_asr.py
@@ -167,6 +167,7 @@
         self.enable_maas_finetune = enable_maas_finetune
         self.freeze_encoder2 = freeze_encoder2
         self.encoder1_encoder2_joint_training = encoder1_encoder2_joint_training
+        self.length_normalized_loss = length_normalized_loss
 
     def forward(
         self,
@@ -440,6 +441,8 @@
         stats["loss2"] = torch.clone(loss2.detach())
         stats["loss"] = torch.clone(loss.detach())
         # force_gatherable: to-device and to-tensor if scalar for DataParallel
+        if self.length_normalized_loss:
+            batch_size = (text_lengths + 1).sum().type_as(batch_size)
         loss, stats, weight = force_gatherable((loss, stats, batch_size), loss.device)
         return loss, stats, weight
 

--
Gitblit v1.9.1