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

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

最終更新日:Sep 10, 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 カード 1 枚。推奨:GU30、A10、V100、または T4 カード 1 枚。

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

Qwen2.5-Coder-3B/7B

最小:P100、T4、または V100 (gn6v) カード 1 枚。推奨:GU30 または A10 カード 1 枚。

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

Qwen2.5-Coder-14B

最小:L20 または GU60 カード 1 枚、または GU30 カード 2 枚。推奨:GU60 または L20 カード 2 枚。

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

Qwen2.5-Coder-32B

最小:GU60 または L20 カード 2 枚、または A10 カード 4 枚。推奨:GU60 または L20 カード 4 枚、または V100-32G カード 8 枚。

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

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

モデルのデプロイ

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

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

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

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

    4. 左側メニューで、クイックスタート > [Model Gallery] を選択します。

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

  3. 右上隅の デプロイメント をクリックします。デフォルト設定のまま [OK] をクリックし、サービスをデプロイします。ステータスが 実行中 に変わると、デプロイは成功です。

重要

このチュートリアルでは、従量課金方式で課金されるパブリックリソースを使用します。課金を回避するには、使用が終了したらサービスを停止または削除してください。

モデルの呼び出し

呼び出し情報の取得

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

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

API による呼び出し

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

from openai import OpenAI
# 1. クライアントを構成します。
# <EAS_TOKEN> を [Invocation Information] パネルの Token に置き換えます。
openai_api_key = "<EAS_TOKEN>"
# <EAS_ENDPOINT> を [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 はモデルパラメーターを必要とせず、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 Endpoint と EAS API Token は、デプロイされた EAS サービスの詳細から取得できます。python webui_client.py -h を実行すると、その他のパラメーターの説明を表示できます。

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

モデルギャラリーは、Qwen2.5-Coder-32B-Instruct モデル向けに、すぐに使用できる 2 つのファインチューニングアルゴリズムを提供しています:教師ありファインチューニング (SFT) と Direct Preference Optimization (DPO)。

教師ありファインチューニング (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'))"
  }
]

Direct Preference Optimization (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. モデルの詳細ページで、右上隅の トレーニング をクリックします。以下のパラメーターを設定します。

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

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

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

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

      ハイパーパラメーター

      タイプ

      デフォルト

      必須

      説明

      training_strategy

      String

      sft

      はい

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

      learning_rate

      Float

      5e-5

      はい

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

      num_train_epochs

      Integer

      1

      はい

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

      per_device_train_batch_size

      Integer

      1

      はい

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

      seq_length

      Integer

      128

      はい

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

      lora_dim

      Integer

      32

      いいえ

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

      lora_alpha

      Integer

      32

      いいえ

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

      dpo_beta

      Float

      0.1

      いいえ

      トレーニング中のモデルの選好情報への依存度を制御します。

      load_in_4bit

      Boolean

      false

      いいえ

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

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

      load_in_8bit

      Boolean

      false

      いいえ

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

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

      gradient_accumulation_steps

      Integer

      8

      いいえ

      勾配蓄積のステップ数。

      apply_chat_template

      Boolean

      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. トレーニング をクリックします。ジョブの詳細ページに自動的にリダイレクトされ、そこでトレーニングステータスを監視し、ログを表示できます。

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

モデル評価

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

モデル圧縮

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

関連ドキュメント