Ce référentiel contient un ensemble de modèles de langage de transformateur autorégressifs formés sur un énorme ensemble de données de langue russe.
Modèles russes GPT-3 (ruGPT3XL, ruGPT3Large, ruGPT3Medium, ruGPT3Small) entraînés avec une longueur de séquence de 2048 avec des blocs d'attention clairsemés et denses. Nous fournissons également un grand modèle russe GPT-2 (ruGPT2Large) formé avec une longueur de séquence de 1 024.
Essayez la génération de modèles dans Colab ! ruGPT-3 XL : ou ruGPT-3 modèles plus petits :
Des exemples d'utilisation sont décrits en détail ici. Découvrez comment fonctionne le réglage fin :
Pour Colab, nous vous recommandons d'utiliser les instructions d'installation suivantes :
export LD_LIBRARY_PATH=/usr/lib/
apt-get install clang-9 llvm-9 llvm-9-dev llvm-9-tools
git clone https://github.com/qywu/apex
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
pip install triton
DS_BUILD_CPU_ADAM=1 DS_BUILD_SPARSE_ATTN=1 pip install deepspeed
pip install transformers
pip install huggingface_hub
pip install timm==0.3.2
git clone https://github.com/sberbank-ai/ru-gpts
cp ru-gpts/src_utils/trainer_pt_utils.py /usr/local/lib/python3.8/dist-packages/transformers/trainer_pt_utils.py
cp ru-gpts/src_utils/_amp_state.py /usr/local/lib/python3.8/dist-packages/apex/amp/_amp_state.py
Après l'installation de l'environnement, veuillez redémarrer Colab. Pour vérifier que tout va bien, exécutez les commandes suivantes :
!ds_report
# Output:
...
sparse_attn ............ [YES] ...... [OKAY]
...
import deepspeed.ops.sparse_attention.sparse_attn_op
Voici un exemple simple d'utilisation. Pour en savoir plus, consultez cet exemple ou .
import sys
from src . xl_wrapper import RuGPT3XL
import os
# If run to from content root.
sys . path . append ( "ru-gpts/" )
os . environ [ "USE_DEEPSPEED" ] = "1"
# We can change address and port
os . environ [ "MASTER_ADDR" ] = "127.0.0.1"
os . environ [ "MASTER_PORT" ] = "5000"
gpt = RuGPT3XL . from_pretrained ( "sberbank-ai/rugpt3xl" , seq_len = 512 )
gpt . generate (
"Кто был президентом США в 2020? " ,
max_length = 50 ,
no_repeat_ngram_size = 3 ,
repetition_penalty = 2. ,
)
Un exemple de réglage fin, de chargement du modèle affiné et de génération est ici.
Notre exemple de script de mise au point ici
Le modèle a été formé avec une longueur de séquence de 512 à l'aide du code Deepspeed et Megatron par l'équipe Devices, sur un ensemble de données de 80 milliards de jetons pour 4 époques. Après ce modèle, 1 époque avec une longueur de séquence de 2048 a été affinée.
Note! Le modèle a des blocages d’attention clairsemés.
La durée totale de formation était d'environ 10 jours sur 256 GPU.
La perplexité finale sur l'ensemble de test est 12.05
.
?Lien de la carte modèle HuggingFace.
Pour utiliser ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large, installez simplement les transformateurs ?HuggingFace.
pip install transformers==4.24.0
Nous pouvons ici obtenir des exemples de mise au point ou de génération.
Cet exemple est également adapté pour Google Colab :
from transformers import GPT2LMHeadModel , GPT2Tokenizer
model_name_or_path = "sberbank-ai/rugpt3large_based_on_gpt2"
tokenizer = GPT2Tokenizer . from_pretrained ( model_name_or_path )
model = GPT2LMHeadModel . from_pretrained ( model_name_or_path ). cuda ()
text = "Александр Сергеевич Пушкин родился в "
input_ids = tokenizer . encode ( text , return_tensors = "pt" ). cuda ()
out = model . generate ( input_ids . cuda ())
generated_text = list ( map ( tokenizer . decode , out ))[ 0 ]
print ( generated_text )
# Output should be like this:
# Александр Сергеевич Пушкин родился в n1799 году. Его отец был крепостным крестьянином, а мать – крепостной крестьянкой. Детство и юность Пушкина прошли в деревне Михайловское под Петербургом. В 1820-х годах семья переехала
Tous les pré-entraînements ont été effectués sur des GPU Nvidia Tesla V100-SXM3 32 Go sur un cluster Christofari. Voici les détails de la pré-formation pour chaque modèle.
Le modèle a été formé avec une longueur de séquence de 1024 à l'aide de la bibliothèque de transformateurs par l'équipe Devices sur des jetons 80B pendant 3 époques. Après ce modèle, 1 époque avec une longueur de séquence de 2048 a été affinée.
La durée totale de formation était d'environ 14 jours sur 128 GPU pour 1024 contextes et quelques jours sur 16 GPU pour 2048 contextes.
La perplexité finale sur l'ensemble de test est 13.6
.
Vous pouvez obtenir ce modèle en utilisant des transformateurs portant le nom de modèle sberbank-ai/rugpt3large_based_on_gpt2
.
?Lien de la carte du modèle HuggingFace
Notre script de pré-formation ici
Le modèle a été formé avec une longueur de séquence de 1024 à l'aide de la bibliothèque de transformateurs par l'équipe Devices sur des jetons 80B pendant 3 époques. Ensuite, ce modèle a été affiné sur le contexte de 2048.
La durée totale de formation était d'environ 16 jours sur 64 GPU.
La perplexité finale sur l'ensemble de test est 17.4
.
Vous pouvez obtenir ce modèle en utilisant des transformateurs portant le nom de modèle sberbank-ai/rugpt3medium_based_on_gpt2
.
?Lien de la carte du modèle HuggingFace
Notre script de pré-formation ici
Le modèle a été formé avec une longueur de séquence de 1024 à l'aide de transformateurs par l'équipe Devices sur des jetons 80B vers 3 époques. Ensuite, ce modèle a été affiné sur le contexte de 2048.
La durée totale de formation a duré environ une semaine sur 32 GPU.
Vous pouvez obtenir ce modèle en utilisant des transformateurs portant le nom de modèle sberbank-ai/rugpt3small_based_on_gpt2
.
?Lien de la carte du modèle HuggingFace
Notre script de pré-formation ici
Le modèle a été formé avec une longueur de séquence de 1 024 à l'aide de transformateurs par l'équipe Devices sur 170 Go de données sur 64 GPU pendant 3 semaines.
Vous pouvez obtenir ce modèle en utilisant des transformateurs portant le nom de modèle sberbank-ai/rugpt2large
.
?Lien de la carte du modèle HuggingFace
D'après la recherche Google Scholar - n'hésitez pas à ajouter des liens à cette liste
@article{shatilovsentence,
title={Sentence simplification with ruGPT3},
author={Shatilov, AA and Rey, AI},
url={http://www.dialog-21.ru/media/5281/shatilovaaplusreyai142.pdf}
}
@article{fenogenovatext,
title={Text Simplification with Autoregressive Models},
author={Fenogenova, Alena},
url={http://www.dialog-21.ru/media/5250/fenogenovaa141.pdf}}
@article{dementieva2021methods,
title={Methods for Detoxification of Texts for the Russian Language},
author={Dementieva, Daryna and Moskovskiy, Daniil and Logacheva, Varvara and Dale, David and Kozlova, Olga and Semenov, Nikita and Panchenko, Alexander},
journal={arXiv preprint arXiv:2105.09052},
year={2021},
url={https://arxiv.org/abs/2105.09052}
}
@inproceedings{fenogenova2021russian,
title={Russian Paraphrasers: Paraphrase with Transformers},
author={Fenogenova, Alena},
booktitle={Proceedings of the 8th Workshop on Balto-Slavic Natural Language Processing},
pages={11--19},
year={2021},
url={https://www.aclweb.org/anthology/2021.bsnlp-1.2.pdf}
}
@article{malykh2021morocco,
title={MOROCCO: Model Resource Comparison Framework},
author={Malykh, Valentin and Kukushkin, Alexander and Artemova, Ekaterina and Mikhailov, Vladislav and Tikhonova, Maria and Shavrina, Tatiana},
journal={arXiv preprint arXiv:2104.14314},
year={2021},
url={https://arxiv.org/abs/2104.14314}}