텍스트 임베딩 조정

이 페이지에서는 텍스트 임베딩 모델textembedding-geckotextembedding-gecko-multilingual을 조정하는 방법을 보여줍니다. 이러한 기반 모델은 대규모 공개 텍스트 데이터 세트로 학습되었습니다. 자체적인 특정 학습 데이터가 필요한 고유한 사용 사례인 경우 모델 조정을 사용할 수 있습니다. 기반 임베딩 모델을 조정하고 나면 모델이 사용 사례에 맞게 제공됩니다. 조정은 텍스트 임베딩 모델의 안정화 버전에서 지원됩니다.

텍스트 임베딩 모델은 지도 조정을 지원합니다. 지도 조정에서는 추론 중에 텍스트 임베딩 모델에서 원하는 출력 유형을 보여주는 라벨이 있는 예를 사용합니다. 텍스트 임베딩 모델에서는 인간 피드백 기반 강화 학습(RLHF)을 사용한 조정을 지원하지 않습니다.

모델 조정에 대한 자세한 내용은 모델 조정 작동 방식을 참조하세요.

예상되는 품질 개선

Vertex AI는 맞춤설정을 위해 효율적인 매개변수 조정 방법을 사용합니다. 이 방법론에서는 공개 검색 벤치마크 데이터 세트에서 수행된 실험에서 품질이 최대 41%까지(평균 12%) 크게 개선되었음을 보여줍니다.

임베딩 모델 조정 사용 사례

텍스트 임베딩 모델을 조정하면 모델에서 특정 도메인 또는 태스크에 맞게 임베딩을 조정할 수 있습니다. 이 방식은 선행 학습된 임베딩 모델이 특정 요구사항에 적합하지 않은 경우에 유용합니다. 예를 들어 회사의 고객 지원 티켓에 대한 특정 데이터 세트에서 임베딩 모델을 조정할 수 있습니다. 그러면 챗봇이 고객들이 일반적으로 묻는 다양한 고객 지원 문제 유형을 이해하여 고객 질문에 더 효과적으로 답변할 수 있습니다. 조정하지 않으면 모델이 고객 지원 티켓의 세부사항이나 제품의 특정 문제에 대한 해결책을 알 수 없습니다.

워크플로 조정

textembedding-geckotextembedding-gecko-multilingual을 위한 Vertex AI의 모델 조정 워크플로는 다음과 같습니다.

  • 모델 조정 데이터 세트를 준비합니다.
  • 모델 조정 데이터 세트를 Cloud Storage 버킷에 업로드합니다.
  • Vertex AI Pipelines에 맞게 프로젝트를 구성합니다.
  • 모델 조정 작업을 만듭니다.
  • 조정된 모델을 동일한 이름의 Vertex AI 엔드포인트에 배포합니다. 텍스트 또는 Codey 모델 조정 작업과 달리 텍스트 임베딩 조정 작업은 조정된 모델을 Vertex AI 엔드포인트에 배포하지 않습니다.

임베딩 데이터 세트 준비

임베딩 모델을 조정하는 데 사용되는 데이터 세트에는 모델이 수행하려는 작업과 일치하는 데이터가 포함됩니다.

임베딩 모델 조정을 위한 데이터 세트 형식

