class_docstr: This module produces sinusoidal positional embeddings of any length.
class_docstr_tok: ["This","module","produces","sinusoidal","positional","embeddings","of","any","length","."]
code: def forward(
      self,
      position_ids: torch.Tensor = None,
      past_key_values_length: int = 0,
  ):
      bsz, seq_len = position_ids.size()
      position_ids += self.offset
  
      # Expand embeddings if needed. `position_ids.max()` is NOT used to keep torch.fx compatibility.
      max_pos = 2 + seq_len + past_key_values_length
      if max_pos > self.weights.size(0):
          self.make_weights(
              max_pos, self.embedding_dim, self.padding_idx
          )
  
      return (
          self.weights.index_select(0, position_ids.view(-1))
          .view(bsz, seq_len, self.weights.shape[-1])
          .detach()
      )
  
imports: import math
  from typing import List, Optional, Tuple, Union
  import torch
  import torch.utils.checkpoint
  from torch import nn
  from torch.nn import CrossEntropyLoss
  from ...activations import ACT2FN
  from ...modeling_attn_mask_utils import _prepare_4d_attention_mask, _prepare_4d_causal_attention_mask
  from ...modeling_outputs import BaseModelOutputWithPastAndCrossAttentions, CausalLMOutputWithCrossAttentions
  from ...modeling_utils import PreTrainedModel
  from ...utils import add_code_sample_docstrings, add_start_docstrings, add_start_docstrings_to_model_forward, logging
  from .configuration_xglm import XGLMConfig
label_desc: Use image node_id 4 for calling the XGLMSinusoidalPositionalEmbedding obj's underlying member method code with example usage: obj.forward(position_ids, past_key_values_length) and returns: self