Learn more about Search Results 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の実践を示しています。 データの選別と準備:成功の基盤 では、秘密のソースであるデータの選別について話しましょう。私たちの旅は、GitHubのコードの大規模なコンパイルであるThe Stackデータセットから始まります。このデータセットは300以上のプログラミング言語にわたるものです。しかし、量が常に品質を上回るわけではありません。私たちは、人気と包括性を重視しながら、86の関連する言語を選び抜きました。 ただし、ここで注意が必要です。詳細なクリーニングを経て、約80のプログラミング言語で約800ギガバイトのコードのみを残しました。この過程で、自動生成されたファイルや重複したコードを削除することで、モデルが繰り返しパターンを記憶しないようにしました。これにより、量よりも質を重視し、効果的なトレーニングが可能になりました。 トークン化とトレーニング用のメタデータ:コードの解読 次に、トークン化です!クリーンなテキストデータをモデルが理解できる数値入力に変換しました。リポジトリやファイル名などのメタデータを保持するために、各コード断片の先頭に特別なトークンを追加しました。このメタデータは、異なるプログラミング言語でコード断片を生成する方法をモデルに示す、道案内のようなものです。 また、GitHubの課題、gitのコミット、Jupyterノートブックなども工夫しました。これらの要素は、特別なトークンで構造化され、モデルにコンテキストを提供します。このメタデータと書式設定は、後のモデルのパフォーマンスと微調整に重要な役割を果たします。 StarCoderのアーキテクチャの選択:新たな高みへのスケーリング StarCoderのアーキテクチャは、設計の選択肢の傑作です。私たちは、スピードとコスト効率を目指し、1550億のパラメータを選択しました。これは、パワーと実用性のバランスです。また、より大きなデータのバッチを効率的に処理し、品質を損なうことなく推論時間を高速化する技術であるマルチクエリアテンション(MQA)も取り入れました。 しかし、イノベーションはそこで終わりませんでした。フラッシュアテンションによる大規模なコンテキスト長を導入しました。これにより、8000トークンまでスケーリングし、効率とスピードを保ちました。そして、双方向のコンテキストについて疑問がある場合は、StarCoderが左から右、右から左の両方のコード断片を理解する方法を見つけました。これにより、その柔軟性が向上しました。…

StarCoder:コードのための最先端のLLM

