class_docstr: Second stage pretraining of BERT based language model
  for entity linking task. An implementation of Liu et. al's
  NAACL 2021 paper Self-Alignment Pretraining for Biomedical Entity Representations.
class_docstr_tok: ["Second","stage","pretraining","of","BERT","based","language","model","for","entity","linking","task",".","An","implementation","of","Liu","et",".","al's","NAACL","2021","paper","Self-Alignment","Pretraining","for","Biomedical","Entity","Representations","."]
docstr: Lightning calls this inside the training loop with the data from the training dataloader
  passed in as `batch`.
docstr_tok: ["Lightning","calls","this","inside","the","training","loop","with","the","data","from","the","training","dataloader","passed","in","as","`","batch","`","."]
code: def training_step(self, batch, batch_idx):
      """
      Lightning calls this inside the training loop with the data from the training dataloader
      passed in as `batch`.
      """
      input_ids, token_type_ids, attention_mask, concept_ids = batch
      logits = self.forward(
          input_ids=input_ids,
          token_type_ids=token_type_ids,
          attention_mask=attention_mask,
      )
      train_loss = self.loss(logits=logits, labels=concept_ids)
  
      # No hard examples found in batch,
      # shouldn't use this batch to update model weights
      if train_loss == 0:
          train_loss = None
          lr = None
  
      else:
          lr = self._optimizer.param_groups[0]["lr"]
          self.log("train_loss", train_loss)
          self.log("lr", lr, prog_bar=True)
  
      return {"loss": train_loss, "lr": lr}
  
imports: from typing import Dict, Optional
  import torch
  from omegaconf import DictConfig
  from pytorch_lightning import Trainer
  from transformers import AutoTokenizer
  from nemo.collections.common.losses import MultiSimilarityLoss
  from nemo.collections.nlp.data import EntityLinkingDataset
  from nemo.collections.nlp.models.nlp_model import NLPModel
  from nemo.core.classes.common import typecheck
  from nemo.core.classes.exportable import Exportable
  from nemo.core.neural_types import LogitsType, NeuralType
  from nemo.utils import logging
label_desc: Use image node_id 5 for calling the EntityLinkingModel obj's underlying member method code with example usage: obj.training_step(batch, batch_idx) and returns: dict