ファインチューニング・モデルのインポート

インポート用にOCI生成AIの外部で微調整したモデルを準備し、専用AIクラスタでホストします。

互換性のあるベース・モデルをサービス外で微調整し、オブジェクト・ストレージ・バケットまたはHugging Faceから結果モデルをインポートできます。インポートには、そのベース・モデルの互換性要件を満たす完全なモデル・アーティファクトが必要です。

OCI Generative AIでは、インポートされたモデルは微調整されません。サービス内でサポートされている事前トレーニング済モデルのトレーニングについては、生成AIでのベース・モデルのファインチューニングを参照してください。

ファインチューニング前の互換性の確認

「インポートの互換性のあるモデル」にリストされているモデルから開始します。要件および互換性のあるホスティングハードウェアについては、モデルファミリのページを確認してください。ベース・モデルの構成のコピーを保持し、モデルID、リポジトリ・リビジョン、トレーニングおよびエクスポート・ライブラリのバージョンを記録します。

  • サポートされているベース・モデルと互換性のあるアーキテクチャを保持します。標準のLoRAは、元の重みマトリックスにマージされると、そのディメンションを保持します。レイヤーの追加や語彙のサイズ変更など、その他の変更には、個別の互換性チェックが必要です。
  • ベース・モデルのTransformersバージョン要件を満たします。構成メタデータの理解を参照してください。
  • モデルファミリガイダンスで指定されているように、合計パラメータ数は元のベースモデルの±10%以内に維持してください。これは、トレーニング可能なLoRAパラメータの数だけでなく、モデル・パラメータの合計数です。
  • LoRAファインチューニングの場合は、デプロイメント前に1つのアダプタをベース・モデルにマージします。インポートされた各ファインチューニング・モデルには、1つのLoRAアダプタのマージされた重みのみを含めることができます。

トレーニング環境で正常にロードされたモデルは、インポート検証に合格する必要があります。最終的にエクスポートされたファイル(構成、重みデータ型、トークナイザなど)を確認します。

構成メタデータの理解

Hugging Face Transformersは、多くのHugging Faceモデルのロードと保存に使用されるライブラリです。config.jsonのtransformers_versionフィールドには、構成のシリアライズ時に使用されるライブラリ・バージョンが記録されます。別のライブラリ・バージョンで保存すると、モデル・アーキテクチャが変更されていない場合でもこのフィールドを変更できます。

モデル・ファミリ・ページでは、ファインチューニングされたモデルで、サポートされているベース・モデルと同じTransformersバージョンを使用する必要があります。インポートする前に記録されたバージョンを比較します。異なる場合は、別のバージョンからのエクスポートに依存する前に、エクスポート環境を確認し、Oracle Supportとの互換性を確認してください。

インポート前の構成チェック
フィールドまたは設定 確認項目
architecturesおよびmodel_type 目的のモデルクラスとファミリを特定し、エクスポートされたウェイトに同意します。
transformers_version 基本構成と比較します。このライブラリ・メタデータは、アーキテクチャと、コンソールでインポートされたモデルに割り当てるバージョン・ラベルとは別になっています。
torch_dtypeまたはdtype 輸出業者によって宣言された精度と、格納されている実際のテンソル・データ型を確認します。JSON値を編集しても、重みは変換されません。
レイヤー数、非表示サイズ、注意設定、語彙サイズ 保存されたテンソルとトークナイザが構成に記述されていることを確認します。元の重みマトリックスのみを更新するLoRAエクスポートでは、アーキテクチャ設定は変更されません。
quantization_config (存在する場合) 実際のエクスポートが記述され、結果のモデル・バリアントに互換性があることを確認します。量子化メタデータを削除しても、量子化チェックポイントは変換されません。
重要

構成をモデルと一致させてください。バージョン文字列を変更して検証に合格したり、エクスポートされた重みおよびトークン化子に対してチェックせずに構成全体を置換したりしないでください。

LoRAの重みのマージおよびエクスポート精度のチェック

LoRAアダプタ・チェックポイントには、アダプタのパラメータが含まれ、ベース・モデルによって異なります。adapter_model.safetensorsやadapter_config.jsonなどのファイルは、このインポート・ワークフローの完全なモデルではありません。

  1. トレーニングに使用したベース・モデル・リビジョンと目的のアダプタをロードします。
  2. アダプタをベース・モデルにマージします。Hugging Face PEFTにより、サポート対象のLoRA構成に対してmerge_and_unload()を使用します。Merge the weightsを参照してください。
  3. 保存する前に、マージされたモデルのデータ型を確認してください。ベース・モデルの検証済精度を開始点として使用します。トレーニングまたはマージでは、別のデータ型で重みを生成できます。
  4. モデルとそのトークナイザ全体を新しいエクスポート・ディレクトリに保存します。エクスポートを繰り返すことができるように、元のベース・モデルとアダプタを保持します。
  5. 保存された構成およびテンソル・データ型を検査してから、エクスポートを再ロードし、代表プロンプトを実行します。元のストアド・データ型を非表示にできるロード時変換の前に、保存されたテンソル・メタデータをチェックします。

たとえば、Qwen/Qwen3-1.7Bベース構成は、torch_dtypeをbfloat16 (BF16)と宣言します。マージされたエクスポートにfloat32 (FP32)の重みが含まれている場合は、実際の浮動小数点テンソルをBF16に変換し、このベース・モデルの新しいエクスポートを保存します。torch_dtypeのみを変更すると、格納された重みは変更されません。