StarCoderの紹介 StarCoderとStarCoderBaseは、GitHubからの許可を得たデータを使用してトレーニングされた大規模な言語モデルです。これらのモデルは、80以上のプログラミング言語、Gitのコミット、GitHubの課題、Jupyterノートブックなど、様々な情報源からデータを取得しています。LLaMAと同様に、私たちは1兆トークンのために約15兆パラメータのモデルをトレーニングしました。また、35兆のPythonトークンに対してStarCoderBaseモデルを微調整し、新しいモデルであるStarCoderと呼びます。 StarCoderBaseは、人気のあるプログラミングベンチマークにおいて既存のオープンなコードモデルよりも優れたパフォーマンスを発揮し、GitHub Copilotの初期バージョンで使用された「code-cushman-001」といったクローズドモデルとも匹敵する結果を示しました。StarCoderモデルは、8,000以上のトークンのコンテキスト長を持つため、他のオープンなLLMよりも多くの入力を処理することができます。これにより、さまざまな興味深いアプリケーションが可能となります。例えば、StarCoderモデルに対して対話のシリーズをプロンプトとして与えることで、技術アシスタントとしての機能を果たすことができます。さらに、これらのモデルはコードの自動補完、指示に基づいたコードの変更、コードスニペットの自然言語による説明などにも使用することができます。私たちは、改善されたPIIの削除パイプライン、新しい帰属追跡ツールなど、安全なオープンモデルのリリースに向けていくつかの重要な手順を踏んでいます。また、StarCoderは改良されたOpenRAILライセンスのもとで一般に公開されています。この更新されたライセンスにより、企業がモデルを製品に統合するプロセスが簡素化されます。StarCoderモデルの強力なパフォーマンスにより、コミュニティは自分たちのユースケースや製品に適応させるための堅固な基盤としてこれを活用することができると考えています。 評価 私たちはStarCoderといくつかの類似モデルについて、さまざまなベンチマークで徹底的に評価を行いました。人気のあるPythonベンチマークであるHumanEvalでは、関数のシグネチャとドキュメント文字列に基づいてモデルが関数を完成させることができるかどうかをテストしました。StarCoderとStarCoderBaseは、PaLM、LaMDA、LLaMAなどの最大のモデルを上回るパフォーマンスを発揮しましたが、それらよりも遥かに小さなサイズであるという特徴も持っています。また、CodeGen-16B-MonoやOpenAIのcode-cushman-001(12B)モデルよりも優れた結果を示しました。私たちはまた、モデルの失敗例として、通常は練習の一部として使用されるため、# Solution hereというコードを生成することがあることに気付きました。実際の解決策を生成させるために、プロンプトとして<filename>solutions/solution_1.py\n# Here is the correct implementation of the code exerciseを追加しました。これにより、StarCoderのHumanEvalスコアは34%から40%以上に向上し、オープンモデルの最新のベンチマーク結果を更新しました。CodeGenとStarCoderBaseに対してもこのプロンプトを試しましたが、あまり違いは観察されませんでした。 StarCoderの興味深い特徴の一つは、多言語対応であることです。そのため、MultiPL-Eという多言語の拡張を使用して評価を行いました。その結果、StarCoderは多くの言語においてcode-cushman-001と匹敵または優れたパフォーマンスを発揮することがわかりました。また、DS-1000というデータサイエンスのベンチマークでも、StarCoderは他のオープンアクセスモデルを圧倒する結果を示しました。しかし、コード補完以外にもモデルができることを見てみましょう! 技術アシスタント 徹底的な評価の結果、StarCoderはコードの記述に非常に優れていることがわかりました。しかし、ドキュメンテーションやGitHubの課題などの情報を大量に学習しているため、技術アシスタントとして使用できるかどうかもテストしたかったのです。AnthropicのHHHプロンプトに触発されて、私たちはTech Assistant Promptを作成しました。驚くべきことに、プロンプトだけでモデルは技術アシスタントとして機能し、プログラミングに関連する要求に答えることができます! トレーニングデータ このモデルは、The…

2024年に探索するべきトップ12の生成 AI モデル

はじめに 近年、人工知能(AI)は非凡な変革を遂げ、創造性の風景を再構築するだけでなく、多様な産業における自動化の新たな基準を設定する先駆的な技術となっています。2024年に入ると、これらの先進的なモデルは画期的な能力、広範な応用、そして世界に紹介する先駆的なイノベーションにより、その地位を固めました。本記事では、今年の主要な生成型AIモデルについて詳しく探求し、彼らの革新的な能力、様々な応用、そして世界にもたらすパイオニア的なイノベーションについて包括的に説明します。 テキスト生成 GPT-4:言語の神童 開発者:OpenAI 能力:GPT-4(Generative Pre-trained Transformer 4)は、文脈の深い理解、微妙な言語生成、およびマルチモーダルな能力(テキストと画像の入力)で知られる最先端の言語モデルです。 応用:コンテンツの作成、チャットボット、コーディング支援など。 イノベーション:GPT-4は、規模、言語理解、多様性の面でこれまでのモデルを上回り、より正確かつ文脈に即した回答を提供します。 この生成型AIモデルにアクセスするには、こちらをクリックしてください。 Mistral:専門家の混合体 開発者:Mistral AI 能力:Mistralは、専門的なサブモデル(エキスパート)に異なるタスクを割り当てることで効率と効果を向上させる、洗練されたAIモデルです。 応用:高度な自然言語処理、パーソナライズされたコンテンツの推薦、金融、医療、テクノロジーなど、様々なドメインでの複雑な問題解決など、幅広い応用があります。 イノベーション:Mistralは、ネットワーク内の最適なエキスパートにタスクを動的に割り当てることによって特徴付けられます。このアプローチにより、専門的で正確かつ文脈に適した回答が可能となり、多面的なAIの課題処理において新たな基準を設定します。 このMistral AIにアクセスするには、こちらをクリックしてください。 Gemini:多面的なミューズ 開発者:Google AI Deepmind…

