該儲存庫包含一堆在龐大的俄語資料集上訓練的自回歸變壓器語言模型。
俄羅斯 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
安裝 env 後請重新啟動 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 程式碼,在 80B 代幣資料集上對模型進行了 512 序列長度的訓練,歷時 4 個時期。之後模型被微調 1 epoch,序列長度為 2048。
筆記!模型具有稀疏的注意力塊。
在 256 個 GPU 上的總訓練時間約為 10 天。
測試集的最終困惑度為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 32 Gb GPU 上完成。以下是每個模型預訓練的詳細資訊。
模型使用 Devices 團隊使用 Transformers lib 在 80B 代幣上使用序列長度 1024 進行了 3 個時期的訓練。之後模型被微調 1 epoch,序列長度為 2048。
在 128 個 GPU 上處理 1024 個上下文的總訓練時間約為 14 天,在 16 個 GPU 上處理 2048 個上下文的總訓練時間約為幾天。
測試集的最終困惑度為13.6
。
您可以使用模型名稱為sberbank-ai/rugpt3large_based_on_gpt2
的轉換器來取得此模型。
?HuggingFace 模特兒卡鏈接
我們的預訓練腳本在這裡
Devices 團隊使用 Transformers lib 對模型進行了序列長度 1024 的訓練,在 80B 代幣上進行了 3 輪訓練。之後模型在 2048 年背景下進行了微調。
在 64 個 GPU 上的總訓練時間約為 16 天。
測試集的最終困惑度為17.4
。
您可以使用模型名稱為sberbank-ai/rugpt3medium_based_on_gpt2
的轉換器來取得此模型。
?HuggingFace 模特兒卡鏈接
我們的預訓練腳本在這裡
Devices 團隊使用 Transformer 對模型進行了序列長度 1024 的訓練,在 3 個 epoch 左右的 80B 代幣上進行訓練。之後模型在 2048 年背景下進行了微調。
在 32 個 GPU 上的總訓練時間大約需要一周時間。
您可以使用模型名稱為sberbank-ai/rugpt3small_based_on_gpt2
的轉換器來取得此模型。
?HuggingFace 模特兒卡鏈接
我們的預訓練腳本在這裡
Devices 團隊使用 Transformer 在 64 個 GPU 上的 170Gb 資料上訓練了 3 週的序列長度 1024 的模型。
您可以使用模型名稱為sberbank-ai/rugpt2large
變壓器來取得此模型。
?HuggingFace 模特兒卡鏈接
根據谷歌學術搜索 - 請隨意添加到此列表的鏈接
@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}}