🚀 GPT-Code-Clippy-1.3B-APPS-all
GPT-Code-Clippy-1.3B-APPS-allは、プログラミングタスクを解決するために特化したモデルです。GPT-Neo-1.3BをAPPSデータセットでファインチューニングしています。
🚀 クイックスタート
このモデルは、テキスト記述とオプションのスターターコードを元にプログラミング問題を解決するようにファインチューニングされています。以下に使用例を示します。
✨ 主な機能
- プログラミングタスクを解決する能力を持つ。
- APPSデータセットでファインチューニングされている。
📦 インストール
このモデルを再現するためのトレーニングコマンドは以下の通りです。
python run_clm_apps.py \
--output_dir ./gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125B \
--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 \
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
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:]))
📚 ドキュメント
モデルの説明
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エポック行われます。トレーニングを再現するには、上記のスクリプトでこのコマンドを使用することができます。
意図された使用法と制限事項
使用方法
このモデルは、テキスト生成用のパイプラインで直接使用することができます。この例では、実行するたびに異なるシーケンスが生成されます。
制限事項とバイアス
- 過度な依存:このモデルは、正しいように見えるが必ずしも正しい解決策ではない解を生成する可能性があります。生成されたコードを適切に評価しないと、バグの導入やセキュリティホールの導入などの悪影響を引き起こす可能性があります。したがって、ユーザーがこの言語モデルの制限と潜在的な悪影響を認識することが重要です。
- 経済的および労働市場への影響:このような大規模なコードデータセットでトレーニングされた大規模言語モデルは、高品質なコードを生成する能力があり、ソフトウェア開発プロセスの一部を自動化する可能性があります。これはソフトウェア開発者に悪影響を与える可能性があります。ただし、論文で議論されているように、O*NET OnLineからのソフトウェア開発者の概要レポートに示されているように、開発者はソフトウェアを書くだけではありません。
- バイアス:このモデルは、特定の形式でフォーマットされたプロンプト質問を含むデータでトレーニングされています。プロンプトのフォーマットがAPPSデータセットで使用されているものと異なる場合、モデルの性能は低下する可能性があります。
このモデルはGPT-Neoをファインチューニングしたものであり、そこからバイアスや制限事項を引き継いでいる可能性があります。詳細はGPT-Neoモデルカードを参照してください。
🔧 技術詳細
トレーニングには、AdamWオプティマイザーと線形減衰学習率スケジュールが使用され、800のウォームアップステップが設定されています。トレーニングは5エポック行われます。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。