Transformers documentation

xLSTM

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

Este modelo se publicó en HF papers el 2024-05-07 y se contribuyó a Hugging Face Transformers el 2025-07-25.

xLSTM

Resumen

El modelo xLSTM fue propuesto en xLSTM: Extended Long Short-Term Memory por Maximilian Beck, Korbinian Pöppel, Markus Spanring, Andreas Auer, Oleksandra Prudnikova, Michael Kopp, Günter Klambauer, Johannes Brandstetter y Sepp Hochreiter. xLSTM actualiza la arquitectura original de LSTM para ser competitiva con los modelos Transformer mediante la introducción de un control exponencial, la expansión de la memoria matricial y un entrenamiento y una ingesta paralelizables.

La variante modelo 7B fue entrenada por el equipo de xLSTM: Maximilian Beck, Korbinian Pöppel, Phillip Lippe, Richard Kurle, Patrick Blies, Sebastian Böck y Sepp Hochreiter, de NXAI.

El resumen del artículo es el siguiente:

En la década de 1990, el carrusel de error constante y el gating se introdujeron como las ideas centrales de la memoria a largo y corto plazo (LSTM). Desde entonces, las LSTM han superado la prueba del tiempo y han contribuido a numerosos éxitos en el aprendizaje profundo; en particular, constituyeron los primeros modelos de lenguaje de gran escala (LLM). Sin embargo, el surgimiento de la tecnología Transformer, con su autoatención paralelizable como núcleo, marcó el alba de una nueva era, superando a las LSTM a gran escala. Ahora planteamos una pregunta sencilla: ¿Hasta dónde llegamos en el modelado de lenguaje al escalar las LSTM a miles de millones de parámetros, aprovechando las técnicas más recientes de los LLM modernos, pero mitigando las limitaciones conocidas de las LSTM? En primer lugar, introducimos un gating exponencial con técnicas adecuadas de normalización y estabilización. En segundo lugar, modificamos la estructura de memoria de la LSTM, obteniendo: (i) sLSTM con una memoria escalar, una actualización escalar y una nueva mezcla de memoria, (ii) mLSTM, que es totalmente paralelizable con una memoria matricial y una regla de actualización de covarianza. La integración de estas extensiones de LSTM en esqueletos de bloques residuales produce bloques xLSTM, que luego se apilan de forma residual en arquitecturas xLSTM. El gating exponencial y las estructuras de memoria modificadas potencian las capacidades de xLSTM para realizar un desempeño favorable en comparación con los Transformers y los modelos de espacio de estado más avanzados, tanto en rendimiento como en escalado.

Este modelo fue aportado por NX-AI. El código original se puede encontrar aquí.

Notas

  • Use padding izquierdo para la generación por lotes. Consulte Lado de relleno.

xLSTMConfig

clase transformers.xLSTMConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 50304hidden_size: int = 4096embedding_dim: int | None = Nonenum_hidden_layers: int = 32num_blocks: int | None = Nonenum_heads: int = 8use_bias: bool = Falsenorm_reduction_force_float32: bool = Truetie_word_embeddings: bool = Falseadd_out_norm: bool = Truenorm_eps: float = 1e-06qk_dim_factor: float = 0.5v_dim_factor: float = 1.0chunkwise_kernel: typing.Literal['chunkwise--native_autograd', 'parallel--native_autograd'] = 'chunkwise--native_autograd'sequence_kernel: typing.Literal['native_sequence__native'] = 'native_sequence__native'step_kernel: typing.Literal['native'] = 'native'mode: typing.Literal['train', 'train_with_padding', 'inference'] = 'inference'chunk_size: int = 64return_last_states: bool = Trueautocast_kernel_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'bfloat16'eps: float = 1e-06inference_state_dtype: typing.Literal['float32', 'bfloat16', 'float16'] = 'float32'ffn_proj_factor: float = 2.667ffn_round_up_to_multiple_of: int = 64gate_soft_cap: float = 15.0output_logit_soft_cap: float = 30.0weight_mode: typing.Literal['single', 'fused'] = 'single'use_cache: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_inference_chunksize: int = 16384 )

