11.2 事前トレーニング済モデルをONNXモデルに変換するPythonクラス

Python内のEmbeddingModelConfigクラスおよびEmbeddingModelクラスの関数と属性を確認します。これらのクラスは、事前トレーニング済埋込みモデルを構成するために設計されています。

EmbeddingModelConfig

EmbeddingModelConfigクラスには、ONNXモデルのダウンロード、エクスポート、拡張、検証および格納を実行するためにパッケージに必要なプロパティが含まれています。このクラスでは、ドット演算子を使用して構成プロパティへのアクセスが提供されます。利便性のために、よく知られた構成がテンプレートとして提供されます。

パラメータ

この表は、EmbeddingModelConfigクラスの関数およびプロパティについて説明しています。

関数 パラメータ・タイプ 戻り値 説明
from_template(name,**kwargs)
  • name (String): テンプレートの名前
  • **kwargs: オーバーライドまたは追加するテンプレートのプロパティ
EmbeddingModelConfigのインスタンス nameパラメータで指定された事前定義済テンプレートに基づいてEmbeddingModelConfigオブジェクトを作成する静的関数。名前付き引数を使用して、テンプレートのプロパティをオーバーライドできます。
show_templates() 該当なし 既存のテンプレートのリスト 既存のテンプレートの名前のリストを返す静的関数。
show_preconfigured()
  • include_properties (bool,optional): 結果にプロパティを含めるかどうかを示すフラグ。デフォルトはFalseであり、デフォルトでは名前のみが含まれます。

  • model_name (str,optional): プロパティを含める場合にフィルタするモデル名。include_propertiesFalseの場合、この引数は無視されます。それ以外の場合は、このモデルのプロパティのみが結果に含まれます。
事前構成済モデルの名前またはプロパティのリスト。 事前構成済モデルの名前またはプロパティのリストを示します。この関数では、デフォルトで、名前のリストのみが返されます。プロパティが必要な場合は、include_propertiesパラメータをTrueとして渡します。返されるリストには、単一のdictが含まれます。ここで、dictの各キーは事前構成済モデルの名前であり、値はそのモデルのプロパティ・セットです。また、特定のモデルの1つのプロパティ・セットのみが必要な場合は、model_nameパラメータでモデルの名前を渡します(include_propertiesパラメータがTrueである必要もあります)。これにより、指定されたモデルのプロパティを含む単一dictのリストが返されます。

テンプレートのプロパティ

テキスト・テンプレートには、次に示す構成プロパティがあります:

"do_lower_case": true,
"post_processors":[{"name":"Pooling","type":"mean"},{"name":"Normalize"}]

ノート:

「プロパティ」表内の他のすべてのプロパティは、デフォルト値をとります。EmbeddingModelConfigインスタンスの作成時は、デフォルト値のないプロパティを指定する必要があります。

プロパティ

この表では、構成可能なすべてのプロパティを示します。事前構成済モデルでは、これらのプロパティが特定の値に設定されています。テンプレートでは、EmbeddingModelConfigfrom_template関数を使用するときにユーザーがオーバーライドしないかぎり、デフォルト値が使用されます。

プロパティ 説明

post_processors

モデルのロード後または初期化後にロードされるポストプロセッサの配列。既知のポストプロセッサおよびサポートされているポストプロセッサのリストは、この項で後で示します。テンプレートにより、それでサポートしているモデルのタイプに対してポストプロセッサのリストを定義できます。それ以外の場合は、空の配列がデフォルトになります。

max_seq_length

このプロパティは、テキストベースのモデルにのみ適用されます。モデルへの入力の最大長(トークン数)。デフォルト値はありません。この値は事前構成されていないモデルに対して指定します。

do_lower_case

トークン化時に入力を小文字にするかどうかを指定します。デフォルト値はTrueです。

quantize_model

モデルに対して量子化を実行します。これにより、モデルのサイズを大幅に縮小し、処理を高速化できます。ただし、埋込みベクトルの結果が(元のモデルに対して)異なる結果になり、精度が少し低下する可能性があります。デフォルト値は、Falseです。
distance_metrics モデルに適した距離メトリックの名前の配列。この名前は、Oracleベクトル距離演算子に使用される距離メトリックの名前である必要があります。モデルをデータベースにエクスポートする場合のみ使用されます。サポートされているリストは、["EUCLIDEAN","COSINE","MANHATTAN","HAMMING","DOT","EUCLIDEAN_SQUARED"]です。デフォルト値は空の配列。
languages データベースでサポートされている言語(略称)の配列。モデルをデータベースにエクスポートする場合のみ使用されます。サポートされている言語のリストは、言語を参照してください。デフォルト値は空の配列。
use_float16 エクスポートされたonnxモデルをfloat16に変換するかどうかを指定します。デフォルト値は、Falseです。

post_processorsのプロパティ

この表は、組込みpost_processorsとその構成パラメータについて説明しています。

post_processor パラメータ 説明

Pooling

  • name: Pooling

  • type: 有効な値はmean(デフォルト)、maxclsです

post_processorがPoolingの場合、トランスフォーマ・モデルの出力が固定長のベクトルに要約されます。

Normalize

  • name: Normalizeを指定します

post_processorがNormalizeの場合、L2正規化を使用してベクトル値が範囲にバインドされます。

Dense

  • name: Dense
  • in_features: 入力特徴サイズ
  • out_features: 出力特徴サイズ
  • bias: 加算バイアスを学習するかどうか。デフォルト値はTrueです。
  • activation_function: 全結合層の活性化関数。現在、活性化関数としてTanhのみがサポートされています。

受信データに変換を適用します。

例: post_processorsの構成

この例では、sentence-transformersテンプレート内のpost_processorsを、post_processorをPoolingのMaxにした後にNormalizationを指定してオーバーライドしています。
config = EmbeddingModelConfig.from_template("text")
config.post_processors = [{"name":"Pooling","type":"max"},{"name":"Normalize"}]

EmbeddingModel

トランスフォーマ・モデルをONNX形式に変換し、後処理ステップを最終モデルに埋め込むには、EmbeddingModelクラスを使用します。

パラメータ

この表は、EmbeddingModelクラスのシグネチャとプロパティについて説明しています。

関数 パラメータ 説明
EmbeddingModel(model_name,configuration=None,settings={})
  • model_name: 使用されるモデルの名前。たとえば、medicalai/ClinicalBERTです
  • configuration: 初期化されたEmbeddingModelConfigオブジェクト。テンプレートを使用する場合は、このパラメータを指定する必要があります。指定しない場合、モデルは事前構成済モデルとみなされます。
  • settings: グローバルで、ファイルのロギング・レベルや場所などの様々な操作を制御する様々な設定のディクショナリ。
EmbeddingModelクラスの新しいインスタンスを作成します。

settings

settingsオブジェクトは、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)
  • export_name(string): ファイルの名前。ファイルは.onnxという拡張子で保存されます。
  • output_dir(string): オプションの出力ディレクトリ。指定しない場合、ファイルは現在のディレクトリに保存されます
モデルをファイルにエクスポートします。
export2db(export_name)
  • export_name(string): マイニング・モデル・オブジェクトに使用される名前。この名前は、データベース内のオブジェクト名に対する既存のルールに準拠している必要があります。
モデルをデータベースにエクスポートします。

例: 事前構成済モデル

次の例は、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"]
    }