すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:Qwen2.5-Coder のトレーニング、評価、圧縮、デプロイ

最終更新日:Jun 22, 2026

Qwen2.5-Coder (CodeQwen とも呼ばれる) は、Alibaba Cloud が提供する、コード関連タスクに特化した大規模言語モデルのシリーズです。このシリーズには、開発者の多様なニーズに応えるため、6 つのモデルサイズ (0.5B、1.5B、3B、7B、14B、32B) が含まれています。膨大な量のコードデータでトレーニングされた Qwen2.5-Coder は、強力な数学的能力と推論能力を維持しながら、コード中心のアプリケーションで優れた性能を発揮します。このチュートリアルでは、Qwen2.5-Coder-32B-Instruct モデルを例として使用します。

モデルの概要

Qwen2.5-Coder は、最大 128K トークンのコンテキスト長をサポートし、92 のプログラミング言語と互換性を持つ、強力なコード中心のモデルシリーズです。これらのモデルは、多言語コード生成、コード補完、コード修復など、さまざまなコード関連タスクで優れた性能を発揮します。指示チューニングされたバリアントである Qwen2.5-Coder-Instruct は、ベースモデルを基に、これらのタスクでの性能を向上させ、優れた汎化能力を備えています。

主な機能は次のとおりです:

  • 多言語プログラミング能力:Qwen2.5-Coder-Instruct は、ニッチなプログラミング言語を含む 40 以上の言語をカバーする McEval ベンチマークで、非常に優れた性能を発揮します。

  • コード推論能力:このモデルは CRUXEval ベンチマークで優れた結果を達成しており、その強力なコード推論能力を示しています。この強化された推論能力は、複雑な指示追従タスクの性能向上にも相関しています。

  • 数学的能力:コーディングの基礎となる学問分野として、数学もモデルが優れている分野の 1 つであり、STEM 分野における包括的な能力を実証しています。

  • 汎用機能:Qwen2.5-Coder-Instruct は、Qwen2.5 ベースモデルの強力な汎用機能を継承しており、幅広いタスクにわたって安定性と広範な適用性をもたらします。

環境要件

サポート対象リージョン

モデルギャラリーを使用して、中国 (北京) 、中国 (上海) 、中国 (深圳) 、中国 (杭州) 、中国 (ウランチャブ) 、およびシンガポールの各リージョンでこのモデルを実行できます。

リソース要件

モデルサイズ

デプロイ要件

トレーニング要件

Qwen2.5-Coder-0.5B/1.5B

最小:シングル P4 カード。推奨:シングル GU30、A10、V100、または T4 カード。

16 GB 以上の VRAM を搭載した GPU (T4、P100、V100 など) 。

Qwen2.5-Coder-3B/7B

最小:シングル P100、T4、または V100 (gn6v) カード。推奨:シングル GU30 または A10 カード。

24 GB 以上の VRAM を搭載した GPU (A10、T4 など) 。

Qwen2.5-Coder-14B

最小:シングル L20 または GU60 カード、またはデュアル GU30 カード。推奨:デュアル GU60 または L20 カード。

32 GB 以上の VRAM を搭載した GPU (V100 など) 。

Qwen2.5-Coder-32B

最小:デュアル GU60 または L20 カード、または 4 基の A10 カード。推奨:4 基の GU60 または L20 カード、または 8 基の V100-32G カード。

80 GB 以上の VRAM を搭載した GPU (A800、H800 など) 。

モデルのデプロイと呼び出し

モデルのデプロイ

  1. モデルギャラリーページに移動します。

    1. PAI コンソールにログインします。

    2. 上部メニューの左上で、リージョンを選択します。

    3. 左側メニューで Workspaces をクリックし、開きたいワークスペースの名前をクリックします。

    4. 左側メニューで、Quick Start > [Model Gallery] を選択します。

  2. モデルギャラリーページで、Qwen2.5-Coder-32B-Instruct モデルカードをクリックし、モデル詳細ページに移動します。

  3. 右上隅にある Deploy をクリックします。デフォルト設定をそのまま使用し、[OK] をクリックしてサービスをデプロイします。ステータスが [Running] に変わると、デプロイは成功です。

重要

このチュートリアルではパブリックリソースを使用しており、従量課金が発生します。 課金を避けるため、完了後サービスを停止または削除してください。

モデルの呼び出し

呼び出し情報の取得

モデル詳細ページで View Call Information をクリックして、パブリックエンドポイントとトークンを表示します。

