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

Platform For AI:Qwen2.5-Coderモデルの微調整、評価、圧縮、デプロイ

最終更新日:Dec 20, 2024

Tongyi Qianwen 2.5-Coder (Qwen2.5-CoderまたはCodeQwen) は、Alibaba Cloudによってリリースされ、コード処理用に開発された新しい一連の大規模言語モデル (LLM) です。 LLMは、開発者の多様な要件を満たすために、次の主流サイズをサポートしています: 0.5B、1.5B、3B、7B、14B、および32B。 Qwen2.5-Coderは、コーディングシナリオで最適化されたパフォーマンスを実現し、大量のコードデータのトレーニングにより強力な数学および推論機能を維持します。 AI (PAI) のためのプラットホームはモデルに完全なサポートを提供できます。 このトピックでは、モデルギャラリーでQwen2.5-Coderモデルを微調整、評価、圧縮、およびデプロイする方法について説明します。 このトピックでは、Qwen2.5 Coder-32B-Instructモデルを使用します。

概要

Qwen2.5-Coderは、Alibaba Cloudが立ち上げた強力なプログラミング機能を備えた一連のモデルです。 Qwen2.5-Coderは最大128,000トークンのコンテキスト長をサポートし、92のプログラミング言語と互換性があります。 モデルは、多言語コード生成、コード補完、およびコード修復を含む、様々なコード関連タスクにおいて良好に機能する。 Alibaba Cloudは、Qwen2.5-Coderに基づいて命令を微調整し、さまざまなタスクでさらに改善され、優れた一般化機能を示すQwen2.5-Coder-Instrictモデルをリリースしました。

  • 多言語プログラミング機能

    Qwen2.5-Coder-Instructモデルは、優れた多言語プログラミング機能を示しています。 このモデルは、McEvalベンチマークに基づいて広範囲にテストされました。 このテストは、いくつかのニッチ言語を含む40以上のプログラミング言語をカバーしています。 結果は、モデルが多言語プログラミングタスクでうまく機能することを示しています。

  • コード推論

    Qwen2.5-Coder-Instrictモデルは、コード推論タスクで優れています。 このモデルは、CRUXEval評価ベンチマークに基づく強力な推論機能を示しています。 このモデルは、コード推論能力が向上するにつれて、複雑な命令実行でうまく機能します。 これは、コード機能が一般的な推論機能にどのように影響するかについてのその後の研究に新しい視点を提供します。

  • 数学的能力

    Qwen2.5-Coder-Instrictモデルは、数学とコーディングタスクに優れています。 コーディングの基礎分野として、数学はプログラミングと密接に関連しています。 両方の分野でのモデルの優れた性能は、科学におけるその強力な能力を示しています。

  • 基本機能

    Qwen2.5-Coder-Instrictモデルは、一般的な機能評価に基づいてQwen2.5の利点を維持します。 これは、モデルが適切であり、さまざまなタスクにわたって安定していることを証明します。

上記の機能により、Qwen2.5-Coderシリーズのモデルは、多言語プログラミングと複雑なタスク処理に強力な技術サポートを提供できます。

環境要件

  • Qwen2.5-Coder-Instrictモデルは、中国 (北京) 、中国 (上海) 、中国 (深セン) 、中国 (杭州) 、中国 (ウランカブ) 、またはシンガポールリージョンのモデルギャラリーで実行できます。

  • コンピューティングリソースがモデルサイズと一致していることを確認します。 次の表に、各モデルサイズの要件を示します。

    モデルサイズ

    要件

    Qwen2.5-Coder-0.5B/1.5B

    • トレーニング: T4、P100、V100などのGPUを16 GBのメモリまたはより高い仕様のGPUで使用します。

    • デプロイ: 少なくとも1つのP4 GPUを使用します。 1つのGU30、A10、V100、またはT4 GPUを使用することを推奨します。

    Qwen2.5-Coder-3B/7B

    • トレーニング: 24 GBのメモリを搭載したA10やT4などのGPU、またはより高い仕様のGPUを使用します。

    • デプロイ: 少なくとも1つのP100、P4、またはV100 (gn6v) GPUを使用します。 1つのGU30またはA10 GPUを使用することを推奨します。

    Qwen2.5-Coder-14B

    • トレーニング: 32 GBのメモリを搭載したV100などのGPU、またはより高い仕様のGPUを使用します。

    • デプロイ: 少なくとも1つのL20 GPU、1つのGU60 GPU、または2つのGU30 GPUを使用します。 2つのGU60 GPUまたは2つのL20 GPUを使用することを推奨します。

    Qwen2.5-Coder-32B

    • トレーニング: 80 GBのメモリを備えたA800やH800などのGPU、またはより高い仕様のGPUを使用します。

    • 配置: 少なくとも2つのGU60 GPU、2つのL20 GPU、または4つのA10 GPUを使用します。 4つのGU60 GPU、4つのL20 GPU、または32 GBのメモリを備えた8つのV100 GPUを使用することを推奨します。

モデルギャラリーでモデルを使用