학습 데이터 세트는 다음 파일들로 구성되며 이 파일들은 Cloud Storage에 있어야 합니다. 파일 경로는 조정 파이프라인을 시작할 때 매개변수로 정의됩니다. 세 가지 파일 유형은 코퍼스 파일, 쿼리 파일, 라벨입니다. 학습 라벨만 필수이지만 제어 효율을 높이기 위해 검증 및 테스트 라벨도 제공할 수 있습니다.

  • Corpus 파일: 경로가 corpus_path 매개변수로 정의됩니다. 각 줄에 문자열 값이 있는 _id, title, text 필드가 포함된 JSONL 파일입니다. _idtext는 필수이고 title은 선택사항입니다. 다음은 corpus.jsonl 파일 예시입니다.

    {"_id": "doc1", "title": "Get an introduction to generative AI on Vertex AI", "text": "Vertex AI's Generative AI Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Generative AI Studio to test models using prompt samples, design and save prompts, tune a foundation model, and convert between speech and text."}
    {"_id": "doc2", "title": "Use gen AI for summarization, classification, and extraction", "text": "Learn how to create text prompts for handling any number of tasks with Vertex AI's generative AI support. Some of the most common tasks are classification, summarization, and extraction. Vertex AI's PaLM API for text lets you design prompts with flexibility in terms of their structure and format."}
    {"_id": "doc3", "title": "Custom ML training overview and documentation", "text": "Get an overview of the custom training workflow in Vertex AI, the benefits of custom training, and the various training options that are available. This page also details every step involved in the ML training workflow from preparing data to predictions."}
    {"_id": "doc4", "text": "Text embeddings are useful for clustering, information retrieval, retrieval-augmented generation (RAG), and more."}
    {"_id": "doc5", "title": "Text embedding tuning", "text": "Google's text embedding models can be tuned on Vertex AI."}
    
  • 쿼리 파일: 쿼리 파일에는 예시 쿼리가 포함되어 있습니다. 경로는 queries_path 매개변수로 정의됩니다. 쿼리 파일은 JSONL 형식이며 코퍼스 파일과 동일한 필드를 갖습니다. 다음은 queries.jsonl 파일 예시입니다.

    {"_id": "query1", "text": "Does Vertex support generative AI?"}
    {"_id": "query2", "text": "What can I do with Vertex GenAI offerings?"}
    {"_id": "query3", "text": "How do I train my models using Vertex?"}
    {"_id": "query4", "text": "What is a text embedding?"}
    {"_id": "query5", "text": "Can text embedding models be tuned on Vertex?"}
    {"_id": "query6", "text": "embeddings"}
    {"_id": "query7", "text": "embeddings for rag"}
    {"_id": "query8", "text": "custom model training"}
    {"_id": "query9", "text": "Google Cloud PaLM API"}
    
  • 학습 라벨: 경로는 train_label_path 매개변수로 정의됩니다. train_label_path는 학습 라벨 데이터 위치의 Cloud Storage URI이며 조정 작업을 만들 때 지정됩니다. 라벨은 헤더가 있는 TSV 파일이어야 합니다. 쿼리와 코퍼스의 하위 집합을 학습 라벨 파일에 포함해야 합니다. 이 파일에는 query-id, corpus-id, score 열이 있어야 합니다. query-id는 쿼리 파일의 _id 키와 일치하는 문자열이며, corpus-id는 코퍼스 파일의 _id와 일치하는 문자열입니다. Score는 음이 아닌 정수 값입니다. 점수가 0보다 크면 문서가 쿼리와 관련이 있음을 나타냅니다. 숫자가 클수록 관련성이 높은 것입니다. 점수를 생략하면 기본값은 1입니다. 다음은 train_labels.tsv 파일 예시입니다.

    query-id  corpus-id   score
    query1    doc1    1
    query2    doc2    1
    query3    doc3    2
    query3    doc5  1
    query4    doc4  1
    query4    doc5  1
    query5    doc5  2
    query6    doc4  1
    query6    doc5  1
    query7    doc4  1
    query8    doc3  1
    query9    doc2  1
    
  • 테스트 라벨: 선택사항. 테스트 라벨은 학습 라벨과 형식이 동일하며 test_label_path 매개변수로 지정됩니다. test_label_path가 제공되지 않았으면 테스트 라벨이 학습 라벨에서 자동 분할됩니다.

  • 검증 라벨: 선택사항. 검증 라벨은 학습 라벨과 형식이 동일하며 validation_label_path 매개변수로 지정됩니다. validation_label_path를 제공하지 않으면 검증 라벨이 학습 라벨에서 자동 분할됩니다.

데이터 세트 크기 요구사항

제공된 데이터 세트 파일은 다음 제약조건을 충족해야 합니다.

  • 쿼리 수는 9~40,000개 사이여야 합니다.

  • 코퍼스 문서 수는 9~500,000개 사이여야 합니다.

  • 각 데이터 세트 라벨 파일에는 최소 3개 이상의 쿼리 ID가 포함되어야 하며, 모든 데이터 세트 분할에 최소 9개 이상의 쿼리 ID가 있어야 합니다.

  • 총 라벨 수는 500,000개 미만이어야 합니다.

Vertex AI Pipelines에 맞게 프로젝트 구성

조정은 프로젝트 내에서 Vertex AI Pipelines 플랫폼을 사용하여 수행됩니다.

