CodeGemma モデルカード

モデルページ: CodeGemma

リソースと技術ドキュメント:

利用規約: 利用規約

作成者: Google

モデル情報

モデルの概要

説明

CodeGemma は、Gemma 上に構築された軽量のオープンコードモデル ファミリーです。CodeGemma モデルは、テキストからテキストへの、テキストからコードへのデコーダのみのモデルであり、コード補完とコード生成タスクに特化した 70 億の事前トレーニング済みバリアント、コードチャットと命令追跡用の 70 億パラメータの命令調整バリアント、高速なコード補完用の 20 億パラメータの事前トレーニング済みバリアントとして利用できます。

入力と出力

  • 入力: 事前トレーニング済みモデル バリアントの場合: コード補完と生成のシナリオ、または自然言語のテキスト/プロンプトのコード接頭辞と接尾辞(省略可)。指示を調整したモデルのバリアントの場合: 自然言語のテキストまたはプロンプト。

  • 出力: 事前トレーニング済みモデル バリアントの場合: 中間入力のコード補完、コード、自然言語。指示用に調整されたモデルのバリアントの場合 コードと自然言語

引用

@article{codegemma_2024,
    title={CodeGemma: Open Code Models Based on Gemma},
    url={https://goo.gle/codegemma},
    author={ {CodeGemma Team} and Hartman, Ale Jakse and Hu, Andrea and Choquette-Choo, Christopher A. and Zhao, Heri and Fine, Jane and Hui,
    Jeffrey and Shen, Jingyue and Kelley, Joe and Howland, Joshua and Bansal, Kshitij and Vilnis, Luke and Wirth, Mateo and Nguyen, Nam, and Michel, Paul and Choy, Peter and Joshi, Pratik and Kumar, Ravin and Hashmi, Sarmad and Agrawal, Shubham and Zuo, Siqi and Warkentin, Tris and Gong, Zhitao et al.},
    year={2024}
}

モデルデータ

トレーニング データセット

Gemma をベースモデルとして使用し、CodeGemma 2B と 7B の事前トレーニング済みバリアントは、オープンソースの数学データセットと合成で生成されたコードから、主に英語のデータの 5,000 ~ 1,000 億トークンでさらにトレーニングされます。

トレーニング データ処理

CodeGemma のトレーニングには、次のデータ前処理手法が適用されています。

  • FIM - 事前トレーニング済みの CodeGemma モデルは、中間充填(FIM)タスクに重点を置いています。モデルは、PSM モードと SPM モードの両方で動作するようにトレーニングされています。Google の FIM 設定は FIM 率が 80 ~ 90% で、PSM/SPM は 50 ~ 50 です。
  • 依存関係グラフベースのパッキングと単体テストベースのレキシカル パッキング手法: 実際のアプリケーションとモデルの整合性を向上させるため、各リポジトリ内で最も関連性の高いソースファイルを同じ場所に配置するように、プロジェクト/リポジトリ レベルでトレーニング例を構造化しました。具体的には、依存関係グラフベースのパッキングと単体テストベースの語彙パッキングという 2 つのヒューリスティック手法を採用しました。
  • ドキュメントを接頭辞、中間点、接尾辞に分割し、純粋にランダムな分布ではなく、構文的に自然なポイントから接尾辞を開始させる新しい手法を開発しました。
  • 安全性: Gemma と同様に、Google のポリシーに沿って、個人データのフィルタリング、CSAM フィルタリング、コンテンツの品質と安全性に基づくその他のフィルタリングなど、厳格な安全フィルタリングをデプロイしました。

実装情報

トレーニング中に使用されたハードウェアとフレームワーク

Gemma と同様に、CodeGemma は JAXML Pathways を使用して、最新世代の Tensor Processing Unit(TPU)ハードウェア(TPUv5e)でトレーニングされています。

評価情報

ベンチマークの結果

評価方法

コーディングのベンチマーク結果

ベンチマーク 20 億 2B(1.1) 70 億人 70 億-IT 7B-IT(1.1)
HumanEval 3,111 万台 37.8 44.5 5,610 万台 6,040 万台
MBPP 4,360 万台 4,920 万台 5,620 54.2 5,560 万台
HumanEval(単一行) 78.4 79.3 7,610 万台 6,830 7,740 万台
HumanEval:複数行 51.4 5,100 万台 58.4 20.1 2,370 万台
BC HE C++ 24.2 1,990 万台 3,290 万台 4,220 万台 4,660 万台
BC HE C# 10.6 26.1 22.4 26.7 54.7
BC HE GO 2,050 万台 18.0 21.7 28.6 3,420
BC HE Java 29.2 2,980 万台 4,100 4,840 万台 5,030 万台
BC HE JavaScript 21.7 28.0 3,980 万台 4,600 4,840 万台
BC HE Kotlin 28.0 3,230 万台 3,980 万台 5,160 万台 4,780 万台
BC HE Python 21.7 3,660 万台 4,220 万台 4,840 万台 5,400
BC HE ラスト 26.7 24.2 3,410 万台 3,600 3,730 万台
BC MBPP C++ 4,710 万台 3,890 万台 5,380 万台 5,670 万台 6,350
BC MBPP C# 2,870 万台 4,530 万台 3,250 万台 4,120 万台 62.0
BC MBPP Go 4,560 万台 3,890 万台 4,330 万台 4,620 万台 53.2
BC MBPP Java 4,180 万台 4,970 万台 5,030 万台 5,730 万台 6,290
BC MBPP JavaScript 4,530 万台 45.0 58.2 6,140 万台 6,140 万台
BC MBPP Kotlin 4,680 4,970 万台 54.7 5,990 万台 6,260
BC MBPP Python 3,860 万台 5,290 万台 5,910 万台 62.0 60.2
BC MBPP Rust 4,530 万台 4,740 万台 5,290 万台 5,350 万台 52.3

自然言語ベンチマーク(7B モデル)

Gemma、CodeGemma PT、CodeGemma IT をさまざまな言語機能の指標で比較した棒グラフ。3 つのモデルはすべておおむね同等で、CodeGemma は自然言語を理解しています。

倫理と安全性

倫理と安全性の評価

評価のアプローチ

Google の評価方法には、体系的な評価と、関連するコンテンツ ポリシーに関する内部レッドチーム テストがあります。レッドチームは多くの異なるチームによって実施され、それぞれに異なる目標と人間による評価指標が設定されました。これらのモデルは、次のような倫理と安全性に関連するさまざまなカテゴリに対して評価されました。

  • コンテンツの安全性と表現上の有害性に関するプロンプトに対する人間による評価。評価アプローチの詳細については、Gemma モデルカードをご覧ください。

  • サイバー攻撃能力の具体的なテスト。自律的なハッキング能力のテストと、潜在的な被害の制限に重点を置いています。

評価の結果

倫理と安全性の評価の結果は、子供の安全、コンテンツの安全性、表現上の危害、記憶、大規模な危害などのカテゴリに関する社内ポリシーを満たすための許容しきい値の範囲内です。詳細については、Gemma モデルカードをご覧ください。

モデルの使用と制限事項

既知の制限事項

大規模言語モデル(LLM)には、トレーニング データとテクノロジー固有の制限に基づく制限があります。LLM の制限事項の詳細については、Gemma モデルカードをご覧ください。

倫理的考慮事項とリスク

大規模言語モデル(LLM)の開発では、いくつかの倫理的懸念が生じます。これらのモデルの開発では、複数の側面を慎重に検討しました。

モデルの詳細については、Gemma モデルカードの同じ説明をご覧ください。

使用目的

Application(アプリケーション)

Code Gemma モデルには幅広い用途があり、IT モデルと PT モデルで異なります。次の使用例は、すべてを網羅しているわけではありません。このリストの目的は、モデル作成者がモデルのトレーニングと開発の一環として検討した可能性のあるユースケースに関するコンテキスト情報を提供することです。

  • コード補完: PT モデルを使用して IDE 拡張機能でコードを補完
  • コード生成: IDE 拡張機能の有無にかかわらず、IT モデルを使用してコードを生成できる
  • コード会話: IT モデルは、コードについて説明する会話インターフェースを強化できます。
  • コードの教育: IT モデルはインタラクティブなコード学習体験をサポートし、構文の修正を支援し、コーディングの練習を提供します

利点

リリース時点では、このモデル ファミリーは、同様の規模のモデルと比較して、責任ある AI 開発のために一から設計された高性能なオープンコード中心の大規模言語モデル実装を提供します。

このドキュメントで説明するコーディング ベンチマークの評価指標を使用すると、これらのモデルは、同等のサイズの他のオープンモデルよりも優れたパフォーマンスを発揮することがわかっています。