El proyecto es un módulo de Python que facilita el pretrenamiento de Bert. La solución actual de código abierto existente para capacitar a este modelo específico es complicado. Hemos simplificado el procedimiento. El objetivo del proyecto es abrir el código a la comunidad de aprendizaje automático más amplio para ayudar a los profesionales de ML a capacitar a sus propios modelos Bert utilizando sus datos. El código fue creado para capacitar a la última iteración del modelo BERT (VBERT) de VMware para ayudar a los investigadores de aprendizaje automático y procesamiento de lenguaje natural dentro de VMware.
El cuaderno de demostración se encuentra dentro de la carpeta de demostración
Configurar un envirio virtual de Python 3.7 o 3.8 Instale los requisitos utilizando
pip install . desde dentro de la carpeta raíz
o
pip install git+https://github.com/vmware-labs/bert-pretraining
Cree los datos de preperación utilizando create_pretining_data.py desde https://github.com/google-research/bert.
Puede crear un archivo de evaluación separado si desea evaluar las precisiones MLM y NSP de su modelo en una evaluación separada establecida durante la capacitación.
También puede dividir un solo archivo en vectores de entrenamiento y evaluación utilizando el parámetro Split_Ratio en el objeto de configuración.
Los parámetros de previación se manejan a través de la clase Pretratining_Config. Siga la demo.ipynb para ejecutar una muestra de pretrenamiento Bert.
PARAMS PROTRAINING_CONFIG
| Parámetro | Valor predeterminado | Descripción |
|---|---|---|
| model_name | Demobert | Nombre del modelo |
| IS_BASE | Verdadero | Booleano para seleccionar entre Bert-Base y Bert-Large |
| max_seq_length | 128 | MSL, debe ser consistente con el archivo TFRecord (genere 2 archivos separados si desea que se prohíba a Bert con diferentes MSL, por ejemplo, 128, 512) |
| max_predictions_per_seq | 20 | El número de tokens enmascarados para MLM, debe ser consistente con el archivo TFRecord |
| num_train_steps | 1000 | Número de pasos para capacitar al modelo, termina si llegamos al final del archivo TFRecord (el pre -proyren significativo requeriría más pasos de entrenamiento) |
| num_warmup_steps | 10 | Número de pasos de calentamiento, Bert utiliza el 1% de los pasos de entrenamiento como pasos de calentamiento |
| aprendizaje_rate | 1e-05 | Tasa de aprendizaje de modelo |
| Train_batch_size | 32 | Tamaño de lote de entrenamiento (dividido en GPU) |
| save_intermediate_checkpoints | Verdadero | Guardar puntos de control para cada pasos de entrenamiento 'X' decididos por save_checkpoint_steps. El punto de control siempre se guardará al final de la capacitación |
| save_intermediate_checkpoint_steps | 25000 | Guarda el punto de control después de cada pasos de entrenamiento 'x' (sin incluir pasos de calentamiento) |
| eval_batch_size | 32 | Tamaño de lote de evaluación (dividido en GPU) |
| max_eval_steps | 1000 | Número de pasos para realizar la evaluación sobre cuándo no hay un archivo de evaluación separado. Si se proporciona un archivo de evaluación separado o si se proporciona split_ratio, todo el conjunto de datos de evaluación se utiliza para la evaluación |
| Eval_Point | 1000 | Realiza la evaluación para todos los pasos de entrenamiento 'X' |
| split_ratio | Ninguno | Porcentaje del conjunto de datos de capacitación que se utilizará para la evaluación si desea dividir la capacitación de TFRecord en tren, evaluación de datos. Si no se proporciona una relación dividida, el archivo de capacitación se utilizará para la evaulación (el número de pasos de evaluación está controlado por el parámetro MAX_EVAL_STEPS) |
| init_checkpoint | Ninguno | Si está reanudando la capacitación, proporcione la ruta al punto de control anterior. Si está inicializando la capacitación desde un punto de control no predeterminado (Bert-Base, Bert-Large), proporcione el nombre/ruta del punto de control del modelo). |
| Input_file | ./input/demo_msl128.tfrecord | Ingrese el archivo tfrecord creado usando create_pretining_data.py desde https://github.com/google-research/bert |
| eval_file | Ninguno | Si desea utilizar el conjunto de datos de Seperate Eval, proporcione el archivo de entrada TFRecord creado usando create_pretining_data.py desde https://github.com/google-research/bert |
| Log_csv | ./eval_results.csv | Archivo que almacena los resultados de la evaluación ** |
| salida_dir | ./ckpts | Directorio para almacenar los puntos de control |
| num_gpu | 3 | Número de GPU para usar para el entrenamiento |
** El archivo de salida log_csv registra los hiperparámetros y los resultados de la evaluación
El archivo Demo.tfrecord se creó a partir del conjunto de datos WikiCorpus.
El equipo del Proyecto Bert Pretratining da la bienvenida a las contribuciones de la comunidad. Antes de comenzar a trabajar con este proyecto, lea y firme nuestro acuerdo de licencia de contribuyente (https://cla.vmware.com/cla/1/preview). Si desea contribuir con código y no ha firmado nuestro Acuerdo de Licencia de Contributor (CLA), nuestro BOT le pedirá que lo haga cuando abra una solicitud de extracción. Para cualquier pregunta sobre el proceso CLA, consulte nuestro contribuyente.
Apache-2.0