문장 변환기

Snowflake ML Model Registry는 문장 변환기 모델(sentence_transformers.SentenceTransformer)을 지원합니다. 문장 변환기는 의미 체계 검색, 클러스터링 및 기타 자연어 처리 작업에 사용할 수 있는 텍스트에 대한 밀집 벡터 임베딩을 생성하는 데 사용됩니다.

log_model 을 호출할 때 options 사전에서 다음 추가 옵션을 사용할 수 있습니다.

옵션

설명

target_methods

모델 오브젝트에서 사용할 수 있는 메서드 이름 목록입니다. 문장 변환기 모델은 대상 메서드로 ``encode``만 지원하며, 이는 기본값입니다.

batch_size

텍스트를 인코딩할 때 사용할 배치 크기입니다. 기본값은 32입니다.

cuda_version

GPU로 플랫폼에 배포할 때 사용할 CUDA 런타임 버전으로 기본값은 11.8입니다. 수동으로 None 으로 설정하면 GPU가 있는 플랫폼에 모델을 배포할 수 없습니다.

sample_input_data 매개 변수는 문장 변환기 모델을 로깅할 때 선택 사항입니다. 제공하지 않으면 레지스트리는 모델의 encode 메서드를 기반으로 서명을 자동으로 추론합니다.

참고

문장 변환기 모델은 대상 메서드로 ``encode``만 지원합니다. 입력은 텍스트 문자열을 포함하는 단일 열이어야 하고, 출력은 임베딩 벡터를 배열로 포함하는 단일 열이어야 합니다.

이러한 예제에서는 ``reg``가 ``snowflake.ml.registry.Registry``의 인스턴스라고 가정합니다.

기본 문장 변환기

다음 예제에서는 문장 변환기 모델을 로드하고, Snowflake ML Model Registry에 기록하고, 등록된 모델을 사용하여 임베딩을 생성하는 주요 단계를 보여줍니다. 이 워크플로에는 다음 작업이 포함됩니다.

  • 사전 학습된 문장 변환기 모델을 로드합니다.

  • 모델을 Snowflake ML Model Registry에 기록합니다.

  • 텍스트 임베딩을 생성합니다.

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

사용자 지정 배치 크기

인코딩을 위한 사용자 지정 배치 크기를 지정할 수 있습니다.

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