Qwen2.5-Coder - AlibabaのQwenチームが提供する、6つの主要なモデルサイズを網羅したオープンソースのコードモデル一式。
Qwen2.5-Coderは、アリババのQwenチームが開発した、オープンソースのコード言語モデルの開発を推進する包括的なコード生成モデルです。コード生成、コード推論、コード修正などのタスクにおいて非常に優れた性能を発揮します。このシリーズは、さまざまな分野を網羅しています。
Qwen2.5-Coderとは何ですか?
Qwen2.5-Coderは、アリババのQwenチームが開発した、オープンソースのコード言語モデル開発を推進する包括的なコード生成モデルシリーズです。コード生成、コード推論、コード修正といったタスクにおいて、卓越した性能を発揮します。このシリーズは、1.5B/7B/0.5B/3B/14B/32Bという6つの主要なモデルサイズを網羅し、多様な開発者のニーズに対応します。
Qwen2.5-Coderの主力モデルであるQwen2.5-Coder-32B-Instructは、複数の人気コード生成ベンチマークにおいて、オープンソースモデルの中で最高クラスの性能を発揮し、GPT-4oに匹敵するコード生成能力を備えています。コード生成、コード修復、コード推論において優れた性能を発揮し、40種類以上のプログラミング言語をサポート、さらにMcEvalおよびMdEvalベンチマークでも目覚ましい成果を上げています。
Qwen2.5-Coderは人間の好みとの整合性を最優先事項としており、内部的に注釈が付けられたコード嗜好評価ベンチマークであるCode Arenaを使用して評価され、人間の好みとの優れた整合性が実証されています。モデルファミリーの詳細なパラメータ設定とライセンス情報も提供されています。0.5B、1.5B、7B、14B、および32BモデルはApache 2.0ライセンスでライセンスされていますが、3Bモデルは研究用ライセンスを使用しています。
Qwen2.5-Coderの主な機能
- コード生成Qwen2.5-Coderは、指定されたプログラミングヒントに基づいてコードスニペットを生成し、複数のプログラミング言語をサポートしています。
- コード推論このモデルはコード推論機能を備え、コードの論理を理解し、関連するコード候補を提示します。
- コード修正: コードのエラーを特定して修正するのに役立ちます。
- 多言語対応Python、Java、C++といった一般的な言語はもちろん、あまり一般的ではない言語も含め、最大92種類のプログラミング言語をサポートしています。
- モデルサイズの多様性Qwen2.5-Coderは、さまざまな開発者のニーズを満たすために、0.5Bから32Bまでの6つの主要なモデルサイズを提供しています。
- 命令チューニングQwen2.5-Coder-Instructは、命令の微調整を通じて、複数のタスクにおけるパフォーマンスをさらに向上させます。
- 数学的能力Qwen2.5-Coder-Instructは、プログラミング能力と数学的能力を兼ね備え、コーディングと数学の両方のタスクに優れています。
Qwen2.5-Coderの技術的原則
- 自己回帰言語モデルQwen2.5-Coderは自己回帰メカニズムを採用しており、既存のテキストシーケンスに基づいて次に最も可能性の高いトークンを予測するため、テキスト生成や補完タスクにおいて非常に優れた性能を発揮します。
- モデルアーキテクチャQwen2.5-CoderはQwen2.5アーキテクチャに基づいており、1.5B、7B、32Bなど、異なるパラメータサイズを持つTransformerモデルのバリアントを使用しています。このモデルは、隠れ層のサイズ、層の数、クエリヘッダーの数、キーバリューヘッダーの数、ヘッダーのサイズ、中間層のサイズ、および埋め込み層のバインディングにおいて異なります。
- 事前学習データの処理Qwen2.5-Coderの事前学習データには、ソースコードデータ、テキストとコードが混在したデータ、合成データ、数式データ、およびテキストデータが含まれています。これらのデータは、品質と一貫性を確保するために、慎重にクリーニングおよびフォーマットされています。データの構成比は、コードが70%、テキストが20%、数式データが10%です。
- トレーニング戦略:
- ファイルレベルの事前学習この段階では、モデルは、クリーンアップされたコードファイルをデータとして使用し、個々のファイルの内容を処理することによって、プログラミング言語の基本と構造を学習します。
- 倉庫レベルの事前研修この段階では、モデルが長いコンテキストを処理する能力を強化し、コンテキストの長さを32,000トークンに拡張し、回転位置埋め込み(RoPE)の基本頻度を調整し、YARNメカニズムを使用してより長いシーケンスを処理します。
- トレーニング後の調整と指導内容の見直し:
- 命令データ生成高品質な指導データは、言語固有のインテリジェントエージェント、協調的な議論プロトコル、および適応型メモリシステムを構築することによって生成される。
- トレーニング戦略このシステムは、粗調整から微調整へと進む戦略を採用しており、まず多数の多様な命令サンプルを用いて微調整を行い、次に高品質の命令サンプルを用いて、棄却サンプリングと教師あり微調整によって性能を向上させます。
- 特別トークンの紹介Qwen2.5-Coderは、モデルがコードをよりよく理解できるように、トレーニング中にいくつかの特別なマーカーを導入します。これらのマーカーは、コード処理パイプラインにおいて特定の役割を果たします。
- 多言語対応Qwen2.5-Coderは複数のプログラミング言語をサポートしています。事前学習段階における独自のデータクリーニングとデータ割り当てにより、このモデルは複数のプログラミング言語において優れた性能を発揮します。
- 長文コンテキスト機能Qwen2.5-Coderは、RoPEのベースバンドを調整し、YaRNメカニズムを適用することで、より長いコンテキストを処理できるようになり、これはコード補完やコードベース全体の理解にとって非常に重要です。
- コード生成機能Qwen2.5-Coderは、いくつかの一般的なコード生成ベンチマークにおいて、オープンソースモデルの中で最高のパフォーマンスを達成し、GPT-4oと同等の性能を示した。
Qwen2.5-Coderプロジェクトのアドレス
- プロジェクト公式サイト:qwenlm.github.io/blog/qwen2.5-coder
- GitHubリポジトリ:https://github.com/QwenLM/Qwen2.5-Coder
- ハギングフェイスモデルライブラリ:https://huggingface.co/collections/Qwen/qwen25-coder-66eaa22e6f99801bf65b0c2f
- arXiv技術論文:https://arxiv.org/pdf/2409.12186
Qwen2.5-Coderの応用シナリオ
- 日々のプログラミング作業開発者はQwen2.5-Coderを使用してコード作成を支援し、作業効率を向上させ、反復作業を削減します。
- コードの学習と実践Qwen2.5-Coderは、プログラミング初心者向けに、プログラミング言語の構文やベストプラクティスを学び、実践を通してプログラミングスキルを向上させるためのツールです。
- 教育と訓練プログラミング教育において、Qwen2.5-Coderは教材として機能し、学生が複雑な概念を理解するのを助け、プログラミング演習に対して即座にフィードバックを提供します。
- コードレビューと品質保証コードレビューの過程で、Qwen2.5-Coderは潜在的なコードの問題点を特定し、改善案を提示し、コードの品質を確保するのに役立ちます。
- 自動テストQwen2.5-Coderは、テストプロセスを自動化し、ソフトウェアテストのカバレッジと効率を向上させるためのテストケースを生成します。