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,))]
      )
  }
Copy

Quando você chama log_model, pode usar as seguintes opções adicionais no dicionário options:

Opção

Descrição

target_methods

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: encode.

cuda_version

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 None, o modelo não poderá ser implementado em uma plataforma com GPU.

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)
Copy