Parámetros

  • vocab_size (int, opcional, valor predeterminado 50304) — Tamaño del vocabulario del modelo. Define el número de tokens diferentes que pueden representarse mediante input_ids.
  • hidden_size (int, opcional, valor predeterminado 4096) — Dimensión de las representaciones ocultas.
  • embedding_dim (int, opcional) — Dimensionalidad de los embeddings y los estados ocultos.
  • num_hidden_layers (int, opcional, valor predeterminado 32) — Número de capas ocultas en el decodificador del Transformer.
  • num_blocks (int, opcional, opcional, valor predeterminado 32) — Número de bloques del modelo xLSTM; si es None, se usa num_hidden_layers.
  • num_heads (int, opcional, opcional, valor predeterminado 8) — Número de cabezas para la capa/celda xLSTM.
  • use_bias (bool, opcional, opcional, valor predeterminado False) — Indica si se deben usar sesgos en el modelo xLSTM.
  • norm_reduction_force_float32 (bool, opcional, opcional, valor predeterminado True) — Si se debe forzar que la operación de reducción de la norma se realice en precisión fp32.
  • tie_word_embeddings (bool, opcional, valor predeterminado False) — Si se deben vincular las matrices de pesos de embeddings según el mapeo tied_weights_keys del modelo.
  • add_out_norm (bool, opcional, opcional, valor predeterminado True) — Indica si se debe añadir una normalización de salida después de los bloques y antes del LMHead.
  • norm_eps (float, opcional, valor predeterminado 1e-06) — La epsilon utilizada por las capas de normalización de capas.
  • qk_dim_factor (float, opcional, opcional, valor predeterminado 0.5) — Factor de escala para la dimensión de la consulta y la clave.
  • v_dim_factor (float, opcional, opcional, valor predeterminado 1.0) — Factor de escala para la dimensión de valor.
  • chunkwise_kernel (ChunkwiseKernelType, opcional, opcional, valor predeterminado "chunkwise--native_autograd") — Tipo de kernel para el modo de procesamiento por fragmentos.
  • sequence_kernel (SequenceKernelType, opcional, opcional, valor predeterminado "native_sequence__native") — Tipo de kernel para el modo de procesamiento de secuencias.
  • step_kernel (StepKernelType, opcional, opcional, valor predeterminado "native") — Tipo de kernel para el modo de procesamiento de pasos.
  • mode (BackendModeType, opcional, opcional, valor predeterminado "inference") — Modo de operación (se necesita inferencia para la generación).
  • chunk_size (int, opcional, opcional, valor predeterminado 64) — Tamaño de bloque interno.
  • return_last_states (bool, opcional, opcional, valor predeterminado True) — Si se deben devolver internamente los últimos estados / caché. Debe ser True para la generación.
  • autocast_kernel_dtype (DtypeType, opcional, opcional, valor predeterminado "bfloat16") — Dtype del kernel para los estados.
  • eps (float, opcional, valor predeterminado 1e-06) — La epsilon utilizada por las capas de normalización de capas.
  • inference_state_dtype (DtypeType, opcional, opcional, valor predeterminado "float32") — Dtype del kernel para los estados en la inferencia.
  • ffn_proj_factor (float, opcional, opcional, valor predeterminado 2.667) — Factor de tamaño de la proyección posterior de la red Feed Forward con compuerta.
  • ffn_round_up_to_multiple_of (int, opcional, opcional, valor predeterminado: 64) — Factor de tamaño para redondear el valor de la proyección posterior de la red Feed Forward con puerta.
  • gate_soft_cap (float, opcional, opcional, valor predeterminado 15.0) — Escala del límite suave de la compuerta.
  • output_logit_soft_cap (float, opcional, opcional, valor predeterminado 30.0) — Escala del límite suave de los logits de salida.
  • weight_mode (Literal, opcional, valor predeterminado "single") — Indica si las capas lineales paralelas están separadas o fusionadas (single).
  • use_cache (bool, opcional, valor predeterminado True) — Indica si el modelo debe devolver las últimas claves/valores de atención (no utilizado por todos los modelos). Solo es relevante si config.is_decoder=True o cuando el modelo es un modelo generativo solo de decodificador.
  • pad_token_id (int, opcional, valor predeterminado 1) — Id del token utilizado para el relleno en el vocabulario.
  • bos_token_id (int, opcional, valor predeterminado 0) — Id del token utilizado para el inicio de la secuencia en el vocabulario.
  • eos_token_id (Union[int, list[int]], opcional, valor predeterminado 2) — Identificador de token utilizado para el fin de secuencia en el vocabulario.
  • max_inference_chunksize (int, opcional, opcional, valor predeterminado 16384) — Limita el tamaño de los bloques para la inferencia y ahorrar memoria.