表示される [Invocation Information] パネルで、[Shared Gateway] タブを選択し、[Public Endpoint][Token] をコピーします。

API による呼び出し

次の例は、API を使用してモデルを呼び出す方法を示しています:

from openai import OpenAI
# 1. クライアントを設定します。
#  を [Invocation Information] パネルの Token に置き換えます。
openai_api_key = "<EAS_TOKEN>"
#  を [Invocation Information] パネルの Public Endpoint に置き換えます。
openai_api_base = "<EAS_ENDPOINT>/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)
# 2. モデル名を取得します。
# BladeLLM の場合、model = "" と設定します。BladeLLM は model パラメーターを必要とせず、client.models.list() を使用したモデル名の取得をサポートしていません。OpenAI SDK の必須パラメーター要件に準拠するため、空の文字列に設定します。
models = client.models.list()
model = models.data[0].id
print(model)
# 3. チャット補完リクエストを開始します。
# ストリーミング (stream=True) と非ストリーミング (stream=False) の両方の出力がサポートされています。
stream = True
chat_completion = client.chat.completions.create(
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "hello"},          
    ],
    model=model,
    top_p=0.8,
    temperature=0.7,
    max_tokens=1024,
    stream=stream,
)
if stream:
    for chunk in chat_completion:
        print(chunk.choices[0].delta.content, end="")
else:
    result = chat_completion.choices[0].message.content
    print(result)

API 呼び出しの詳細については、「API を使用したモデルの呼び出し」をご参照ください。

Web UI による呼び出し

Web UI を使用してモデルを呼び出すこともできます。詳細な手順については、モデルカードをご参照ください。

モデルのデプロイが完了したら、モデルカード詳細ページの [Web Application] セクションからクライアントコードをダウンロードし、python webui_client.py --eas_endpoint "<EAS API Endpoint>" --eas_token "<EAS API Token>" を実行して推論用のローカル Web アプリケーションを起動します。EAS API エンドポイントと EAS API トークンは、デプロイされた EAS サービスの詳細から取得できます。python webui_client.py -h を実行すると、その他のパラメーターの説明が表示されます。

モデルのファインチューニング

モデルギャラリーは、Qwen2.5-Coder-32B-Instruct モデル向けに、教師ありファインチューニング (SFT) と直接選好最適化 (DPO) の 2 つのファインチューニングアルゴリズムを標準で提供しています。

教師ありファインチューニング (SFT)

SFT トレーニングアルゴリズムは JSON 形式の入力をサポートしており、各データエントリは指示と出力から構成され、それぞれ "instruction" および "output" フィールドで表されます。例:

[
  {
    "instruction": "Create a function to calculate the sum of a sequence of integers.",
    "output": "# Python code\ndef sum_sequence(sequence):\n  sum = 0\n  for num in sequence:\n    sum += num\n  return sum"
  },
  {
    "instruction": "Generate a Python code for crawling a website for a specific type of data.",
    "output": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n    response = requests.get(website)\n    phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n    return phone_numbers\n    \nif __name__ == '__main__':\n    print(crawl_website_for_phone_numbers('www.example.com'))"
  }
]

直接選好最適化 (DPO)

DPO トレーニングアルゴリズムは JSON 形式の入力をサポートしています。各データエントリは、プロンプト、選択された応答、拒否された応答から構成され、それぞれ "prompt""chosen""rejected" フィールドで表されます。例:

