🚀 Arabic GPT2
このモデルは、大規模なアラビア語データセットを用いて訓練された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コア上で1バッチでもモデルが収まらないからです。
AraGPT2は、AraBERTv2と同じ大規模なアラビア語データセットで訓練されています。
🚀 クイックスタート
💻 使用例
基本的な使用法
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
を使用してモデルをテストするには、上記のコードを参照してください。
ファインチューニング
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セグメンテーションを適用する前)で構成されています。
新しいデータセットでは、AraBERTv1で使用されたデータセットに、徹底的にフィルタリングされた未シャッフルのOSCARコーパスを追加しましたが、以前にクロールしたウェブサイトは含まれていません。
📄 ライセンス
免責事項
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)に、クラウド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