Transformers documentation

Glosario

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

and get access to the augmented documentation experience

to get started

Glosario

Este glosario define términos generales de machine learning y de 🤗 Transformers para ayudarte a comprender mejor la documentación.

A

máscara de atención

La máscara de atención es un argumento opcional que se utiliza al agrupar secuencias en lotes.

Este argumento indica al modelo qué tokens deben ser atendidos y cuáles no.

Por ejemplo, considere estas dos secuencias:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."

>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]

Las versiones codificadas tienen longitudes diferentes:

>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)

Por lo tanto, no podemos agruparlos en el mismo tensor tal como están. La primera secuencia debe rellenarse hasta la longitud de la segunda, o bien la segunda debe truncarse hasta la longitud de la primera.

En el primer caso, la lista de IDs se extenderá con los índices de relleno. Podemos pasar una lista al tokenizador y pedirle que rellene de la siguiente manera:

>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)

Podemos ver que se han añadido 0 a la derecha de la primera oración para que tenga la misma longitud que la segunda:

>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]

A continuación, esto se puede convertir en un tensor en PyTorch. La máscara de atención es un tensor binario que indica la posición de los índices rellenos para que el modelo no preste atención a ellos. Para el BertTokenizer, 1 indica un valor al que se debe prestar atención, mientras que 0 indica un valor relleno. Esta máscara de atención se encuentra en el diccionario devuelto por el tokenizador bajo la clave “attention_mask”:

>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

modelos de autoencoding

Vea los modelos codificadores y el modelado de lenguaje enmascarado

modelos autoregresivos

Vea modelado de lenguaje causal y modelos decodificadores

B

backbone

El backbone es la red (embeddings y capas) que genera los estados ocultos o características crudos. Normalmente, se conecta a un head que recibe las características como entrada para realizar una predicción. Por ejemplo, ViTModel es un backbone sin un head específico en la parte superior. Otros modelos también pueden utilizar ViTModel como backbone, como DPT.

C

modelado de lenguaje causal

Una tarea de preentrenamiento en la que el modelo lee los textos en orden y debe predecir la siguiente palabra. Generalmente se realiza leyendo la oración completa, pero utilizando una máscara dentro del modelo para ocultar los tokens futuros en un cierto paso de tiempo.

canal

Las imágenes a color están compuestas por alguna combinación de valores en tres canales: rojo, verde y azul (RGB), y las imágenes en escala de grises solo tienen un canal. En 🤗 Transformers, el canal puede ser la primera o la última dimensión del tensor de una imagen: [n_channels, height, width] o [height, width, n_channels].

clasificación temporal conexionista (CTC)

Un algoritmo que permite a un modelo aprender sin conocer exactamente cómo se alinean la entrada y la salida; CTC calcula la distribución de todas las salidas posibles para una entrada dada y elige la salida más probable entre ellas. CTC se utiliza comúnmente en tareas de reconocimiento de voz porque el habla no siempre se alinea de manera limpia con la transcripción por diversas razones, como las diferentes velocidades de habla de un orador.

convolución

Un tipo de capa en una red neuronal donde la matriz de entrada se multiplica elemento a elemento por una matriz más pequeña (kernel o filtro) y los valores se suman en una nueva matriz. Esto se conoce como una operación de convolución, que se repite sobre toda la matriz de entrada. Cada operación se aplica a un segmento diferente de la matriz de entrada. Las redes neuronales convolucionales (CNN) se utilizan comúnmente en visión por computadora.

D

DataParallel (DP)

Técnica de paralelismo para el entrenamiento en varias GPU en la que la misma configuración se replica varias veces, con cada instancia recibiendo una porción de datos distinta. El procesamiento se realiza en paralelo y todas las configuraciones se sincronizan al final de cada paso de entrenamiento.

Obtenga más información sobre DataParallel.

IDs de entrada del decodificador

