コーディング向け最先端の大規模言語モデル Code Llama
(ai.meta.com)- コーディング支援への需要が高まるなか、Meta が Code Llama を公開し、オープンモデルベースのコード生成・補完・デバッグの選択肢が広がった
- このモデルは Llama 2 をコードデータで追加学習したバージョンで、コードと自然言語プロンプトの両方からコード関連タスクを処理する
- 7B・13B・34B・70B のサイズで提供され、70B モデルは 2024年1月29日に Code Llama ファミリー最大・最高性能モデルとして追加公開された
- 基本モデル、Python 特化モデル、自然言語指示向けの Instruct バリアントに分かれており、レイテンシ・性能・用途に応じて選ぶ必要がある
- 研究および商用利用は無料だが、ライセンスと許容利用ポリシーを守り、コード生成の安全性評価もあわせて行う必要がある
Code Llama が狙うコード関連タスク
- Code Llama は、テキストプロンプトからコードを生成できるコーディング向け大規模言語モデルである
- 公開されている LLM の中でコード関連タスクにおける最先端性能を目指しており、開発者ワークフローをより速く効率的にする可能性がある
- コーディングを学ぶ人の参入障壁を下げ、プログラマーがより堅牢で文書化されたソフトウェアを書くのを支援する 生産性・教育ツールとして活用できる
- Meta は Code Llama を Llama 2 と同じコミュニティライセンスで公開している
Llama 2 をコードデータで追加学習
- Code Llama は Llama 2 をコード専用データセットでさらに学習して作られた コード特化バージョンである
- コードと自然言語プロンプトの両方を入力として受け取り、コードおよびコード関連の自然言語を生成できる
- プロンプト例: “フィボナッチ数列を出力する関数を書いて”
- コード補完やデバッグにも使用できる
- 対応言語には Python, C++, Java, PHP, Typescript(JavaScript), C#, Bash が含まれる
サイズ別の選択基準とコンテキスト
- Code Llama は 7B, 13B, 34B, 70B パラメータサイズで提供される
- 7B、13B、34B モデルはコードとコード関連データ 500B トークンで学習され、70B モデルは 1T トークンで学習されている
- 7B と 13B の基本モデルおよび Instruct モデルは fill-in-the-middle(FIM) 機能も学習しており、既存コードの途中にコードを挿入できる
- コード補完のようなタスクをすぐにサポートできる
- モデルサイズは提供方法とレイテンシ要件によって変わる
- 7B モデルは単一 GPU で提供可能
- 34B と 70B モデルは最良の結果とより優れたコーディング支援を提供する
- 7B と 13B モデルはより高速なため、リアルタイムコード補完のように低レイテンシが必要なタスクに適している
- Code Llama モデルは最大 100,000 トークンのコンテキストで安定した生成を提供する
- すべてのモデルは 16,000 トークンのシーケンスで学習されている
- 最大 100,000 トークン入力で改善が見られる
基本・Python・Instruct の3つのバリアント
- Code Llama ファミリーは3つのバリアントに分かれる
- Code Llama: 基本コードモデル
- Code Llama - Python: Python 特化モデル
- Code Llama - Instruct: 自然言語指示の理解に合わせて微調整されたモデル
- Code Llama - Python は Python コード 100B トークンで追加微調整されている
- Python はコード生成で最も多くベンチマークされる言語である
- Python と PyTorch は AI コミュニティで重要な役割を担っている
- Code Llama - Instruct は、自然言語指示の入力と期待される出力を使って学習を継続したバリアントである
- 人がプロンプトで期待する内容をよりよく理解するよう設計されている
- 自然言語で有用かつ安全な回答を生成するよう微調整されている
- コード生成に Code Llama を使う場合は、Code Llama - Instruct バリアントの使用が推奨される
- Code Llama と Code Llama - Python は自然言語指示に従うよう設計されていないため、一般的な自然言語タスクには推奨されない
- Code Llama はコード特化タスク向けであり、他のタスクの基盤モデルとしては適切ではない
Code Llama 70B の追加公開
- 2024年1月29日のアップデートで Code Llama 70B が公開された
- 70B は Code Llama ファミリーで最大かつ最高性能のモデルである
- 既存の Code Llama と同じ3つのバージョンで提供され、いずれも研究および商用利用が無料である
- CodeLlama - 70B: 基本コードモデル
- CodeLlama - 70B - Python: Python 特化 70B モデル
- Code Llama - 70B - Instruct 70B: 自然言語指示の理解に合わせて微調整されたモデル
ベンチマークと安全性評価
- 性能評価は2つのコーディングベンチマークで実施された
- ベンチマークで Code Llama は、オープンソースのコード特化 LLM と Llama 2 より高い性能を示した
- Code Llama 34B は HumanEval で 53.7%、MBPP で 56.2% を記録した
- 公開されている最先端のオープンソリューションと比較して最高水準であり、ChatGPT と同程度である
- Meta は公開前に複数の安全対策を実施し、レッドチームの過程で悪性コード生成リスクを定量評価した
- 明確な意図をもって悪性コードを求めるプロンプトを作成した
- Code Llama の応答を ChatGPT の GPT-3.5 Turbo の応答と比較してスコア化した
- 結果として Code Llama の方がより安全な応答をした
- 責任ある AI、攻撃的セキュリティエンジニアリング、マルウェア開発、ソフトウェアエンジニアリング分野の専門家によるレッドチームの詳細は、研究論文に含まれている
公開資料と責任ある利用
- Code Llama の学習レシピは GitHub リポジトリで公開されている
- モデル重みも提供されている
- 研究論文には、Code Llama の開発、ベンチマークテスト方法、限界、既知の課題、緩和策、今後調査すべき課題が含まれている
- Responsible Use Guideも更新された
- コンテンツポリシーと緩和策の定義
- データ準備
- モデルの微調整
- 性能評価と改善
- 入力および出力レベルのリスク対応
- ユーザーとのやり取りにおける透明性と報告メカニズムの構築
- 開発者はコード特化の評価ベンチマークでモデルを評価する必要がある
- マルウェア、コンピュータウイルス、悪意あるコード生成のような コード特化ユースケースに対する安全性研究が推奨される
- 自動評価および人手評価のための安全データセット活用と、敵対的プロンプトに基づくレッドチームも推奨される
オープンなコーディングモデルエコシステムにおける役割
- Code Llama は、研究、産業、オープンソースプロジェクト、NGO、企業など、さまざまな分野のソフトウェアエンジニアを支援するよう設計されている
- 基本モデルと Instruct モデルが処理できる範囲を超えて、さらに多くのユースケースが残されている
- Meta は、Code Llama が他者に Llama 2 を活用した研究や商用製品向けの新しいツールづくりを促すことを期待している
- 関連資料:
1件のコメント
Hacker Newsの意見