Le projet est un module Python qui facilite la pré-entraînement de Bert. La solution open source existante actuelle pour la formation de ce modèle spécifique est alambiquée. Nous avons simplifié la procédure. L'objectif du projet est d'ouvrir le code à la communauté d'apprentissage automatique plus large pour aider les praticiens ML à former leurs propres modèles Bert en utilisant leurs données. Le code a été créé pour former la dernière itération du modèle Bert (VBERT) de VMware pour aider l'apprentissage automatique et les chercheurs de traitement du langage naturel au sein de VMware.
Le cahier de démonstration est situé dans le dossier de démonstration
Configurer un Env virtuel Python 3.7 ou 3.8 et installer les exigences en utilisant
pip install . de l'intérieur du dossier racine
ou
pip install git+https://github.com/vmware-labs/bert-pretraining
Créez les données de pré-formation à l'aide de create_pretraining_data.py à partir de https://github.com/google-research/bert.
Vous pouvez créer un fichier d'évaluation séparé si vous souhaitez évaluer les précisions MLM et NSP de votre modèle sur un ensemble d'évaluation séparé pendant la formation.
Vous pouvez également diviser un seul fichier en vecteurs de formation et évaluer en utilisant le paramètre Split_ratio dans l'objet config.
Les paramètres de pré-formation sont manipulés via la classe Pretraining_config. Veuillez suivre la démo.ipynb pour exécuter un échantillon Bert pré-entraînement.
PARAMS PRETRAINING_CONFIG
| Paramètre | Valeur par défaut | Description |
|---|---|---|
| Model_name | Démorceau | Nom du modèle |
| is_base | Vrai | Booléen pour sélectionner entre Bert-Base et Bert-Garg |
| max_seq_length | 128 | MSL, devrait être cohérent avec le fichier tfrecord (générer 2 fichiers séparés si vous souhaitez pré-ranger Bert avec différents MSL: 128, 512) |
| max_predictions_per_seq | 20 | Le nombre de jetons masqués pour MLM devrait être cohérent avec le fichier tfrecord |
| num_train_steps | 1000 | Nombre d'étapes pour former le modèle pour, se termine si nous atteignons la fin du fichier tfrecord (un prélèvement significatif nécessiterait plus d'étapes de formation) |
| num_warmup_steps | 10 | Nombre d'étapes d'échauffement, Bert utilise 1% des étapes d'entraînement comme étapes d'échauffement |
| apprentissage_rate | 1E-05 | Taux d'apprentissage du modèle |
| Train_batch_size | 32 | Taille du lot de formation (divisé entre les GPU) |
| Save_intermediate_checkpoints | Vrai | Enregistrez les points de contrôle pour toutes les étapes de formation «x» décidées par les sauvegardes_checpoint_steps. Le point de contrôle sera toujours sauvé à la fin de la formation |
| Save_intermediate_checkpoint_steps | 25000 | Économise le point de contrôle après toutes les étapes de formation «X» (sans compter les étapes d'échauffement) |
| EVAL_BATCH_SIZE | 32 | Taille du lot d'évaluation (divisé entre les GPU) |
| max_eval_steps | 1000 | Nombre d'étapes pour effectuer une évaluation sur le moment où il n'y a pas de fichier EVAL séparé. Si un fichier d'évaluation séparé est fourni ou si Split_ratio est fourni, l'ensemble de données EVAL est utilisé pour l'évaluation |
| ev_point | 1000 | Effectue une évaluation pour toutes les étapes de formation «X» |
| Split_ratio | Aucun | Pourcentage de l'ensemble de données de formation à utiliser pour l'évaluation si vous souhaitez diviser la formation tfrecord dans des ensembles de données de train. Si aucun rapport divisé n'est fourni, le fichier de formation sera utilisé pour l'évaulation (le nombre d'étapes d'évaluation est contrôlé par le paramètre MAX_EVAL_STEPS) |
| init_checkpoint | Aucun | Si vous reprenez la formation, fournissez le chemin du point de contrôle précédent. Si vous initialisez la formation à partir d'un point de contrôle non par défaut (Bert-Base, Bert-Large), fournissez le nom / chemin de point de contrôle du modèle). |
| input_file | ./input/demo_msl128.tfrecord | Fichier Tfrecord de saisie créé à l'aide de create_pretraining_data.py à partir de https://github.com/google-research/bert |
| EVAL_FILE | Aucun | Si vous souhaitez utiliser un ensemble de données Seperate EVAL, fournissez le fichier Tfrecord d'entrée créé à l'aide de Create_pretraining_data.py à partir de https://github.com/google-research/bert |
| log_csv | ./eval_results.csv | Fichier qui stocke les résultats de l'évaluation ** |
| output_dir | ./ckpts | Répertoire pour stocker les points de contrôle |
| num_gpu | 3 | Nombre de GPU à utiliser pour la formation |
** Le fichier log_csv de sortie enregistre les hyperparamètres et les résultats de l'évaluation
Le fichier Demo.tfrecord a été créé à partir de l'ensemble de données Wikicorpus.
L'équipe de projet de prétraitement de Bert se félicite des contributions de la communauté. Avant de commencer à travailler avec ce projet, veuillez lire et signer notre accord de licence de contributeur (https://cla.vmware.com/cla/1/preview). Si vous souhaitez contribuer du code et que vous n'avez pas signé notre accord de licence de contributeur (CLA), notre bot vous invitera à le faire lorsque vous ouvrez une demande de traction. Pour toute question sur le processus de CLA, veuillez vous référer à notre contribution.md.
Apache-2.0