Russian GPT3 models.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 |
俄语GPT-3模型
ruGPT3XL, ruGPT3Large, ruGPT3Medium, ruGPT3Small 和 ruGPT2Large
本仓库包含一系列自回归变换器语言模型,这些模型是基于大量俄语文本数据训练而成。
-
俄语GPT-3模型(ruGPT3XL, ruGPT3Large, ruGPT3Medium, ruGPT3Small)使用2048个序列长度,结合稀疏和密集注意力块进行训练。同时提供了一个使用1024个序列长度训练的俄罗斯GPT-2大型模型(ruGPT2Large)。
-
使用示例详细说明见此处。查看微调工作原理:
目录
- ruGPT3XL
- 配置
- 使用
- 微调
- ruGPT3XL预训练详情
- ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large
- 引用ruGPT3的论文
- 使用ruGPT3的开源解决方案
ruGPT3XL
配置
对于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
# 输出:
...
sparse_attn .......... [YES] ...... [OKAY]
...
import deepspeed.ops.sparse_attention.sparse_attn_op
使用
这里是简单的使用示例。更多示例参见此例子或。
import sys
from src.xl_wrapper import RuGPT3XL
import os
# 如果从根目录运行。
sys.path.append("ru-gpts/")
os.environ["USE_DEEPSPEED"] = "1"
# 可以改变地址和端口
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.0,
)
微调
微调示例及加载微调后的模型并生成文本的代码位于此处。
我们的微调脚本示例在scripts/deepspeed_gpt3_xl_finetune.sh。
ruGPT3XL预训练详情
该模型使用512个序列长度,在Deepspeed和Megatron团队的代码支持下,由Devices团队在800亿个令牌的数据集上进行了4个周期的训练。之后,使用2048个序列长度对模型进行了1个周期的微调。 注意!模型具有稀疏注意力块。
总训练时间约为256张GPU上的10天。测试集上的最终困惑度为12.05。
🤗HuggingFace模型卡片链接:链接。
ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large
配置
要使用ruGPT3Large, ruGPT3Medium, ruGPT3Small, ruGPT2Large,只需安装🤗HuggingFace Transformers库。
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)
# 输出应类似如下:
# Александр Сергеевич Пушкин родился в \n1799 году. Его отец был крепостным крестьянином, а мать – крепостной крестьянкой. Детство и юность Пушкина прошли в деревне Михайловское под Петербургом. В 1820-х годах семья переехала
预训练详情
所有预训练都在Nvidia Tesla V100-SXM3 32 Gb GPU上进行,设备是Christofari Cluster。以下是每个模型的预训练细节。
ruGPT3Large预训练详情
该模型使用1024个序列长度,由Devices团队使用Transformers库在800亿个令牌上进行3个周期的训练。然后,使用2048个序列长度进行了1个周期的微调。
总训练时间为128张GPU上的约14天用于1024上下文,以及16张GPU上的几天用于2048上下文。
测试集上的最终困惑度为13.6。
您可以通过Transformers使用模型名称sberbank-ai/rugpt3large_based_on_gpt2获取此模型。
🤗HuggingFace模型卡片链接:链接。
我们的预训练脚本在此:scripts/deepspeed_gpt3_large.sh。
ruGPT3Medium预训练详情
模型使用1024个序列长度,由Devices团队在800亿个令牌上进行了3个周期的训练。随后,使用2048个上下文进行微调。
总训练时间为64张GPU上的约16天。
测试集上的最终困惑度为17.4。
您可以使用Transformers通过模型名称sberbank-ai/rugpt3medium_based_on_gpt2获取此模型。
🤗HuggingFace模型卡片链接:链接。
我们的预训练脚本在此:scripts/deepspeed_gpt3_medium.sh。
ruGPT3Small预训练详情
模型使用1024个序列长度,由Devices团队在800亿个令牌上进行了大约3个周期的训练。接着,使用2048个上下文进行微调。
总共在32张GPU上训练了大约一周的时间。
您可以使用Transformers通过模型名称sberbank-ai/rugpt3small_based_on_gpt2获取此模型。
🤗HuggingFace模型卡片链接:链接。
我们的预训练脚本在此:scripts/deepspeed_gpt3_small.sh。
ruGPT2Large预训练详情
模型使用1024个序列长度,由Devices团队在170GB数据上使用64张GPU进行了3周的训练。
您可以使用Transformers通过模型名称sberbank-ai/rugpt2large获取此模型。
🤗HuggingFace模型卡片链接:链接。
开源解决方案与 ruGPT3
- ruCLIP:GitHub
- ruGPT-3 XL 简化工具:GitHub
- 单词规范化(RuNormAS 共享任务):GitHub
- AI 写作助手:GitHub
- 高考题目生成器:GitHub
- NeuroZhirinovsky:GitHub
- 虚构康德:GitHub
- DostoevskyDoesntWriteIt:GitHub
提及 ruGPT3 的论文
根据谷歌学术搜索:搜索结果 - 欢迎添加到此列表
文本简化
@article{shatilovsentence,
title={使用 ruGPT3 进行句子简化},
author={Shatilov, AA 和 Rey, AI},
url={http://www.dialog-21.ru/media/5281/shatilovaaplusreyai142.pdf}
}
@article{fenogenovatext,
title={自回归模型的文本简化},
author={Fenogenova, Alena},
url={http://www.dialog-21.ru/media/5250/fenogenovaa141.pdf}
}
文本净化
@article{dementieva2021methods,
title={俄语文本净化方法},
author={Dementieva, Daryna 和 Moskovskiy, Daniil 和 Logacheva, Varvara 和 Dale, David 和 Kozlova, Olga 和 Semenov, Nikita 和 Panchenko, Alexander},
journal={arXiv 预印本 arXiv:2105.09052},
year={2021},
url={https://arxiv.org/abs/2105.09052}
}
改述与数据增强
@inproceedings{fenogenova2021russian,
title={俄罗斯改述器:利用 Transformer 进行改述},
author={Fenogenova, Alena},
booktitle={第八届巴尔托斯拉夫自然语言处理研讨会论文集},
pages={11--19},
year={2021},
url={https://www.aclweb.org/anthology/2021.bsnlp-1.2.pdf}
}
模型评估
@article{malykh2021morocco,
title={MOROCCO:模型资源比较框架},
author={Malykh, Valentin 和 Kukushkin, Alexander 和 Artemova, Ekaterina 和 Mikhailov, Vladislav 和 Tikhonova, Maria 和 Shavrina, Tatiana},
journal={arXiv 预印本 arXiv:2104.14314},
year={2021},
url={https://arxiv.org/abs/2104.14314}
}