PAI のモデル蒸留 (ModelDistill) は、教師モデルから生徒モデルへの知識転移により、大規模モデルを小規模でコスト効率の高いモデルに圧縮します。汎用テンプレートと、推論、コーディング、マルチモーダル生成などのタスクに特化したシナリオベースのテンプレートを提供します。
モデル蒸留とは
モデル蒸留とは、大規模モデル (教師モデル) から小規模モデル (生徒モデル) へ知識を転移させるモデル圧縮手法です。生徒モデルは、パラメータ数を大幅に削減しながら、教師モデルのパフォーマンスの大部分を保持することで、推論コストを削減し、応答時間を改善します。PAI ModelDistill は、オープンソースの PAI-EasyDistill フレームワークをベースに構築されており、コーディング不要でワンクリックの蒸留が可能です。
仕組み
ModelDistill は ブラックボックス蒸留 を使用します。これは 生成的データ拡張 の一形態であり、教師モデルが高品質なラベル付きデータを生成し、そのデータを使用して教師ありファインチューニング (SFT) により生徒モデルをファインチューニングします。
ワークフローは 2 つのステージで構成されます。
-
蒸留データ生成: ソースデータセットを選択し、データ合成 (指示の拡張や洗練など) を通じて拡張し、教師モデルを使用して高品質な蒸留データを生成します。教師モデルは、PAI Token Service または PAI-EAS から取得できます。
-
生徒モデルのトレーニング: 蒸留データセットを使用して、SFT により生徒モデルをトレーニングします。LoRA、QLoRA、全パラメータファインチューニングの 3 つのトレーニング方法をサポートしています。
ユースケース
モデル蒸留を使用すべき場合
-
エッジデプロイ: モバイルデバイスや IoT などのリソース制約のある環境向けに、大規模モデルを軽量モデルに圧縮します。
-
コスト削減: 本番環境での推論コストが高すぎる場合、高価な推論モデルを小規模な蒸留モデルに置き換えます。
-
レイテンシーの最適化: レイテンシーに敏感なアプリケーションでは、精度を維持しながら推論レイテンシーと GPU 消費量を削減します。
-
ドメイン知識の転移: 大規模モデルから小規模でコスト効率の高いモデルへ、ドメイン固有の知識 (医療や法律の専門知識など) を転移させ、特定のタスクに対応します。
モデル蒸留が適さない場合
-
100% のパフォーマンス忠実度が必要な場合: 蒸留には常にある程度のパフォーマンス低下が伴います。わずかな劣化も許容できない場合、蒸留は適切なアプローチではありません。
-
非常に単純なタスクの場合: 分類やテキストマッチングのような単純なタスクでは、蒸留よりも小規模モデルを直接ファインチューニングする方がコスト効率が高い場合があります。
-
高品質なシードデータがない場合: 蒸留の品質はシードデータに大きく依存します。シードデータが実際のビジネスシナリオを適切に表していない場合、結果が不十分になる可能性があります。
蒸留テンプレート
蒸留テンプレートは、デフォルトのアルゴリズム設定 (YAML 形式) を含む標準化されたパイプラインをパッケージ化したものです。テンプレートを選択すると、パイプラインのステップとパラメータが事前設定されるため、タスクを送信する前に基本設定を入力するだけで済みます。
テンプレートの種類
ModelDistill は、汎用 と シナリオベース の 2 種類のテンプレートを用意しています。
-
汎用蒸留テンプレート: 標準的な 3 ステップのパイプライン (基本設定 → 蒸留データ生成 → 生徒モデルのトレーニング) に従い、すべてのパラメータを柔軟に設定できます。詳細については、「汎用蒸留」をご参照ください。
-
シナリオベース蒸留テンプレート: Chain-of-Thought 推論、マルチモーダルタスク、Agent ツール呼び出しなどの特定のシナリオに最適化された、事前設定済みのパイプラインとアルゴリズムパラメータです。シナリオを選択してベストプラクティス設定を再利用し、SFT / DPO / マルチモーダルトレーニングデータを迅速に生成できます。
説明一部のテンプレートは蒸留データ生成のみをサポートしています。その他のテンプレートはデータ生成と生徒モデルのトレーニングの両方をサポートしていますが、トレーニングはオプションのステップです。データ生成のみを実行することも可能です。
テンプレート
ユースケース
説明
指示蒸留
指示追従能力
教師モデルの指示追従能力を生徒モデルに転移させます。詳細については、「指示蒸留」をご参照ください。
Chain-of-Thought推論蒸留
CoT推論能力
教師モデルのChain-of-Thought推論能力を生徒モデルに転移させます。詳細については、「Chain-of-Thought推論蒸留」をご参照ください。
Agentツール呼び出し蒸留
ツール/関数呼び出し
教師モデルのツールおよび関数呼び出し能力を生徒モデルに転移させます。詳細については、「Agentツール呼び出し蒸留」をご参照ください。
テキストから動画への蒸留
テキストから動画への生成
教師モデルのテキストから動画への生成能力を生徒モデルに転移させます。詳細については、「テキストから動画への蒸留」をご参照ください。
コーディングAgent蒸留
コードAgent能力
コーディングAgentは、リモートサンドボックス内でコードを修正し、テスト検証を再実行して高品質なSFTデータセットを生成します。生徒モデルは、実際のコードベースで問題を特定し、コードを修正し、結果を検証する方法を学習します。詳細については、「コーディングAgent蒸留」をご参照ください。
テンプレートの選択
まず、シナリオ固有のテンプレートがユースケースに適合するかを評価してください。適合する場合は、そのテンプレートを使用してください。適合するものがない場合は、汎用テンプレートを使用してカスタム設定を行ってください。
タスク管理
タスクリスト タブで、すべての蒸留タスクのステータスと進捗を表示できます:
-
[タスクステージ]: 各タスクの現在のステージ (蒸留データ生成、データ確認、または生徒モデルのトレーニング) を表示します。
-
蒸留成果物: 蒸留後、蒸留データセットと生徒モデルの両方が OSS パスに保存されます。タスク詳細ページからモデルパスを取得し、オンライン推論サービスとしてデプロイできます。
-
評価: デプロイ後、モデル評価機能を使用して、同じ評価データセット上で教師モデルと生徒モデルのパフォーマンスを比較し、蒸留結果を定量化できます。本番環境に移行する前に、少量のトラフィックでカナリアテストを実行し、生徒モデルが本番トラフィックで期待どおりに動作することを確認してください。
課金
蒸留タスクは DLC トレーニングジョブとして実行され、従量課金またはサブスクリプション方式で課金されます。データ生成ステージ (CPU リソース) と生徒モデルのトレーニングステージ (GPU リソース) の両方でコンピューティング料金が発生します。詳細については、「DLCの課金」をご参照ください。
蒸留には、以下のコストも発生します。
-
教師モデルのコスト: PAI Token Service を使用する場合、消費されたトークンごとに課金されます。詳細については、「PAI Token Serviceの料金」をご参照ください。PAI-EAS を使用する場合、EAS リソース料金が適用されます。詳細については、「Elastic Algorithm Service (EAS) の課金」をご参照ください。
-
OSS ストレージコスト: 蒸留データ (データセット、中間成果物、トレーニング出力) は OSS に保存され、OSS の料金体系に従って課金されます。
よくある質問
教師モデルと生徒モデルはどのように選択すればよいですか?
-
教師モデル: ビジネスシナリオで既に検証されており、優れたパフォーマンスを発揮する大規模モデルを選択してください。一般的に、モデルが大きいほど知識が豊富で、蒸留品質の上限も高くなります。
-
生徒モデル: 教師モデルと同じモデルファミリーの小規模モデルを選択してください。例えば、
Qwen-30BからQwen-8Bへ蒸留します。これにより、アーキテクチャの互換性が確保され、知識転移の効率が最大化されます。
蒸留タスクはどのくらいの時間がかかりますか?
所要時間は、データセットのサイズ、モデルの規模、トレーニング方法、コンピューティングリソースによって異なります。小規模データセット (数千エントリ) と中規模モデル (7B 〜 14B) の場合、通常、数十分から数時間で完了します。
タイムアウトにより中断されたタスクを再開できますか?
いいえ。タスクが 「最大実行時間」 に達して中断された場合、タスクは失敗し、再開できません。タスクログを確認して、問題がリソース不足 (実行速度の低下) によるものか、タイムアウト設定が短すぎることによるものかを判断してください。その後、最大実行時間を延長するか、より高スペックのリソースを使用してタスクを再送信してください。
"CUDA out of memory" でタスクが失敗しました。どうすればよいですか?
これは GPU メモリ不足エラーです。以下の手順で解決してください。
-
バッチサイズを小さくします: 生徒モデルトレーニング の設定で、ハイパーパラメーター を探し、
per_device_train_batch_sizeの値を半分 (例: 2 から 1) に減らしてから、再試行します。 -
トレーニング方法の切り替え:バッチサイズを減らしても解決しない場合は、設定ページに戻り、トレーニング方法を
LoRAまたは全パラメータファインチューニングからQLoRAに切り替えます。QLoRA は GPU メモリ使用量を大幅に削減します。 -
GPU スペックのアップグレード: 上記のいずれの方法でもうまくいかない場合は、モデルとデータの規模に対してより多くのハードウェアが必要です。計算リソース で、より多くの GPU メモリを搭載した GPU インスタンスを選択します。