ウィザードコーダー:最高のコーディングモデルとは何でしょう
「ウィザードコーダー:最高のファッションモデルとは何でしょうか?」 (Wizādo Kōdā Saikō no fasshon moderu to wa nan deshō ka?)
このブログでは、WizardCoderとは何か、そしてなぜそのモデルが最も優れたコーディングモデルとして際立っているのかについて深く掘り下げます。さらに、HumanEvalベンチマークでのパフォーマンスが優れている理由についても調査します。さらに、データセットの準備とファインチューニングプロセスがWizardCoderの成功にどのように貢献しているかを詳しく見ていきます。
まずはWizardCoderについての簡単な紹介から始めましょう。WizardCoderは、Llama2でファインチューニングされたCode Large Language Model(LLM)であり、他のオープンソースおよびクローズドLLMよりも優れたパフォーマンスを示しています。
WizardCoderの特徴
特にHumanEvalにおけるWizardCoderのパフォーマンスがどれほど優れているのかは、その比較的コンパクトなサイズを考慮すると、興味深い点です。WizardCoder-python-34BとCoderLlama-Python-34Bを比較してみましょう:
HumanEval Pass@1
- イメージの意味的なセグメンテーションには、密な予測トランスフォーマーを使用します
- このAI論文では、COVEメソッドを紹介しています自己検証を通じて言語モデルの幻覚に取り組むための革新的なAIアプローチです
- 「言語復興のための生成型AI」
WizardCoder-python-34B = 73.2%
CoderLlama-Python-34B = 53.7%
HumanEvalベンチマークのパフォーマンスにおけるこのような大きな違いの最も重要な要素は、モデルのトレーニングに使用されたデータセットです。
データの力: WizardCoderのユニークなデータセット
WizardCoderの優れたパフォーマンスに貢献している要素の一つは、そのトレーニングデータセットです。多くのモデルは、通常以下を含むデータセット構造に依存しています:
- 多くのシンプルな命令を含む堅固なベース
- 複雑な命令の削減量
- 非常に複雑な命令の最小限の量
評価ベンチマークでのピークパフォーマンスのためには、トレーニングデータセットにシンプルな命令、複雑な命令、そして非常に複雑な命令のバランスが必要です。
ここでWizardCoderのデータセットが輝くのです。それは次の特徴を持っています:
- 非常に複雑な命令の豊富な量
- 複雑な命令の豊富な量
- 多くのシンプルな命令を含む堅固なベース
しかし、課題もあります: 複雑な命令を含むデータセットを作成することは困難であり、一方でシンプルな命令は簡単に入手できます。
Evol Instruct
Evol-Instructは、LLM(GPT-4)を使用して多様で複雑な命令のデータセットを生成するための進化アルゴリズムです。これは、高品質な手作業によっては難しい命令をLLMに提供することで、LLMのパフォーマンスを向上させるために設計されています。
単純な言葉で言うと、Evol-Instructは合成的に生成された(GPT-4)命令データセットの複雑性カスケードです。
命令の進化
LLMは特定のプロンプトを使用して、与えられた命令をより複雑で難解にすることができます。さらに、彼らは全く異なるが同じくらい複雑な新しい命令を生成することもできます。これにより、初期の命令データセットを反復的に進化させ、難易度を向上させ、その豊かさと多様性を拡大することができます。
A. 命令エボルバー
命令エボルバーは、プロンプトを使用して命令を進化(開発)させるLLMで、次の2つのタイプがあります:
- 詳細な進化。
- 幅広い進化
基底データセットが与えられます(例:自己指導によって生成されたアルパカ、または実際のユーザーによって共有された70k ShareGPT)そしてこの基底データセットを使用して、より複雑で多様なデータセットを作成することができます。
a) 詳細な進化
詳細な進化は、以下の5つのタイプのプロンプトを使用して命令をより複雑に難解にします:
詳細な進化のプロンプト
詳細な進化の目標は次のとおりです:
(i) 制約の追加
(ii) 深化
(iii) 具体化(より具体的に)
(iv) 推論ステップの増加
(v) 入力の複雑化
詳細な進化のプロンプトの中核部分は次のとおりです
「あなたの目標は、与えられたプロンプトをより複雑なバージョンに書き直して、それらの有名なAIシステム(例:ChatGPTとGPT4 [3])を少し扱いにくくすることです。ただし、書き直されたプロンプトは合理的であり、人間に理解され、応答される必要があります。」。
制約を追加する例示的なプロンプトは次のとおりです:
私はあなたにプロンプトリライトライターとして行動してほしいです。
あなたの目標は、与えられたプロンプトをより複雑なバージョンに書き直して、それらの有名な
AIシステム(例:ChatGPTとGPT4)を少し扱いにくくすることです。ただし、書き直されたプロンプトは合理的であり、人間に理解され、応答される必要があります。また、#Given Prompt#内のテーブルやコードなどのテキスト以外の部分を省略してはいけません。さらに、#Given Prompt#の入力を省略してはいけません。
次の方法を使って、与えられたプロンプトを複雑にしてください:
#Given Prompt#内に1つ以上の制約/要件を追加してください
#Rewritten Prompt#を冗長にしないように最善を尽くしてください,#Rewritten Prompt#は#Given Prompt#に10〜20ワードしか追加できません。
#Given Prompt#、#Rewritten Prompt#、’given prompt’、’rewritten prompt’は#Rewritten Prompt#に現れてはいけません
#Given Prompt#
<ここに命令があります。>
#Rewritten Prompt#:
これらのプロンプトは、他のタイプの詳細な進化に対しても同様のテンプレートを持つ複雑な命令データセットを生成するのに役立ちます。
b) 幅広い進化
幅広い進化は、オープンドメインの命令チューニングデータセット(例:アルパカ、ShareGPTなど)の制約に対処するためにあります。これらのデータセットはしばしばスケールが小さく、トピックとスキルの多様性が欠けています。幅広い進化は、与えられた命令に基づいて完全に新しい命令を生成するためのプロンプトを設計し、新しい命令がよりロングテールになることを要求します。
幅広い進化のプロンプト
幅広い進化の目標は次のとおりです:
1. トピックのカバー範囲の拡大
2. スキルのカバー範囲
3. 全体のデータセットの多様性
幅広いプロンプトは次のとおりです:
私はあなたにプロンプトクリエイターとして行動してほしいです。
あなたの目標は、#Given Prompt#からインスピレーションを得て、新しいプロンプトを作成することです。
この新しいプロンプトは、#Given Prompt#と同じドメインに属する必要がありますが、さらにまれであることが求められます。
#Created Prompt#の長さと難易度レベルは、#Given Prompt#のものと同じである必要があります。
#Created Prompt#は合理的である必要があり、人間に理解され、応答される必要があります。
#Given Prompt#、#Created Prompt#、’given prompt’、’created prompt’は#Created Prompt#に現れてはいけません。
#Given Prompt#:
«Here is instruction.>
#Created Prompt#:
B. レスポンス生成
同じLLMは、プロンプト:<Here is instruction>を使用して、進化した命令に対応するレスポンスを生成するために使用されます。
C. エリミネーション進化(命令除去)
進化した命令は、LLMに対してレスポンスを生成することに挑戦する場合があります。生成されたレスポンスが「sorry」という言葉を含み、長さが比較的短い(つまり、80語未満)場合、それはLLMが進化した命令に対応するのに苦労していることを示しています。したがって、このルールを使用して判断することができます。
LLMによって生成されたレスポンスは、句読点とストップワードのみを含みます。
D. 進化した命令に対するLLMの微調整
すべての進化が完了したら、初期の命令データセット(Alpacaの52K命令データセット)が、すべてのエポックからの進化した命令データと結合され、サンプルがランダムにシャッフルされて最終的な微調整データセットが作成されます。この処理により、データセット内の難易度の異なる命令が均等に分布し、モデルの微調整のスムーズさが最大限に確保されます。
Wizardlmは、進化した命令を使ってオープンソースのLLaMA 7Bを微調整し、そのパフォーマンスを評価し、モデルの名前をWizardLMとすることでEvol-Instructを検証します。
Evol-Instructは、初期命令のプール(Alpacaの52k命令データセット)を生成し、その後一連のステップでより複雑で多様な命令を生成することで機能します。命令プールが生成されたら、それを使用してLLMを微調整し、WizardCoderという新しいモデルが生成されます。微調整プロセスは、LLMを命令データでトレーニングして、異なる入力に対して連続的かつ流暢なテキストを生成する能力を向上させることを含みます。
プロンプトの形式
WizardCoderの場合、プロンプトは以下のようになります:
以下は、タスクを説明する命令です。要求を適切に完了するレスポンスを書いてください。### Instruction:{instruction}### Response:
最適な使用例
WizardCoderは、コード関連のさまざまなタスクに使用することができます。コードの生成、コードの補完、コードの要約などが含まれます。以下は、モデルと共に使用できる入力プロンプトのいくつかの例です:
- コードの生成: プログラミングタスクの説明を与えられた場合、対応するコードを生成します。例:「入力として整数のリストを受け取り、リスト内の偶数の合計を返すPythonの関数を書いてください。」
- コードの補完: 不完全なコード断片が与えられた場合、コードを補完します。例:「def multiply(a, b): \n return a * b _」
- コードの要約: 長いコードスニペットが与えられた場合、コードの要約を生成します。例:「CSVファイルを読み込んで特定の列の平均値を計算するPythonプログラムを書いてください。」
34Bモデルは、単なるコーディングアシスタントにとどまらず、次のようなパワーハウスとしての機能を持っています:
- DevOpsスクリプトの自動化: タスクの自動化のためのシェルスクリプトやPythonスクリプトを生成します。
- データ分析: データの前処理、分析、可視化のためのPythonコードを生成します。
- 機械学習パイプライン: データ収集からモデル展開までのエンドツーエンドの機械学習パイプラインを生成します。
- Webスクレイピング: Webスクレイピングタスクのためのコードを生成します。
- API開発: RESTful APIのための雛形コードを生成します。
- ブロックチェーン: Ethereumや他のブロックチェーンプラットフォーム向けのスマートコントラクトを生成します。
評価
WizardCoderは、人間評価、HumanEval+、MBPP、およびDS-100の4つのコード生成ベンチマークに関する実験的な調査結果によれば、他のオープンソースのコードLLMを凌駕し、最新技術(SOTA)のパフォーマンスを達成しています。
WizardCoder-Python-34Bは、コード関連のタスクにおいて卓越したパフォーマンスを発揮しています。このモデルは、主要なコード生成ベンチマークで他のオープンソースおよびクローズドなLLMを上回っており、HumanEval(73.2%)やHumanEval+、MBPP(61.2%)を凌駕しています。
WizardCoder-Python-34B-V1.0はHumanEval Benchmarksで2位を獲得し、GPT4(2023/03/15、73.2 vs. 67.0)、ChatGPT-3.5(73.2 vs. 72.5)、およびClaude2(73.2 vs. 71.2)を上回っています。
WizardCoder-15B-v1.0モデルはHumanEvalベンチマークで57.3 pass@1を達成しており、StarCoder、CodeGen、CodeGee、およびCodeT5+などのSOTAオープンソースのCode LLMSよりも22.3ポイント高い成績を収めています。さらに、WizardCoderはInstructCodeT5+、StarCoder-GPTeacher、およびInstruct-Codegen-16Bを含む、すべてのオープンソースのCode LLMS with instructions fine-tuningを大幅に上回っています。
結論として、WizardCoderの成功は、その独自のデータセットとEvol-Instructの革新的な活用による、さまざまなコード関連のタスクとベンチマークでの優れた性能に起因しています。
参考文献
YouTube: WizardCoder 34B: 複雑なFine-Tuningの説明
論文: WizardLM- Empowering Large Language Models to Follow Complex Instructions
論文: WizardCoder: Evol-Instructを用いたコード大規模言語モデルの強化
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
- マルチモーダルニューロンの秘密を明らかにする:モリヌーからトランスフォーマーへの旅
- コンピュータビジョンの進歩:画像認識のためのディープラーニング
- 実験、モデルのトレーニングおよび評価:AWS SageMakerを使用して6つの主要なMLOpsの質問を探求する
- 「Amazon EUデザインと建設のためにAmazon SageMakerで動作する生成AIソリューション」
- MDauditは、AIを使用して医療関係者の収益結果を改善することを目指しています
- 最速の道 AIを使用して手術室でがん細胞を分析するヘルスケアスタートアップ
- これらの新しいツールは、AIビジョンシステムのバイアスを軽減するかもしれません