권한 구성

파이프라인은 2개의 Google 관리 서비스 계정을 사용하여 학습 코드를 실행합니다. 이러한 계정은 특정 권한으로 구성되어야 합니다.

Compute Engine 기본 서비스 계정
PROJECT_NUMBER[email protected]

이 서비스 계정에는 다음이 필요합니다.

  • Cloud Storage에서 만든 각 데이터 세트 파일에 대한 Storage Object Viewer 액세스 권한

  • PIPELINE_OUTPUT_DIRECTORY 파이프라인의 출력 Cloud Storage 디렉토리에 대한 Storage Object User 액세스 권한

  • 프로젝트에 대한 Vertex AI User 액세스 권한

Compute Engine 기본 서비스 계정 대신 커스텀 서비스 계정을 지정할 수 있습니다. 자세한 내용은 세부 권한으로 서비스 계정 구성을 참조하세요.

Vertex AI 서비스 에이전트
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

이 서비스 계정에는 다음이 필요합니다.

  • Cloud Storage에서 만든 각 데이터 세트 파일에 대한 Storage Object Viewer 액세스 권한

  • PIPELINE_OUTPUT_DIRECTORY 파이프라인의 출력 Cloud Storage 디렉토리에 대한 Storage Object User 액세스 권한

Cloud Storage 데이터 세트 권한에 대한 자세한 내용은 파이프라인 아티팩트에 대한 Cloud Storage 버킷 구성을 참조하세요.

가속기 사용

다음 가속기를 조정에 사용할 수 있습니다.

  • NVIDIA_L4

  • NVIDIA_TESLA_A100

  • NVIDIA_TESLA_T4

  • NVIDIA_TESLA_V100

  • NVIDIA_TESLA_P100

조정 작업을 실행하려면 선택한 가속기 유형 및 리전에 대해 적절한 Restricted image training GPUs 할당량이 필요합니다(예: Restricted image training Nvidia V100 GPUs per region). 프로젝트 할당량을 늘리려면 추가 할당량 요청을 참조하세요.

리전에 따라 일부 가속기가 제공되지 않습니다. 자세한 내용은 Vertex AI에서 가속기 사용을 참조하세요.

임베딩 모델 조정 작업 만들기

Google Cloud 콘솔 또는 REST API를 사용하여 임베딩 모델 조정 작업을 만들 수 있습니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • DISPLAY_NAME: pipelineJob의 표시 이름입니다.
  • PIPELINE_OUTPUT_DIRECTORY: "gs://"로 시작하는 파이프라인 출력 아티팩트의 경로입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION: 파이프라인을 실행할 Google Cloud 프로젝트 리전입니다. 프로젝트에 적합한 GPU 할당량이 포함된 모든 리전에서 조정이 지원됩니다. 자세한 내용은 가속기 사용을 참조하세요. 다른 리전에서 리소스 제공이 제한될 수 있으므로 us-central1이 권장됩니다.
  • QUERIES_PATH: "gs://"로 시작하고 쿼리 데이터가 저장된 Cloud Storage 버킷의 URI입니다.
  • CORPUS_PATH: "gs://"로 시작하는 코퍼스 데이터의 Cloud Storage URI입니다.
  • TRAIN_LABEL_PATH: "gs://"로 시작하는 학습 라벨 데이터 위치의 Cloud Storage URI입니다.
  • TEST_LABEL_PATH: 선택사항. "gs://"로 시작하는 테스트 라벨 데이터 위치의 Cloud Storage URI입니다. 빈 문자열을 전달하면 파이프라인이 학습 데이터 세트에서 테스트 데이터 세트를 자동 분할합니다.
  • VALIDATION_LABEL_PATH: 선택사항. "gs://"로 시작하는 검증 라벨 데이터 위치의 Cloud Storage URI입니다. 분 문자열을 전달하면 파이프라인이 학습 데이터 세트에서 검증 데이터 세트를 자동 분할합니다.
  • ACCELERATOR_TYPE: 선택사항. 학습에 사용할 가속기 유형입니다. 기본값은 NVIDIA_TESLA_V100입니다. 가능한 값은 가속기 사용을 참조하세요.
  • ACCELERATOR_COUNT: 선택사항. 학습 시 사용할 가속기의 수입니다. 더 많은 가속기를 사용하면 학습 속도가 빨라지지만 품질에 영향을 주지 않습니다. 기본값은 4입니다.
  • MACHINE_TYPE: 선택사항. 학습에 사용할 Dataflow 머신 유형입니다. 기본값은 n1-standard-16입니다. 선택한 가속기 유형 및 개수와 일치하는 머신 유형을 선택하는 방법에 대한 자세한 내용은 GPU 플랫폼을 참조하세요.
  • BASE_MODEL_VERSION_ID: 선택사항. 조정할 텍스트 임베딩 모델을 지정하려면 이를 사용합니다. 기본값은 textembedding-gecko@001입니다. 가능한 값은 안정화 버전을 참조하세요.
  • MODEL_DISPLAY_NAME: 선택사항. Model Registry에 표시될 때 조정된 모델의 표시 이름입니다. 기본값은 "tuned-text-embedding-model"입니다.
  • TASK_TYPE: 선택사항. 이 매개변수를 설정하면 조정된 모델이 특정 다운스트림 태스크에 맞게 최적화됩니다. 기본값은 DEFAULT입니다. 자세한 내용은 텍스트 임베딩 가져오기를 참조하세요.
  • BATCH_SIZE: 선택사항. 학습 배치 크기입니다. 기본값은 128입니다.
  • ITERATIONS: 선택사항. 모델 조정을 수행하는 단계 수입니다. 기본값은 1,000이고 30보다 커야 합니다.

