🚀 Diff-Codegen-6B v2 モデルカード
Diff-Codegen-6B v2は、コード生成用の差分モデルです。このモデルは、CarperAIによって公開されています。差分モデルは、ユニファイド差分形式で書かれたテキストの編集内容を学習した自己回帰型言語モデルです。これらの差分モデルは、テキストの一部と望ましい変更の説明を与えると、その説明に合った賢い変更を提案することができ、差分形式で追加、変更、削除された行をマークします。
通常のコード生成モデルの少事例プロンプトと比較すると、差分モデルは既存のコード、特に長いコードに対する賢い変更を提案するのに特化しています。また、自然言語のテキスト説明(コミットメッセージの形式で提供される)に従った変更が必要な場合にも有効です。
このモデルは、Salesforceのcodegen-6B-monoをファインチューニングしたもので、GitHubから収集した大量のコミットデータセットで学習されています。
Diff-Codegen-6B v2は実験的な研究成果物であり、そのように扱われるべきです。我々は、これらの結果とこのモデルを公開することで、特にコード用の言語モデルに興味のある研究者に役立つことを期待しています。
モデルをプロンプトする簡単な例が含まれたColabノートブックはこちらにあります。
🚀 クイックスタート
このモデルはコード生成用の差分モデルで、既存のコードに対する賢い変更を提案することができます。以下のセクションでは、モデルの詳細、学習データ、学習の詳細、意図された用途と制限、評価結果、ライセンスなどについて説明します。
✨ 主な機能
- コード生成用の差分モデルで、既存のコードに対する賢い変更を提案できる。
- 自然言語のテキスト説明(コミットメッセージ)に従ったコード変更を提案できる。
- Salesforceのcodegen-6B-monoをファインチューニングしたもので、GitHubから収集した大量のコミットデータセットで学習されている。
📦 インストール
このREADMEには具体的なインストール手順が記載されていないため、このセクションは省略されます。
💻 使用例
このREADMEには具体的なコード例が記載されていないため、このセクションは省略されます。
📚 ドキュメント
モデルの説明
Diff-Codegen-6B v2は、コード生成用の差分モデルで、CarperAIによって公開されています。差分モデルは、ユニファイド差分形式で書かれたテキストの編集内容を学習した自己回帰型言語モデルです。
学習データ
このモデルは、Salesforceのcodegen-6B-monoをファインチューニングしたものです。この言語モデルは最初に、様々なウェブコーパスから構成される800GBのデータセットであるThe Pileで事前学習されました。The Pileのデータシートと論文はそれぞれこちらとこちらにあります。その後、モデルは複数の言語の大量のコードデータセットでファインチューニングされ、最後にPythonコードデータセットでファインチューニングされました。これらのデータセットの詳細が記載されたCodegenの論文はこちらにあります。
我々のこのファインチューニング用のデータセットは、Google BigQuery Public Datasetを使用してGitHubから取得したコミットから構成されています。これは、多数のオープンソースGitHubリポジトリの最新の公開スナップショットです。我々はこのデータセットを取得し、BigQueryを使用してリポジトリのスター数でフィルタリングし、100未満のスターを持つリポジトリを除外しました。さらに、クエリをオープンソースの非コピーレフトライセンス(例:MIT、Apacheなど)を持つリポジトリと、コミットメッセージに10文字以上のコミットメッセージを持つコミットに限定しました。また、Python、HTML、Bashスクリプト、SQL、C++などの22の人気のあるプログラミング、スクリプト、マークアップ言語のリストに限定しました。これにより、フィルタリング後に1900万件のコミットからなるデータセットが得られました。
我々の差分モデルは、GitHubリポジトリの多くのプログラミング言語の大規模データセットであるBigQueryのコミットデータセットで学習されました。我々は、データセットをリポジトリのスター数(>100スター)、ライセンス(オープンソースの非コピーレフトライセンスのコードのみ含む)、およびファイルの長さ(2048トークン以上の長さのファイルを除外)でフィルタリングしました。
モデルは、Huggingface Codegenトークナイザを使用して学習されました。
学習の詳細
このモデルは、Stability AIから提供された64台のA100 GPUで、1エポックにつき10.8億トークンで学習されました。
各ファイルは、言語モデルへの入力として以下のようにフォーマットされました。
<NME> {FILE_NAME}
<BEF> {INPUT_FILE}
<MSG> {COMMIT_MESSAGE}
<DFF> {FILE_DIFF}
意図された用途と制限
モデルのサイズが小さく、コードに限定されているため、このモデルがコード以外のドメインに一般化し、大量のコードに対して(成功した)推論を行うことは期待できません。このモデルは、コード生成システムのプロトタイピングや、純粋に実験目的で使用することを想定しています。このモデルは保証なしで提供されており、商用設定での使用は避けてください。たとえライセンスが許可している場合でもです。
制限とバイアス
短いコンテキスト長の制限と、100未満のスターを持つすべてのリポジトリが除外されたことから、我々の差分モデルは、LeanやCoqなどの代表されていない言語でのパフォーマンスが低いことが予想されます。
このモデルの出力は、正しく安全なコードとして信頼されるべきではありません。このモデルは、セキュリティが重要な使命クリティカルな設定で使用してはいけません。このモデルの出力を実行する場合は、できるだけgVisorなどのサンドボックス内で行うべきです。なぜなら、モデルがファイルを削除したり、HTTPリクエストを送信したり、その他の重大なセキュリティ脆弱性を含むコードを生成する可能性があるからです。
他の言語モデルと同様に、Diff-Codegenは幻覚や偏見、ステレオタイプ、有毒な出力を生み出しやすいです。このモデルから生成される出力が真実であることは保証されていません。
評価結果
完全な評価結果については、我々のブログ記事を参照してください。
🔧 技術詳細
このモデルは、Salesforceのcodegen-6B-monoをベースに、GitHubから収集した大量のコミットデータセットでファインチューニングされています。学習には64台のA100 GPUが使用され、1エポックにつき10.8億トークンで学習されました。各ファイルは、特定のフォーマットで言語モデルに入力されました。
📄 ライセンス
このモデルはMITライセンスの下でライセンスされています。
謝辞
我々は、Honglu Fan、Harry Saini、Herbie Bradley、Reshinth Adithyan、およびJoel Lehmanの努力に感謝します!このモデルカードに対するフィードバックを提供してくれたNitarshan Rajkumarにも感謝します。