🚀 阿拉伯语GPT2模型
阿拉伯语GPT2是基于GPT2架构的预训练模型,可用于多种阿拉伯语自然语言处理任务,如文本生成等,为阿拉伯语的语言处理研究和应用提供了强大的工具。
🚀 快速开始
你可以在我们的论文 AraGPT2 中找到更多信息。本仓库中的代码用于训练所有GPT2变体。该代码支持通过TPUEstimator API在GPU和TPU上训练和微调GPT2。
✨ 主要特性
- 多架构支持:GPT2-base和medium使用
gpt2
文件夹中的代码,可从 minimaxir/gpt-2-simple 仓库训练模型;GPT2-large和GPT2-mega使用 imcaspar/gpt2-ml 库训练,遵循 grover
架构。
- 多优化器适配:不同规模的模型使用不同的优化器,如
lamb
和 adafactor
,以适应不同的训练需求。
- 多格式兼容:模型支持PyTorch、TF2和TF1等多种格式。
📦 安装指南
使用 transformers
库
pip install transformers
若使用GPT2-large和GPT2-mega,还需安装 arabert
:
pip install arabert
💻 使用示例
基础用法
使用 transformers
库测试模型:
from transformers import GPT2TokenizerFast, pipeline
from transformers import GPT2LMHeadModel
from arabert.aragpt2.grover.modeling_gpt2 import GPT2LMHeadModel
from arabert.preprocess import ArabertPreprocessor
MODEL_NAME='aubmindlab/aragpt2-base'
arabert_prep = ArabertPreprocessor(model_name=MODEL_NAME)
text=""
text_clean = arabert_prep.preprocess(text)
model = GPT2LMHeadModel.from_pretrained(MODEL_NAME)
tokenizer = GPT2TokenizerFast.from_pretrained(MODEL_NAME)
generation_pipeline = pipeline("text-generation",model=model,tokenizer=tokenizer)
generation_pipeline(text,
pad_token_id=tokenizer.eos_token_id,
num_beams=10,
max_length=200,
top_p=0.9,
repetition_penalty = 3.0,
no_repeat_ngram_size = 3)[0]['generated_text']
高级用法
使用 transformers
库微调模型
请遵循 此指南 进行操作。
使用我们的代码和TF 1.15.4进行微调
创建训练TFRecords:
python create_pretraining_data.py
--input_file=<RAW TEXT FILE with documents/article separated by an empty line>
--output_file=<OUTPUT TFRecord>
--tokenizer_dir=<Directory with the GPT2 Tokenizer files>
微调:
python3 run_pretraining.py \\r\n --input_file="gs://<GS_BUCKET>/pretraining_data/*" \\r\n --output_dir="gs://<GS_BUCKET>/pretraining_model/" \\r\n --config_file="config/small_hparams.json" \\r\n --batch_size=128 \\r\n --eval_batch_size=8 \\r\n --num_train_steps= \\r\n --num_warmup_steps= \\r\n --learning_rate= \\r\n --save_checkpoints_steps= \\r\n --max_seq_length=1024 \\r\n --max_eval_steps= \\r\n --optimizer="lamb" \\r\n --iterations_per_loop=5000 \\r\n --keep_checkpoint_max=10 \\r\n --use_tpu=True \\r\n --tpu_name=<TPU NAME> \\r\n --do_train=True \\r\n --do_eval=False
📚 详细文档
模型规格
模型 |
优化器 |
上下文大小 |
嵌入大小 |
头数 |
层数 |
模型大小/参数数量 |
AraGPT2-base |
lamb |
1024 |
768 |
12 |
12 |
527MB / 135M |
AraGPT2-medium |
lamb |
1024 |
1024 |
16 |
24 |
1.38G/370M |
AraGPT2-large |
adafactor |
1024 |
1280 |
20 |
36 |
2.98GB/792M |
AraGPT2-mega |
adafactor |
1024 |
1536 |
25 |
48 |
5.5GB/1.46B |
所有模型均可在 HuggingFace
模型页面的 aubmindlab 下找到。检查点支持PyTorch、TF2和TF1格式。
计算资源
模型 |
硬件 |
示例数量(序列长度 = 1024) |
批量大小 |
步数 |
时间(天) |
AraGPT2-base |
TPUv3-128 |
9.7M |
1792 |
125K |
1.5 |
AraGPT2-medium |
TPUv3-8 |
9.7M |
1152 |
85K |
1.5 |
AraGPT2-large |
TPUv3-128 |
9.7M |
256 |
220k |
3 |
AraGPT2-mega |
TPUv3-128 |
9.7M |
256 |
780K |
9 |
数据集
预训练新的AraGPT2模型所使用的数据也用于 AraBERTv2和AraELECTRA。
数据集包含77GB、200,095,961行、8,655,948,860个单词或82,232,988,358个字符(应用Farasa分割之前)。
对于新数据集,我们在彻底过滤未打乱的OSCAR语料库后,将其添加到AraBERTv1使用的数据集中,但不包括之前爬取的网站:
🔧 技术细节
模型架构
GPT2-base和medium遵循 gpt2
架构,GPT2-large和GPT2-mega遵循 grover
架构。
优化器选择
不同规模的模型使用不同的优化器,如 lamb
和 adafactor
,以适应不同的训练需求。adafactor
优化器在训练大型模型时可以减少内存使用,避免因内存不足而无法训练。
📄 许可证
请遵循相关开源许可证使用本模型。
⚠️ 重要提示
AraGPT2生成的文本是由在大量文本上训练的神经网络模型自动生成的,不代表作者或其机构的官方态度和偏好。AraGPT2生成的文本仅应用于研究和科学目的。如果它侵犯了你的权益或违反了社会道德,请不要传播它。
💡 使用建议
在使用模型时,可以尝试不同的解码设置,如 num_beams
、max_length
、top_p
等,以获得更好的生成效果。
📖 引用
如果你使用了此模型,请按以下方式引用我们:
@inproceedings{antoun-etal-2021-aragpt2,
title = "{A}ra{GPT}2: Pre-Trained Transformer for {A}rabic Language Generation",
author = "Antoun, Wissam and
Baly, Fady and
Hajj, Hazem",
booktitle = "Proceedings of the Sixth Arabic Natural Language Processing Workshop",
month = apr,
year = "2021",
address = "Kyiv, Ukraine (Virtual)",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2021.wanlp-1.21",
pages = "196--207",
}
🙏 致谢
感谢TensorFlow Research Cloud (TFRC) 免费提供Cloud TPU,没有这个项目我们无法完成这项工作。感谢 AUB MIND Lab 成员的持续支持。也感谢 Yakshof 和Assafir提供数据和存储访问。感谢Habib Rahal (https://www.behance.net/rahalhabib) 为AraBERT设计形象。
📞 联系方式
Wissam Antoun:领英 | 推特 | Github | wfa07@mail.aub.edu | wissam.antoun@gmail.com
Fady Baly:领英 | 推特 | Github | fgb06@mail.aub.edu | baly.fady@gmail.com