インストラクション蒸留テンプレートは、少数のシードインストラクションを基に、インストラクション拡張、インストラクションの洗練、教師モデルによる生成、4 つの次元でのスコアリングとフィルタリングを通じて、高品質なインストラクション追従 SFT データセットを構築します。
テンプレートの概要
インストラクション蒸留テンプレートは、少数の高品質なインストラクションがあり、トレーニングデータを大規模にスケールアップしたいシナリオ向けに設計されています。少数のシードインストラクションから開始し、テンプレートはそれらを同じスタイルのより多くのインストラクションに拡張し、各インストラクションを実際のユーザーのクエリにより一致するよう洗練し、教師モデルで応答を生成します。その後、情報量、有用性、汎化、正確性という 4 つの次元で結果をスコアリングとフィルタリングを行い、ファインチューニングの準備が整った SFT データセットを生成します。
このテンプレートは、オプションの 2 段階のワークフローをサポートしています。ステージ 1 は 蒸留データ生成、ステージ 2 は 生徒モデルのトレーニング (オプション) です。データ生成のみを実行することも、両方のステージを順次実行することもできます。
インストラクション蒸留パイプラインは、以下のステップで構成されます。
-
インストラクション拡張:シードインストラクションを例として、同じシナリオとスタイルの新しいインストラクションを生成し、データ量を増やします。
入力例: {"instruction": "Create a two-day travel itinerary for Hangzhou."} 出力例: {"instruction": "Create a three-day travel itinerary for Beijing."} {"instruction": "I want to visit Shanghai. Recommend a travel itinerary."} -
インストラクションの洗練:各インストラクションを書き換えてあいまいさや冗長性をなくし、実際のユーザーが用いる表現に近づけます。
入力例: {"instruction": "Create a two-day travel itinerary for Hangzhou."} 出力例: {"instruction": "Please create a two-day Hangzhou travel plan covering itinerary, food recommendations, accommodation, and best times to visit."} -
教師モデルによる生成:教師モデルを呼び出して各インストラクションへの応答を生成します。これは、生徒モデルが学習する際のターゲット出力となります。
-
品質スコアリング:各 Q&A ペアを、情報量、有用性、汎化、正確性という 4 つの次元でスコアリングし、フィルタリングの基準とします。
-
品質フィルタリング:次元ごとのスコアしきい値に基づいて低品質なサンプルを除外し、スコアが最も高い部分を保持します。
-
SFT データセットの構築:空または長すぎるサンプルを削除し、標準化された SFT トレーニングデータセットを出力します。
操作手順
-
PAI コンソールにログインします。左側メニューで、モデルアプリケーション > モデル蒸留 (ModelDistill) を選択します。
-
タスクの作成 をクリックして 知識蒸留テンプレート タブに移動するか、直接 知識蒸留テンプレート タブに移動します。
-
[Instruction Distillation] を選択し、テンプレートの使用 をクリックして、知識蒸留ジョブの作成 ページに移動します。以下の主要なパラメーターを設定し、その他の設定はデフォルト値のままにします。
-
基本設定 を設定します。
-
タスク名:システムによって事前入力されます。
-
出力パス:アクセス権のある OSS パス (例:
oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/instruct-distill/) を指定します。説明ファイルが上書きされないように、各蒸留タスクには個別の出力ディレクトリを作成してください。OSS バケットは、PAI サービスと同じリージョンにある必要があります。
-
-
次へ をクリックして、蒸留データ構築 ステップに進みます。
-
[教師モデル]:教師モデルのソース で 教師モデルのソース を選択し、ドロップダウンリストからモデル (例:
qwen2.5-max) を選択します。 -
[データセット]:アクセス権のある OSS ディレクトリまたはファイルを選択します。サンプルデータセットを直接ダウンロードして使用できます。
-
[知識蒸留の設定]:デフォルト値が提供されています。必要に応じて変更してください。
-
dataset.input_path:データセットに特定のファイルを選択した場合、ここで設定されたファイル名は無視されます。
-
pipeline:インストラクション拡張ステージ (
stage: instruction_expansion) で、num_output_sampleは生成される蒸留データ項目の総数を決定します。必要に応じてこの値を調整してください。 -
インストラクション蒸留テンプレートに固有のその他のパラメーター (各ステージの temperature、max_workers、スコアリングしきい値など) については、後述の「設定リファレンス」をご参照ください。
-
-
[計算リソース設定]:リソースタイプ を 汎用コンピューティングリソース に、リソースのソース を パブリックリソース に設定します。次に、タスクリソース で適切な リソース仕様 (例:
ecs.c6.large) を選択します。
-
-
次のステップ:学生モデルのトレーニング をクリックして設定を続行します (または 蒸留データ構築のみ実行 を選択することもできます)。
-
[学生モデル]:パブリックモデル を選択し、ドロップダウンリストからより小さいモデル (例:
Qwen1.5-7B) を選択します。 -
[トレーニング方法]:トレーニング方法 を選択します。
-
[計算リソース]:リソースタイプ を 汎用コンピューティングリソース に、リソースのソース を パブリックリソース に設定します。次に、タスクリソース で適切な リソース仕様 を選択します。
-
-
作成 をクリックし、料金請求のプロンプトで OK をクリックします。タスク詳細ページにリダイレクトされ、タスクのステータスを追跡できます。
設定リファレンス
このセクションでは、インストラクション蒸留テンプレートに固有の主要な設定パラメーターについて説明します。基本設定とリソース設定は、一般的な蒸留タスクと同じです。ここでは、テンプレートに固有のパラメーターの違いのみを記載します。
基本設定
基本設定には、タスク名と出力パスが含まれます。出力パスは、すべてのタスクアーティファクトのルートディレクトリです。蒸留データセットもこのディレクトリに書き込まれるため、個別のデータセット出力パスは不要です。
蒸留データ生成
教師モデル
インストラクション蒸留テンプレートでは、各インストラクションへの応答を生成する教師モデルが 1 つだけ必要です。教師モデルのソースは、PAI Token Service のみをサポートしています。
データセット
入力ディレクトリまたはファイルを選択します。データ形式の要件は次のとおりです。
-
フォーマット:JSONL、1 行につき 1 つのシードインストラクション。
-
各レコードには
instructionフィールドを含める必要があります。 -
数十個のシードインストラクションがあれば開始できます。テンプレートが自動的にデータ量を拡張します。
サンプルデータ:
{"instruction": "Explain what machine learning is."}
{"instruction": "How to prevent the common cold?"}
蒸留設定
蒸留設定は、アルゴリズムチームが推奨するデフォルト値を含む YAML 形式で提供されます。必要に応じてパラメーターを調整してください。次の表に、主要なパラメーターとその説明を示します。
|
セクション |
説明 |
|
dataset |
|
|
backend |
|
|
generation |
|
|
sft |
|
|
eval |
|
|
pipeline |
|