モデルサービスのデプロイと呼び出し

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

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

    2. 左上隅で、ビジネス要件に基づいてリージョンを選択します。

    3. 左側のナビゲーションペインで、[ワークスペース] をクリックします。 [ワークスペース] ページで、使用するワークスペースの名前をクリックします。

    4. 左側のナビゲーションウィンドウで、[クイックスタート] > [モデルギャラリー] を選択します。

  2. モデルギャラリーページのモデルリストで、Qwen2.5-Coder-32B-Instructモデルを検索してクリックします。

  3. モデル詳細ページの右上隅にある [デプロイ] をクリックします。 [展開] パネルで、モデルをElastic Algorithm Service (EAS) にモデルサービスとして展開するパラメーターを設定します。

    image

  4. モデルサービスを呼び出します。

    [モデルギャラリー] ページで、[ジョブ管理] をクリックします。 [ジョブ管理] ページの [トレーニングジョブ] タブで、[デプロイジョブ] タブをクリックします。 表示されるタブで、モデルサービスの名前をクリックします。 モデルサービスの詳細ページで、右上隅にあるWebアプリの表示をクリックします。

    image

モデルのトレーニング

Model Galleryは、SFT (Supervised fine-tuning) およびDPO (Direct Preference Optimization) アルゴリズムを含む、Qwen2.5 Coder-32B-Instructモデル用の標準的な微調整アルゴリズムを提供します。

SFT

SFTアルゴリズムは、JSON形式の入力をサポートします。 各データレコードは、命令フィールドによって指定された質問と、出力フィールドによって指定された回答とからなる。 例:

[
  {
    "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": "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. モデルの詳細ページの右上隅にある [トレーニング] をクリックします。 Trainパネルで、次のパラメータを設定します。

    • データセット設定: 準備したデータセットを含むObject Storage Service (OSS) パスを指定するか、file Storage NAS (NAS) またはCloud Parallel File Storage (CPFS) に保存されているデータセットファイルを選択できます。 既定のパスを選択して、PAIが提供するパブリックデータセットを使用することもできます。

    • コンピューティングリソース: 微調整アルゴリズムには、80 GBのメモリを備えたA800またはH800 GPU、またはより高い仕様のGPUが必要です。 使用するリソースクォータに十分なコンピューティングリソースがあることを確認します。 他のサイズのモデルに必要なリソース仕様については、「環境要件」をご参照ください。

    • ハイパーパラメーター: ビジネス要件に基づいて、微調整アルゴリズムのハイパーパラメーターを設定します。 次の表に、ハイパーパラメーターを示します。

      ハイパーパラメータ

      タイプ

      デフォルト値

      必須 / 任意

      説明

      training_strategy

      String

      sft

      微調整アルゴリズム。 有効な値: SFTおよびDPO。

      learning_rate

      float

      5e-5

      モデルが調整される範囲を制御する学習率。

      num_train_epochs

      int

      1

      エポックの数。 エポックは、トレーニングデータセット内の各サンプルをアルゴリズムに公開する完全なサイクルです。

      per_device_train_batch_size

      int

      1

      1回のトレーニングイテレーションで各GPUによって処理されるサンプルの数。 より高い値は、より高いトレーニング効率およびより高いメモリ使用量をもたらす。

      seq_length

      int

      128

      1回のトレーニング反復でモデルによって処理される入力データの長さ。

      lora_dim

      int

      32

      不可

      低ランク適応 (LoRA) または量子化低ランク適応 (QLoRA) トレーニングで使用される低ランク行列の内次元。 このパラメーターを0より大きい値に設定します。

      lora_alpha

      int

      32

      不可

      LoRAまたはQLoRAの重み。 このパラメーターは、lora_dimパラメーターを0より大きい値に設定した場合にのみ有効になります。

      dpo_beta

      float

      0.1

      不可

      モデルがトレーニング中にプリファレンス情報に依存する範囲。

      load_in_4bit

      bool

      true

      不可

      モデルを4ビット量子化で読み込むかどうかを指定します。

      このパラメーターは、lora_dimパラメーターを0より大きい値に設定し、load_in_8bitパラメーターをfalseに設定した場合にのみ有効になります。

      load_in_8bit

      bool

      false

      不可

      モデルを8ビット量子化で読み込むかどうかを指定します。

      このパラメーターは、lora_dimパラメーターを0より大きい値に設定し、load_in_4bitパラメーターをfalseに設定した場合にのみ有効になります。

      gradient_accumulation_steps

      int

      8

      不可

      勾配累積ステップの数。

      apply_chat_template

      bool

      true

      不可

      アルゴリズムがトレーニングデータを既定のチャットテンプレートと組み合わせるかどうかを指定します。 Qwen2モデルは次の形式で使用されます。

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

      • 回答: <| im_start |> アシスタント \n + 出力 + <| im_end |>\ n

      system_prompt

      String

      あなたは役に立つアシスタントです

      不可

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

  2. パラメーターを設定したら、[トレイン] をクリックします。 トレーニングジョブの詳細ページで、トレーニングジョブのステータスとログを表示できます。

    image

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

モデルを評価する

科学的モデル評価は、開発者がさまざまなモデルのパフォーマンスを効率的に測定および比較するのに役立ちます。 この評価は、開発者がモデルを正確に選択および最適化する際にもガイドします。 これにより、AIのイノベーションとアプリケーション開発が加速します。

モデルギャラリーでは、Qwen2.5 Coder-32B-Instructモデルまたはトレーニング済みのQwen2.5 Coder-32B-Instructモデルのすぐに使える評価アルゴリズムを提供します。 モデル評価の詳細については、「モデル評価」および「LLM評価のベストプラクティス」をご参照ください。

モデルの圧縮

トレーニング済みモデルをデプロイする前に、モデルを量子化して圧縮できます。 これにより、ストレージおよびコンピューティングリソースの消費が効果的に削減されます。 詳細については、「モデル圧縮」をご参照ください。

関連ドキュメント