Sentence Transformer

Die Snowflake Model Registry unterstützt Modelle, die Sentence Transformers (sentence_transformers.SentenceTransformer) verwenden. Weitere Informationen dazu finden Sie in der Dokumentation zu Sentence Transformers.

Damit die Registry die Signaturen der Zielmethoden kennt, müssen Sie entweder die Beispieleingabedaten oder die Signaturen angeben, die das Eingabe- und Ausgabeschema für die Methoden des Modells definieren.

Um Beispieleingabedaten zu erhalten, geben Sie einen Snowpark DataFrame als Wert für den sample_input_data-Parameter an. Sie können zum Beispiel einen Wert wie sample_input = pd.DataFrame(["This is a sample sentence."], columns=["TEXT"]) angeben.

Wenn Sie den signatures-Parameter verwenden, geben Sie ein Wörterbuch als Wert für den signatures-Parameter an. Das Wörterbuch definiert die Eingabe- und Ausgabemethoden für das Modell. Der folgende Code definiert zum Beispiel das Eingabe- und Ausgabeschema für die encode-Methode des Modells:

from snowflake.ml.model.model_signature import ModelSignature, FeatureSpec, DataType

  signatures = {
      "encode": ModelSignature(
          inputs=[FeatureSpec(dtype=DataType.STRING, name='TEXT')],
          outputs=[FeatureSpec(dtype=DataType.FLOAT, name='EMBEDDINGS', shape=(-1,))]
      )
  }
Copy

Wenn Sie log_model aufrufen, können Sie im die folgenden zusätzlichen Optionen im options-Wörterbuch verwendet werden:

Option

Beschreibung

target_methods

Liste mit den Namen der für das Modellobjekt verfügbaren Methoden. Sentence Transformer-Modelle haben standardmäßig die folgende Zielmethode, vorausgesetzt, die Methode existiert: encode.

cuda_version

Die Version der CUDA-Laufzeit, die beim Bereitstellen auf einer Plattform mit GPU verwendet werden soll. Der Standardwert ist 11.8. Wird das Modell manuell auf None gesetzt, kann es nicht auf einer Plattform mit GPU eingesetzt werden.

Beispiel:

  • Laden eines vortrainierten Sentence Transformer-Modells.

  • Protokollieren dieser Modelle in der Snowflake ML Model Registry.

  • Verwenden des protokollierten Modells für die Inferenz.

Bemerkung

Im Beispiel ist reg eine Instanz von snowflake.ml.registry.Registry. Weitere Informationen zum Erstellen eines Registry-Objekts finden Sie unter Snowflake Model Registry.

from sentence_transformers import SentenceTransformer
import pandas as pd

# 1. Initialize the model
# This example uses the 'all-MiniLM-L6-v2' model, which is a popular
# and efficient model for generating sentence embeddings.
model = SentenceTransformer('all-MiniLM-L6-v2')

# 2. Prepare sample input data
# Sentence Transformers expect a single column of text data for the 'encode' method.
sentences = ["This is an example sentence", "Each sentence is converted into a vector"]
sample_input = pd.DataFrame(sentences, columns=["TEXT"])

# 3. Log the model
# Provide the model object, a name, and a version.
# Including sample_input_data allows the registry to infer the input/output signatures.
model_ref = reg.log_model(
    model=model,
    model_name="my_sentence_transformer",
    version_name="v1",
    sample_input_data=sample_input,
)

# 4. Use the model for inference
# The 'run' method executes the default 'encode' function on the input data.
result_df = model_ref.run(sample_input, function_name="encode")

# The result is a DataFrame where the output column (usually named 'outputs')
# contains the embeddings as arrays of floats.
print(result_df)
Copy