Esta entrada es específica para modelos encoder-decoder y contiene los IDs de entrada que se enviarán al decoder. Estas entradas deben usarse para tareas de secuencia a secuencia, como la traducción o el resumen, y generalmente se construyen de una manera específica para cada modelo.

La mayoría de los modelos encoder-decoder (BART, T5) crean sus decoder_input_ids por sí mismos a partir de los labels. En dichos modelos, pasar los labels es la forma preferida de gestionar el entrenamiento.

Consulte la documentación de cada modelo para ver cómo manejan estos IDs de entrada para el entrenamiento de secuencia a secuencia.

modelos decodificadores

También denominados modelos autoregresivos, los modelos decodificador implican una tarea de preentrenamiento (llamada modelado de lenguaje causal) en la que el modelo lee los textos en orden y debe predecir la siguiente palabra. Generalmente, se realiza leyendo la oración completa con una máscara para ocultar los tokens futuros en un cierto paso de tiempo.

aprendizaje profundo (DL)

Algoritmos de aprendizaje automático que utilizan redes neuronales con varias capas.

E

modelos de codificador

También conocidos como modelos de autoencoding, los modelos codificadores toman una entrada (como texto o imágenes) y la transforman en una representación numérica condensada llamada embedding. A menudo, los modelos codificadores se preentrenan utilizando técnicas como modelado de lenguaje enmascarado, que enmascara partes de la secuencia de entrada y obliga al modelo a crear representaciones más significativas.

F

extracción de características

El proceso de seleccionar y transformar datos crudos en un conjunto de características más informativas y útiles para los algoritmos de aprendizaje automático. Algunos ejemplos de extracción de características incluyen transformar texto crudo en incrustaciones de palabras y extraer características importantes, como bordes o formas, de datos de imágenes o videos.

fragmentación de la propagación hacia adelante

En cada bloque de atención residual de transformers, la capa de autoatención suele ir seguida de 2 capas de avance hacia adelante. El tamaño de la incrustación intermedia de las capas de avance hacia adelante suele ser mayor que el tamaño oculto del modelo (p. ej., para google-bert/bert-base-uncased).

Para una entrada de tamaño [batch_size, sequence_length], la memoria necesaria para almacenar las incrustaciones intermedias de la capa feed forward [batch_size, sequence_length, config.intermediate_size] puede representar una gran parte del uso de memoria. Los autores de Reformer: The Efficient Transformer observaron que, dado que el cálculo es independiente de la dimensión sequence_length, es matemáticamente equivalente calcular las incrustaciones de salida de ambas capas feed forward [batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n de forma individual y concatenarlas después en [batch_size, sequence_length, config.hidden_size] con n = sequence_length, lo que intercambia un mayor tiempo de cálculo por un menor uso de memoria, pero produce un resultado matemáticamente equivalente.

Para los modelos que emplean la función apply_chunking_to_forward(), el chunk_size define el número de embeddings de salida que se calculan en paralelo y, por lo tanto, define el equilibrio entre la complejidad de memoria y la de tiempo. Si chunk_size se establece en 0, no se realiza ninguna división en bloques de la capa feed forward.

modelos afinados

El finetuning es una forma de aprendizaje por transferencia que consiste en tomar un modelo preentrenado, congelar sus pesos y reemplazar la capa de salida con una cabecera de modelo recién añadida. La cabecera de modelo se entrena en su conjunto de datos objetivo.

Consulte el tutorial Fine-tune a pretrained model para más detalles y aprenda a ajustar modelos con 🤗 Transformers.

H

cabeza

La cabeza del modelo se refiere a la última capa de una red neuronal que acepta los estados ocultos crudos y los proyecta en una dimensión diferente. Existe una cabeza de modelo diferente para cada tarea. Por ejemplo:

I

parche de imagen

Los modelos Vision-based Transformers dividen una imagen en parches más pequeños que se incrustan linealmente y luego se pasan como una secuencia al modelo. Puede encontrar el patch_size (o resolución) del modelo en su configuración.

inferencia

La inferencia es el proceso de evaluar un modelo con datos nuevos una vez completado el entrenamiento. Consulte el tutorial Pipeline para inferencia para aprender a realizar inferencia con 🤗 Transformers.

IDs de entrada

Los ids de entrada suelen ser los únicos parámetros obligatorios que se deben pasar al modelo como entrada. Son índices de tokens, representaciones numéricas de los tokens que forman las secuencias que se utilizarán como entrada del modelo.

Cada tokenizador funciona de manera diferente, pero el mecanismo subyacente es el mismo. A continuación, se muestra un ejemplo que utiliza el tokenizador de BERT, que es un tokenizador WordPiece:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")

>>> sequence = "A Titan RTX has 24GB of VRAM"

El tokenizador se encarga de dividir la secuencia en tokens disponibles en el vocabulario del tokenizador.

>>> tokenized_sequence = tokenizer.tokenize(sequence)

Los tokens son palabras o subpalabras. En este caso, por ejemplo, “VRAM” no estaba en el vocabulario del modelo, por lo que se dividió en “V”, “RA” y “M”. Para indicar que esos tokens no son palabras separadas sino partes de la misma palabra, se añade un prefijo de doble almohadilla a “RA” y “M”:

>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']

Estos tokens pueden convertirse luego en IDs comprensibles por el modelo. Esto se puede hacer pasando la oración directamente al tokenizador, que aprovecha la implementación en Rust de 🤗 Tokenizers para un rendimiento óptimo.

>>> inputs = tokenizer(sequence)

El tokenizador devuelve un diccionario con todos los argumentos necesarios para que su modelo correspondiente funcione correctamente. Los índices de los tokens están bajo la clave input_ids:

>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]

