AI・機械学習
上級
OpenCoder-8B(オープンコーダーエイトビー)
学習データ・前処理パイプライン・中間チェックポイントを全公開した完全オープンソースのコード生成LLM。1.9兆トークンで学習し、8BサイズでQwen2.5-Coder-7B同等の性能を達成。
0 回閲覧
0 いいね
2026/6/8 更新
関連タグ
LLM
コード生成
オープンサイエンス
完全公開
再現可能研究
OpenCoder とは
OpenCoder は、上海 AI 研究院(Shanghai AI Laboratory)・香港大学・カーネギーメロン大学の共同研究チームが 2024 年 11 月にリリースした、完全透明性(Full Open-Source) のコード生成大規模言語モデルです。1.5B と 8B の 2 サイズを提供しており、特に 8B モデルは同規模のクローズドデータモデルと同等以上の性能を発揮します。
「完全オープンソース」の定義
OpenCoder が主張する「完全オープンソース」は、一般的な「モデル重み公開」より広範な透明性を指します。
- モデル重み: 多くのオープンモデル ✅ / OpenCoder ✅
- 学習データセット: 多くのオープンモデル ❌(部分公開) / OpenCoder ✅ 全件公開
- データ前処理コード: 多くのオープンモデル ❌ / OpenCoder ✅
- 学習設定(Config): 多くのオープンモデル △ / OpenCoder ✅
- 中間チェックポイント: 多くのオープンモデル ❌ / OpenCoder ✅
- 評価スクリプト: 多くのオープンモデル △ / OpenCoder ✅
この透明性により、第三者が同一の手順で 完全に再現可能な学習を実施できます。
学習データ:RefineCode
OpenCoder の学習には独自に構築したコードデータセット RefineCode が使用されています。
- 総規模: 1.9 兆トークン(約 960 億行のコード)
- ソース: GitHub 公開リポジトリ(許諾ライセンスのみ)+ Stack Overflow + 技術文書
- フィルタリング: 多段階品質フィルタリング(重複排除・低品質コード除去・テストコード分離)
- 言語分布: 54 のプログラミング言語(Python 35% / JavaScript 22% / Java 15% / C/C++ 12% / その他)
RefineCode の全データは Hugging Face データセットとして公開されており、独自の学習・研究に自由に利用できます。
学習プロセス(2 フェーズ)
Phase 1: 基礎事前学習
- RefineCode 全データ(1.9 兆トークン)で標準的な causal language modeling
- コンテキスト長: 4K → 8K(段階的延長)
- モデルアーキテクチャ: Qwen2.5 ベースのデコーダーのみ Transformer
Phase 2: アライメント(Instruct チューニング)
- 448K 件の高品質 instruction データで SFT(教師あり微調整)
- コード生成・デバッグ・説明・変換の 4 タスクカバー
- DPO(Direct Preference Optimization)で出力品質の最終調整
ベンチマーク性能
- HumanEval: OpenCoder-8B 83.5% / Qwen2.5-Coder-7B 88.4% / StarCoder2-15B 46.3%
- MBPP+: OpenCoder-8B 78.6% / Qwen2.5-Coder-7B 79.6% / StarCoder2-15B 58.8%
- LiveCodeBench: OpenCoder-8B 35.2% / Qwen2.5-Coder-7B 38.8% / StarCoder2-15B 19.4%
同規模の Qwen2.5-Coder-7B に若干及ばないものの、StarCoder2-15B(倍以上のパラメータ)を大きく上回り、8B クラスとして最高水準の性能を達成しています。
オープンサイエンスへの貢献
- 再現可能研究: 論文の主張を独立して検証できる完全な実験環境を提供
- 継続学習の起点: 中間チェックポイントを活用した特定ドメイン追加学習が可能
- データ研究: RefineCode のフィルタリング手法を他データセット構築に応用可能
- 教育利用: 学習過程の可視化により LLM 学習の仕組みを教育目的で解説
ライセンス
OpenCoder モデルおよびデータセットはすべて Apache 2.0 ライセンスで公開されており、商用利用・改変・再配布が自由です。Hugging Face(infly/OpenCoder-8B-Instruct)から取得可能で、GGUF 形式(llama.cpp 互換)も提供されています。