WaveCoderとは?
WaveCoderは、コードに関連するタスクにおけるLLMの性能を向上させるための新しいデータ生成フレームワークです。この研究の中心にあるのは、20,000件以上の指示データを収録した「CodeOcean」というデータセットです。このデータセットは以下の4つの代表的なコード関連タスクを網羅しています:
- コード要約(Code Summarization)
- コード生成(Code Generation)
- コード翻訳(Code Translation)
- コード修正(Code Repair)
WaveCoderの特長は、これらのタスクに対して多様で高品質なデータを生成するプロセスにあります。
データ生成プロセスの仕組み
WaveCoderのデータ生成は、「生成フェーズ」と「判別フェーズ」という2つのステップで構成されています。
- 生成フェーズ
このフェーズでは、LLMを活用して指示データを生成します。具体的には、以下の流れで進められます:
-
タスク定義の生成
GPT-4を利用し、特定のシナリオに基づいたタスク定義と要件を生成。これをプロンプトに組み込みます。 -
Few-Shotプロンプトの活用
GPT-3.5を用いて、未加工のコードを入力とし、良い例・悪い例を組み合わせてデータを生成します。このアプローチにより、生成されるデータの多様性が教師モデルの能力だけに依存しないよう工夫されています。
- 判別フェーズ
生成されたデータの品質を評価するフェーズです。このステップでは、以下のプロセスが行われます:
-
評価基準の設定
データ品質を評価するための基準を設定し、それに基づいてGPT-4を使用して生成データを分類します。 -
良い例・悪い例の再利用
評価結果を次の生成フェーズに反映し、さらなる品質向上を図ります。
この「生成」と「判別」のループによって、WaveCoderは多様で高品質な指示データセットを実現しています。
性能
WaveCoderは、コード生成タスクの主要なベンチマークであるHumanEvalやMBPPでテストされました。その結果、以下のような優れた成果が確認されています:
-
データの少なさを克服
WaveCoderモデルは、たった20,000件以下の指示データでも他のモデルを上回る性能を発揮しました。 -
コード修正や要約タスクでの汎化性能
WaveCoderは、コード修正やコード要約といった複雑なタスクでも高い汎化性能を示しました。 -
効率的なファインチューニング
洗練された多様な指示データにより、モデルのファインチューニング効率が向上しました。
参考