HuggingFace ブログ : StarCoder : コーディング用の最先端の LLM (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 06/13/2023
* 本ページは、HuggingFace Blog の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
- StarCoder: A State-of-the-Art LLM for Code (Authors : Leandro von Werra, Loubna Ben Allal ; Published : 05/04/2023)
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
HuggingFace ブログ : StarCoder : コーディング用の最先端の LLM
StarCoder の紹介
StarCoder と StarCoderBase は、80 以上のプログラミング言語を含む GitHub, Git コミット, GitHub issues と Jupyter ノートブックからの寛容にライセンスされたデータで訓練されたコーディング用大規模言語モデル (Code LLM, Large Language Models for Code) です。LLaMA と同様に、1 兆のトークンに対して ~15B パラメータのモデルを訓練しました。StarCoderBase モデルを 35B Python トークンに対して再調整し、StarCoder と呼ぶ新しいモデルになりました。
StarCoderBase はポピュラーなプログラミング・ベンチマークで既存のオープンなコード LLM よりもパフォーマンスが優れ、OpenAI の code-cushman-001 (GitHub Copilot の早期バージョンを駆動するオリジナル Codex モデル) のようなクローズドなモデルと同等であるか上回ることを見出しました。8,000 トークン以上のコンテキスト長により、StarCoder モデルは任意の他のオープンな LLM よりも多い入力を処理することができて、広範囲の興味深いアプリケーションを可能にします。例えば、StarCoder モデルに一連の会話をプロンプトとして与えると、テクニカルアシスタントとして動作させることを可能にします。更に、コードを自動補完し、指示を通してコードに修正を加え、そしてコードスニペットを自然言語で說明するためにモデルを利用できます。私たちは改良された PII redaction (編集) パイプライン, 新規の属性 (attribution) 追跡ツールを含む、安全なオープンなモデル・リリースに向けて幾つかの重要なステップを踏み、そして StarCoder を OpenRAIL ライセンスの改良版のもとで一般に利用可能にしました。更新されたライセンスは企業がモデルを自社製品に統合するプロセスを単純化します。その強力なパフォーマンスにより、StarCoder モデルはコミュニティが利用してユースケースと製品に対して適応させる強固な基盤として機能することを私たちは確信しています。
評価
私たちは StarCoder と幾つかの類似のモデルと各種ベンチマークで徹底的に評価しました。ポピュラーな Python ベンチマークは HumanEval で、これはモデルがシグネチャと docstring に基づいて関数を完成できるかをテストします。StarCoder と StarCoderBase の両方は、かなり小さいにもかかわらず、PaLM, LaMDA, と LLaMA を含む最も大規模なモデルの性能を超えていることを見出しました。またそれらは CodeGen-16B-Mono と OpenAI の code-cushman-001 (12B) model の性能も超えています。私たちはまた、モデルの失敗ケースで “#Solution here” を生成するような場合にも気づきました、これは多分コードの種類が通常は課題の一部であるためでしょう。モデルに実際の解を生成させるため、プロンプト “<filename>solutions/solution_1.py\n# Here is the correct implementation of the code exercise” を追加しました。これは StarCoder の HumanEval スコアを 34% から 40% 以上へと大幅に向上させ、オープンモデルに対する最先端の結果を確定しました。このプロンプトを CodeGen と StarCoderBase に対しても試しましたが、大きな違いは観測できませんでした。
モデル | HumanEval | MBPP |
LLaMA-7B | 10.5 | 17.7 |
LaMDA-137B | 14.0 | 14.8 |
LLaMA-13B | 15.8 | 22.0 |
CodeGen-16B-Multi | 18.3 | 20.9 |
LLaMA-33B | 21.7 | 30.2 |
CodeGeeX | 22.9 | 24.4 |
LLaMA-65B | 23.7 | 37.7 |
PaLM-540B | 26.2 | 36.8 |
CodeGen-16B-Mono | 29.3 | 35.3 |
StarCoderBase | 30.4 | 49.0 |
code-cushman-001 | 33.5 | 45.9 |
StarCoder | 33.6 | 52.7 |
StarCoder-Prompted | 40.8 | 49.5 |
StarCoder の興味深い様相は、それがマルチリンガル (多言語対応) であることで、それを MultiPL-E 上で評価しました、これは HumanEval を多くの他の言語に拡張しています。StarCoder は多くの言語で code-cushman-001 と同等か優れていることを観察しました。DS-1000 と呼ばれるデータサイエンスのベンチマークでは、StarCoder は code-cushman-001 と他のオープンサクセス可能なモデルすべてを明らかに打ち負かしています。しかしこのモデルがコード補完以外に他の何ができるかを見てみましょう!
技術アシスタント
徹底的な評価により、StarCoder がコードを書くことについて非常に有能であることを見出しました。しかしまた私たちはそれが技術アシスタントとして利用できるかテストすることを望み、結局、それは多くのドキュメントと GitHub issues で訓練されました。Anthropic の HHH prompt にインスパイアされて、Tech Assistant Prompt を構築しました。驚くことに、プロンプトだけでモデルは技術アシスタントとして動作し、プログラミング関連リクエストに答えることができます!
訓練データ
モデルは Stack 1.2 のサブセットで訓練されました。データセットは寛容にライセンスされたコードだけで構成され、コード提供者がデータセットから彼らのデータを削除できるようにオプトアウトの過程を含みます (Am I in The Stack 参照)。Toloka とのコラボレーションにより、訓練データから名前, パスワード, 電子メールアドレスのような個人情報を削除しました。
BigCode について
BigCode は、コーディング用の大規模言語モデルの責任ある開発について作業する、Hugging Face と ServiceNow が共同的に主導するオープンな科学的コラボレーションです。
追加のリリース
モデルとともに、リストのリソースとデモをリリースしています :
- モデル重み、OpenRAIL ライセンスによる中間的なチェックポイントを含みます。
- Apache 2.0 によるデータ前処理と訓練用のすべてのコード。
- コーディング用モデルのための包括的な評価ハーネス。
- PII (個人情報) 除去を訓練して評価するための新しい PII データセット。
- 訓練用に使用される完全に前処理されたデータセット。
- データセット内で生成されたコードを見つけるためのコード属性 (attribution) ツール
リンク
モデル
- 論文 : StarCoder に関する技術レポート
- GitHub : StarCoder の使用、または再調整について知る必要があることのすべて
- StarCoder : Python で更に訓練された StarCoderBase
- StarCoderBase : Stack からの 80 以上の言語で訓練されました。
- StarEncoder : Stack で訓練されたエンコーダモデル
- StarPii : StarEncoder ベースの PII 検出器
ツール & デモ
- StarCoder Chat : Chat with StarCoder!
- VSCode Extension : Code with StarCoder!
- StarCoder Playground : Write with StarCoder!
- StarCoder Editor : Edit with StarCoder!
データとガバナンス
- StarCoderData : StarCoder の事前訓練用データセット
- Tech Assistant Prompt : このプロンプトにより、StarCoder を技術アシスタントに変えることができます。
- ガバナンス・カード : モデルのガバナンスを概説するカード
- StarCoder ライセンス契約 : モデルは BigCode OpenRAIL-M v1 ライセンス契約のもとでライセンスされます。
- StarCoder 検索 : 事前訓練用データセット内の全文検索コード
- StarCoder Membership テスト : コードが事前訓練用データセット内に存在するかを高速テストします。
You can find all the resources and links at huggingface.co/bigcode !
以上