es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conjunto de datos clave perdido durante el entrenamiento utilizando el entrenador de Hugging Face.

Estoy siguiendo el material del curso de Hugging Face: https://huggingface.co/course/chapter7/3?fw=pt (por cierto, excelente material).
Sin embargo, ahora me encuentro con un problema.

Cuando ejecuto el entrenamiento y la evaluación utilizando el datacollator predeterminado, todo va bien. Pero cuando uso el datacollator personalizado de enmascaramiento de palabras completas, no funciona porque falta la clave “word_ids”.

Mis datos son los siguientes:

DatasetDict({
train: Dataset({
    features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
    num_rows: 30639
})
test: Dataset({
    features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
    num_rows: 29946
})
unsupervised: Dataset({
    features: ['attention_mask', 'input_ids', 'labels', 'token_type_ids', 'word_ids'],
    num_rows: 61465
})
})

Cuando uso mi datacollator de enmascaramiento de palabras completas de la siguiente manera, todo está bien:

whole_word_masking_data_collator([lm_datasets["train"][0]])

Sin embargo, cuando lo uso en un entrenador de esta manera:

from transformers import Trainer

trainer = Trainer(
    model=masked_model,
    args=training_args,
    train_dataset=lm_datasets["train"],
    eval_dataset=lm_datasets["test"],
    data_collator=whole_word_masking_data_collator,
)

Me da el siguiente error:

KeyError: 'word_ids'

Lo cual me parece extraño porque esta clave está claramente presente en los datos y la función del datacollator de enmascaramiento de palabras completas funciona bien por sí sola.

Cuando verifiqué las claves en mi función, encontré que efectivamente falta la clave. Solo obtuve estas claves:

dict_keys(['attention_mask', 'input_ids', 'labels', 'token_type_ids'])

Entonces mi pregunta es: ¿Dónde en mi código falta la clave “word_ids”?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece ser que el problema podría estar en cómo se implementa la función whole_word_masking_data_collator. El mensaje de error indica que la clave “word_ids” no está presente en el diccionario de entrada cuando se pasa al Trainer.

    Una posibilidad es que la función no esté manejando correctamente los datos de entrada cuando se pasan como una lista, como en el ejemplo “whole_word_masking_data_collator([lm_datasets[“train”][0]])”. Puede ser necesario modificar la función para que maneje correctamente los datos de entrada en lotes.

    Otra posibilidad es que haya un problema con cómo se define la característica “word_ids” en los datos de entrada. Puede ser útil revisar nuevamente la definición de la característica y asegurarse de que se esté pasando correctamente al entrenador.

    Sin ver la implementación completa de la función whole_word_masking_data_collator y cómo se procesan los datos de lm_datasets, es difícil determinar exactamente dónde se encuentra el problema.

Comments are closed.