class_docstr: Megatron NMT training
class_docstr_tok: ["Megatron","NMT","training"]
docstr: Function to log multilingual BLEU scores with the right source-target language string instead of just the dataloader idx.
code: def _log_multilingual_bleu_and_loss(
      self, dataloader_idx, bleu_score, loss, mode
  ):
      """
      Function to log multilingual BLEU scores with the right source-target language string instead of just the dataloader idx.
      """
      # Check if one-many or many-one and log with lang ids instead of dataloader_idx
      if isinstance(self.src_language, ListConfig):
          translation_lang_string = (
              f"{self.src_language[dataloader_idx]}-{self.tgt_language}"
          )
      else:
          translation_lang_string = (
              f"{self.src_language}-{self.tgt_language[dataloader_idx]}"
          )
  
      self.log(
          f"{mode}_sacreBLEU_{translation_lang_string}",
          bleu_score,
          sync_dist=True,
          batch_size=1,
      )
      self.log(
          f"{mode}_loss_{translation_lang_string}",
          loss,
          sync_dist=True,
          batch_size=1,
      )
  
imports: import enum
  import itertools
  import random
  from typing import List, Optional
  import numpy
  import torch
  from omegaconf.dictconfig import DictConfig
  from omegaconf.listconfig import ListConfig
  from pytorch_lightning.trainer.trainer import Trainer
  from sacrebleu import corpus_bleu
  from nemo.collections.nlp.data.common.sequence_to_sequence_dataset import BinarizedMemmapSequenceToSequenceDataset, TextMemmapSequenceToSequenceDataset
  from nemo.collections.nlp.data.language_modeling.megatron.base_dataset_utils import get_datasets_weights_and_num_samples
  from nemo.collections.nlp.data.language_modeling.megatron.blendable_dataset import BlendableDataset
  from nemo.collections.nlp.data.language_modeling.megatron.megatron_batch_samplers import MegatronPretrainingBatchSampler
  from nemo.collections.nlp.data.language_modeling.megatron.xlm_dataset import BinarizedMemmapCrossLingualMLMAndTranslationDataset, TextMemmapCrossLingualMLMAndTranslationDataset
  from nemo.collections.nlp.models.language_modeling.megatron_lm_encoder_decoder_model import MegatronLMEncoderDecoderModel
  from nemo.collections.nlp.models.language_modeling.megatron_t5_model import MegatronT5Model
  from nemo.collections.nlp.models.machine_translation.mt_enc_dec_model import MTEncDecModel
  from nemo.collections.nlp.modules.common.megatron.megatron_export import DecEmb, EncEmb, TokensHeadEmb
  from nemo.collections.nlp.modules.common.megatron.utils import get_iterator_k_split
  from nemo.collections.nlp.parts.nlp_overrides import GlobalBatchDataFetcher
  from nemo.collections.nlp.parts.utils_funcs import get_last_rank
  from nemo.core.classes import Exportable
  from nemo.utils import AppState, logging, timers
label_desc: Use image node_id 15 for calling the MegatronNMTModel obj's underlying member method code with example usage: obj._log_multilingual_bleu_and_loss(dataloader_idx, bleu_score, loss, mode) without return types