Sentence Transformers

O Snowflake ML Model Registry oferece suporte a modelos Sentence Transformer (sentence_transformers.SentenceTransformer). Os Sentence Transformers são usados para gerar incorporações vetoriais densas para texto, que podem ser usadas para pesquisa semântica, clustering e outras tarefas de processamento de linguagem natural.

As seguintes opções adicionais podem ser usadas no dicionário options quando você chamar log_model:

Opção

Descrição

target_methods

Uma lista dos nomes dos métodos disponíveis no objeto modelo. Os modelos Sentence Transformer oferecem suporte apenas a encode como método de destino, que é o padrão.

batch_size

O tamanho do lote a ser usado ao codificar texto. O padrão é 32.

cuda_version

A versão do tempo de execução CUDA a ser usada ao implantar em uma plataforma com GPU; o padrão é 11.8. Se definido manualmente como None, o modelo não poderá ser implementado em uma plataforma com GPU.

O parâmetro sample_input_data é opcional ao registrar um modelo Sentence Transformer. Se não for fornecido, o registro vai inferir a assinatura automaticamente com base no método encode do modelo.

Nota

Os modelos Sentence Transformer oferecem suporte apenas ao método de destino encode. A entrada deve ser uma única coluna contendo cadeias de caracteres de texto, e a saída é uma única coluna contendo vetores de incorporação como matrizes.

Exemplos

Estes exemplos pressupõem que reg seja uma instância de snowflake.ml.registry.Registry.

Sentence Transformer básico

O exemplo a seguir demonstra as principais etapas para carregar um modelo Sentence Transformer, registrá-lo no Snowflake ML Model Registry e usar o modelo registrado para gerar incorporações. O fluxo de trabalho inclui:

  • Carregar um modelo Sentence Transformer pré-treinado.

  • Registrar o modelo no Snowflake ML Model Registry.

  • Gerar incorporações de texto.

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

Tamanho de lote personalizado

Você pode especificar um tamanho de lote personalizado para codificação:

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