Tenga en cuenta que el tokenizador añade automáticamente “tokens especiales” (si el modelo asociado depende de ellos), que son IDs especiales que el modelo utiliza a veces.

Si decodificamos la secuencia de ids anterior,

>>> decoded_sequence = tokenizer.decode(encoded_sequence)

veremos

>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]

porque esta es la forma en que un BertModel espera recibir sus entradas.

L

labels

Las etiquetas son un argumento opcional que se puede pasar para que el modelo calcule la pérdida por sí mismo. Estas etiquetas deben ser la predicción esperada del modelo: utilizará la pérdida estándar para calcular la pérdida entre sus predicciones y el valor esperado (la etiqueta).

Estas etiquetas son diferentes según la cabeza del modelo, por ejemplo:

  • Para los modelos de clasificación de secuencias (BertForSequenceClassification), el modelo espera un tensor de dimensión (batch_size) en el que cada valor del lote corresponde a la etiqueta esperada de la secuencia completa.
  • Para los modelos de clasificación de tokens (BertForTokenClassification), el modelo espera un tensor de dimensión (batch_size, seq_length) en el que cada valor corresponde a la etiqueta esperada de cada token individual.
  • Para el modelado de lenguaje enmascarado (BertForMaskedLM), el modelo espera un tensor de dimensión (batch_size, seq_length) en el que cada valor corresponde a la etiqueta esperada de cada token individual: las etiquetas son el ID del token para el token enmascarado y valores que se ignoran para el resto (normalmente -100).
  • Para tareas de secuencia a secuencia (BartForConditionalGeneration, MBartForConditionalGeneration), el modelo espera un tensor de dimensión (batch_size, tgt_seq_length) en el que cada valor corresponde a las secuencias objetivo asociadas con cada secuencia de entrada. Durante el entrenamiento, tanto BART como T5 generan internamente los decoder_input_ids y las máscaras de atención del decodificador adecuados. Por lo general, no es necesario proporcionarlos. Esto no se aplica a los modelos que utilizan el marco Encoder-Decoder.
  • Para los modelos de clasificación de imágenes (ViTForImageClassification), el modelo espera un tensor de dimensión (batch_size) en el que cada valor del lote corresponde a la etiqueta esperada de cada imagen individual.
  • Para los modelos de segmentación semántica (SegformerForSemanticSegmentation), el modelo espera un tensor de dimensión (batch_size, height, width) en el que cada valor del lote corresponde a la etiqueta esperada de cada píxel individual.
  • Para los modelos de detección de objetos (DetrForObjectDetection), el modelo espera una lista de diccionarios con las claves class_labels y boxes, donde cada valor del lote corresponde a la etiqueta esperada y al número de cajas delimitadoras de cada imagen individual.
  • Para los modelos de reconocimiento automático de voz, (Wav2Vec2ForCTC), el modelo espera un tensor de dimensión (batch_size, target_length) en el que cada valor corresponde a la etiqueta esperada de cada token individual.