Esta es la clase de configuración para almacenar la configuración de un xLSTMModel. Se utiliza para instanciar un modelo Xlstm según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de NX-AI/xLSTM-7b

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Ejemplo:

>>> from transformers import xLSTMConfig, xLSTMModel

>>> # Initializing a xLSTM configuration
>>> configuration = xLSTMConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = xLSTMModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

xLSTMModel

clase transformers.xLSTMModel

< >

( config: xLSTMConfig )

Parámetros

  • config (xLSTMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo Xlstm sin procesar que genera estados ocultos sin ningún cabezal específico en la parte superior.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.LongTensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMOutput or tuple(torch.Tensor)

Parámetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • inputs_embeds (torch.LongTensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • cache_params (xLSTMCache, opcional) — El xLSTMCache que transporta los estados del RNN.
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

xLSTMOutput o tuple(torch.Tensor)

Un xLSTMOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (xLSTMConfig) y las entradas.

El método forward de xLSTMModel reemplaza el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Secuencia de estados ocultos en la salida de la última capa del modelo.

  • cache_params (~models.xlstm.modeling_xlstm.xLSTMCache, opcional) — El estado del modelo en el último paso de tiempo. Puede usarse en un método forward con los siguientes input_ids para evitar proporcionar los input_ids anteriores.

  • hidden_states (tuple[torch.Tensor], opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.

xLSTMLMHeadModel

clase transformers.xLSTMForCausalLM

< >

( config: xLSTMConfig )

Parámetros

  • config (xLSTMConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo Xlstm para el modelado causal de lenguaje.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonecache_params: transformers.models.xlstm.modeling_xlstm.xLSTMCache | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → xLSTMCausalLMOutput or tuple(torch.Tensor)

Parámetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • cache_params (xLSTMCache, opcional) — El xLSTMCache que transporta los estados del RNN.
  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. Los índices deben estar en [0, ..., config.vocab_size] o ser -100 (ver la docstring de input_ids). Los tokens con índices establecidos en -100 se ignoran (enmascarados); la pérdida solo se calcula para los tokens con etiquetas en [0, ..., config.vocab_size].
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

xLSTMCausalLMOutput o tuple(torch.Tensor)

Un xLSTMCausalLMOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (xLSTMConfig) y las entradas.

El método forward de xLSTMForCausalLM reemplaza el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, se devuelve cuando se proporciona labels) — Pérdida de modelado de lenguaje (para la predicción del siguiente token).

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje (puntuaciones para cada token del vocabulario antes de SoftMax).

  • cache_params (xLSTMCache, opcional, que contiene los estados del RNN) — El estado del modelo en el último paso de tiempo. Puede utilizarse en un método de propagación hacia adelante junto con los siguientes input_ids para evitar proporcionar los input_ids anteriores.

  • hidden_states (tuple[torch.Tensor], opcional, se devuelve cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.

Ejemplo:

Update on GitHub