HTTP 메서드 및 URL:

POST http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/pipelineJobs

JSON 요청 본문:

{
  "displayName": "DISPLAY_NAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "PIPELINE_OUTPUT_DIRECTORY",
    "parameterValues": {
      "project": "PROJECT_ID",
      "location": "LOCATION",
      "queries_path": "QUERIES_PATH",
      "corpus_path": "CORPUS_PATH",
      "train_label_path": "TRAIN_LABEL_PATH",
      "test_label_path": "TEST_LABEL_PATH",
      "validation_label_path": "VALIDATION_LABEL_PATH",
      "accelerator_type": "ACCELERATOR_TYPE",
      "accelerator_count": "ACCELERATOR_COUNT",
      "machine_type": "MACHINE_TYPE",
      "base_model_version_id": "BASE_MODEL_VERSION_ID",
      "model_display_name": "MODEL_DISPLAY_NAME",
      "task_type": "TASK_TYPE",
      "batch_size": "BATCH_SIZE",
      "iterations": "ITERATIONS"
    }
  },
  "templateUri": "http://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.2"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 비슷한 JSON 응답이 표시됩니다.

파이프라인을 시작한 후 Google Cloud 콘솔을 통해 조정 작업의 진행 상황을 확인합니다.

Google Cloud 콘솔로 이동

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

package aiplatform;