Las etiquetas de cada modelo pueden ser diferentes, así que asegúrate de consultar siempre la documentación de cada modelo para obtener más información sobre sus etiquetas específicas.

Los modelos base (BertModel) no aceptan etiquetas, ya que son los modelos transformer base, que simplemente generan características.

modelos de lenguaje de gran escala (LLM)

Término genérico que se refiere a los modelos de lenguaje transformer (GPT-3, BLOOM, OPT) entrenados con una gran cantidad de datos. Estos modelos también suelen tener un gran número de parámetros aprendibles (p. ej., 175 mil millones en el caso de GPT-3).

M

modelado de lenguaje enmascarado (MLM)

Una tarea de preentrenamiento en la que el modelo ve una versión corrupta de los textos, generalmente realizada enmascarando aleatoriamente algunos tokens, y debe predecir el texto original.

multimodal

Una tarea que combina textos con otro tipo de entradas (por ejemplo, imágenes).

N

Generación de lenguaje natural (NLG)

Todas las tareas relacionadas con la generación de texto (por ejemplo, Write With Transformers, traducción).

Procesamiento del lenguaje natural (NLP)

Una forma genérica de decir “manejar textos”.

Comprensión del lenguaje natural (NLU)

Todas las tareas relacionadas con la comprensión de lo que hay en un texto (por ejemplo, clasificar el texto completo, palabras individuales).

P

pipeline

Un pipeline en 🤗 Transformers es una abstracción que se refiere a una serie de pasos que se ejecutan en un orden específico para preprocesar y transformar datos y devolver una predicción de un modelo. Algunos ejemplos de etapas que se encuentran en un pipeline son el preprocesamiento de datos, la extracción de características y la normalización.

Para más detalles, consulte Pipelines for inference.

PipelineParallel (PP)

Técnica de paralelismo en la que el modelo se divide verticalmente (a nivel de capa) entre varias GPU, de modo que solo una o varias capas del modelo se colocan en una sola GPU. Cada GPU procesa en paralelo diferentes etapas de la línea de producción y trabaja sobre un pequeño fragmento del lote. Obtenga más información sobre PipelineParallel.

valores de píxel

Un tensor con las representaciones numéricas de una imagen que se pasa a un modelo. Los valores de píxel tienen una forma de [batch_size, num_channels, height, width] y se generan a partir de un procesador de imágenes.

pooling

Una operación que reduce una matriz a una matriz más pequeña, ya sea tomando el máximo o el promedio de las dimensiones agrupadas. Las capas de pooling se encuentran comúnmente entre capas convolucionales para reducir la resolución de la representación de características.

IDs de posición

A diferencia de las RNN, que tienen la posición de cada token integrada en ellas, los transformers no son conscientes de la posición de cada token. Por lo tanto, los IDs de posición (position_ids) se utilizan en el modelo para identificar la posición de cada token en la lista de tokens.

Son un parámetro opcional. Si no se pasan position_ids al modelo, los ID se crean automáticamente como incrustaciones posicionales absolutas.

