Formation du modèle de langue du transformateur GPT-2 sur vos propres corpus avec tokenisation de la phrase.
Ce dépôt contient une implémentation Pytorch de GPT-2, qui prend en charge la formation multi-GPU. Il contient également une implémentation TensorFlow dans lm/gpt_2_tf , mais il n'est plus développé. Ils partagent les mêmes scripts de préparation des données. La commande de formation TF est gpt-2-tf-train et a besoin de TensorFlow 1.13. La documentation ci-dessous est pour la version Pytorch.
Contenu
Python 3.6+ est requis avec la torche tous les soirs ou 1.6.0+. Travailler dans un virtualenv est supposé ci-dessous. Installez d'abord la version appropriée de Pytorch, puis:
pip install -r exigences.txt python setup.py développe
Les instructions sont ci-dessous. Voir aussi test/test_shakespeare.sh pour une démo pipeline complète sur un petit corpus (prend une minute sur un CPU).
Corpus Format: un répertoire avec train de niveau supérieur, des dossiers valid et test . Chaque dossier de niveau supérieur peut contenir des sous-repliants. À l'intérieur, il doit y avoir des fichiers texte codés UTF-8 avec une extension .txt .
Les commandes pour former le modèle de phrase et coder le corpus prennent en charge plusieurs corpus, dans des exemples ci-dessous, nous supposons qu'ils peuvent être répertoriés comme data/corpora-* .
Modèle de phrase de phrase ( sp-text.txt peut être supprimé après l'exécution). Cela peut consommer une grande quantité de mémoire, ajuster directement les arguments de la phrase si nécessaire (cela n'est pas pris en charge directement dans la commande sp-train directement):
SP-Train Data / Corpa- * Sp-text.txt SP-Model
Encoder les corpus, produisant des fichiers Numpy:
Données SP-Encode / Corpa- * SP-model.model Données / codé
Exemple de commande:
Données GPT-2 Run-Root / SP-model.Model codé
run-root contiendrait des points de contrôle de modèle et des journaux JSON-Lines, qui peuvent être tracés dans un cahier Jupyter avec json_log_plots.plot("run-root") , avec le nombre de jetons vues sur l'axe X.
Les hyperparamètres par défaut correspondent au modèle "petit" GPT-2 libéré.
Lorsque plusieurs GPU sont disponibles, ils seraient utilisés pour s'entraîner à l'aide de torch.distributed .
Si le chemin existe et --clean KEY n'est pas adopté, la formation serait reprise. Notez que tous les paramètres doivent encore être spécifiés et que les paramètres du modèle doivent correspondre.
Notes sur les paramètres de formation:
--batch-size PER-GPU, vous n'avez donc pas besoin de le reloger lorsque vous modifiez le nombre de GPU, utilisez simplement Max qui s'intègre dans la mémoire.--g-accum-gradients est le nombre mondial d'accumulations de gradient, elle doit être divisible par le nombre de GPU. La taille efficace du lot global est toujours batch_size * g_accum_gradients .--lr n'a pas besoin d'être modifié lors de la modification --batch-size ou --g-accum-gradients ou nombre de GPU ou --n-ctx : la perte est déjà mise à l'échelle de manière appropriée.Exemple de commande:
GPT-2-Gen Run-Root "Intelligence artificielle"
run-root contiendrait des points de contrôle de modèle "Artificial intelligence" est le préfixe de texte utilisé comme point de départ pour générer des jetons
Notes sur les paramètres d'inférence:
--tokens-to-generate : nombre de jetons à générer, la valeur par défaut est 42--top-k : Nombre de candidats à jeton à générer pour chaque position (largeur du faisceau), la valeur par défaut est 8. La licence est le MIT.
Le modèle Tensorflow GPT-2 est pris à partir de https://github.com/openai/gpt-2/blob/master/src/model.py et Tensorflow GPT-2 Le code de formation est basé sur https://github.com/nshepperd/gpt-2/blob/fintuning/train.py
Le port Pytorch est basé sur le code OpenAI d'origine.
Test Shakespeare Corpus sous tests/shakespeare provient de http://shakespeare.mit.edu dans le domaine public.
Voir également le papier et le blog Openai GPT-2.