HTTP API を使用して Alibaba Cloud Model Studio で Qwen をファインチューニングします。
このトピックは、国際版(シンガポールリージョン)でのみ適用されます。
前提条件
ファインチューニングの概念、手順、およびデータ形式要件を理解していること。
Model Studio を有効化し、API キーを取得済みであること。詳細については、「API キーの作成」をご参照ください。
ファインチューニングの概要
ファインチューニングにより、モデルのパフォーマンスが向上します。
特定の業界またはビジネス向けのパフォーマンス向上
出力レイテンシの低減
ハルシネーションの抑制
出力を人間の価値観やプリファレンスに合わせる
大規模モデルをファインチューニング済みの軽量モデルで置き換え
ファインチューニング中、モデルはご利用の訓練データからビジネスおよびシナリオ固有の特徴(ドメイン知識、トーン、コミュニケーションスタイル、自己認識など)を学習します。事前学習中にすでに多くの業界またはシナリオ固有の例を学習しているため、ファインチューニング後のゼロショットまたはワンショット性能は、ベースモデルのフューショット性能を上回ります。これにより入力トークン数が削減され、出力レイテンシが低下します。
全体的な手順
サポートされるモデル
テキスト生成
名前 | モデルコード | フルパラメーター SFT (sft) | 効率的 SFT (efficient_sft) |
Qwen3-32B | qwen3-32b | ||
Qwen3-14B | qwen3-14b | ||
Qwen3-VL-8B-Instruct | qwen3-vl-8b-instruct | ||
Qwen3-VL-8B-Thinking | qwen3-vl-8b-thinking |
訓練モードの比較
フルパラメーター訓練 | 効率的訓練 (LoRA、推奨) | |
シナリオ | • 新しい機能を学習する。 • 全体的なパフォーマンスを最適化する。 | • 特定のシナリオにおけるパフォーマンスを最適化する。 • 時間とコストに敏感な場合。 |
訓練期間 | 長く、収束が遅い。 | 短く、収束が速い。 |
課金
方法 | 訓練データ量に基づいて課金されます。 |
計算式 | モデル訓練料金 =(訓練データの合計トークン数 + ミックス訓練データの合計トークン数)× エポック数 × 訓練単位価格(最小課金単位:1 トークン) |
データセットに関するヒント
サイズ要件
SFT データセットには、少なくとも 1,000 件の高品質なエントリ が必要です。評価結果が不十分な場合は、さらに訓練データを収集してください。
十分なデータがない場合は、ナレッジベースを使用したエージェントアプリケーションを構築することを検討してください。多くの複雑なビジネスシナリオでは、ファインチューニングとナレッジベース検索を組み合わせることで最良の結果が得られます。
たとえば、カスタマーサービスのシナリオでは、モデルをファインチューニングしてトーン、表現習慣、自己認識を調整し、その後ナレッジベースを使用してコンテキストに動的にドメイン知識を注入します。
まず検索拡張生成(RAG)を試してください。十分なデータを収集した後、ファインチューニングを使用してパフォーマンスをさらに向上させます。
以下の戦略を使用してデータセットを拡張できます。
より大規模で高性能なモデルを使用して、特定のビジネスまたはシナリオ向けのコンテンツを生成する。
アプリケーションシナリオ、ウェブスクレイピング、ソーシャルメディア、フォーラム、パブリックデータセット、パートナー、業界リソース、ユーザーからの投稿など、さまざまなソースから手動でデータを収集する。
データの多様性とバランス
ドメイン固有のユースケースでは、ドメイン専門知識が最も重要な要素です。Q&A シナリオでは、汎化がより重要になります。ビジネスモジュールまたはシナリオに基づいてデータサンプルを設計してください。訓練品質は、データ量、ドメイン特異性、および多様性に依存します。
たとえば、AI アシスタントのシナリオでは、プロフェッショナルかつ多様なデータセットには以下が含まれるべきです。
ビジネス | 多様なシナリオとユースケース |
E コマースカスタマーサービス | プロモーションプッシュ、販売前相談、販売中ガイダンス、アフターサービス、フォローアップ訪問、苦情処理など。 |
金融サービス | ローン相談、投資・財務アドバイス、クレジットカードサービス、銀行口座管理など。 |
オンラインヘルスケア | 症状相談、予約スケジューリング、受診案内、薬情報照会、健康アドバイスなど。 |
AI 秘書 | IT 情報、行政情報、人事情報、従業員福利厚生 Q&A、社内カレンダー照会など。 |
旅行アシスタント | 旅行計画、出入国ガイド、旅行保険相談、目的地の風習・文化紹介など。 |
企業法務顧問 | 契約審査、知的財産保護、コンプライアンスチェック、労働法 Q&A、クロスボーダートランザクション相談、ケース固有の法的分析など。 |
実際の使用比率に合わせて、各シナリオのデータ量をバランスよく配分してください。これにより、特定の機能タイプへの偏りを防ぎ、汎化性能を向上させることができます。
訓練データセットのアップロード
データセットの準備
SFT トレーニングセット
SFT では、マルチターン対話と複数のロール設定をサポートする Chat Markup Language (ChatML) 形式の訓練データを使用します。
OpenAI のnameパラメーターおよびweightパラメーターはサポートされていません。すべてのアシスタント出力が訓練対象となります。
# 訓練データの 1 行(JSON 形式)。展開した場合の典型的な構造は次のとおりです。
{"messages": [
{"role": "system", "content": "システム入力 1"},
{"role": "user", "content": "ユーザー入力 1"},
{"role": "assistant", "content": "期待されるモデル出力 1"},
{"role": "user", "content": "ユーザー入力 2"},
{"role": "assistant", "content": "期待されるモデル出力 2"}
...
]}system、user、assistant ロールの詳細については、「テキスト生成モデルの概要」をご参照ください。訓練セットのサンプル:SFT-ChatML_format_example.jsonl および SFT-ChatML_format_example.xlsx。XLS および XLSX 形式は、シングルターン対話のみをサポートします。
1 つの訓練エントリにおいて、すべての assistant 行は、訓練中の相対的な重要度を設定する "loss_weight" パラメーターをサポートします。有効値の範囲は 0.0 ~ 1.0 です。値が高いほど重要度が高くなります。
このパラメーターは招待プレビュー段階です。使用するには、アカウントマネージャーにお問い合わせください。
{"role": "assistant", "content": "期待されるモデル出力 1", "loss_weight": 1.0},
{"role": "assistant", "content": "期待されるモデル出力 2", "loss_weight": 0.5}思考モデル向け SFT
訓練データはマルチターン対話と複数のロール設定をサポートしますが、最終的なアシスタント出力のみが訓練対象となります。
\n 文字は think タグの前後に必ず保持してください。# 訓練データの 1 行(JSON 形式)。展開した場合の典型的な構造は次のとおりです。
{"messages": [
{"role": "system", "content": "システム入力 1"},
{"role": "user", "content": "ユーザー入力 1"},
{"role": "assistant", "content": "モデル出力 1"}, --中間のアシスタント出力には <think> タグを含めないでください
...
{"role": "user", "content": "ユーザー入力 2"},
{"role": "assistant", "content": "<think>\n期待される思考内容 2\n</think>\n\n期待される出力 2"} --思考内容は最終アシスタント出力にのみ含めることができます。
]}system、user、assistant ロールの詳細については、「テキスト生成モデルの概要」をご参照ください。訓練セットのサンプル:SFT-deep_thinking_content_example.jsonl。
訓練サンプルで <think> タグを省略するようにモデルを設定できます。この出力方法を使用する場合、モデル訓練後に呼び出し時に思考モードを有効にしないでください。
{"role": "assistant", "content": "期待されるモデル出力 2"} --モデルに思考を有効にしないことを指示1 つの訓練エントリの最終的な assistant 行は、訓練中の相対的な重要度を設定する "loss_weight" パラメーターをサポートします。有効値の範囲は 0.0 ~ 1.0 です。値が高いほど重要度が高くなります。
このパラメーターは招待プレビュー段階です。使用するには、アカウントマネージャーにお問い合わせください。
{"role": "assistant", "content": "<think>\n期待される思考内容 2\n</think>\n\n期待される出力 2", "loss_weight": 1.0}画像理解向け SFT(Qwen-VL)
OpenAI のnameパラメーターおよびweightパラメーターはサポートされていません。すべてのアシスタント出力が訓練対象となります。
system、user、assistant ロールの違いの詳細については、「テキスト生成モデルの概要」をご参照ください。ChatML 形式の訓練データサンプル:
# 訓練データの 1 行(JSON 形式)。展開した場合の典型的な構造は次のとおりです。
{"messages":[
{"role":"user",
"content":[
{"text":"ユーザー入力 1"},
{"image":"画像ファイル名 1"}]},
{"role":"assistant",
"content":[
{"text":"期待されるモデル出力 1"}]},
{"role":"user",
"content":[
{"text":"ユーザー入力 2"}]},
{"role":"assistant",
"content":[
{"text":"期待されるモデル出力 2"}]},
...
...
...
]}思考モデルを訓練する場合は、思考モデル向け SFT のデータ形式要件に従う必要があります。
ZIP ファイルの要件は次のとおりです。
形式:ZIP。最大サイズ:2 GB。ZIP ファイル内のフォルダおよびファイル名には、ASCII 文字(a–z、A–Z)、数字(0–9)、アンダースコア(_)、ハイフン(-)のみを使用できます。
訓練テキストデータファイルは
data.jsonlという名前で、ZIP ファイルのルートディレクトリに配置する必要があります。ZIP ファイルを開いたときに、data.jsonl ファイルがすぐに表示されることを確認してください。1 枚の画像の幅または高さは 1024 ピクセルを超えてはなりません。最大サイズは 10 MB です。サポートされる形式:
.bmp、.jpeg /.jpg、.png、.tif /.tiff、および.webp。画像ファイル名は、異なるフォルダに保存されている場合でも重複してはなりません。
ZIP ファイルのディレクトリ構造:
シングルレベルディレクトリ(推奨)
画像ファイルおよび
data.jsonlファイルは、ZIP ファイルのルートディレクトリに配置します。Trainingdata_vl.zip |--- data.jsonl # 注:外側のフォルダでラップしないでください |--- image1.png |--- image2.jpgマルチレベルディレクトリ
data.jsonl ファイルは ZIP ファイルのルートディレクトリに配置する必要があります。
data.jsonl ファイル内では、画像ファイル名のみを宣言でき、ファイルパスは宣言できません。例:
正しい:
image1.jpg。誤り:jpg_folder/image1.jpg。ZIP ファイル内で画像ファイル名はグローバルに一意である必要があります。
Trainingdata_vl.zip |--- data.jsonl # 注:外側のフォルダでラップしないでください |--- jpg_folder | └── image1.jpg |--- png_folder └── image2.png
訓練ファイルのアップロード
HTTP
Windows CMD の場合、${DASHSCOPE_API_KEY}を%DASHSCOPE_API_KEY%に置き換えることができます。PowerShell の場合、$env:DASHSCOPE_API_KEY
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"path/to/your/sample.jsonl"' \
--form 'purpose="fine-tune"'制限事項:
最大ファイルサイズは 1 GB です。
すべてのアクティブ(削除されていない)ファイルの合計ストレージクォータは 5 GB です。
アクティブ(削除されていない)ファイルの最大数は 100 です。
ファイルストレージに時間制限はありません。
詳細については、「OpenAI 互換 - ファイル」をご参照ください。
応答:
{
"id": "file-ft-e73cafa11cef43a0ab75fb8e",
"object": "file",
"bytes": 23149,
"filename": "qwen-fine-tune-sample.jsonl",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1769138847
}ファインチューニング
ファインチューニングジョブの作成
HTTP
Windows CMD の場合、${DASHSCOPE_API_KEY}を%DASHSCOPE_API_KEY%に置き換えることができます。PowerShell の場合、$env:DASHSCOPE_API_KEY
curl --location "https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes" \
--header "Authorization: Bearer ${DASHSCOPE_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{
"model":"qwen3-14b",
"training_file_ids":[
"<訓練データセット 1 のファイル ID に置き換えてください>",
"<訓練データセット 2 のファイル ID に置き換えてください>"
],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type":"sft"
}'入力パラメーター
フィールド | 必須 | 型 | 位置 | 説明 |
training_file_ids | はい | 配列 | 本文 | 訓練セットファイル ID。 |
validation_file_ids | いいえ | 配列 | 本文 | 検証セットファイル ID。 |
model | はい | 文字列 | 本文 | ベースモデル ID、または以前のファインチューニングジョブで生成されたモデルの ID。 |
hyper_parameters | いいえ | マップ | 本文 | ファインチューニングのハイパーパラメーター。省略した場合はデフォルト値が使用されます。 |
training_type | いいえ | 文字列 | 本文 | ファインチューニング方法。有効値:
|
job_name | いいえ | 文字列 | 本文 | ジョブ名。 |
model_name | いいえ | 文字列 | 本文 | ファインチューニング済みモデルの名前。モデル ID はシステムによって生成されます。 |
サンプル応答
{
"request_id": "635f7047-003e-4be3-b1db-6f98e239f57b",
"output":
{
"job_id": "ft-202511272033-8ae7",
"job_name": "ft-202511272033-8ae7",
"status": "PENDING",
"finetuned_output": "qwen3-14b-ft-202511272033-8ae7",
"model": "qwen3-14b",
"base_model": "qwen3-14b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type": "sft",
"create_time": "2025-11-27 20:33:15",
"workspace_id": "llm-8v53etv3hwb8orx1",
"user_identity": "1654290265984853",
"modifier": "1654290265984853",
"creator": "1654290265984853",
"group": "llm",
"max_output_cnt": 10
}
}hyper_parameters のサポート設定
ジョブ詳細の照会
返された job_id を使用してジョブステータスを照会します。
HTTP
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'入力パラメーター
フィールド | 型 | 位置 | 必須 | 説明 |
job_id | 文字列 | パスパラメーター | はい | ジョブ ID。 |
成功時の応答サンプル
{
"request_id": "d100cddb-ac85-4c82-bd5c-9b5421c5e94d",
"output":
{
"job_id": "ft-202511272033-8ae7",
"job_name": "ft-202511272033-8ae7",
"status": "RUNNING",
"finetuned_output": "qwen3-14b-ft-202511272033-8ae7",
"model": "qwen3-14b",
"base_model": "qwen3-14b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type": "sft",
"create_time": "2025-11-27 20:33:15",
"workspace_id": "llm-8v53etv3hwb8orx1",
"user_identity": "1654290265984853",
"modifier": "1654290265984853",
"creator": "1654290265984853",
"group": "llm",
"max_output_cnt": 10
}
}ジョブステータス | 意味 |
PENDING | 訓練が開始される直前です。 |
QUEUING | ジョブがキューに入れられています。一度に実行できるジョブは 1 つだけです。 |
RUNNING | ジョブが実行中です。 |
CANCELING | ジョブがキャンセルされています。 |
SUCCEEDED | ジョブが成功しました。 |
FAILED | ジョブが失敗しました。 |
CANCELED | ジョブがキャンセルされました。 |
訓練が成功すると、finetuned_output にファインチューニング済みモデルの ID が含まれ、モデルデプロイに使用できます。
ジョブログの取得
HTTP
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/logs?offset=0&line=1000' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' offset パラメーターおよび line パラメーターを使用して、特定範囲のログを取得します。offset パラメーターは開始位置を指定し、line はログエントリの最大数を指定します。
応答サンプル:
{
"request_id":"1100d073-4673-47df-aed8-c35b3108e968",
"output":{
"total":57,
"logs":[
"{ログ出力 1}",
"{ログ出力 2}",
...
...
...
]
}
}チェックポイントの照会と公開
SFT ファインチューニング(efficient_sftおよびsft)のみが、中間状態のチェックポイントの保存および公開をサポートします。
チェックポイントの照会
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/checkpoints' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'入力パラメーター
フィールド | 型 | 位置 | 必須 | 説明 |
job_id | 文字列 | パスパラメーター | はい | ジョブ ID。 |
成功時の応答サンプル
{
"request_id": "c11939b5-efa6-4639-97ae-ed4597984647",
"output": [
{
"create_time": "2025-11-11T16:25:42",
"full_name": "ft-202511272033-8ae7-checkpoint-20",
"job_id": "ft-202511272033-8ae7",
"checkpoint": "checkpoint-20",
"model_name": "qwen3-14b-instruct-ft-202511272033-8ae7",
"status": "SUCCEEDED"
}
]
}スナップショット公開ステータス | 説明 |
PENDING | チェックポイントがエクスポート待ちです。 |
PROCESSING | チェックポイントがエクスポート中です。 |
SUCCEEDED | チェックポイントがエクスポートされました。 |
FAILED | チェックポイントのエクスポートに失敗しました。 |
checkpoint パラメーターはチェックポイント ID を指し、モデル公開 API でエクスポートするチェックポイントを指定するために使用されます。model_name パラメーターはモデル ID を指し、モデルデプロイに使用できます。finetuned_output パラメーターは、最後のチェックポイントの model_name を返します。
モデルの公開
ファインチューニング完了後、チェックポイントをエクスポートできます。Model Studio でモデルをデプロイする前に、チェックポイントをエクスポートしてください。
エクスポートされたチェックポイントはクラウドストレージに保存され、アクセスまたはダウンロードすることはできません。
curl --request GET 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/export/<checkpoint_id>?model_name=<model_name>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'入力パラメーター
フィールド | 型 | 位置 | 必須 | 説明 |
job_id | 文字列 | パスパラメーター | はい | ジョブ ID。 |
checkpoint_id | 文字列 | パスパラメーター | はい | チェックポイント ID。 |
model_name | 文字列 | パスパラメーター | はい | エクスポート後の期待されるモデル ID。 |
成功時の応答サンプル
{
"request_id": "ed3faa41-6be3-4271-9b83-941b23680537",
"output": true
}エクスポートは非同期で実行されます。チェックポイントリストを照会してエクスポートステータスを監視してください。
追加操作
ジョブ一覧の取得
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' ジョブのキャンセル
実行中のファインチューニングジョブを終了します。
curl --request POST 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/cancel' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' ジョブの削除
実行中のジョブは削除できません。
curl --request DELETE 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' モデルデプロイ
ファインチューニング済みモデルは、モデルユニット デプロイのみをサポートします。
モデルデプロイコンソール(シンガポール) にアクセスしてモデルをデプロイします。課金およびその他の詳細については、「従量課金(モデルユニット)」をご参照ください。
モデルの呼び出し
モデルをデプロイした後、OpenAI 互換 API、Dashscope、または Assistant SDK を使用して呼び出します。
model パラメーターをモデルの code に設定します。モデルデプロイコンソール(シンガポール) にアクセスして モデルコード を確認します。
curl 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' \
--data '{
"model": "<デプロイ成功後のモデルインスタンスコードに置き換えてください>",
"input":{
"messages":[
{
"role": "user",
"content": "Who are you?"
}
]
},
"parameters": {
"result_format": "message"
}
}'よくある質問
独自のモデルをアップロードしてデプロイできますか?
現在、独自のモデルをアップロードしてデプロイすることはサポートされていません。Alibaba Cloud Model Studio の最新情報をご確認ください。
ただし、Platform for AI (PAI) では独自のモデルのデプロイをサポートしています。「PAI-LLM での大規模言語モデルのデプロイ」をご参照ください。