Repositori ini berisi sekumpulan model bahasa transformator autoregresif yang dilatih pada kumpulan data besar bahasa Rusia.
Model GPT-3 Rusia (ruGPT3XL, ruGPT3Large, ruGPT3Medium, ruGPT3Small) dilatih dengan panjang urutan 2048 dengan blok perhatian yang jarang dan padat. Kami juga menyediakan model besar GPT-2 Rusia (ruGPT2Large) yang dilatih dengan panjang urutan 1024.
Coba Pembuatan Model Di Colab! ruGPT-3 XL: atau ruGPT-3 model yang lebih kecil:
Contoh penggunaan dijelaskan secara rinci di sini. Lihat cara kerja penyesuaian:
Untuk colab kami menyarankan penggunaan petunjuk instalasi berikut:
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
Setelah instalasi env silakan mulai ulang colab. Untuk pengecekan apakah semuanya baik-baik saja, jalankan perintah berikut:
!ds_report
# Output:
...
sparse_attn ............ [YES] ...... [OKAY]
...
import deepspeed.ops.sparse_attention.sparse_attn_op
Berikut adalah contoh sederhana penggunaan. Untuk lebih lanjut lihat contoh ini atau .
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. ,
)
Contoh menyempurnakan, memuat model yang disempurnakan, dan menghasilkan ada di sini.
Contoh penyempurnaan skrip kami di sini
Model dilatih dengan panjang urutan 512 menggunakan kode Deepspeed dan Megatron oleh tim Perangkat, pada kumpulan data token 80 miliar selama 4 periode. Setelah itu model disempurnakan 1 epoch dengan panjang sequence 2048.
Catatan! Model memiliki blok perhatian yang jarang.
Total waktu pelatihan sekitar 10 hari pada 256 GPU.
Kebingungan terakhir pada set pengujian adalah 12.05
.
Tautan kartu model HuggingFace.
Untuk menggunakan ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large cukup instal trafo HuggingFace.
pip install transformers==4.24.0
Di sini kita bisa mendapatkan contoh finetuning atau pembangkitan.
Contoh ini juga diadaptasi untuk 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-х годах семья переехала
Semua pra-pelatihan dilakukan pada GPU Nvidia Tesla V100-SXM3 32 Gb di Cluster Christofari. Berikut rincian pretraining untuk masing-masing model.
Model dilatih dengan panjang urutan 1024 menggunakan lib transformator oleh tim Perangkat pada token 80B selama 3 periode. Setelah itu model disempurnakan 1 epoch dengan panjang sequence 2048.
Total waktu pelatihan sekitar 14 hari pada 128 GPU untuk konteks 1024 dan beberapa hari pada 16 GPU untuk konteks 2048.
Kebingungan terakhir pada set tes adalah 13.6
.
Anda bisa mendapatkan model ini dengan menggunakan trafo dengan nama model sberbank-ai/rugpt3large_based_on_gpt2
.
Tautan kartu model HuggingFace
Skrip pra-pelatihan kami di sini
Model dilatih dengan panjang urutan 1024 menggunakan lib transformator oleh tim Perangkat pada token 80B selama 3 periode. Setelah itu model disempurnakan pada konteks 2048.
Total waktu pelatihan sekitar 16 hari pada 64 GPU.
Kebingungan terakhir pada set tes adalah 17.4
.
Anda bisa mendapatkan model ini dengan menggunakan trafo dengan nama model sberbank-ai/rugpt3medium_based_on_gpt2
.
Tautan kartu model HuggingFace
Skrip pra-pelatihan kami di sini
Model dilatih dengan panjang urutan 1024 menggunakan transformator oleh tim Perangkat pada token 80B sekitar 3 epoch. Setelah itu model disempurnakan pada konteks 2048.
Total waktu pelatihan memakan waktu sekitar satu minggu pada 32 GPU.
Anda bisa mendapatkan model ini dengan menggunakan trafo dengan nama model sberbank-ai/rugpt3small_based_on_gpt2
.
Tautan kartu model HuggingFace
Skrip pra-pelatihan kami di sini
Model dilatih dengan panjang urutan 1024 menggunakan transformator oleh tim Perangkat pada data 170 Gb pada 64 GPU selama 3 minggu.
Anda bisa mendapatkan model ini dengan menggunakan trafo dengan nama model sberbank-ai/rugpt2large
.
Tautan kartu model HuggingFace
Menurut pencarian Google Scholar - jangan ragu untuk menambahkan tautan ke daftar ini
@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}}