11 ONNX形式での事前トレーニング済モデルのインポート
Oracle AI Database 26aiには、データベース内で埋込みモデルを直接実行するためのONNX Runtimeエンジンが含まれています。この項では、既存の事前トレーニング済埋込みモデルをOracle AI Databaseにインポートするプロセスについて説明します。これには、モデルがまだ変換されていない場合のONNX形式への変換も含まれます。
Open Neural Network Exchange (ONNX)は、機械学習モデルのオープン・スタンダードな形式です。次のユースケースについて考えます。
- 類似検索でのテキストやイメージなどの複雑なメディア入力の使用
- テキスト分類の実行
- 再ランク付けの実行
前述のすべてのタスクを実行するには、メディア入力のベクトル埋込みが必要です。ONNXパイプライン・モデルでは、テキスト・モデルまたはイメージ・モデル(あるいはその両方)がONNX形式でない場合はONNX形式に変換し、ONNX形式モデルをOracle AI Databaseにインポートして、データベース内のデータから埋込みを生成できます。データベースにインポートされたONNX形式モデルは、検索や分類などのタスクに使用できます。
事前トレーニング済モデルは、メディア・データ(テキスト、イメージなど)ですでにトレーニングされ、将来使用するためにストレージ形式に保存されたモデルです。Hugging Faceは、通常PyTorchで作成される事前トレーニング済モデルをホストする最も一般的なプラットフォームです。
この表は、機械学習モデルと、それぞれの簡単な説明、モデル・サイズおよびPARダウンロード・リンクを示しています。
| モデル名 | 説明 | 次元 | サイズ(MB) | 最終更新日 | ダウンロード |
|---|---|---|---|---|---|
| all_MiniLM_L12_v2 | これは、セマンティック類似性検索およびクラスタリングのユースケースに適したSentenceTransformersモデルです。 | 384 | 116.92 | 7/15/2024 | リンク |
| multilingual_e5_base | これは、100言語に対応した多言語文トランスフォーマ・モデルです。テキスト埋込み、翻訳および多言語理解をサポートします。多言語タスク用に768次元の埋込みを備えた12層を特徴とします。 | 768 | 1040 | 2/17/2024 | リンク |
| multilingual_e5_small | これは、100言語に対応した多言語文トランスフォーマ・モデルです。テキスト埋込み、翻訳または多言語理解をサポートします。効率性のために最適化され、複数の言語を処理しながらも、より小さいサイズを保つことで、推論の速度を高め、計算要件を削減できます。 | 384 | 76.8 | 9/9/2024 | リンク |
| clip_vit_base_patch32_txt | これは、CLIPイメージ・エンコーダと互換性のある埋込みを生成するテキスト・エンコーダです。テキスト説明とイメージ間でのtext-to-image検索および類似性照合が可能になります。 | 512 | 243.57 | 1/29/2021 | リンク |
| clip_vit_base_patch32_img | これは、CLIPテキスト・エンコーダと互換性のある埋込みを生成するイメージ・エンコーダです。イメージとテキスト説明間でのimage-to-text検索および類似性照合が可能になります。 | 512 | 335.38 | 1/29/2021 | リンク |
Pythonパッケージ
oml.utilsには、ONNXPipeline、ONNXPipelineConfigおよびMiningFunctionの3つのクラスが含まれています。このパッケージでは、ONNXパイプラインの生成およびエクスポートを処理し、必要な前処理および後処理ステップも含まれています。
- ONNXPipeline: 事前トレーニング済モデルをインポートできます(独自の事前トレーニング済モデルまたはHugging Faceのサポートされているいずれかのモデル)
- ONNXPipelineConfig: 事前トレーニング済モデルの属性を構成できます(独自の事前トレーニング済モデルまたはHugging Faceのサポートされているいずれかのモデル)。
- MiningFunction: 次のマイニング・オプションのいずれかを選択できます:
EMBEDDING: テキストおよびイメージの埋込みに対応しますCLASSIFICATION: テキスト分類に対応しますREGRESSION: 再ランク付けに対応します
警告:
EmbeddingModelおよびEmbeddingModelConfigは非推奨です。かわりに、ONNXPipelineおよびONNXPipelineConfigをそれぞれ使用してください。非推奨クラスの詳細は、「事前トレーニング済モデルをONNXモデルに変換するPythonクラス(非推奨)」を参照してください。非推奨のクラスを使用した場合は、警告メッセージが表示されて、そのクラスが将来削除されることが示され、新しいクラスに切り替えるようにユーザーに通知されます。ONNXパイプライン・モデルは、テキスト埋込み、イメージ埋込み、マルチモーダル埋込み、テキスト分類および再ランク付けに使用できます。
- ONNXモデルへの事前トレーニング済モデルの変換: テキスト埋込みのエンドツーエンドの手順
この項では、OML4Pyクライアントのインストールから、Oracleが提供するPythonユーティリティ・パッケージを使用したONNX形式での事前トレーニング済埋込みモデルのダウンロードまでのエンドツーエンドの手順について説明します。 - 事前トレーニング済モデルをONNXモデルに変換するPythonクラス
- ONNXパイプライン・モデル: テキスト埋込み
ONNXパイプライン・モデルでは、テキストを入力として受け入れ、埋込みを出力として生成するテキスト埋込みモデルが提供されます。パイプライン・モデルでは、テキストに必要な前処理および後処理も提供されます。 - ONNXパイプライン・モデル: イメージ埋込み
ONNXパイプライン・モデルでは、イメージを入力として受け入れ、埋込みを出力として生成するイメージ埋込みモデルが提供されます。パイプライン・モデルには、必要な前処理も用意されています。 - ONNXパイプライン・モデル: CLIPマルチモーダル埋込み
ONNXパイプライン・モデルでは、イメージとテキストの両方を入力として受け入れ、埋込みを出力として生成するマルチモーダル埋込みモデルが提供されます。パイプライン・モデルには、必要な前処理も用意されています。 - ONNXパイプライン・モデル: テキスト分類
ONNXパイプライン・モデルでは、テキスト文字列を入力として受け入れ、特定のラベルに属する入力文字列の確率を生成するテキスト分類モデルが提供されます。パイプライン・モデルでは、必要な前処理および後処理も提供されます。 - ONNXパイプライン・モデル: パイプラインの再ランク付け
ONNXパイプライン・モデルでは、特定のテキスト・ペアの類似度スコアを計算する再ランク付けパイプラインが提供されます。 - ローカル・ファイルシステムからのカスタム・モデルのロード
事前トレーニング済Hugging Faceモデルから微調整され、ローカル・ファイルシステム上に存在するカスタム・モデルは、新しいlocal_model_path設定を使用してONNX形式に変換できます。この設定は、ネットワークを使用できず、事前トレーニング済モデルが以前にダウンロードされている場合にも役立ちます。 - 大規模なONNX形式モデルのサポート
OML4Pyでは、データベース外の大規模なONNX形式モデルがサポートされています。大規模なモデルは、単一のONNXファイルと1つ以上の外部データ・ファイルに分割されます。ONNXファイルの最大サイズ制限は2 GBであるため、2 GBより大きいモデルの場合、ONNXファイルをより小さく分割する必要があります。 - モデル・サマリー
モデル・サマリーは、モデルの簡潔な概要を示します。モデルのエクスポート後にサマリーを取得するには、summary()関数をコールします。