Code Llama リリースノート

Code Llamaは、Llama 2アーキテクチャに基づいて構築された、コーディングタスクに特化した最先端のオープンアクセス・大規模言語モデルファミリーです。これらのモデルは、コード補完、ユニットテストの生成、ドキュメント作成の自動化を通じて、開発者の生産性を向上させるように設計されています。

モデルのバリエーションとトレーニング

Code Llamaには、70億、130億、340億の3つのパラメータサイズがあります。モデルは、多段階のトレーニングプロセスを経て開発されました:

  • Base Models: Llama 2から初期化され、重複をほぼ排除した、公開されている5000億トークンのコードおよび関連する自然言語のディスカッションでトレーニングされています。
  • Python Specialist: ベースモデルのバージョンで、さらに1000億トークンのPythonコードで追加トレーニングされています。
  • Instruction Fine-tuned: 自然言語の指示を理解し、従うように最適化されたバージョンです。このバリエーションは、Llama 2 Chatの指示チューニングデータセットと、Llama 2(面接の質問を生成)およびCode Llama(解決策とユニットテストを生成)によって作成された自己指示データセットを組み合わせてトレーニングされています。

技術的能力

ロングコンテキストウィンドウ

Code Llamaは、16,000トークンのネイティブ・コンテキストウィンドウをサポートしています。ロングコンテキストのファインチューニングと周波数領域RoPEスケーリングにより、モデルは最大100,000トークンのコンテキストウィンドウを管理するために外挿することができます。

コード・インフィリング (Code Infilling)

7Bおよび13Bのベースモデルと指示(instruction)バリエーションは、コード・インフィリングをサポートしています。これにより、モデルは既存の接頭辞(prefix)と接尾辞(suffix)の間に適合するコードを生成することができ、これはIDEにおけるカーソルベースのコードアシスタントにとって極めて重要です。この機能は、34BモデルやPython特化バージョンでは利用できません。

言語サポート

これらのモデルは、Python、C++、Java、PHP、C#、TypeScript、Bashを含む、いくつかの主要なプログラミング言語にわたって最先端のパフォーマンスを発揮します。

デプロイメントと統合

Hugging Face エコシステム

Code Llamaは transformers ライブラリ(バージョン 4.33以降)に統合されており、以下をサポートしています:

  • 4-bit Loading: bitsandbytes との統合により、34BモデルをNVIDIA RTX 3090などのコンシューマ向けGPUで実行できます。
  • 精度オプション: bfloat16(ファインチューニングに推奨)でトレーニングされていますが、評価指標に目立った低下なしに、より高速な推論のために float16 で実行することも可能です。

本番環境での推論

本番環境向けのデプロイメントとして、モデルは Text Generation Inference (TGI) および Hugging Face Inference Endpoints と互換性があります。Inference Endpoints の推奨ハードウェアは以下の通りです:

  • 7Bモデル: 1x Nvidia A10G (GPU medium)
  • 13Bモデル: 1x Nvidia A100 (GPU xlarge)
  • 34Bモデル: bitsandbytes 量子化を使用した 1x Nvidia A100 (GPU 1xlarge) または 2x Nvidia A100 (GPU 2xlarge)

パフォーマンス評価

Code Llama モデルは、HumanEval および MultiPL-E(HumanEvalを複数の言語に翻訳したもの)を使用してベンチマークされています。出版時点の多言語コードリーダーボードによると、Code Llama ファミリーは異なるサイズや種類において競争力のあるパフォーマンスを示しています。例えば、CodeLlama-34B-Instruct モデルは、Python スコア 50.79、JavaScript スコア 45.85 を達成し、リーダーボードの平均スコアは 35.09 でした。

Sources