docstr: Arguments:
      ignored_index: int. If labels == ignored_index, the loss is set to 0.0.
      label_smoothing: float
      lse_square_scale: float. If > 0, we add lse_square_scale * lse(logits) ^ 2 to the loss.
          This is also referred to as "z-loss".
      inplace_backward: bool. If True, we do the backward pass in-place by modifying the logits.
          This saves memory.
      process_group: if not None, we're doing Tensor Parallel: each process is responsible for
      one part of the vocab. The loss will be aggregated across processes.
docstr_tok: ["Arguments",":","ignored_index",":","int",".","If","labels","==","ignored_index",",","the","loss","is","set","to","0.0.","label_smoothing",":","float","lse_square_scale",":","float",".","If",">","0",",","we","add","lse_square_scale","*","lse","(","logits",")","^","2","to","the","loss",".","This","is","also","referred","to","as","``","z-loss","''",".","inplace_backward",":","bool",".","If","True",",","we","do","the","backward","pass","in-place","by","modifying","the","logits",".","This","saves","memory",".","process_group",":","if","not","None",",","we","'re","doing","Tensor","Parallel",":","each","process","is","responsible","for","one","part","of","the","vocab",".","The","loss","will","be","aggregated","across","processes","."]
code: def __init__(
      self,
      ignore_index=-100,
      reduction="mean",
      label_smoothing=0.0,
      logit_scale=1.0,
      lse_square_scale=0.0,
      inplace_backward=False,
      process_group=None,
  ):
      """
      Arguments:
          ignored_index: int. If labels == ignored_index, the loss is set to 0.0.
          label_smoothing: float
          lse_square_scale: float. If > 0, we add lse_square_scale * lse(logits) ^ 2 to the loss.
              This is also referred to as "z-loss".
          inplace_backward: bool. If True, we do the backward pass in-place by modifying the logits.
              This saves memory.
          process_group: if not None, we're doing Tensor Parallel: each process is responsible for
          one part of the vocab. The loss will be aggregated across processes.
      """
      super().__init__()
      if reduction not in ["mean", "none", "sum"]:
          raise NotImplementedError(
              "Only support reduction = 'mean' or 'none' or 'sum'"
          )
      self.ignore_index = ignore_index
      self.reduction = reduction
      self.label_smoothing = label_smoothing
      self.logit_scale = logit_scale
      self.lse_square_scale = lse_square_scale
      self.inplace_backward = inplace_backward
      self.process_group = process_group
  
imports: import torch
  import torch.nn
  from flash_attn.ops.triton.cross_entropy import cross_entropy_loss
label_desc: Use image node_id 1 to create a new CrossEntropyLoss object from inherited base classes: nn with example: obj = CrossEntropyLoss(ignore_index, reduction, label_smoothing, logit_scale, lse_square_scale, inplace_backward, process_group)