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 |
|---|---|
|
Uma lista dos nomes dos métodos disponíveis no objeto modelo. Os modelos Sentence Transformer oferecem suporte apenas a |
|
O tamanho do lote a ser usado ao codificar texto. O padrão é 32. |
|
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 |
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")
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")