code: def create_position_ids_from_input_ids(
      input_ids, padding_idx, past_key_values_length=0
  ):
      """
      Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding symbols
      are ignored. This is modified from fairseq's `utils.make_positions`.
      """
      # The series of casts and type-conversions here are carefully balanced to both work with ONNX export and XLA.
      mask = input_ids.ne(padding_idx).int()
      incremental_indices = (
          torch.cumsum(mask, dim=1).type_as(mask)
          + past_key_values_length
      ) * mask
      return incremental_indices.long() + padding_idx
  
imports: import math
  from typing import List, Optional, Tuple, Union
  import torch
  from torch import nn
  from torch.nn import CrossEntropyLoss
  from ...activations import ACT2FN
  from ...integrations.deepspeed import is_deepspeed_zero3_enabled
  from ...modeling_attn_mask_utils import _prepare_4d_attention_mask, _prepare_4d_causal_attention_mask
  from ...modeling_outputs import BaseModelOutput, BaseModelOutputWithPastAndCrossAttentions, Seq2SeqLMOutput, Seq2SeqModelOutput
  from ...modeling_utils import PreTrainedModel
  from ...utils import add_code_sample_docstrings, add_end_docstrings, add_start_docstrings, add_start_docstrings_to_model_forward, logging, replace_return_docstrings
  from .configuration_m2m_100 import M2M100Config
label_desc: Use image node_id 2 for calling a global function with example usage: create_position_ids_from_input_ids(input_ids, padding_idx, past_key_values_length) and returns: unknown