🚀 CodeGen (CodeGen-Mono 350M)
CodeGenは、プログラム合成のための自己回帰型言語モデルのファミリーです。このモデルは、特定の自然言語とプログラミング言語のテキストから特徴を抽出し、それらの尤度を計算することができます。
🚀 クイックスタート
このモデルは、AutoModelForCausalLM
機能を使用して簡単にロードできます。以下にコード例を示します。
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
✨ 主な機能
- 自然言語とプログラミング言語のテキストから特徴を抽出し、尤度を計算することができます。
- 英語のプロンプトを与えることで、実行可能なコードを生成することができます。
- 部分的に生成されたコードを完成させることもできます。
📦 インストール
このモデルは、transformers
ライブラリを使用して簡単にロードできます。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=128)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
高度な使用法
高度なシナリオでは、generate
メソッドのパラメータを調整することができます。例えば、temperature
や top_k
などのパラメータを変更することで、生成されるコードの多様性を制御できます。
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("Salesforce/codegen-350M-mono")
model = AutoModelForCausalLM.from_pretrained("Salesforce/codegen-350M-mono")
text = "def hello_world():"
input_ids = tokenizer(text, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids, max_length=128, temperature=0.7, top_k=50)
print(tokenizer.decode(generated_ids[0], skip_special_tokens=True))
📚 ドキュメント
モデルの説明
CodeGenは、論文 A Conversational Paradigm for Program Synthesis からの プログラム合成 のための自己回帰型言語モデルのファミリーです。この論文の著者は、Erik Nijkamp, Bo Pang, Hiroaki Hayashi, Lifu Tu, Huan Wang, Yingbo Zhou, Silvio Savarese, Caiming Xiong です。モデルは、元々 このリポジトリ で公開されており、3つの事前学習データバリアント (NL
, Multi
, Mono
) と4つのモデルサイズバリアント (350M
, 2B
, 6B
, 16B
) があります。
このリポジトリに含まれるチェックポイントは、論文では CodeGen-Mono 350M と表記されています。ここで、"Mono" は、モデルが CodeGen-Multi 350M で初期化され、Pythonプログラミング言語のデータセットでさらに事前学習されたことを意味し、"350M" は学習可能なパラメータの数を指します。
学習データ
このチェックポイント (CodeGen-Mono 350M) は、まず CodeGen-Multi 350M で初期化され、次にBigPythonデータセットで事前学習されました。このデータは、71.7BトークンのPythonプログラミング言語で構成されています。詳細については、論文 のセクション2.1を参照してください。
学習手順
CodeGenは、交差エントロピー損失を使用して学習され、逐次入力の尤度を最大化します。このモデルファミリーは、Googleの複数のTPU-v4-512を使用して学習され、データ並列とモデル並列を利用しています。詳細については、論文 のセクション2.3を参照してください。
評価結果
私たちは、2つのコード生成ベンチマークであるHumanEvalとMTPBでモデルを評価しました。詳細については、論文 を参照してください。
意図された使用法と制限
自己回帰型言語モデルとして、CodeGenは、与えられた自然言語とプログラミング言語のテキストから特徴を抽出し、それらの尤度を計算することができます。ただし、このモデルは、プログラム合成 を目的としており、英語のプロンプトを与えることで実行可能なコードを生成することが最も得意です。プロンプトはコメント文字列の形式である必要があります。また、部分的に生成されたコードを完成させることもできます。
倫理的な考慮事項
このリリースは、学術論文のサポートのための研究目的のみです。私たちのモデル、データセット、およびコードは、すべての下流の目的に特に設計または評価されていません。ユーザーは、このモデルをデプロイする前に、精度、安全性、および公平性に関する潜在的な懸念事項を評価し、対処することを強くお勧めします。ユーザーは、AIの一般的な制限を考慮し、適用可能な法律に準拠し、特にエラーや誤用が人々の生活、権利、または安全に重大な影響を与える可能性のある高リスクシナリオでは、ベストプラクティスを活用することをお勧めします。使用例に関する詳細なガイダンスについては、私たちのAUPおよびAI AUPを参照してください。
BibTeXエントリと引用情報
@article{Nijkamp2022ACP,
title={A Conversational Paradigm for Program Synthesis},
author={Nijkamp, Erik and Pang, Bo and Hayashi, Hiroaki and Tu, Lifu and Wang, Huan and Zhou, Yingbo and Savarese, Silvio and Xiong, Caiming},
journal={arXiv preprint},
year={2022}
}
📄 ライセンス
このモデルは、BSD 3条項ライセンスの下で提供されています。
📚 ドキュメント内の情報表
属性 |
详情 |
モデルタイプ |
自己回帰型言語モデル |
学習データ |
BigPythonデータセット(71.7BトークンのPythonプログラミング言語) |
⚠️ 重要提示
このリリースは研究目的のみです。モデルをデプロイする前に、精度、安全性、および公平性に関する潜在的な懸念事項を評価し、対処することを強くお勧めします。
💡 使用建议
高リスクシナリオでは、AIの一般的な制限を考慮し、適用可能な法律に準拠し、ベストプラクティスを活用することをお勧めします。使用例に関する詳細なガイダンスについては、AUPおよびAI AUPを参照してください。