Transformateur de phrases¶
Le registre des modèles de Snowflake prend en charge les modèles qui utilisent des transformateurs de phrases (sentence_transformers.SentenceTransformer). Pour plus d’informations, voir la documentation relative aux transformateurs de phrases.
Pour que le registre connaisse les signatures des méthodes cibles, vous devez spécifier soit des échantillons de données d’entrée, soit les signatures qui définissent le schéma d’entrée et de sortie des méthodes du modèle.
Pour des échantillons de données d’entrée, spécifiez un Snowpark. DataFrame comme valeur pour le paramètre sample_input_data. Par exemple, vous pouvez spécifier une valeur telle que sample_input = pd.DataFrame(["This is a sample sentence."], columns=["TEXT"]).
Si vous utilisez le paramètre des signatures, indiquez un dictionnaire comme valeur pour le paramètre signatures. Le dictionnaire définit les méthodes d’entrée et de sortie du modèle. Par exemple, le code suivant définit le schéma d’entrée et de sortie pour la méthode encode du modèle :
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,))]
)
}
Lorsque vous appelez log_model, vous pouvez utiliser les options supplémentaires suivantes dans le dictionnaire options :
Option |
Description |
|---|---|
|
Une liste des noms des méthodes disponibles sur l’objet modèle. Les modèles de transformateurs de phrases ont la méthode cible suivante par défaut, en supposant que la méthode existe : |
|
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 |
L’exemple suivant :
Charge un modèle de transformateur de phrases pré-entraîné.
L’enregistre dans le registre des modèles ML de Snowflake.
Utilise le modèle enregistré pour l’inférence.
Note
Dans l’exemple, reg est une instance de snowflake.ml.registry.Registry. Pour plus d’informations sur la création d’un objet de registre, consultez Registre des modèles de Snowflake.
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)