イリノイ大学の研究者は、コードのための完全なオープンソース大規模言語モデル(LLM)のシリーズであるマジコーダを紹介しました

イリノイ大学アーバナ・シャンペーン校と清華大学の研究者チームは、オープンソースのコードスニペットからの低バイアスと高品質なコーディングチャレンジの生成の課題に取り組むために、Magicoderを導入しました。Magicoderは、Pythonテキストからコードを生成する、多言語のコーディング、データサイエンスプログラムの言語モデルを含むさまざまなコーディングベンチマークで、既存のLLMよりも優れたパフォーマンスを発揮します。 CodeGen、CodeT5、StarCoder、CODELLAMAなどのような主要なベースモデルは、LLMのコード生成と理解の基本的な能力を確立しています。事前学習されたLLMを改善するためには、自己指導とEvol-Instructのような手法を使った指示の調整が提案されており、HumanEval、MBPP、APPS、およびCodeContestsなどの既存のコードベンチマークは、自然言語の説明から単一機能プログラムを開発する際のLLMの評価に利用されます。 Magicoderは、コードのための完全なオープンソースのLLMシリーズであり、OSS-INSTRUCTを使用して75,000件の合成指示データでトレーニングされています。これは、GitHubのシードコードスニペットから多様性と現実世界の関連性を確保しながら、LLMにコーディングの問題と解決策を引き起こすように促します。評価には、HumanEvalとMBPPのようなベンチマークが使用され、pass1メトリックに焦点が当てられます。INSTRUCTORは、埋め込みの類似性に基づいてOSS-INSTRUCT生成データを分類するために使用されます。データのクリーニング技術、含められているのは浄化とプロンプトのフィルタリングなどがあり、堅牢性が向上しています。 Magicoderは、最大でも70億を超える控えめなパラメータサイズで、優れたパフォーマンスを示しています。OSS-INSTRUCTを使用して75,000件の合成指示データをトレーニングしたMagicoderは、Pythonテキストからコードを生成する、多言語のコーディング、データサイエンスプログラムの言語モデリングなど、先進的なコードモデルよりも優れたパフォーマンスを発揮します。拡張版のMagicoderSは、コード生成性能をさらに向上させ、さまざまなベンチマークで同じまたはより大きなサイズの他のモデルを上回ります。MagicoderS-CL-7Bは、コードモデルの中で最先端の結果を同時に達成し、堅牢で優れたコード生成能力を示します。 まとめると、この研究では、オープンソースのコードスニペットからコーディングチャレンジを生成するためにLLMを利用する効果的な手法であるOSS-INSTRUCTの有用性が強調されています。OSS-INSTRUCTを使用して訓練されたMagicoderは、大きなパラメータを持つ他のLLMよりもさまざまなコーディングベンチマークで優れたパフォーマンスを発揮します。また、Evol-Instructと組み合わせると、ChatGPTのような先進的なモデルと同様に、HumanEvalベンチマークで印象的なパフォーマンスを発揮するMagicoderSモデルを向上させます。この研究では、将来のLLMに関する研究や、OSS-INSTRUCTを拡大してより高品質なデータを生成するために、モデルの重み、トレーニングデータ、およびソースコードをオープンソース化することを推奨しています。

「Amazon SageMakerデータパラレルライブラリを使用して、トレーニングを高速化します」

大規模言語モデル(LLM)のトレーニングは、Llama2、Falcon、StarCoderなど、公に利用可能ないくつかのモデルのリリースにより、昨年からますます人気が高まっています顧客は今や、10億から1750億以上のパラメータを持つ前例のない大きさのLLMをトレーニングしていますこれらのLLMのトレーニングには、膨大な計算リソースと時間が必要です数百台の […]

「コスト効率の高い高性能 AI 推論用の Amazon EC2 DL2q インスタンスが一般提供開始されました」

Qualcomm AIのA.K Royさんによるゲスト記事ですAmazon Elastic Compute Cloud(Amazon EC2)DL2qインスタンスは、Qualcomm AI 100 Standardアクセラレータによってパワーアップされ、クラウド上で効率的に深層学習(DL)タスクを展開するために使用することができますDLタスクのパフォーマンスや精度を開発し、検証するためにも利用できます

