Transformador de sentença¶
O Snowflake Model Registry oferece suporte a modelos que usam Sentence Transformers (sentence_transformers.SentenceTransformer). Para obter mais informações, consulte a documentação do Sentence Transformers.
Para que o registro reconheça as assinaturas dos métodos de destino, você deve especificar dados de entrada de amostra ou as assinaturas que definem o esquema de entrada e de saída para os métodos do modelo.
Para dados de entrada de amostra, especifique um DataFrame Snowpark como valor do parâmetro sample_input_data. Por exemplo, você pode especificar um valor como sample_input = pd.DataFrame(["This is a sample sentence."], columns=["TEXT"]).
Se você usa o parâmetro signatures, especifique um dicionário como valor para o parâmetro signatures. O dicionário define os métodos de entrada e saída para o modelo. Por exemplo, o código a seguir define o esquema de entrada e saída para o método encode do modelo:
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,))]
)
}
Quando você chama log_model, pode usar as seguintes opções adicionais no dicionário options:
Opção |
Descrição |
|---|---|
|
Uma lista dos nomes dos métodos disponíveis no objeto modelo. Os modelos Sentence Transformer têm o seguinte método de destino por padrão, assumindo que o método existe: |
|
A versão do tempo de execução do CUDA a ser usada na implementação em uma plataforma com um GPU; o padrão é 11.8. Se definido manualmente como |
O exemplo a seguir:
Carregar um modelo Sentence Transformer pré-treinado.
Registra-o no Snowflake ML Model Registry.
Usa o modelo registrado para inferência.
Nota
No exemplo, reg é uma instância de snowflake.ml.registry.Registry. Para obter informações sobre como criar um objeto de registro, consulte Registro de modelo 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)