[
  {
    "prompt": "Create a function to calculate the sum of a sequence of integers.",
    "chosen": "# Python code\ndef sum_sequence(sequence):\n  sum = 0\n  for num in sequence:\n    sum += num\n  return sum",
    "rejected": "[x*x for x in [1, 2, 3, 5, 8, 13]]"
  },
  {
    "prompt": "Generate a Python code for crawling a website for a specific type of data.",
    "chosen": "import requests\nimport re\n\ndef crawl_website_for_phone_numbers(website):\n    response = requests.get(website)\n    phone_numbers = re.findall('\\d{3}-\\d{3}-\\d{4}', response.text)\n    return phone_numbers\n    \nif __name__ == '__main__':\n    print(crawl_website_for_phone_numbers('www.example.com'))",
    "rejected": "def remove_duplicates(string): \n    result = \"\" \n    prev = '' \n\n    for char in string:\n        if char != prev: \n            result += char\n            prev = char\n    return result\n\nresult = remove_duplicates(\"AAABBCCCD\")\nprint(result)"
  }
]
  1. モデルギャラリーページで、Qwen2.5-Coder-32B-Instruct モデルカードをクリックし、モデル詳細ページに移動します。

  2. モデル詳細ページの右上隅にある Train をクリックします。次のパラメーターを設定します:

    • データセット設定:データを準備した後、Object Storage Service (OSS) バケットにアップロードするか、データセットオブジェクトを指定して NAS または CPFS 上のデータセットを選択します。PAI が提供するパブリックデータセットを使用してジョブを送信し、アルゴリズムをテストすることもできます。

    • コンピューティングリソース設定:アルゴリズムには 80 GB 以上の VRAM を搭載した GPU が必要です。選択したリソースクォータ内に十分なコンピューティングリソースがあることを確認してください。他のモデルサイズで必要なリソース仕様については、「環境要件」をご参照ください。

    • ハイパーパラメーター設定:次の表に、トレーニングのハイパーパラメーターを示します。これらの値を調整するか、デフォルト値を使用できます。

      ハイパーパラメーター設定

      ハイパーパラメーター

      タイプ

      デフォルト

      必須

      説明

      training_strategy

      String

      sft

      はい

      トレーニングアルゴリズム。有効な値:SFT と DPO。

      learning_rate

      浮動小数点

      5e-5

      はい

      学習率。モデルの重み調整の大きさを制御します。

      num_train_epochs

      整数

      1

      はい

      トレーニングエポック数。

      per_device_train_batch_size

      整数

      1

      はい

      各 GPU が 1 回のトレーニングイテレーションで処理するサンプル数。バッチサイズを大きくすると効率が向上しますが、VRAM 要件も増加します。

      seq_length

      整数

      128

      はい

      モデル入力の最大シーケンス長 (トークン単位) 。

      lora_dim

      整数

      32

      いいえ

      LoRA の次元。lora_dim > 0 の場合、軽量の LoRA または QLoRA トレーニングが使用されます。

      lora_alpha

      整数

      32

      いいえ

      LoRA の重み。このパラメーターは lora_dim > 0 (LoRA または QLoRA トレーニングが使用される) の場合に有効になります。

      dpo_beta

      浮動小数点

      0.1

      いいえ

      トレーニング中にモデルが選好情報に依存する度合いを制御します。

      load_in_4bit

      ブール値

      false

      いいえ

      モデルを 4 ビット精度でロードするかどうかを指定します。

      lora_dim > 0load_in_4bit が true、load_in_8bit が false の場合、軽量の 4 ビット QLoRA トレーニングが有効になります。

      load_in_8bit

      ブール値

      false

      いいえ

      モデルを 8 ビット精度でロードするかどうかを指定します。

      lora_dim > 0load_in_4bit が false、load_in_8bit が true の場合、軽量の 8 ビット QLoRA トレーニングが有効になります。

      gradient_accumulation_steps

      整数

      8

      いいえ

      勾配蓄積のステップ数。

      apply_chat_template

      ブール値

      true

      いいえ

      トレーニングデータにモデルのデフォルトのチャットテンプレートを適用するかどうかを指定します。Qwen2 シリーズモデルの場合、フォーマットは次のとおりです:

      • 質問:<|im_start|>user\n + instruction + <|im_end|>\n

      • 回答:<|im_start|>assistant\n + output + <|im_end|>\n

      system_prompt

      String

      You are a helpful assistant

      いいえ

      モデルトレーニングに使用されるシステムプロンプト。

  3. Train をクリックすると、ジョブ詳細ページに自動的にリダイレクトされ、そこでトレーニングステータスを監視したり、ログを表示したりできます。

トレーニングされたモデルは、AI アセット - モデル管理に自動的に登録され、モデルを表示したりデプロイしたりできます。詳細については、「モデルの登録と管理」をご参照ください。

モデルの評価

PAI は、Qwen2.5-Coder-32B-Instruct モデル向けの組み込み評価アルゴリズムを提供しています。このアルゴリズムを使用して、オリジナルモデルとファインチューニングされたバージョンの性能を評価できます。詳細については、「モデル評価」および「大規模言語モデル評価のベストプラクティス」をご参照ください。

モデルの圧縮

トレーニング後、デプロイ前にモデルを量子化 (圧縮) して、ストレージとコンピューティングの要件を削減できます。詳細については、「モデル圧縮」をご参照ください。

参考資料