Transformers documentation
Colaborador de datos
Colaborador de datos
Los collators de datos son objetos que forman un lote utilizando como entrada una lista de elementos del conjunto de datos. Estos elementos son del mismo tipo que los elementos de train_dataset o eval_dataset.
Para poder construir lotes, los collators de datos pueden aplicar algún procesamiento (como relleno). Algunos de ellos (como DataCollatorForLanguageModeling) también aplican alguna aumentación aleatoria de datos (como enmascarado aleatorio) al lote formado.
Se pueden encontrar ejemplos de uso en los cuadernos de ejemplo.
Colador de datos predeterminado
Collator de datos muy simple que simplemente agrupa lotes de objetos tipo diccionario y realiza un tratamiento especial para las posibles claves denominadas:
label: maneja un único valor (int o float) por objetolabel_ids: maneja una lista de valores por objeto
No realiza ningún preprocesamiento adicional: los nombres de las propiedades del objeto de entrada se utilizarán como entradas correspondientes para el modelo. Consulte glue y ner como ejemplo de cómo es útil.
DefaultDataCollator
clase transformers.DefaultDataCollator
< source >( return_tensors: str = 'pt' )
Collator de datos muy simple que simplemente agrupa lotes de objetos tipo diccionario y realiza un tratamiento especial para las posibles claves denominadas:
label: maneja un único valor (int o float) por objetolabel_ids: maneja una lista de valores por objeto
No realiza ningún preprocesamiento adicional: los nombres de las propiedades del objeto de entrada se utilizarán como entradas correspondientes para el modelo. Consulte glue y ner como ejemplo de cómo es útil.
Este es un objeto (al igual que otros data collators) en lugar de una función pura como default_data_collator. Esto puede ser útil si necesitas establecer un valor de return_tensors durante la inicialización.
DataCollatorWithPadding
clase transformers.DataCollatorWithPadding
< source >( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )
Parámetros
- tokenizer (PreTrainedTokenizer o PreTrainedTokenizerFast) — El tokenizador utilizado para codificar los datos.
- padding (
bool,stro PaddingStrategy, opcional, por defectoTrue) — Seleccione una estrategia para rellenar las secuencias devueltas (según el lado de relleno y el índice de relleno del modelo) entre:Trueo'longest'(predeterminado): Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad': Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- max_length (
int, opcional) — Longitud máxima de la lista devuelta y, opcionalmente, longitud de relleno (véase arriba). - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo >= 7.0 (Volta).
- return_tensors (
str, opcional, valor predeterminado"pt") — El tipo de Tensor a devolver. Los valores permitidos son “np” o “pt”.
Colador de datos que rellenará dinámicamente las entradas recibidas.
DataCollatorForTokenClassification
clase transformers.DataCollatorForTokenClassification
< source >( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonelabel_pad_token_id: int = -100return_tensors: str = 'pt' )
Parámetros
- tokenizer (PreTrainedTokenizer o PreTrainedTokenizerFast) — El tokenizador utilizado para codificar los datos.
- padding (
bool,stro PaddingStrategy, opcional, por defectoTrue) — Seleccione una estrategia para rellenar las secuencias devueltas (según el lado de relleno y el índice de relleno del modelo) entre:Trueo'longest'(predeterminado): Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad': Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- max_length (
int, opcional) — Longitud máxima de la lista devuelta y, opcionalmente, longitud de relleno (véase arriba). - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo >= 7.0 (Volta).
- label_pad_token_id (
int, opcional, valor predeterminado -100) — El identificador que se utiliza al rellenar las etiquetas (-100 se ignorará automáticamente en las funciones de pérdida de PyTorch). - return_tensors (
str, opcional, valor predeterminado"pt") — El tipo de Tensor a devolver. Los valores permitidos son “np” o “pt”.
Colador de datos que rellenará dinámicamente las entradas recibidas, así como las etiquetas.
DataCollatorForSeq2Seq
clase transformers.DataCollatorForSeq2Seq
< source >( tokenizer: PreTrainedTokenizerBasemodel: typing.Any | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonelabel_pad_token_id: int = -100return_tensors: str = 'pt' )
Parámetros
- tokenizer (PreTrainedTokenizer o PreTrainedTokenizerFast) — El tokenizador utilizado para codificar los datos.
- model (PreTrainedModel, opcional) —
El modelo que se está entrenando. Si está definido y tiene el método prepare_decoder_input_ids_from_labels, úsalo para
preparar los decoder_input_ids
Esto es útil al usar label_smoothing para evitar calcular la pérdida dos veces.
- padding (
bool,stro PaddingStrategy, opcional, por defectoTrue) — Seleccione una estrategia para rellenar las secuencias devueltas (según el lado de relleno y el índice de relleno del modelo) entre:Trueo'longest'(predeterminado): Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad': Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- max_length (
int, opcional) — Longitud máxima de la lista devuelta y, opcionalmente, longitud de relleno (véase arriba). - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo >= 7.0 (Volta).
- label_pad_token_id (
int, opcional, valor predeterminado -100) — El identificador que se utiliza al rellenar las etiquetas (-100 se ignorará automáticamente por las funciones de pérdida de PyTorch). - return_tensors (
str, opcional, valor predeterminado"pt") — El tipo de Tensor a devolver. Los valores permitidos son “np” o “pt”.
Colador de datos que rellenará dinámicamente las entradas recibidas, así como las etiquetas.
DataCollatorForLanguageModeling
clase transformers.DataCollatorForLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBasemlm: bool = Truewhole_word_mask: bool = Falsemlm_probability: float | None = 0.15mask_replace_prob: float = 0.8random_replace_prob: float = 0.1pad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt'seed: int | None = None )
Parámetros
- tokenizer (PreTrainedTokenizer o PreTrainedTokenizerFast) — El tokenizador utilizado para codificar los datos.
- mlm (
bool, opcional, valor predeterminadoTrue) — Indica si se debe usar el modelado de lenguaje enmascarado. Si se establece enFalse, las etiquetas son las mismas que las entradas, ignorando los tokens de relleno (estableciéndolos en -100). En caso contrario, las etiquetas son -100 para los tokens no enmascarados y el valor a predecir para el token enmascarado. - whole_word_mask (
bool, opcional, valor predeterminadoFalse) — Si se deben enmascarar palabras completas en lugar de tokens individuales. - mlm_probability (
float, opcional, valor predeterminado 0.15) — La probabilidad con la que se enmascaran (aleatoriamente) los tokens en la entrada, cuandomlmse establece enTrue. - mask_replace_prob (
float, opcional, valor predeterminado 0.8) — La probabilidad con la que los tokens enmascarados se reemplazan por el token de máscara del tokenizador (p. ej.,[MASK]). El valor predeterminado es 0.8, lo que significa que el 80% de los tokens enmascarados se reemplazarán con[MASK]. Solo funciona cuandomlmestá establecido enTrue. - random_replace_prob (
float, opcional, valor predeterminado 0.1) — La probabilidad con la que los tokens enmascarados se reemplazan por tokens aleatorios del vocabulario del tokenizador. El valor predeterminado es 0.1, lo que significa que el 10% de los tokens enmascarados se reemplazará con tokens aleatorios. Los tokens enmascarados restantes (1 - mask_replace_prob - random_replace_prob) se dejan sin cambios. Solo funciona cuandomlmestá establecido enTrue. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la secuencia hasta un múltiplo del valor proporcionado. - return_tensors (
str) — El tipo de Tensor a devolver. Los valores permitidos son “np” o “pt”. - seed (
int, opcional) — La semilla a utilizar para el generador de números aleatorios para el enmascaramiento. Si no se proporciona, se utilizará el RNG global.
Colador de datos utilizado para el modelado de lenguaje. Las entradas se rellenan dinámicamente hasta la longitud máxima de un lote si no todas tienen la misma longitud.
Para obtener el mejor rendimiento, este data collator debe usarse con un conjunto de datos cuyos elementos sean diccionarios o BatchEncoding, con la clave
<Example Options and Expectations>"special_tokens_mask", tal como lo devuelve un PreTrainedTokenizer o un PreTrainedTokenizerFast con el argumentoreturn_special_tokens_mask=True.
Comportamiento predeterminado:
mask_replace_prob=0.8,random_replace_prob=0.1.- Esperamos que el 80% de los tokens enmascarados se reemplacen por
[MASK], el 10% se reemplace por tokens aleatorios y el 10% permanezca sin cambios.Todos los tokens enmascarados reemplazados por
[MASK]:
mask_replace_prob=1.0,random_replace_prob=0.0.- Se espera que todos los tokens enmascarados se reemplacen con
[MASK]. No se dejan tokens sin cambios ni se reemplazan con tokens aleatorios.Sin reemplazo de
[MASK], solo tokens aleatorios:
mask_replace_prob=0.0,random_replace_prob=1.0.- Esperar que todos los tokens enmascarados se reemplacen con tokens aleatorios. Sin reemplazos de
[MASK]ni tokens sin cambios.Sustitución equilibrada:
mask_replace_prob=0.5,random_replace_prob=0.4.- Esperamos que el 50% de los tokens enmascarados se reemplacen con
[MASK], el 40% se reemplace con tokens aleatorios y el 10% permanezca sin cambios.Nota: La suma de
mask_replace_probyrandom_replace_probno debe superar 1. Si su suma es menor que 1, la proporción restante consistirá en tokens enmascarados que se mantendrán sin cambios.
numpy_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Prepara las entradas/etiquetas de tokens enmascarados para el modelado de lenguaje enmascarado.
torch_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Prepara las entradas/etiquetas de tokens enmascarados para el modelado de lenguaje enmascarado.
DataCollatorForPermutationLanguageModeling
clase transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBaseplm_probability: float = 0.16666666666666666max_span_length: int = 5return_tensors: str = 'pt' )
Colador de datos utilizado para el modelado de lenguaje por permutación.
- agrupa lotes de tensores, respetando el pad_token de su tokenizador
- preprocesa lotes para el modelado de lenguaje por permutación con procedimientos específicos de XLNet
Los tokens enmascarados que se deben predecir para una secuencia en particular se determinan mediante el siguiente algoritmo:
- Comience desde el inicio de la secuencia estableciendo
cur_len = 0(número de tokens procesados hasta el momento). - Muestreea un
span_lengthdel intervalo[1, max_span_length](longitud del tramo de tokens que se van a enmascarar) - Reserve un contexto de longitud
context_length = span_length / plm_probabilitypara rodear el span que se va a enmascarar - Muestree un punto de inicio
start_indexdel intervalo[cur_len, cur_len + context_length - span_length]y enmascare los tokensstart_index:start_index + span_length - Establezca
cur_len = cur_len + context_length. Sicur_len < max_len(es decir, quedan tokens en la secuencia por procesar), repita desde el Paso 1.
Los tokens enmascarados que se deben predecir para una secuencia en particular se determinan mediante el siguiente algoritmo:
- Comience desde el inicio de la secuencia estableciendo
cur_len = 0(número de tokens procesados hasta el momento). - Muestreea un
span_lengthdel intervalo[1, max_span_length](longitud del tramo de tokens que se van a enmascarar) - Reserve un contexto de longitud
context_length = span_length / plm_probabilitypara rodear el span que se va a enmascarar - Muestree un punto de inicio
start_indexdel intervalo[cur_len, cur_len + context_length - span_length]y enmascare los tokensstart_index:start_index + span_length - Establezca
cur_len = cur_len + context_length. Sicur_len < max_len(es decir, quedan tokens en la secuencia por procesar), repita desde el Paso 1.
DataCollatorWithFlattening
clase transformers.DataCollatorWithFlattening
< source >( *argsreturn_position_ids = Trueseparator_id = -100return_flash_attn_kwargs = Falsereturn_seq_idx = Falseposition_ids_start = 0**kwargs )
Parámetros
- return_position_ids (
bool, opcional, valor predeterminadoTrue) — Si se deben devolverposition_ids, que se reinician enposition_ids_startpara cada secuencia aplanada. - separator_id (
int, opcional, valor predeterminado -100) — El valor utilizado para separar las secuencias dentro de laslabelsconcatenadas. - return_flash_attn_kwargs (
bool, opcional, valor predeterminadoFalse) — Si se devuelven los kwargs de los límites de secuencia utilizados por FlashAttention (cu_seq_lens_q,cu_seq_lens_k,max_length_qymax_length_k). - return_seq_idx (
bool, opcional, valor predeterminadoFalse) — Indica si se debe devolverseq_idx, que especifica la secuencia a la que pertenece cada token. - position_ids_start (
int, opcional, valor predeterminado 0) — El identificador de posición asignado al primer token de cada secuencia.
Colador de datos utilizado para el enfoque sin relleno. Realiza lo siguiente:
- concatena todo el mini lote en una única secuencia larga de forma [1, total_tokens]
- usa
separator_idpara separar las secuencias dentro delabelsconcatenadas, el valor predeterminado es -100 - no se añadirá padding, devuelve
input_ids,labelsyposition_idsde forma predeterminada - opcionalmente devuelve los kwargs contenidos en FlashAttentionKwargs
- opcionalmente devuelve seq_idx que indica a qué secuencia pertenece cada token
El uso de
DataCollatorWithFlatteningaplanará el mini lote completo en una única secuencia larga. ¡Asegúrate de que tu cálculo de atención pueda manejarlo!
No todos los modelos numeran las posiciones desde 0 al calcular los ids de posición por sí mismos. Las arquitecturas similares a RoBERTa (entre ellas
roberta,xlm_roberta,camembert,mpnetyesmcon embeddings de posición absoluta) comienzan enpadding_idx + 1, que suele ser 2. Si se pasan a estos modelos losposition_idspredeterminados basados en 0, los embeddings de posición se desplazan silenciosamente y se degradan sus salidas, por lo que hay que establecerposition_ids_starten consecuencia para esos modelos.
DataCollatorForMultipleChoice
clase transformers.DataCollatorForMultipleChoice
< source >( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )
Parámetros
- tokenizer (PreTrainedTokenizer o PreTrainedTokenizerFast) — El tokenizador utilizado para codificar los datos.
- padding (
bool,stro PaddingStrategy, opcional, por defectoTrue) — Seleccione una estrategia para rellenar las secuencias devueltas según el lado de relleno y el índice de relleno del modelo, entre:Trueo'longest': Rellena hasta la secuencia más larga del lote (o no aplica relleno si solo se proporciona una secuencia).'max_length': Rellena hasta una longitud máxima especificada con el argumentomax_lengtho hasta la longitud de entrada máxima aceptable para el modelo si no se proporciona dicho argumento.Falseo'do_not_pad'(predeterminado): Sin relleno (es decir, puede generar un lote con secuencias de diferentes longitudes).
- max_length (
int, opcional) — Longitud máxima de la lista devuelta y, opcionalmente, longitud de relleno (véase arriba). - pad_to_multiple_of (
int, opcional) — Rellena la secuencia hasta un múltiplo del valor proporcionado.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo >= 7.5 (Volta).
- return_tensors (
str, opcional, valor predeterminado"pt") — El tipo de Tensor a devolver. Los valores permitidos son “np” o “pt”.
Colador de datos que rellena dinámicamente un lote de ejemplos anidados para selección múltiple, de modo que todas las opciones de todos los ejemplos tengan la misma longitud.