Los incrustamientos posicionales absolutos se seleccionan en el rango [0, config.max_position_embeddings - 1]. Algunos modelos utilizan otros tipos de incrustamientos posicionales, como incrustamientos posicionales sinusoidales o incrustamientos de posición relativa.

preprocesamiento

La tarea de preparar datos crudos en un formato que pueda ser consumido fácilmente por modelos de aprendizaje automático. Por ejemplo, el texto suele preprocesarse mediante tokenización. Para tener una mejor idea de cómo es el preprocesamiento para otros tipos de entrada, consulte el tutorial Preprocess.

modelo preentrenado

Un modelo que ha sido preentrenado con algunos datos (por ejemplo, toda Wikipedia). Los métodos de preentrenamiento implican un objetivo de autoaprendizaje, que puede ser leer el texto e intentar predecir la siguiente palabra (ver modelado de lenguaje causal) o enmascarar algunas palabras e intentar predecirlas (ver modelado de lenguaje enmascarado).

Los modelos de voz y visión tienen sus propios objetivos de preentrenamiento. Por ejemplo, Wav2Vec2 es un modelo de voz preentrenado en una tarea contrastiva que requiere que el modelo identifique la representación de voz “verdadera” a partir de un conjunto de representaciones de voz “falsas”. Por otro lado, BEiT es un modelo de visión preentrenado en una tarea de modelado de imágenes enmascaradas que enmascara algunas de las parches de la imagen y requiere que el modelo prediga los parches enmascarados (similar al objetivo de modelado de lenguaje enmascarado).

R

red neuronal recurrente (RNN)

Un tipo de modelo que utiliza un bucle sobre una capa para procesar textos.

aprendizaje de representaciones

Un subcampo del aprendizaje automático que se centra en aprender representaciones significativas de datos crudos. Algunos ejemplos de técnicas de aprendizaje de representaciones incluyen incrustaciones de palabras, auto codificadores y redes generativas adversarias (GAN).

S

tasa de muestreo

Una medición en hercios del número de muestras (la señal de audio) tomadas por segundo. La tasa de muestreo es el resultado de discretizar una señal continua, como el habla.

autoatención

Cada elemento de la entrada determina a qué otros elementos de la entrada debe prestar atención.

aprendizaje auto-supervisado

Una categoría de técnicas de aprendizaje automático en la que un modelo crea su propio objetivo de aprendizaje a partir de datos sin etiquetar. Difiere del aprendizaje no supervisado y del aprendizaje supervisado en que el proceso de aprendizaje está supervisado, pero no explícitamente por el usuario.

Un ejemplo de aprendizaje auto-supervisado es el modelado de lenguaje enmascarado, en el que se pasan a un modelo oraciones con una proporción de sus tokens eliminados y aprende a predecir los tokens faltantes.

aprendizaje semi-supervisado

Una amplia categoría de técnicas de entrenamiento de aprendizaje automático que aprovecha una pequeña cantidad de datos etiquetados junto con una mayor cantidad de datos sin etiquetar para mejorar la precisión de un modelo, a diferencia del aprendizaje supervisado y el aprendizaje no supervisado.

Un ejemplo de un enfoque de aprendizaje semisupervisado es el “autoentrenamiento”, en el que un modelo se entrena con datos etiquetados y luego se utiliza para realizar predicciones sobre los datos sin etiquetar. La porción de datos sin etiquetar que el modelo predice con mayor confianza se añade al conjunto de datos etiquetados y se utiliza para volver a entrenar el modelo.

secuencia a secuencia (seq2seq)

Modelos que generan una nueva secuencia a partir de una entrada, como los modelos de traducción o los de resumen (por ejemplo, Bart o T5).

DDP fragmentado

Otro nombre para el concepto fundamental de ZeRO utilizado por otras implementaciones de ZeRO.

stride

