이 저장소에는 방대한 러시아어 데이터 세트에 대해 훈련된 여러 자동 회귀 변환기 언어 모델이 포함되어 있습니다.
러시아 GPT-3 모델(ruGPT3XL, ruGPT3Large, ruGPT3Medium, ruGPT3Small)은 희박하고 조밀한 주의 블록을 사용하여 2048 시퀀스 길이로 훈련되었습니다. 또한 1024 시퀀스 길이로 훈련된 러시아 GPT-2 대형 모델(ruGPT2Large)도 제공합니다.
Colab에서 모델 생성을 시도해 보세요! ruGPT-3 XL: 또는 ruGPT-3 소형 모델:
여기에는 사용 예가 자세히 설명되어 있습니다. 미세 조정이 어떻게 작동하는지 확인하세요.
Colab의 경우 다음 설치 지침을 따르는 것이 좋습니다.
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
환경을 설치한 후 Colab을 다시 시작하세요. 검사가 모두 정상인지 확인하려면 다음 명령을 실행하십시오.
!ds_report
# Output:
...
sparse_attn ............ [YES] ...... [OKAY]
...
import deepspeed.ops.sparse_attention.sparse_attn_op
다음은 간단한 사용법 예입니다. 자세한 내용은 이 예 또는 를 참조하세요.
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. ,
)
미세 조정, 미세 조정된 모델 로드 및 생성의 예는 여기에 있습니다.
미세 조정 스크립트의 예는 다음과 같습니다.
모델은 Devices 팀의 Deepspeed 및 Megatron 코드를 사용하여 4개 시대에 대한 80B 토큰 데이터 세트에서 512개 시퀀스 길이로 훈련되었습니다. 그 모델은 시퀀스 길이가 2048인 1 epoch로 미세 조정되었습니다.
메모! 모델에는 주의 블록이 희박합니다.
총 훈련 시간은 256 GPU에서 약 10일이었습니다.
테스트 세트의 최종 Perplexity는 12.05
입니다.
?HuggingFace 모델 카드 링크.
ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large를 사용하려면 ?HuggingFace 변환기를 설치하기만 하면 됩니다.
pip install transformers==4.24.0
여기에서 미세 조정 또는 생성의 예를 얻을 수 있습니다.
또한 이 예는 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-х годах семья переехала
모든 사전 훈련은 Christofari 클러스터의 Nvidia Tesla V100-SXM3 32Gb GPU에서 수행되었습니다. 각 모델별 사전 학습 세부 내용은 다음과 같습니다.
모델은 3세대 동안 80B 토큰에 대해 Devices 팀의 Transformers lib를 사용하여 시퀀스 길이 1024로 훈련되었습니다. 그 모델은 시퀀스 길이가 2048인 1 epoch로 미세 조정되었습니다.
총 훈련 시간은 1024 컨텍스트의 경우 128개 GPU에서 약 14일이었고 2048 컨텍스트의 경우 16개 GPU에서는 며칠이었습니다.
테스트 세트의 최종 퍼플렉시티는 13.6
입니다.
모델 이름이 sberbank-ai/rugpt3large_based_on_gpt2
인 변환기를 사용하여 이 모델을 얻을 수 있습니다.
?HuggingFace 모델 카드 링크
여기에 사전 학습 스크립트가 있습니다.
모델은 3세대 동안 80B 토큰에 대해 Devices 팀의 Transformers lib를 사용하여 시퀀스 길이 1024로 훈련되었습니다. 이후 해당 모델은 2048년 상황에 맞춰 미세 조정되었습니다.
총 훈련 시간은 64개의 GPU에서 약 16일이었습니다.
테스트 세트의 최종 Perplexity는 17.4
입니다.
모델 이름이 sberbank-ai/rugpt3medium_based_on_gpt2
인 변환기를 사용하여 이 모델을 얻을 수 있습니다.
?HuggingFace 모델 카드 링크
여기에 사전 학습 스크립트가 있습니다.
모델은 3세대 경에 80B 토큰에 대해 Devices 팀의 변환기를 사용하여 시퀀스 길이 1024로 훈련되었습니다. 이후 해당 모델은 2048년 상황에 맞춰 미세 조정되었습니다.
총 훈련 시간은 32개의 GPU에서 약 1주일이 걸렸습니다.
모델 이름이 sberbank-ai/rugpt3small_based_on_gpt2
인 변환기를 사용하여 이 모델을 얻을 수 있습니다.
?HuggingFace 모델 카드 링크
여기에 사전 학습 스크립트가 있습니다.
모델은 64 GPU의 170Gb 데이터에 대해 Devices 팀의 변환기를 사용하여 3주 동안 시퀀스 길이 1024로 훈련되었습니다.
모델 이름이 sberbank-ai/rugpt2large
인 변환기를 사용하여 이 모델을 얻을 수 있습니다.
?HuggingFace 모델 카드 링크
Google 학술 검색에 따르면 이 목록에 자유롭게 링크를 추가할 수 있습니다.
@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}}