模型简介
模型特点
模型能力
使用案例
🚀 阿拉伯语GPT2
阿拉伯语GPT2是一个用于阿拉伯语语言生成的预训练Transformer模型。它基于不同规模的GPT2架构进行训练,可用于多种自然语言处理任务。该模型在大规模阿拉伯语数据集上进行训练,支持在GPU和TPU上进行训练和微调。
🚀 快速开始
你可以在我们的论文 AraGPT2 中找到更多信息。本仓库中的代码用于训练所有GPT2变体,支持通过TPUEstimator API在GPU和TPU上对GPT2进行训练和微调。
✨ 主要特性
- 多架构支持:GPT2-base和medium使用
gpt2
文件夹中的代码,基于minimaxir/gpt - 2 - simple仓库训练;GPT2-large和GPT2-mega使用imcaspar/gpt2-ml库,遵循grover
架构。 - 多优化器适配:GPT2-base和medium使用
lamb
优化器;GPT2-large和GPT2-mega使用adafactor
优化器,以解决内存问题。 - 多格式兼容:模型检查点支持PyTorch、TF2和TF1格式,并且与
transformers
库兼容。
📦 安装指南
使用transformers
库测试模型
from transformers import GPT2TokenizerFast, pipeline
# 适用于base和medium
from transformers import GPT2LMHeadModel
# 适用于large和mega
# pip install arabert
from arabert.aragpt2.grover.modeling_gpt2 import GPT2LMHeadModel
from arabert.preprocess import ArabertPreprocessor
MODEL_NAME='aubmindlab/aragpt2-medium'
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 \
--input_file="gs://<GS_BUCKET>/pretraining_data/*" \
--output_dir="gs://<GS_BUCKET>/pretraining_model/" \
--config_file="config/small_hparams.json" \
--batch_size=128 \
--eval_batch_size=8 \
--num_train_steps= \
--num_warmup_steps= \
--learning_rate= \
--save_checkpoints_steps= \
--max_seq_length=1024 \
--max_eval_steps= \
--optimizer="lamb" \
--iterations_per_loop=5000 \
--keep_checkpoint_max=10 \
--use_tpu=True \
--tpu_name=<TPU NAME> \
--do_train=True \
--do_eval=False
💻 使用示例
基础用法
from transformers import GPT2TokenizerFast, pipeline
# 适用于base和medium
from transformers import GPT2LMHeadModel
# 适用于large和mega
# pip install arabert
from arabert.aragpt2.grover.modeling_gpt2 import GPT2LMHeadModel
from arabert.preprocess import ArabertPreprocessor
MODEL_NAME='aubmindlab/aragpt2-medium'
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进行微调的步骤。
📚 详细文档
模型规格
属性 | 详情 |
---|---|
模型类型 | AraGPT2-base、AraGPT2-medium、AraGPT2-large、AraGPT2-mega |
优化器 | base和medium使用lamb ;large和mega使用adafactor |
上下文大小 | 1024 |
嵌入大小 | base: 768;medium: 1024;large: 1280;mega: 1536 |
头数 | base: 12;medium: 16;large: 20;mega: 25 |
层数 | base: 12;medium: 24;large: 36;mega: 48 |
模型大小/参数数量 | base: 527MB / 135M;medium: 1.38G/370M;large: 2.98GB/792M;mega: 5.5GB/1.46B |
计算资源
模型 | 硬件 | 示例数量 (序列长度 = 1024) | 批量大小 | 步数 | 时间 (天) |
---|---|---|---|---|---|
AraGPT2-base | TPUv3 - 128 | 9.7M | 1792 | 125K | 1.5 |
AraGPT2-medium | TPUv3 - 8 | 9.7M | 80 | 1M | 15 |
AraGPT2-large | TPUv3 - 128 | 9.7M | 256 | 220k | 3 |
AraGPT2-mega | TPUv3 - 128 | 9.7M | 256 | 780K | 9 |
数据集
预训练数据也用于AraBERTv2和AraELECTRA。数据集包含77GB、200,095,961行、8,655,948,860个单词或82,232,988,358个字符(应用Farasa分割之前)。新数据集在AraBERTv1使用的数据集基础上,添加了未打乱的OSCAR语料库,并进行了彻底过滤,同时去除了之前爬取的网站:
- 未打乱并过滤后的OSCAR语料库。
- 2020/09/01的阿拉伯语维基百科转储
- 15亿单词的阿拉伯语语料库
- OSIAN语料库
- Assafir新闻文章。非常感谢Assafir提供数据。
🔧 技术细节
该模型基于Transformer架构,使用不同的优化器和架构进行训练。GPT2-base和medium遵循gpt2
架构,使用lamb
优化器;GPT2-large和GPT2-mega遵循grover
架构,使用adafactor
优化器以解决内存问题。模型通过TPUEstimator API支持在GPU和TPU上进行训练和微调。
📄 许可证
请遵循代码仓库中的相关许可证信息。
免责声明
AraGPT2生成的文本是由在大量文本上训练的神经网络模型自动生成的,不代表作者或其机构的官方态度和偏好。AraGPT2生成的文本仅应用于研究和科学目的。如果它侵犯了您的权益或违反了社会道德,请不要传播它。
引用说明
如果您使用了此模型,请按以下方式引用我们:
@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