マルチクエリアテンションの解説

マルチクエリアテンション(MQA)は、モデルのパフォーマンスを保証しながら、デコーダ内のトークン生成の速度を加速することができるアテンションメカニズムの一種ですこれは、大規模な時代に広く使用されています

このAI論文では、新しい個別化留留過程を紹介していますクローズドソース相手からの適応的な学習により、オープンソースLLMsの強化を行います

シンガポールの南洋理工大学とセールスフォース・リサーチの研究者らは、学生モデルの初期の課題解決の試みと教師モデルによる適応的な改善に続くコード生成タスクのための個別の蒸留プロセスを紹介しています。この手法は、データのたった三分の一であっても、標準の蒸留方法を上回る優れた結果を提供します。パーソナライズされた蒸留は、CodeGen-mono-16BとStarCoderの2つのコード生成モデルでテストされ、HumanEvalの評価において大幅なパフォーマンスの向上をもたらしました。 本研究は、現代の教育原則に触発された、コード生成タスクのためのパーソナライズド蒸留を紹介しています。このプロセスでは、学生モデルが初めに課題に取り組み、教師モデルから適応的な改善を受けます。パーソナライズド蒸留は、常に標準的な手法を上回り、データの三分の一でより良い結果を達成します。経験的研究は、学生の学習にカスタマイズされたラベルの効果を確認しています。この手法は、CodeGen-mono-16BおよびStarCoderを含むオープンソースの事前学習モデルのパフォーマンスを大幅に向上させ、コード生成タスクの能力を蒸留します。 この手法は、ChatGPTやGPT-4などの閉じられたソースの大規模言語モデル(LLM)の利用可能性、コスト、倫理、データプライバシーの懸念点に対処します。個別化された学習原則に触発され、コード生成タスクのためのパーソナライズド蒸留を提案しています。この手法では、学生モデルがタスクに取り組み、実行フィードバックを受け取り、教師モデルのガイダンスをもとに改良します。パーソナライズド蒸留は、標準的な手法を上回り、少ないデータ例で優れた結果を達成し、閉じられたソースのLLMの機能をより小さいオープンソースのLLMに蒸留する解決策を提供します。 本研究では、標準的な蒸留(STAND)とパーソナライズド蒸留(PERsD)および入力パーソナライズド蒸留(INPD)の2つのアプローチを比較しました。パープーズDでは、学生が最初にタスクに取り組み、教師からカスタマイズされたフィードバックを受け取る方法を採用しています。データは、事前学習のために、code-alpacaとMBPPのシードタスクから収集されました。パフォーマンスは、pass@1やHumanEvalなどの指標を使用して、メソッドの効果を評価しました。 パーソナライズド蒸留は、コード生成タスクにおいてINPDやSTANDなどの標準的な蒸留手法を一貫して上回り、データの三分の一で大幅な改善を実現しました。データが3倍少なかったとしても、パーソナライズド蒸留は16のうち15回でSTANDを上回り、カスタマイズされたラベルの効果的な品質を示しています。PERsD-refineやPERsD-combineモデルにおいて、多段階の推論が回答品質を向上させ、実行エラーフィードバックに基づいて解決策を改善する能力を示しています。パーソナライズされていないラベルとパーソナライズされたラベルを混ぜることは一般的に悪影響を与え、カスタマイズされたタグの高い品質を強調しています。 PERsDは、学生モデルの能力にラベル付けされたデータをカスタマイズする方法を紹介し、より効果的な学習を実現します。PERsDは、HumanEvalとMBPPのデータセットにおいて、コード生成で標準的な蒸留を上回ります。これは、より高いデータ品質、マルチラウンドの蒸留、実行フィードバックによるセルフリファクションの利点によるものです。カスタマイズされたラベルの効果を強調するため、PERsDのバリアントは一貫して非パーソナライズバージョンを上回ります。この手法は、閉じられたソースのLLMの能力をオープンソースモデルに蒸留するという、モデルの蒸留のさらなる進展を示すものです。 ファインチューニング中にデータを動的に収集するためのオンラインパーソナライズド蒸留を調査し、学生モデルをより向上させる可能性を探求してください。パーソナライズされた蒸留のスケーラブルな方法を開発し、人間の注釈に頼らない方法を提案し、パーソナライズ化されたラベルと非パーソナライズ化されたラベルを混ぜることの影響という制限に対処してください。パーソナライズド蒸留を他の領域に拡張し、その効果を評価してください。また、閉じられたソースのLLMの能力をオープンソースモデルに蒸留するために使用することも検討し、モデルの蒸留をさらに進めてください。

