A 事前トレーニング済モデルをONNXモデルに変換するPythonクラス(非推奨)
このトピックでは、非推奨のpythonクラスEmbeddingModelConfig
およびEmbeddingModel
の関数、属性および使用例について説明します。
EmbeddingModel、EmbeddingModelConfigを使用した事前トレーニング済テキスト・モデルのONNX形式への変換の例
ノート:
このAPIは23.7で更新されています。23.6以下のバージョンでは、PythonパッケージEmbeddingModelおよびEmbeddingModelConfigが使用されています。これらのパッケージは、それぞれONNXPipelineおよびONNXPipelineConfigに置き換えられます。最新バージョンを使用することをお薦めします。非推奨のクラスを使用した場合は、警告メッセージが表示されて、そのクラスが将来削除されることが示され、新しいクラスに切り替えるようにユーザーに通知されます。更新されたPythonクラスの詳細は、「ONNX形式での事前トレーニング済モデルのインポート」を参照してください- OML4Pyクライアントでpythonクラスをロードします:
from oml.utils import EmbeddingModel, EmbeddingModelConfig
- 次を実行して、すべての事前構成済モデルのリストを取得できます。
EmbeddingModelConfig.show_preconfigured()
- 使用可能なテンプレートのリストを取得するには:
EmbeddingModelConfig.show_templates()
- 事前構成済モデル「sentence-transformers/all-MiniLM-L6-v2」からONNXファイルを生成します:
em = EmbeddingModel(model_name="sentence-transformers/all-MiniLM-L6-v2") em.export2file("your_preconfig_file_name",output_dir=".")
- データベースの事前構成済モデルsentence-transformers/all-MiniLM-L6-v2からONNXモデルを生成します。
em = EmbeddingModel(model_name="sentence-transformers/all-MiniLM-L6-v2") em.export2db("your_preconfig_model_name")
- 提供されているテキスト・テンプレートを使用してONNXファイルを生成します。
config = EmbeddingModelConfig.from_template("text",max_seq_length=512) em = EmbeddingModel(model_name="intfloat/e5-small-v2",config=config) em.export2file("your_template_file_name",output_dir=".")
EmbeddingModelConfigの関数と属性
EmbeddingModelConfig
クラスには、ONNXモデルのダウンロード、エクスポート、拡張、検証、格納を実行するためにパッケージに必要なプロパティが含まれています。このクラスでは、ドット演算子を使用して構成プロパティへのアクセスが提供されます。利便性のために、よく知られた構成がテンプレートとして提供されます。
パラメータ
この表は、EmbeddingModelConfig
クラスの関数およびプロパティについて説明しています。
関数 | パラメータの型 | 戻り値 | 説明 |
---|---|---|---|
from_template(name,**kwargs) |
|
EmbeddingModelConfig のインスタンス |
nameパラメータで指定された事前定義済テンプレートに基づいてEmbeddingModelConfig オブジェクトを作成する静的関数。名前付き引数を使用して、テンプレートのプロパティをオーバーライドできます。
|
show_templates() |
該当なし | 既存のテンプレートのリスト | 既存のテンプレートの名前のリストを返す静的関数。 |
show_preconfigured() |
|
事前構成されたモデル名またはプロパティのリスト。 | 事前構成されたモデル名またはプロパティのリストを表示します。デフォルトでは、この関数は名前のリストのみを返します。プロパティが必要な場合は、include_properties パラメータをTrue として渡します。返されるリストには、dictの各キーが事前構成済モデルの名前で、値がそのモデルのプロパティ・セットである単一のdictが含まれます。最後に、特定のモデルの1つのプロパティ・セットのみが必要な場合は、model_name パラメータでモデルの名前を渡します(include_properties パラメータもTrue である必要があります)。これにより、指定されたモデルのプロパティを含む単一のディクトのリストが返されます。
|
テンプレートのプロパティ
テキスト・テンプレートには、次に示す構成プロパティがあります。
"do_lower_case": true,
"post_processors":[{"name":"Pooling","type":"mean"},{"name":"Normalize"}]
ノート:
Propertiesテーブル内の他のすべてのプロパティには、デフォルト値が使用されます。EmbeddingModelConfig
インスタンスの作成時に、デフォルト値のないプロパティを指定する必要があります。
プロパティ
この表は、構成可能なすべてのプロパティを示しています。事前構成済モデルでは、これらのプロパティが特定の値に設定されています。EmbeddingModelConfig
でfrom_template
関数を使用するときにユーザーがオーバーライドしないかぎり、テンプレートはデフォルト値を使用します。
プロパティ | 説明 |
---|---|
|
モデルのロードまたは初期化後にロードされるpost_processorsの配列。既知およびサポートされているpost_processorsのリストは、この項の後半で説明します。テンプレートでは、サポートするモデルのタイプに対してpost_processorsのリストを定義できます。それ以外の場合は、空の配列がデフォルトになります。 |
|
このプロパティは、テキストベースのモデルにのみ適用されます。モデルへの入力の最大長(トークン数)。デフォルト値はありません。この値は事前構成されていないモデルに対して指定します。 |
|
トークン化時に入力を小文字にするかどうかを指定します。デフォルト値はTrue です。
|
|
モデルに対して量子化を実行します。これにより、モデルのサイズを大幅に縮小し、処理を高速化できます。ただし、埋込みベクトルの結果が(元のモデルに対して)異なる結果になり、精度が少し低下する可能性があります。デフォルト値は、False です。
|
distance_metrics |
モデルに適した距離メトリックの名前の配列。名前は、Oracleベクトル距離演算子に使用される距離メトリックの名前である必要があります。モデルをデータベースにエクスポートする場合にのみ使用されます。サポートされるリストは、["EUCLIDEAN ","COSINE ","MANHATTAN ","HAMMING ","DOT ","EUCLIDEAN_SQUARED ", "JACCARD "]です。デフォルト値は空の配列。
|
languages |
データベースでサポートされている言語(略称)の配列。モデルをデータベースにエクスポートする場合にのみ使用されます。サポートされている言語のリストは、「言語」を参照してください。デフォルト値は空の配列。 |
use_float16 |
エクスポートされたonnxモデルをfloat16に変換するかどうかを指定します。デフォルト値は、False です。
|
post_processorsのプロパティ
この表では、組込みのpost_processorsとその構成パラメータについて説明します。
post_processor | パラメータ | 説明 |
---|---|---|
|
|
プーリングpost_processorは、トランスフォーマ・モデルの出力を固定長ベクトルにまとめたものです。 |
|
|
post_processorを正規化すると、L2正規化を使用してベクトル値が範囲に制限されます。 |
|
|
受信データに変換を適用します。 |
例: post_processorsの構成
Max
プーリングpost_processorの後に正規化を指定してオーバーライドします。
config = EmbeddingModelConfig.from_template("text")
config.post_processors = [{"name":"Pooling","type":"max"},{"name":"Normalize"}]
EmbeddingModelの関数と属性
EmbeddingModel
クラスを使用して、最終モデルに埋め込まれたpost_processingステップを使用して、トランスフォーマ・モデルをONNX形式に変換します。
パラメータ
この表は、EmbeddingModel
クラスのシグネチャとプロパティについて説明しています。
関数 | パラメータ | 説明 |
---|---|---|
EmbeddingModel(model_name,configuration=None,settings={}) |
|
EmbeddingModel クラスの新しいインスタンスを作成します。
|
設定
設定オブジェクトは、EmbeddingModel
クラスに渡されるディクショナリです。ロギングなど、モデル固有の操作以外に使用されるEmbeddingModel
クラスのグローバル・プロパティを提供します。
プロパティ | デフォルト値 | 説明 |
---|---|---|
cache_dir |
$HOME/.cache/OML |
ダウンロードに使用するベースディレクトリ。モデル・ファイルは、リポジトリから cache_dir を基準としたディレクトリにダウンロードされます。 cache_dir が実行時に存在しない場合は、作成されます。
|
logging_level |
ERROR |
ロギングのレベル。有効な値は次のとおりです。[‘DEBUG’, ‘INFO’, ‘WARNING’, ‘ERROR’, ‘CRITICAL’] ノート:このログ・レベルは、すべてのpythonパッケージにもグローバルに適用され、ONNXRuntimeライブラリにもマップされます。 |
force_download |
False |
キャッシュから再ロードするのではなく、モデル・ファイルを強制的にダウンロードします。 |
ignore_checksum_error |
False |
事前構成済モデルの使用時にチェックサムでの不一致によって発生したエラーを無視します。 |
関数
この表は、EmbeddingModel
クラスの関数およびプロパティについて説明しています。
関数 | パラメータ | 説明 |
---|---|---|
export2file(export_name,output_dir=None) |
|
モデルをファイルにエクスポートします。 |
export2db(export_name) |
|
モデルをデータベースにエクスポートします。 |
例: 事前構成済モデル
次の例は、Pythonパッケージに付属する事前構成済の埋込みモデルを示しています。このモデルは、追加の構成なしで使用できます。
"sentence-transformers/distiluse-base-multilingual-cased-v2": {
"max_seq_length": 128,
"do_lower_case": false,
"post_processors":[{"name":"Pooling","type":"mean"},{"name":"Dense","in_features":768, "out_features":512, "bias":true, "activation_function":"Tanh"}],
"quantize_model":true,
"distance_metrics": ["COSINE"],
"languages": ["ar", "bg", "ca", "cs", "dk", "d", "us", "el", "et", "fa", "sf", "f", "frc", "gu", "iw", "hi", "hr", "hu", "hy", "in", "i", "ja", "ko", "lt",
"lv", "mk", "mr", "ms", "n", "nl", "pl", "pt", "ptb", "ro", "ru", "sk", "sl", "sq", "lsr", "s", "th", "tr", "uk", "ur", "vn", "zhs", "zht"]
}