Transformateur de phrases

Le registre des modèles ML Snowflake prend en charge les modèles de transformateurs de phrases (sentence_transformers.SentenceTransformer). Les transformateurs de phrases sont utilisés pour générer des intégrations vectorielles denses pour du texte, qui peuvent être utilisées pour la recherche sémantique, le clustering et d’autres tâches de traitement du langage naturel.

Les options supplémentaires suivantes peuvent être utilisées dans le dictionnaire options lors de l’appel à log_model :

Option

Description

target_methods

Une liste des noms des méthodes disponibles sur l’objet modèle. Les modèles de transformateurs de phrases prennent uniquement en charge encode comme méthode cible, qui est la valeur par défaut.

batch_size

La taille de lot à utiliser lors de l’encodage du texte. La valeur par défaut est 32.

cuda_version

La version de l’environnement d’exécution CUDA à utiliser lors du déploiement sur une plateforme avec GPU ; la valeur par défaut est 11.8. S’il est défini manuellement sur None, le modèle ne peut pas être déployé sur une plateforme ayant un GPU.

Le paramètre sample_input_data est facultatif lors de la journalisation d’un modèle de transformateur de phrases. Si non fourni, le registre déduit automatiquement la signature sur la base de la méthode encode du modèle.

Note

Les modèles de transformateurs de phrases ne prennent en charge que la méthode cible encode. L’entrée doit être une colonne unique contenant des chaînes de texte et la sortie est une colonne unique contenant des vecteurs d’intégration sous forme de tableaux.

Exemples

Ces exemples supposent que reg est une instance de snowflake.ml.registry.Registry.

Transformateur de phrases de base

L’exemple suivant illustre les étapes clés pour charger un modèle de transformateur de phrases, connectez-le au au registre des modèles Snowflake ML, et utilisez le modèle enregistré pour générer des intégrations. Le flux de travail comprend :

  • Charge un modèle de transformateur de phrases pré-entraîné.

  • Connecte le modèle au registre de modèles Snowflake ML.

  • Génère des intégrations de texte.

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

Taille de lot personnalisée

Vous pouvez spécifier une taille de lot personnalisée pour l’encodage :

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