Transformers documentation

Capas y utilidades personalizadas

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Capas y utilidades personalizadas

Esta página enumera todas las capas personalizadas que utiliza la biblioteca, así como las funciones y clases de utilidad que proporciona para el modelado.

La mayoría de ellas solo son útiles si estás estudiando el código de los modelos de la biblioteca.

WeightRenaming

clase transformers.GroupWeightRename

< >

( source_patterns: list[str]target_patterns: list[str] )

Aplica una lista de transformaciones de WeightRenaming emparejadas, activadas de forma perezosa por el primer patrón de origen (“guard”). Utilice esto cuando dos renombramientos compartan un nombre intermedio (p. ej. norm0→norm1 y norm1→norm2) para que la carga de un checkpoint ya convertido (que tiene norm1 y norm2 pero no norm0) no vuelva a aplicar incorrectamente los renombramientos.

NOTA: ordene source_patterns de modo que el que no está presente en un checkpoint ya convertido aparezca primero. El state dict se itera en orden de claves ordenado, por lo que el patrón de guarda debe ser lexicográficamente menor que los patrones dependientes. De lo contrario, los dependientes se omitirán en el primer paso y nunca se reintentarán.

WeightConverter

clase transformers.WeightConverter

< >

( source_patterns: str | list[str]target_patterns: str | list[str]operations: list[ConversionOps]force_cpu: bool = False )

Operaciones de conversión

clase transformers.ConversionOps

< >

( )

Clase base para operaciones de conversión de pesos.

clase transformers.Chunk

< >

( dim: int = 0num_shards_attribute: str | None = None )

Divide un tensor a lo largo de dim en fragmentos de tamaño igual. Además, num_shards_attribute es un campo de configuración para leer y saber en cuántos fragmentos dividir los tensores. Útil al concatenar un número arbitrario de tensores.

clase transformers.Concatenate

< >

( dim: int = 0num_shards_attribute: str | None = None )

Concatena tensores a lo largo de dim. Además, si se concatenan un número arbitrario de tensores, num_shards_attribute es un campo de configuración que se lee para saber cuántos tensores recrear al usar las operaciones opuestas.

clase transformers.MergeModulelist

< >

( dim: int = 0 )

Fusiona una lista de tensores en un solo tensor a lo largo de la primera dimensión. Definimos esto explícitamente porque, para EP o TP, ¡quieres asegurarte de saber lo que estás haciendo!

clase transformers.SplitModulelist

< >

( dim: int = 0 )

Inverso de MergeModulelist usando tamaños de división explícitos por grupo.

clase transformers.PermuteForRope

< >

( subconfig_key: str | None = Nonepermute_layer_names: list[str] | None = Noneinverse: bool = False )

Aplica la permutación necesaria para convertir los pesos complejos de RoPE al formato dividido en sin/cos.

clase transformers.VisionFuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = True )

Aplica la permutación necesaria para convertir los pesos complejos de RoPE al formato de sin/cos dividido en QKV fusionado. Es lo mismo que llamar a PermuteForRope() + Concatenate(), pero nos permite llamar a Permute solo en un subconjunto de tensores fragmentados.

NOTA: esta conversión se aplica solo a un backbone de visión en modelos multimodales, porque comprueba config.vision_config

clase transformers.VisionUnfuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = False )

Aplica la permutación necesaria para convertir los pesos complejos de RoPE al formato dividido sin/cos en QKV fusionado. Es lo mismo que llamar a Chunk() + PermuteForRope(), pero nos permite llamar a Permute solo en un subconjunto de tensores segmentados.

NOTA: esta conversión se aplica solo a un backbone de visión en modelos multimodales, porque comprueba config.vision_config

Capas

clase transformers.GradientCheckpointingLayer

< >

( *args**kwargs )

Clase base para capas con punto de control de gradiente.

Esta clase habilita la funcionalidad de gradient checkpointing para una capa. De forma predeterminada, el gradient checkpointing está desactivado (gradient_checkpointing = False). Cuando se llama a model.set_gradient_checkpointing(), el gradient checkpointing se activa al establecer gradient_checkpointing = True y asignar una función de checkpointing a _gradient_checkpointing_func.

