コードのための大規模な言語モデルの構築とトレーニング:StarCoderへの深い探求
大規模な言語モデルの構築とトレーニング:StarCoderへの深い探求
イントロダクション
こんにちは、テック愛好家の皆さん!今日は、大規模な言語モデル(LLM)を構築してトレーニングする魅力的な世界について、皆さんをご案内します。この記事は、AIとコード開発の交差点に位置するオープンイニシアチブであるBigCodeプロジェクトの一部である、驚異的なモデルであるStarCoderについて、詳しく掘り下げていきます。
始める前に、Hugging Faceの機械学習エンジニアであるLoubna Ben Allalさんに、この記事の基になった「コードのための大規模な言語モデルの構築」に関するデータアワーセッションに感謝を申し上げます。さあ、準備をして、この最先端のテクノロジーの魔法を探求しましょう!
学習目標:
- BigCodeコラボレーションを通じたAIのコーディングにおけるオープンで責任あるプラクティスを理解し、透明性と倫理的な開発を重視します。
- Megatron-LMなどのフレームワークを活用した、データの選択、アーキテクチャの選択、効率的な並列処理を通じたLLMトレーニングの基本を理解します。
- BigCode評価ハーネスによって促進されるHumanEvalなどのベンチマークを使用したLLMの評価を探求し、効果的なモデル比較を実現します。
- VS Codeの拡張機能などのツールを使用して、LLMを開発環境に実践的に統合し、倫理的なAI利用に合致させます。
大規模言語モデルの力を解き放つ
では、これらの大規模言語モデルについての話題は何でしょうか?それは、自然言語の説明に基づいてコードの断片を完成させたり、完全な関数を生成したり、バグ修正の洞察を提供したりする、仮想のコーディングの魔術師のような存在です。私たちのスターであるStarCoderは、155億のパラメータを誇り、優れたコード補完能力と責任あるAIの実践を示しています。
- 「ガードレールでLLMを保護する」
- 「マイクロソフトは、VALLE-Xをオープンソース化しました:多言語対応のテキスト読み上げ合成および音声クローニングモデル」
- 「ChatGPTは本当に中立なのか?AIによる対話エージェントの政治的バイアスに関する実証的研究」
データの選別と準備:成功の基盤
では、秘密のソースであるデータの選別について話しましょう。私たちの旅は、GitHubのコードの大規模なコンパイルであるThe Stackデータセットから始まります。このデータセットは300以上のプログラミング言語にわたるものです。しかし、量が常に品質を上回るわけではありません。私たちは、人気と包括性を重視しながら、86の関連する言語を選び抜きました。
ただし、ここで注意が必要です。詳細なクリーニングを経て、約80のプログラミング言語で約800ギガバイトのコードのみを残しました。この過程で、自動生成されたファイルや重複したコードを削除することで、モデルが繰り返しパターンを記憶しないようにしました。これにより、量よりも質を重視し、効果的なトレーニングが可能になりました。
トークン化とトレーニング用のメタデータ:コードの解読
次に、トークン化です!クリーンなテキストデータをモデルが理解できる数値入力に変換しました。リポジトリやファイル名などのメタデータを保持するために、各コード断片の先頭に特別なトークンを追加しました。このメタデータは、異なるプログラミング言語でコード断片を生成する方法をモデルに示す、道案内のようなものです。
また、GitHubの課題、gitのコミット、Jupyterノートブックなども工夫しました。これらの要素は、特別なトークンで構造化され、モデルにコンテキストを提供します。このメタデータと書式設定は、後のモデルのパフォーマンスと微調整に重要な役割を果たします。
StarCoderのアーキテクチャの選択:新たな高みへのスケーリング
StarCoderのアーキテクチャは、設計の選択肢の傑作です。私たちは、スピードとコスト効率を目指し、1550億のパラメータを選択しました。これは、パワーと実用性のバランスです。また、より大きなデータのバッチを効率的に処理し、品質を損なうことなく推論時間を高速化する技術であるマルチクエリアテンション(MQA)も取り入れました。
しかし、イノベーションはそこで終わりませんでした。フラッシュアテンションによる大規模なコンテキスト長を導入しました。これにより、8000トークンまでスケーリングし、効率とスピードを保ちました。そして、双方向のコンテキストについて疑問がある場合は、StarCoderが左から右、右から左の両方のコード断片を理解する方法を見つけました。これにより、その柔軟性が向上しました。
トレーニングと評価:StarCoderを試す
それでは、トレーニングについて話しましょう。私たちは512のGPUの力を利用し、Tensor Parallelism(TP)とPipeline Parallelism(PP)を使用して、StarCoderが計算パズルに適合するようにしました。私たちはMegatron-LMフレームワークを使用して24日間トレーニングし、結果は素晴らしかったです。ただし、トレーニングは旅の半分に過ぎません。評価こそが真価が問われる場所です。
私たちは、StarCoderをHumanEvalベンチマークと対戦させました。このベンチマークでは、モデルがコードの断片を完成させ、その解決策をさまざまなシナリオでテストします。StarCoderは素晴らしい成績を収め、33.6%のパス@1スコアを達成しました。新しいモデルであるWizardCoderがリードを取っていますが、StarCoderの多言語領域でのパフォーマンスは称賛に値します。
ツールとエコシステム:StarCoderを超えて
StarCoderを中心としたツールとエコシステムを強調することなく、私たちの旅は完了しません。私たちはVS Codeの拡張機能をリリースしました。この拡張機能では、コードの提案、補完、さらにはコードの帰属を提供します。また、Jupyter、VIM、EMACs向けのプラグインも提供しており、開発者のさまざまな好みに対応しています。
評価プロセスを簡素化するために、私たちはBigCode Evaluation Harnessを作成しました。これはベンチマーク評価と単体テストを効率化し、再現性を確保するフレームワークです。また、BigCode Leaderboardも導入しました。これにより、さまざまなモデルと言語のパフォーマンスを評価し、コミュニティが透明性を持ってゲージングすることができます。
未来に向けて:コミュニティ主導の取り組み
今までのところ、コードのための大規模言語モデルの世界が常に進化していることは明らかです。BigCodeエコシステムは繁栄し続けており、OctoCoder、WizardCoderなどのモデルがStarCoderの基盤を築いています。これらのモデルは単なるツールにとどまらず、協力的なイノベーションとオープンソース開発の力を証明しています。
以上が、StarCoderとBigCodeコミュニティがコード生成の領域で可能性の限界を押し広げている物語です。入念なデータのキュレーションから先進的なアーキテクチャの選択、最先端のツールまで、情熱とAIコード開発の未来を形作るための取り組みによって推進される旅です。将来に向けてどのような素晴らしいイノベーションがコミュニティによって発表されるのか、誰にもわかりません。
今日のスキルは明日のLLMにつながる
以下は、将来の大規模言語モデルの構築とトレーニングの旅に持ち込むものです:
- トレーニングのセットアップとフレームワーク:このような巨大なモデルのトレーニングには並列処理が必要です。私たちはデータ、テンソル、パイプラインの並列処理の組み合わせである3D並列処理を利用しました。このアプローチにより、最高の結果を得るために512のGPUで24日間トレーニングを行うことができました。私たちは主にMegatron-LMフレームワークを使用しましたが、よりアクセスしやすく短期間のファインチューニングを行うためのHugging Face Trainer with Deepspeed統合など、代替フレームワークも紹介しました。
- パフォーマンスの評価:コードモデルの評価は簡単なタスクではありません。私たちはHumanEvalやMulti-PLEなどのベンチマークを説明しました。これらのベンチマークは、モデルが特定のテストをパスするコードソリューションを生成する能力を測定します。これらのベンチマークは、さまざまなプログラミング言語や文脈でのモデルのパフォーマンスを理解するのに役立ちます。また、一貫した環境と再現可能な結果を提供するフレームワークであるBigCode評価ハーネスも導入しました。
- ツールとエコシステム:BigCodeエコシステムが提供するツールと拡張機能を探求しました。VS Codeの拡張機能からJupyterノートブック、VIM、EMACsなどへのサポートまで、開発者がStarCoderとその派生物をワークフローに統合しやすくしています。StarCoder PlusとStarChartのリリースにより、モデルの機能がさらに拡張され、より多機能で便利になっています。
- 責任あるAIとライセンス:責任あるAIの実践に合わせて、モデルの使用における倫理的なガイドラインを強調しています。私たちのモデルはCodeML OpenRAILライセンスに基づいて構築されており、ロイヤリティフリーの使用、派生物のダウンストリーム配布、倫理的な考慮事項を促進しています。私たちは、モデルが社会に利益をもたらす強力なツールである一方、責任を持って使用されることを確保することに取り組んでいます。
結論
この記事では、コードのための大規模言語モデル(LLM)の構築の領域に深く入り込み、その印象的なコード補完能力を探求しました。Hugging FaceとServiceNowによる協力的なBigCodeプロジェクトは、データプライバシーや再現性などの課題に対処し、開放的で責任あるコードモデルとして強調されました。
私たちの技術的な旅は、StarCoderなどのモデルのためのデータキュレーション、アーキテクチャの決定、並列処理技術を用いたトレーニング手法などを含みました。HumanEvalやMulti-PLEなどのベンチマークによるモデルの評価は、StarCoderのバージョンが先頭を切っていることを示しました。
重要なポイント:
- HuggingFaceとServiceNowによるBigCodeの共同作業は、責任あるコードモデルの開発を促進しています。
- StarCoderを例に挙げながら、データの準備、アーキテクチャ、効率的な並列処理など、さまざまなトレーニングの側面をカバーしました。
- HumanEvalやMulti-PLEなどのAIモデルの評価について議論しました。
よくある質問
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles