OSS-Instruct(オーエスエスインストラクト)
オープンソースコードを基にLLMが実践的なコーディング指示データを生成する手法。Magicoder(WeiCoder et al. 2023)が提案。GitHubの実コードスニペットをシードにLLMが多様な問題・解答を生成しコード特化モデルの精度を引き上げる。
OSS-Instruct とは
OSS-Instruct(Open-Source Software Instruct)はWei Liu、Yuxiang Wei、Zhe Wangらが2023年12月にarXivで発表したコード特化合成データ生成手法。論文「Magicoder: Source Code Is All You Need」でMagicoderモデルとともに提案された。
Self-Instructとの根本的な違い
| 項目 | Self-Instruct | OSS-Instruct |
|---|---|---|
| シードソース | 人手作成175タスク | GitHub実コード(75K件) |
| 生成スタイル | 汎用指示タスク | コーディング問題+解答 |
| 現実性 | 抽象的になりがち | 実際の開発場面に即した問題 |
| エッジケース | 手動で考案 | 実コードから自然に発生 |
| ライブラリ活用 | 限定的 | 実際のimport/API使用が含まれる |
生成プロセス
ステップ1: コードスニペット収集
GitHub上のオープンソースリポジトリから75,000件のコードスニペットをサンプリング。Python・Java・C++・JavaScript・Go等多言語を含む。
ステップ2: 問題生成
各スニペットを見てLLMに「このコードに関連するプログラミング問題を考えてください」とプロンプト。LLMはスニペットのロジック・パターンにインスパイアされた問題を生成する。
ステップ3: 解答生成
生成した問題に対してLLMが解答コードを生成。元のスニペットとは直接コピーではなく「インスパイアされた」新しいコードを書く。
ステップ4: 品質フィルタリング
- コードの構文エラーチェック
- 問題文の明確さ評価
- 解答の正確性(可能なら実行テスト)
Magicoder-Sの性能
| モデル | HumanEval | MBPP | EvalPlus |
|---|---|---|---|
| GPT-3.5-Turbo | 72.6 | 71.9 | - |
| WizardCoder-34B | 73.2 | 73.2 | 66.9 |
| Magicoder-S-DS-6.7B | 76.8 | 75.7 | 66.6 |
わずか6.7BパラメータのMagicoderが34BのWizardCoderを上回るHumanEvalスコアを達成した。
2025年への影響
- DeepSeek-Coder: 類似のコード駆動合成手法を採用し100B+ tokensのコードデータを活用
- OpenCoder: GitHub Issue/PRからの問題生成にOSS-Instructを拡張
- StarCoder2-Instruct: コミュニティ主導でOSS-Instruct規模を5M+件に拡大
よくある質問
Q1: 著作権問題はないか? A: 元のコードをそのまま使うのではなく「インスパイアされた新コード」を生成するため著作権リスクは低いとされるが、ライセンスに敏感な企業では弁護士確認が推奨される。
Q2: どの言語に対応しているか? A: 原論文ではPython中心だが、GitHubの多言語コードをシードに使えば対応言語を拡張できる。
Q3: General(非コード)タスクにも使えるか? A: コンセプトは転用可能。論文・ドキュメント等を参照して一般指示データを生成する手法(DocInstruct等)として応用されている。