センテンストランスフォーマー

Snowflake ML モデルレジストリはセンテンストランスフォーマーモデル(sentence_transformers.SentenceTransformer)をサポートします。センテンストランスフォーマーは、テキストの密なベクトル埋め込みを生成するために使用されます。これは、セマンティック検索、クラスタリング、その他の自然言語処理タスクに使用できます。

以下の追加オプションは、 options ディクショナリで log_model を呼び出すときに使用できます。

オプション

説明

target_methods

モデルオブジェクトで利用可能なメソッドの名前のリスト。センテンストランスフォーマーモデルはターゲットメソッドとしてデフォルトの encode のみをサポートします。

batch_size

テキストをエンコードするときに使用するバッチサイズ。デフォルトは32。

cuda_version

GPUを持つプラットフォームへの展開時に使用する CUDAランタイムのバージョン。デフォルトで11.8。手動で None に設定した場合、モデルは GPU を持つプラットフォームには展開できません。

sample_input_data パラメーターは、センテンストランスフォーマーモデルをログする場合はオプションです。提供されない場合、レジストリはモデルの encode メソッドに基づいて署名を自動的に推測します。

注釈

センテンストランスフォーマーモデルは encode ターゲットメソッドのみをサポートします。入力はテキスト文字列を含む単一列にする必要があり、出力は埋め込みベクトルを配列として含む単一列にする必要があります。

これらの例では、 regsnowflake.ml.registry.Registry のインスタンスであると想定しています。

基本センテンストランスフォーマー

次の例では、センテンストランスフォーマーモデルをロードし、Snowflake ML モデルレジストリにログを記録するキーステップを示しています。登録されたモデルを使用して埋め込みを生成します。ワークフローには以下が含まれます。

  • 事前にトレーニング済みのセンテンストランスフォーマーモデルをロードします。

  • Snowflake ML モデルレジストリにモデルのログを記録します。

  • テキスト埋め込みを生成します。

from sentence_transformers import SentenceTransformer
import pandas as pd

# Load a pre-trained Sentence Transformer model
model = SentenceTransformer('all-MiniLM-L6-v2')

# Sample input data as DataFrame
sample_df = pd.DataFrame({"sentences": [
    "How do I reset my password?",
    "What are your business hours?",
    "I need help with my recent order.",
]})

# Log the model
model_ref = reg.log_model(
    model=model,
    model_name="my_sentence_transformer",
    version_name="v1",
    sample_input_data=sample_df,
)

# Generate embeddings
test_df = pd.DataFrame({"sentences": [
    "I forgot my login credentials.",
    "When is your store open?",
]})
embeddings_df = model_ref.run(test_df, function_name="encode")
Copy

カスタムバッチサイズ

次のエンコードのカスタムバッチサイズを指定できます。

from sentence_transformers import SentenceTransformer
import pandas as pd

# Load model
model = SentenceTransformer('all-mpnet-base-v2')

# Sample input data as DataFrame
sample_df = pd.DataFrame({"text": ["Sample text for embedding."]})

# Log the model with custom batch size
model_ref = reg.log_model(
    model=model,
    model_name="my_mpnet_model",
    version_name="v1",
    sample_input_data=sample_df,
    options={"batch_size": 64},
)

# Generate embeddings
test_df = pd.DataFrame({"text": [
    "First sentence to encode.",
    "Second sentence to encode.",
    "Third sentence to encode.",
]})
embeddings_df = model_ref.run(test_df, function_name="encode")
Copy