¿Cómo entrenar BertForMaskedLM utilizando el Entrenador de Huggingface?
Quiero continuar con el preentrenamiento del modelo BERT en mi propio conjunto de datos. Según entiendo, esto se denomina adaptación de dominio. Por lo tanto, este enfoque será no supervisado.
Usaré BertForMaskedLM
o BertForPreTraining
. ¿Cómo puedo lograr esto usando transformers.Trainer
? ¿Qué debe devolver mi clase Dataset
en el método __getitem__
? No pude encontrar ningún recurso específico sobre esto. Gracias.
davy.ai
Pre-entrenamiento BERT en su propio conjunto de datos
El pre-entrenamiento de BERT en su propio conjunto de datos se conoce como adaptación de dominio, y es un enfoque no supervisado. Para lograr esto mediante
transformers.Trainer
, puede usarBertForMaskedLM
oBertForPreTraining
.Para crear una clase
Dataset
para su propio conjunto de datos de pre-entrenamiento, debe devolver un diccionario con las siguientes claves:input_ids
: La secuencia de entrada con tokens enmascarados.attention_mask
: Un tensor que indica a qué tokens se debe prestar atención.token_type_ids
: Un tensor que indica qué partes de la secuencia de entrada corresponden a la primera oración y qué partes corresponden a la segunda oración (si se está utilizando un modelo de clasificación de pares de oraciones).masked_lm_labels
: Las etiquetas correspondientes a los tokens enmascarados.Aquí hay un ejemplo de cómo podría verse el método
__getitem__
de la claseDataset
:En este ejemplo,
tokenizer
es una instancia deBertTokenizer
, ydata_dir
es el directorio que contiene sus datos de pre-entrenamiento. La funciónmask_tokens
se utiliza para enmascarar aleatoriamente algunos de los tokens en la secuencia de entrada.Para pre-entrenar usando su propio conjunto de datos, puede utilizar el siguiente código:
En este ejemplo, el
model
se inicializa con el modelo base de BERT. Eltokenizer
se utiliza para tokenizar la secuencia de entrada. Eldataset
es los datos de entrenamiento, que es una instancia de la claseMyDataset
. Eldata_collator
se utiliza para agrupar las secuencias de entrada en lotes adecuados para el entrenamiento. Lostraining_args
son hiperparámetros paratransformers.Trainer
. Por último, eltrainer
se inicializa con elmodel
,training_args
,data_collator
, ytrain_dataset
, y se llama atrainer.train()
para iniciar el entrenamiento.¡Espero que esto le ayude a pre-entrenar BERT en su propio conjunto de datos utilizando
transformers.Trainer
!