En convolución o pooling, el stride se refiere a la distancia que se desplaza el kernel sobre una matriz. Un stride de 1 significa que el kernel se desplaza un píxel a la vez, y un stride de 2 significa que el kernel se desplaza dos píxeles a la vez.

aprendizaje supervisado

Una forma de entrenamiento de modelos que utiliza directamente datos etiquetados para corregir y guiar el rendimiento del modelo. Los datos se introducen en el modelo que se está entrenando y sus predicciones se comparan con las etiquetas conocidas. El modelo actualiza sus pesos en función de lo incorrectas que fueron sus predicciones, y el proceso se repite para optimizar el rendimiento del modelo.

T

Paralelismo de tensores (TP)

Técnica de paralelismo para el entrenamiento en varias GPU en la que cada tensor se divide en varios fragmentos, de modo que, en lugar de que el tensor completo resida en una sola GPU, cada fragmento del tensor reside en su GPU designada. Los fragmentos se procesan de forma independiente y en paralelo en diferentes GPU y los resultados se sincronizan al final de la etapa de procesamiento. Esto es lo que a veces se denomina paralelismo horizontal, ya que la división ocurre a nivel horizontal. Más información sobre Tensor Parallelism aquí.

token

Una parte de una oración, normalmente una palabra, pero también puede ser un subtoken (las palabras poco comunes suelen dividirse en subtokens) o un símbolo de puntuación.

IDs de tipo de token

El propósito de algunos modelos es realizar clasificación en pares de oraciones o respuesta a preguntas.

Estas requieren que dos secuencias diferentes se unan en una única entrada de “input_ids”, lo que normalmente se realiza con la ayuda de tokens especiales, como el token de clasificador ([CLS]) y el token separador ([SEP]). Por ejemplo, el modelo BERT construye su entrada de dos secuencias de la siguiente manera:

>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]

Podemos usar nuestro tokenizador para generar automáticamente una oración así pasando las dos secuencias a tokenizer como dos argumentos (y no como una lista, como antes) de la siguiente manera:

>>> from transformers import BertTokenizer

>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"

>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])

que devolverá:

>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]

Esto es suficiente para que algunos modelos entiendan dónde termina una secuencia y dónde comienza otra. Sin embargo, otros modelos, como BERT, también utilizan identificadores de tipo de token (también llamados identificadores de segmento). Se representan como una máscara binaria que identifica los dos tipos de secuencia en el modelo.

El tokenizador devuelve esta máscara como la entrada “token_type_ids”:

>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]

La primera secuencia, el “contexto” utilizado para la pregunta, tiene todos sus tokens representados por un 0, mientras que la segunda secuencia, correspondiente a la “pregunta”, tiene todos sus tokens representados por un 1.

Algunos modelos, como XLNetModel, utilizan un token adicional representado por un 2.

transfer learning

Una técnica que consiste en tomar un modelo preentrenado y adaptarlo a un conjunto de datos específico para tu tarea. En lugar de entrenar un modelo desde cero, puedes aprovechar el conocimiento obtenido de un modelo existente como punto de partida. Esto acelera el proceso de aprendizaje y reduce la cantidad de datos de entrenamiento necesarios.

transformer

Arquitectura de modelo de aprendizaje profundo basada en autoatención.

U

aprendizaje no supervisado

Una forma de entrenamiento de modelos en la que los datos proporcionados al modelo no están etiquetados. Las técnicas de aprendizaje no supervisado aprovechan la información estadística de la distribución de los datos para encontrar patrones útiles para la tarea en cuestión.

Z

Optimizador de Redundancia Cero (ZeRO)

Técnica de paralelismo que realiza el particionamiento de los tensores de manera similar a TensorParallel, excepto que el tensor completo se reconstruye a tiempo para un cálculo de propagación hacia adelante o hacia atrás, por lo que el modelo no necesita ser modificado. Este método también admite diversas técnicas de descarga para compensar la memoria limitada de la GPU. Más información sobre ZeRO aquí.

Update on GitHub