A 事前トレーニング済モデルをONNXモデルに変換するPythonクラス(非推奨)

このトピックでは、非推奨のpythonクラスEmbeddingModelConfigおよびEmbeddingModelの関数、属性および使用例について説明します。

EmbeddingModel、EmbeddingModelConfigを使用した事前トレーニング済テキスト・モデルのONNX形式への変換の例

ノート:

このAPIは23.7で更新されています。23.6以下のバージョンでは、PythonパッケージEmbeddingModelおよびEmbeddingModelConfigが使用されています。これらのパッケージは、それぞれONNXPipelineおよびONNXPipelineConfigに置き換えられます。最新バージョンを使用することをお薦めします。非推奨のクラスを使用した場合は、警告メッセージが表示されて、そのクラスが将来削除されることが示され、新しいクラスに切り替えるようにユーザーに通知されます。更新されたPythonクラスの詳細は、「ONNX形式での事前トレーニング済モデルのインポート」を参照してください
  1. OML4Pyクライアントでpythonクラスをロードします:
    from oml.utils import EmbeddingModel, EmbeddingModelConfig
  2. 次を実行して、すべての事前構成済モデルのリストを取得できます。
    EmbeddingModelConfig.show_preconfigured()
  3. 使用可能なテンプレートのリストを取得するには:
    EmbeddingModelConfig.show_templates()
  4. 事前構成済モデル「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=".")
  5. データベースの事前構成済モデルsentence-transformers/all-MiniLM-L6-v2からONNXモデルを生成します。
    
    em = EmbeddingModel(model_name="sentence-transformers/all-MiniLM-L6-v2")
    em.export2db("your_preconfig_model_name")
  6. 提供されているテキスト・テンプレートを使用して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)
  • 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である必要があります)。これにより、指定されたモデルのプロパティを含む単一のディクトのリストが返されます。

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

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

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

ノート:

Propertiesテーブル内の他のすべてのプロパティには、デフォルト値が使用されます。EmbeddingModelConfigインスタンスの作成時に、デフォルト値のないプロパティを指定する必要があります。

プロパティ

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

プロパティ 説明

post_processors

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

max_seq_length

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

do_lower_case

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

quantize_model

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

post_processorsのプロパティ

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

post_processor パラメータ 説明

Pooling

  • name: Pooling

  • type: 有効な値は、mean(デフォルト)、maxclsである必要があります

プーリングpost_processorは、トランスフォーマ・モデルの出力を固定長ベクトルにまとめたものです。

Normalize

  • name: Normalizeを指定します

post_processorを正規化すると、L2正規化を使用してベクトル値が範囲に制限されます。

Dense

  • name: Dense
  • in_features: 入力機能サイズ
  • out_features: 出力機能サイズ
  • bias: 加算バイアスを学習するかどうか。デフォルト値はTrueです。
  • activation_function: 密レイヤーのアクティブ化関数。現在、アクティブ化関数としてTanhのみがサポートされています。

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

例: post_processorsの構成

この例では、文トランスフォーマ・テンプレートの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={})
  • model_name: 使用されるモデルの名前。たとえば、medicalai/ClinicalBERTです
  • configuration: 初期化されたEmbeddingModelConfigオブジェクト。テンプレートを使用する場合は、このパラメータを指定する必要があります。指定しない場合、モデルは事前構成済モデルとみなされます。
  • 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)
  • 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"]
    }