// [START aiplatform_sdk_embedding_tuning]
import com.google.cloud.aiplatform.v1beta1.CreatePipelineJobRequest;
import com.google.cloud.aiplatform.v1beta1.LocationName;
import com.google.cloud.aiplatform.v1beta1.PipelineJob;
import com.google.cloud.aiplatform.v1beta1.PipelineJob.RuntimeConfig;
import com.google.cloud.aiplatform.v1beta1.PipelineServiceClient;
import com.google.cloud.aiplatform.v1beta1.PipelineServiceSettings;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CreatePipelineJobEmbeddingModelTuningSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String baseModelVersionId = "BASE_MODEL_VERSION_ID";
    String taskType = "TASK_TYPE";
    String location = "us-central1";
    String pipelineJobDisplayName = "PIPELINE_JOB_DISPLAY_NAME";
    String modelDisplayName = "MODEL_DISPLAY_NAME";
    String outputDir = "OUTPUT_DIR";
    String queriesPath = "DATASET_URI";
    String corpusPath = "DATASET_URI";
    String trainLabelPath = "DATASET_URI";
    String testLabelPath = "DATASET_URI";
    int batchSize = 50;
    int iterations = 300;

    createPipelineJobEmbeddingModelTuningSample(
        project,
        baseModelVersionId,
        taskType,
        location,
        pipelineJobDisplayName,
        modelDisplayName,
        outputDir,
        queriesPath,
        corpusPath,
        trainLabelPath,
        testLabelPath,
        batchSize,
        iterations);
  }

  // Create a model tuning job
  public static void createPipelineJobEmbeddingModelTuningSample(
      String project,
      String baseModelVersionId,
      String taskType,
      String location,
      String pipelineJobDisplayName,
      String modelDisplayName,
      String outputDir,
      String queriesPath,
      String corpusPath,
      String trainLabelPath,
      String testLabelPath,
      int batchSize,
      int iterations)
      throws IOException {
    final String endpoint = String.format("%s-aiplatform.googleapis.com:443", location);
    PipelineServiceSettings pipelineServiceSettings =
        PipelineServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (PipelineServiceClient client = PipelineServiceClient.create(pipelineServiceSettings)) {
      Map<String, Value> parameterValues = new HashMap<>();
      parameterValues.put("project", stringToValue(project));
      parameterValues.put("base_model_version_id", stringToValue(baseModelVersionId));
      parameterValues.put("task_type", stringToValue(taskType));
      parameterValues.put(
          "location",
          stringToValue(
              "us-central1")); // Deployment is only supported in us-central1.
      parameterValues.put("queries_path", stringToValue(queriesPath));
      parameterValues.put("corpus_path", stringToValue(corpusPath));
      parameterValues.put("train_label_path", stringToValue(trainLabelPath));
      parameterValues.put("test_label_path", stringToValue(testLabelPath));
      parameterValues.put("batch_size", numberToValue(batchSize));
      parameterValues.put("iterations", numberToValue(iterations));

      RuntimeConfig runtimeConfig =
          RuntimeConfig.newBuilder()
              .setGcsOutputDirectory(outputDir)
              .putAllParameterValues(parameterValues)
              .build();

      PipelineJob pipelineJob =
          PipelineJob.newBuilder()
              .setTemplateUri(
                  "http://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.2")
              .setDisplayName(pipelineJobDisplayName)
              .setRuntimeConfig(runtimeConfig)
              .build();

      LocationName parent = LocationName.of(project, location);
      CreatePipelineJobRequest request =
          CreatePipelineJobRequest.newBuilder()
              .setParent(parent.toString())
              .setPipelineJob(pipelineJob)
              .build();

      PipelineJob response = client.createPipelineJob(request);
      System.out.format("response: %s\n", response);
      System.out.format("Name: %s\n", response.getName());
    }
  }

  static Value stringToValue(String str) {
    return Value.newBuilder().setStringValue(str).build();
  }

  static Value numberToValue(int n) {
    return Value.newBuilder().setNumberValue(n).build();
  }
}

// [END aiplatform_sdk_embedding_tuning]

Console

Google Cloud 콘솔을 사용하여 텍스트 임베딩 모델을 조정하려면 다음 단계에 따라 맞춤설정 파이프라인을 실행할 수 있습니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 Vertex AI Pipelines 페이지로 이동합니다.

    Vertex AI Pipelines로 이동

  2. 실행 만들기를 클릭하여 파이프라인 실행 만들기 창을 엽니다.
  3. 기존 파이프라인에서 선택을 클릭하고 다음 세부정보를 입력합니다.
    1. 리소스 선택 드롭다운에서 "ml-pipeline"을 선택합니다.
    2. 저장소 드롭다운에서 "llm-text-embedding"을 선택합니다.
    3. 파이프라인 또는 구성요소 드롭다운에서 "tune-text-embedding-model"을 선택합니다.
    4. 버전 드롭다운에서 "v1.1.2" 라벨이 지정된 버전을 선택합니다.
  4. 파이프라인 실행을 고유하게 식별하기 위해 실행 이름을 지정합니다.
  5. 리전 드롭다운 목록에서 파이프라인 실행을 만들 리전을 선택합니다. 현재는 us-central1만 지원됩니다.
  6. 계속을 클릭합니다. 런타임 구성 창이 나타납니다.
  7. Cloud Storage 위치에서 찾아보기를 클릭하여 파이프라인 출력 아티팩트를 저장할 Cloud Storage 버킷을 선택한 후 선택을 클릭합니다.
  8. 파이프라인 매개변수에서 조정 파이프라인의 매개변수를 지정합니다. 매개변수의 의미는 REST 문서를 참조하세요.
  9. 제출을 클릭하여 파이프라인 실행을 만듭니다.

curl 명령어 예시

PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
BASE_MODEL_VERSION_ID=BASE_MODEL_VERSION_ID
PIPELINE_OUTPUT_DIRECTORY=PIPELINE_OUTPUT_DIRECTORY
QUERIES_PATH=QUERIES_PATH
CORPUS_PATH=CORPUS_PATH
TRAIN_LABEL_PATH=TRAIN_LABEL_PATH

curl -X POST  \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json; charset=utf-8" \
"http://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/pipelineJobs?pipelineJobId=tune-text-embedding-$(date +%Y%m%d%H%M%S)" \
-d '{
  "displayName": "tune-text-embedding-model",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${PIPELINE_OUTPUT_DIRECTORY}'",
    "parameterValues": {
      "project":  "'${PROJECT_ID}'",
      "base_model_version_id":  "'${BASE_MODEL_VERSION_ID}'",
      "location":   "'${LOCATION}'",
      "queries_path":  "'${QUERIES_PATH}'",
      "corpus_path":  "'${CORPUS_PATH}'",
      "train_label_path":  "'${TRAIN_LABEL_PATH}'"
    }
  },
  "templateUri": "http://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.2"
}'

조정된 모델 사용

Model Registry에서 조정된 모델 보기

조정 작업이 완료되면 조정된 모델이 엔드포인트에 자동으로 배포되지 않습니다. Model Registry에서 모델 리소스로 제공됩니다. Google Cloud 콘솔을 사용하여 조정된 모델을 포함한 현재 프로젝트의 모델 목록을 볼 수 있습니다.

Google Cloud 콘솔에서 조정된 모델을 보려면 Vertex AI Model Registry 페이지로 이동합니다.

Vertex AI Model Registry로 이동

모델 배포

임베딩 모델을 조정한 후에는 모델 리소스를 배포해야 합니다. 조정된 임베딩 모델을 배포하려면 엔드포인트에 모델 배포를 참조하세요.

기반 모델과 달리 조정된 텍스트 임베딩 모델은 사용자가 관리합니다. 여기에는 머신 유형 및 가속기와 같은 제공 리소스 관리가 포함됩니다. 예측 중에 메모리 부족 오류를 방지하려면 모든 입력 길이에 배치 크기를 최대 5까지 지원할 수 있는 NVIDIA_TESLA_A100 GPU 유형을 사용하여 배포하는 것이 좋습니다.

textembedding-gecko 기반 모델과 마찬가지로 조정된 모델은 최대 3,072개의 토큰을 지원하며 긴 입력을 자를 수 있습니다.

배포된 모델에 대한 예측 수행하기

조정된 모델이 배포되면 다음 명령어 중 하나를 사용하여 조정된 모델 엔드포인트에 요청을 실행할 수 있습니다.

조정된 textembedding-gecko@001 모델의 curl 명령어 예시

조정된 textembedding-gecko@001 버전에서 예측을 가져오려면 아래의 curl 명령어 예시를 사용하세요.

PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=http://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json"  \
    ${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
    -d '{
  "instances": [
    {
      "content": "Dining in New York City"
    },
    {
      "content": "Best resorts on the east coast"
    }
  ]
}'

textembedding-gecko@001 모델이 아닌 모델에 대한 curl 명령어 예시

다른 모델의 조정된 버전(예: textembedding-gecko@003textembedding-gecko-multilingual@001)에는 task_typetitle의 2개의 추가 입력이 필요합니다. 이러한 매개변수에 대한 추가 문서는 curl 명령어를 참조하세요.

PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=http://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json"  \
    ${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
    -d '{
  "instances": [
    {
      "content": "Dining in New York City",
      "task_type": "DEFAULT",
      "title": ""
    },
    {
      "content": "There are many resorts to choose from on the East coast...",
      "task_type": "RETRIEVAL_DOCUMENT",
      "title": "East Coast Resorts"
    }
  ]
}'

출력 예

이 출력은 버전에 관계없이 textembedding-geckotextembedding-gecko-multilingual 모델에 모두 적용됩니다.

{
 "predictions": [
   [ ... ],
   [ ... ],
   ...
 ],
 "deployedModelId": "...",
 "model": "projects/.../locations/.../models/...",
 "modelDisplayName": "tuned-text-embedding-model",
 "modelVersionId": "1"
}

다음 단계