私の個人的なコパイロット:自分自身のコーディングアシスタントをトレーニングする

プログラミングとソフトウェア開発の常に進化する風景において、効率と生産性の追求は非凡なイノベーションにつながってきました。そのようなイノベーションの一つが、Codex、StarCoder、そしてCode Llamaといったコード生成モデルの登場です。これらのモデルは、人間のようなコードの断片を生成する能力を示し、コーディングアシスタントとしての無限の潜在能力を持っています。 しかし、これらの事前学習済みモデルは、さまざまなタスクにおいて印象的なパフォーマンスを発揮する一方で、まだまだ未来に待ち受けている魅力的な可能性も存在します。それは、特定のニーズに合わせてコード生成モデルをカスタマイズできる能力です。エンタープライズスケールで活用できる個人別のコーディングアシスタントを想像してみてください。 このブログ投稿では、私たちがどのようにHugCoder 🤗を作成したかを紹介します。HugCoderは、huggingface GitHubの公開リポジトリからのコード内容に対して、コードLLMでファインチューニングを行ったものです。データの収集ワークフローやトレーニング実験、興味深い結果についても話します。これにより、プロプライエタリなコードベースに基づいた独自のパートナーを作成することができます。さらなるこのプロジェクトの拡張のアイデアもいくつかご提案します。 では、始めましょう 🚀 データ収集のワークフロー 私たちが望むデータセットは、概念的にはシンプルで、次のような構造になっています。 Githubからのコード内容のスクレイピングは、PythonのGitHub APIを用いれば簡単です。ただし、リポジトリの数やリポジトリ内のコードファイルの数に応じて、APIのレート制限に達する可能性があります。 そのような問題を防ぐために、私たちは公開リポジトリをすべてローカルにクローンし、APIではなくそれらからコンテンツを抽出することにしました。ダウンロードスクリプトでは、Pythonのmultiprocessingモジュールを使用して、すべてのリポジトリを並列にダウンロードしました。詳細な実装については、このダウンロードスクリプトを参照してください。 リポジトリにはしばしば画像やプレゼンテーションなどの非コードファイルが含まれていますが、私たちはそれらをスクレイピングすることには興味がありません。これらを除外するために、拡張子のリストを作成しました。Jupyter Notebook以外のコードファイルを解析するために、私たちは単純に「utf-8」エンコーディングを使用しました。ノートブックの場合は、コードセルのみを考慮しました。 また、コードと直接関係のないファイルパスはすべて除外しました。これには、.git、__pycache__、およびxcodeprojなどが含まれます。 このコンテンツのシリアライズを比較的メモリにやさしいものにするために、私たちはチャンキングとfeather形式を使用しました。フルの実装については、こちらのスクリプトを参照してください。 最終的なデータセットは、Hubで利用可能であり、以下のような見た目をしています: このブログでは、stargazersに基づいて、Hugging Faceの最も人気のある10つのパブリックリポジトリを考慮しました。それらは次のとおりです: [‘transformers’, ‘pytorch-image-models’, ‘datasets’, ‘diffusers’,…

ウィザードコーダー:最高のコーディングモデルとは何でしょう

このブログでは、WizardCoderとは何か、そしてなぜそれがフィールドで最高のコーディングモデルとして際立っているのかについて深く掘り下げますさらに、なぜそのHumanEvalベンチマークでのパフォーマンスが優れているのかについても探求します...

Find the right Blockchain Investment for you

Web 3.0 is coming, whether buy Coins, NFTs or just Coding, everyone can participate.

Advertising with us