Sentence Transformer

Snowflake ML Model Registry unterstützt Sentence Transformer-Modelle (sentence_transformers.SentenceTransformer). Sentence Transformer werden verwendet, um dichte Vektoreinbettungen für Text zu erzeugen, die für die semantische Suche, Clustering und andere Aufgaben der Verarbeitung natürlicher Sprache verwendet werden können.

Die folgenden zusätzlichen Optionen können im options-Dictionary verwendet werden, wenn Sie log_model abrufen:

Option

Beschreibung

target_methods

Liste mit den Namen der für das Modellobjekt verfügbaren Methoden. Sentence Transformer-Modelle unterstützen nur encode als Zielmethode, was die Standardeinstellung ist.

batch_size

Die Batchgröße, die bei der Codierung von Text verwendet werden soll. Der Standardwert ist 32.

cuda_version

Die Version der CUDA-Laufzeitumgebung, 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.

Der Parameter sample_input_data ist optional, wenn ein Sentence Transformer-Modell protokolliert wird. Falls nicht angegeben, leitet die Registry die Signatur automatisch anhand der encode-Methode des Modells ab.

Bemerkung

Sentence Transformer-Modelle unterstützen nur encode als Zielmethode. Die Eingabe muss eine einzelne Spalte mit Textzeichenfolgen sein, und die Ausgabe ist eine einzelne Spalte, die Einbettungsvektoren als Arrays enthält.

Beispiele

Diese Beispiele gehen davon aus, dass reg eine Instanz von snowflake.ml.registry.Registry ist.

Grundlegender Sentence Transformer

Das folgende Beispiel zeigt die wichtigsten Schritte zum Laden eines Sentence Transformer-Modells und dessen Protokollierung in der Snowflake ML Model Registry und verwendet das registrierte Modell, um Einbettungen zu erstellen. Der Workflow umfasst:

  • Laden eines vortrainierten Sentence Transformer-Modells.

  • Protokollieren des Modells in der Snowflake ML-Modell-Registry

  • Erzeugt Texteinbettungen.

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

Kundenspezifische Batchgröße

Sie können eine kundenspezifische Batchgröße für die Codierung angeben:

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