Importante:

Al usar gradient checkpointing con use_reentrant=True, las entradas que requieren gradientes (p. ej., hidden states) deben pasarse como argumentos posicionales (*args) en lugar de argumentos por palabra clave para propagar los gradientes correctamente.

Ejemplo:

>>> # Correct - hidden_states passed as positional arg
>>> out = self.layer(hidden_states, attention_mask=attention_mask)

>>> # Incorrect - hidden_states passed as keyword arg
>>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)

Funciones de atención

clase transformers.AttentionInterface

< >

( )

Objeto tipo diccionario que mantiene un registro de las funciones de atención permitidas. Puede agregar fácilmente una nueva función de atención con una llamada a register(). Si un modelo necesita sobrescribir localmente una función de atención existente, por ejemplo sdpa, debe declarar una nueva instancia de esta clase dentro de modeling_<model>.py y declararla en esa instancia.

register

< >

( key: strvalue: Callable )

Funciones de máscara de atención

clase transformers.AttentionMaskInterface

< >

( )

register

< >

( key: strvalue: Callable )

Funciones de incrustación de posición rotacional

transformers.dynamic_rope_update

< >

( rope_forward )

Parámetros

  • rope_forward (Callable) — La pasada hacia adelante de la implementación de RoPE.

Función decoradora para actualizar los parámetros de RoPE en la pasada hacia adelante, si el modelo está utilizando un RoPE dinámico (es decir, una implementación de RoPE que puede recalcular sus frecuencias en la pasada hacia adelante).

Módulos personalizados de Pytorch

clase transformers.Conv1D

< >

( nfnx )

Parámetros

  • nf (int) — El número de características de salida.
  • nx (int) — El número de características de entrada.

Capa de convolución 1D definida por Radford et al. para OpenAI GPT (y también utilizada en GPT-2).

Básicamente funciona como una capa lineal, pero los pesos están transpuestos.

Funciones auxiliares de PyTorch

transformers.apply_chunking_to_forward

< >

( forward_fn: Callable[..., torch.Tensor]chunk_size: intchunk_dim: int*input_tensors ) → torch.Tensor

Parámetros

  • forward_fn (Callable[..., torch.Tensor]) — La función de propagación hacia adelante del modelo.
  • chunk_size (int) — El tamaño de bloque de un tensor por bloques: num_chunks = len(input_tensors[0]) / chunk_size.
  • chunk_dim (int) — La dimensión sobre la que se deben dividir en bloques los input_tensors.
  • input_tensors (tuple[torch.Tensor]) — Los tensores de entrada de forward_fn que se dividirán en fragmentos

Devuelve

torch.Tensor

Un tensor con la misma forma que habría dado forward_fn si se hubiera aplicado`.

Esta función divide input_tensors en partes de tensor de entrada más pequeñas de tamaño chunk_size a lo largo de la dimensión chunk_dim. A continuación, aplica la capa forward_fn a cada fragmento de forma independiente para ahorrar memoria.

Si forward_fn es independiente a lo largo de chunk_dim, esta función producirá el mismo resultado que aplicar forward_fn directamente a input_tensors.

Ejemplos:

# rename the usual forward() fn to forward_chunk()
def forward_chunk(self, hidden_states):
    hidden_states = self.decoder(hidden_states)
    return hidden_states


# implement a chunked forward function
def forward(self, hidden_states):
    return apply_chunking_to_forward(self.forward_chunk, self.chunk_size_lm_head, self.seq_len_dim, hidden_states)

transformers.pytorch_utils.prune_linear_layer

< >

( layer: nn.Linearindex: torch.LongTensordim: int = 0 ) → torch.nn.Linear

Parámetros

  • layer (torch.nn.Linear) — La capa que se va a podar.
  • index (torch.LongTensor) — Los índices que se conservarán en la capa.
  • dim (int, opcional, valor predeterminado 0) — La dimensión sobre la que se conservan los índices.

Devuelve

torch.nn.Linear

La capa podada como una nueva capa con requires_grad=True.

Recorta una capa lineal para conservar solo las entradas en index.

Se utiliza para eliminar cabezas.

Update on GitHub