英文

Arabic GPT2

在我们的论文中可以找到更多信息 AraGPT2

该存储库中的代码用于训练所有的GPT2变种。该代码支持通过TPUEstimator API在GPU和TPU上训练和微调GPT2。

GPT2-base和medium使用来自gpt2文件夹的代码,并且可以使用 minimaxir/gpt-2-simple 存储库训练模型。这些模型使用lamb优化器进行训练,遵循与gpt2相同的架构,并且与transformers库完全兼容。

GPT2-large和GPT2-mega使用 imcaspar/gpt2-ml 库进行训练,并遵循grover架构。您可以使用在grover/modeling_gpt2.py中找到的pytorch类直接替换transformers库中的类(它应该支持transformers的v4.x版本)。这两个模型都使用adafactor优化器进行训练,因为adam和lamb优化器使用的内存太多,导致模型无法适应TPU核上的一个批次。

AraGPT2是使用与AraBERTv2相同的大型阿拉伯语数据集进行训练的。

使用方法

使用transformers测试模型:

您需要使用arabert中的GPT2LMHeadModel:pip install arabert

from transformers import GPT2TokenizerFast, pipeline
#for base and medium
from transformers import GPT2LMHeadModel
#for large and mega
from arabert.aragpt2.grover.modeling_gpt2 import GPT2LMHeadModel

from arabert.preprocess import ArabertPreprocessor

MODEL_NAME='aubmindlab/aragpt2-mega'
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)

#feel free to try different decoding settings
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微调:

按照链接的指南进行操作 here

使用我们的代码和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

模型大小

Model Optimizer Context size Embedding Size Num of heads Num of layers Model Size / Num of Params
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格式提供。

计算

数据集来源请参见数据集部分

Model Hardware num of examples (seq len = 1024) Batch Size Num of Steps Time (in days)
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

数据集

用于新的AraBERT模型的预训练数据也用于GPT2和ELECTRA。

数据集由77GB或200,095,961行或8,655,948,860个单词或82,232,988,358个字符组成(在应用Farasa分词之前)。

对于新数据集,我们将经过彻底筛选的未洗牌的OSCAR语料库添加到了AraBERTv1中使用的先前数据集中,但不包括我们以前爬取的网站:

声明

GPT2阿拉伯语生成的文本是由一个在大量文本上训练的神经网络模型自动生成的,它不代表作者或其机构的官方态度和偏好。 GPT2阿拉伯语生成的文本仅应用于研究和科学目的。如果它侵犯了您的权益,违反了社会道德,请不要传播它。

如果您使用了这个模型,请引用我们:

@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)提供免费访问云TPU的机会,没有这个计划,我们无法完成这个项目,还要感谢 AUB MIND Lab 成员对我们的持续支持。同时感谢 Yakshof 和Assafir提供数据和存储访问权限。对于Habib Rahal ( https://www.behance.net/rahalhabib ),感谢他为AraBERT付出努力。

联系方式

Wissam Antoun : Linkedin | Twitter | Github | wfa07@mail.aub.edu | wissam.antoun@gmail.com

Fady Baly : Linkedin | Twitter | Github | fgb06@mail.aub.edu | baly.fady@gmail.com