この例のBF16は、選択したQwenモデルに固有です。別のモデルの精度を選択する前に、ベース・モデルとその要件を確認してください。量子化トレーニングチェックポイントには適切なエクスポート手順も必要であり、すべてのPEFTまたは量子化構成がマージをサポートしているわけではありません。

モデル・アーティファクト・ディレクトリの準備

Hugging Face形式で1つの完全なエクスポートをパッケージ化します。インポート中に選択したディレクトリには、config.jsonおよびモデルのロードに必要なファイルが含まれている必要があります。モデルに応じて、次のものがあります。

  • model.safetensorsなどのモデル全体の重み、またはすべての重みシャードとその索引(model.safetensors.index.jsonなど)。
  • トークナイザ・ファイル、トークナイザ構成、特殊トークン定義およびモデルに使用されるチャット・テンプレート(該当する場合)。
  • 生成構成およびモデルに必要なプロセッサ・ファイル。

索引によって参照されるすべてのシャードが存在することを確認します。エクスポートされたモデルに一致するトークナイザおよびチャット・テンプレートを使用します。チャット・モデルの場合は、Hugging Faceチャット・テンプレートのガイダンスを確認してください。

オブジェクト・ストレージ・インポートの場合は、完全なエクスポートを独自のモデル・アーティファクト・ディレクトリにアップロードします。Hugging Faceインポートの場合は、モデル・リポジトリで完全なエクスポートを使用可能にします。異なる実行の構成ファイルと重みファイルが混在しないように、異なるエクスポートを別々のディレクトリに保持します。

ファインチューニング・モデルのインポートおよびホスト

  1. 「インポートされたモデルの管理」のソース前提条件および必要なインポートされたモデル権限を確認します。
  2. オブジェクト・ストレージ・バケットからまたはHugging Faceから、準備済エクスポートをインポートします。
  3. インポートされたモデルのステータスを確認し、デプロイする前にインポートの失敗を解決します。
  4. インポートされたモデルのホスティング専用AIクラスタを作成します。ターゲット・リージョンで使用可能な互換性のあるハードウェア・ユニット・シェイプを選択します。Hardware Unit Shapes by Regionを参照してください。
  5. エンドポイントを作成してから、本番で使用する前に代表的なリクエストでモデルをテストします。

インポートされたモデルのOCIDとともに、エクスポート改訂および評価結果を記録します。ファインチューニングされたエクスポートを区別するには、わかりやすい名前とバージョンを使用します。

アーキテクチャ検証エラーのトラブルシューティング

モデル作成が次のメッセージで失敗した場合は、完全なエクスポートを確認してください。

The imported model architecture is not yet validated for serving.

メッセージでは、注意が必要な構成またはアーティファクトの差異が識別されません。変更されていないarchitectures値のみでは、エクスポートがすべてのインポート要件を満たしていることは確認されません。

  1. 元のベース・モデルが互換性としてリストされ、選択したアーティファクト・ディレクトリに意図したエクスポートが含まれていることを確認します。
  2. Compare the original and exported config.json files using the checks in Understand Configuration Metadata. 保存またはマージ中に発生した違いを識別します。
  3. 格納されている実際のテンソル・データ型を調べます。BF16ベース・モデルの場合は、エクスポートに意図せずFP32の重みが含まれているかどうかを確認します。
  4. エクスポートに、マージされたベース・モデルの重み、すべての参照シャードおよび一致するトークナイザが含まれていることを確認します。完全なエクスポートをローカルにリロードしてテストします。
  5. エクスポートを修正したら、別のアーティファクト・ディレクトリにアップロードし、新しいインポートを発行します。それでも検証に失敗する場合は、Oracle Supportに連絡してください。

正確なエラー、OPCリクエストID、失敗時間とタイムゾーン、リージョン、インポートされたモデルOCID (使用可能な場合)、ベース・モデルIDとリビジョン、構成の違い、監視されたテンソル・データ型、トレーニング、マージおよびエクスポートのライブラリ・バージョンを含めます。この情報は、アーティファクトの問題とサービス検証の問題を区別するのに役立ちます。

研修データの計画と評価

外部ファインチューニングについては、選択したモデルおよびツールのデータセット形式およびトレーニング要件に従ってください。生成AI内でカスタム・モデルを作成するためのデータセット要件は、その個別のワークフローを記述します。

  • モデルで処理する必要があるタスク、言語およびレスポンス形式に、正確で代表的な例を使用します。ラベルを確認し、重複または競合する例を削除します。
  • トレーニング、検証およびテスト・データを別々に保持します。データの分割時に関連する例をまとめて保持し、情報漏洩を減らします。
  • ベース・モデルとファインチューニング・モデルを同じホールドアウト例で比較します。タスクの品質を測定し、一般的なレスポンスの低下をチェックします。
  • マージ、データ型変換およびエンドポイント・デプロイメント後に代表的なチェックを繰り返します。インポートに成功すると、インポートが完了したことが確認され、目的のユース・ケースに対するモデルのレスポンスが評価されます。

OCIでトレーニングする場合は、サポートされているモデルと前提条件について、OCI Data Science AI Quick Actionsによるファインチューニングを参照してください。別のサービスでトレーニングされたモデルは、生成AIのインポート要件を満たしている必要があります。