🚀 GPT-Neo-1.3B-APPS-all
GPT-Neo-1.3B-APPS-allは、コード生成に特化したモデルです。GPT-Neo-1.3BをAPPSデータセットでファインチューニングしており、プログラミングタスクの解決に優れています。
🚀 クイックスタート
⚠️ 重要な注意事項
このモデルに関する詳細な情報は、GitHub Wikiを参照してください。ここには、GitHub Copilotのオープンソース版を作成する際の取り組みが詳細に記載されています。
✨ 主な機能
GPT-Neo-1.3B-APPS-allは、GPT-Neo-1.3BをAPPSデータセットでファインチューニングしたモデルで、プログラミングタスクの解決に特化しています。
📦 インストール
このモデルのトレーニングに使用されたスクリプトは、こちらにあります。トレーニングを再現するには、以下のコマンドを使用できます。
python run_clm_apps.py \
--output_dir ./gpt-neo-1.3B-apps \
--model_name_or_path EleutherAI/gpt-neo-1.3B \
--dataset_name ./apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="3" \
--per_device_eval_batch_size="3" \
--preprocessing_num_workers="16" \
--learning_rate="8e-5" \
--warmup_steps="800" \
--adam_beta1="0.9" \
--adam_beta2="0.98" \
--weight_decay="0.1" \
--overwrite_output_dir \
--num_train_epochs="5" \
--logging_steps="50" \
--eval_steps="2000" \
--report_to="wandb" \
--dtype="bfloat16" \
--save_strategy epoch \
--gradient_accumulation_steps 1 \
--all_data true \
📚 ドキュメント
モデルの説明
GPT-Neo-1.3B-APPS-allは、GPT-Neo-1.3BをAPPSデータセットでファインチューニングしたモデルです。このモデルは、プログラミングタスクの解決に特化しています。
トレーニングデータ
このモデルは、Automated Programming Progress Standard (APPS) データセットでトレーニングされています。このデータセットは、合計10,000のコーディング問題で構成されており、解決策をチェックするための131,836のテストケースと、人間によって書かれた232,444の正解が含まれています。問題は複雑な場合があり、問題の平均長は293.2語です。データはトレーニングセットとテストセットに均等に分割され、それぞれ5,000の問題が含まれています。
このモデルは、トレーニングセットとテストセットの両方を含むAPPSデータセットの大部分を使用してファインチューニングされており、このトレーニングタスクが他のコード合成評価指標に対するモデルのパフォーマンスに与える影響を調査しています。トレーニングセットのみでファインチューニングされたモデルは、こちらで見つけることができます。
トレーニング手順
このモデルをトレーニングするために使用されたトレーニングスクリプトは、こちらで見つけることができます。
トレーニングは、AdamWオプティマイザーと800のウォームアップステップを持つ線形減衰学習率スケジュールを使用して、5エポック行われます。トレーニングを再現するには、上記のスクリプトとともにこのコマンドを使用できます。
使用方法
このモデルは、テキスト生成パイプラインで直接使用できます。この例では、実行するたびに異なるシーケンスが生成されます。
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-code-clippy-1.3B-apps-alldata")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-code-clippy-1.3B-apps-alldata")
prompt = """
A function to greet user. Given a user name it should say hello
def greet(name):
ANSWER:
"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)
start = input_ids.size(1)
out = model.generate(input_ids, do_sample=True, max_length=50, num_beams=2,
early_stopping=True, eos_token_id=tokenizer.eos_token_id, )
print(tokenizer.decode(out[0][start:]))
制限事項とバイアス
- 過度な依存:このモデルは、正しいように見える解決策を生成する場合がありますが、必ずしも正しい解決策ではありません。生成されたコードを適切に評価しないと、バグの導入やセキュリティホールの導入などの悪影響を引き起こす可能性があります。したがって、ユーザーはこの言語モデルの制限と潜在的な悪影響を認識していることが重要です。
- 経済的および労働市場への影響:このような大規模なコードデータセットでトレーニングされた大規模言語モデルは、高品質なコードを生成する能力があり、ソフトウェア開発プロセスの一部を自動化する可能性があります。これはソフトウェア開発者に悪影響を与える可能性があります。しかし、論文で議論されているように、O*NET OnLineのソフトウェア開発者の概要レポートに示されているように、開発者はソフトウェアを書くだけではありません。
- バイアス:このモデルは、特定の形式で書かれたプロンプト質問を含むデータでトレーニングされています。プロンプトの形式がAPPSデータセットで使用されている形式と異なる場合、モデルのパフォーマンスは低下する可能性があります。
GPT-CCは、GPT-Neoをファインチューニングしたものであり、そのバイアスや制限事項を引き継いでいる可能性があります。詳細については、GPT-Neoモデルカードを参照してください。
🔧 技術詳細
トレーニングは、AdamWオプティマイザーと線形減衰学習率スケジュールを使用して、5エポック行われます。学習率は8e-5で、800のウォームアップステップがあります。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。