Tuning API

모델 조정은 더 높은 정밀도와 정확성으로 특정 태스크를 수행하도록 Gemini를 조정하는 데 중요한 프로세스입니다. 모델 조정은 모델에 특정 다운스트림 태스크의 여러 예시가 포함된 학습 데이터 세트를 제공하는 방식으로 작동합니다.

다음과 같은 사용 사례에 Gemini tuning API를 사용하세요.

지원되는 모델:

다음 Gemini 모델에서 지도 기반 미세 조정을 사용할 수 있습니다.

모델 버전
Gemini 1.5 Pro gemini-1.5-pro-002
Gemini 1.5 Flash gemini-1.5-flash-002
Gemini 1.0 Pro gemini-1.0-pro-002

예시 문법

모델을 미세 조정하는 구문입니다.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs \
-d '{
  "baseModel": "...",
  "supervisedTuningSpec" : {
    ...
      "hyper_parameters": {
        ...
      },
  },
  "tunedModelDisplayName": "",
}'

매개변수 목록

구현 세부정보는 예시를 참고하세요.

요청 본문

요청 본문에는 다음 매개변수가 포함된 데이터가 포함됩니다.

매개변수

source_model

선택사항: string

조정 중인 기반 모델의 이름입니다. 지원되는 값: gemini-1.0-pro-002.

tunedModelDisplayName

string

TunedModel의 표시 이름입니다. 이름은 최대 128자(영문 기준)까지 가능하며 UTF-8 문자를 포함할 수 있습니다.

supervisedTuningSpec

매개변수

training_dataset

string

학습 데이터 세트의 Cloud Storage URI입니다. 데이터 세트는 JSONL 파일 형식이어야 합니다. 최상의 결과를 얻으려면 100~500개 이상의 예시를 제공하세요. 자세한 내용은 지도 조정 데이터 세트 정보를 참고하세요.

validation_dataset

선택사항: string

검증 데이터 세트의 Cloud Storage URI입니다. 데이터 세트는 JSONL 파일 형식이어야 합니다. 데이터 세트는 최대 256개의 예시를 포함할 수 있습니다. 이 파일을 제공하면 데이터가 미세 조정 중에 주기적으로 유효성 검사 측정항목을 생성하는 데 사용됩니다. 자세한 내용은 지도 조정 데이터 세트 정보 를 참고하세요.

epoch_count

선택사항: int

학습 중에 모델이 전체 학습 데이터 세트에서 수행하는 완료 횟수 Vertex AI는 기본값을 학습 데이터 세트 크기에 맞게 자동으로 조정합니다. 이 값은 모델 출력 품질을 최적화하기 위한 벤치마킹 결과를 기반으로 합니다.

learning_rate_multiplier

선택사항: float

기본 학습률을 조정하는 배율입니다.

adapter_size

선택사항: AdapterSize

조정을 위한 어댑터 크기입니다.

tuned_model_display_name

선택사항: string

TunedModel의 표시 이름입니다. 이름은 최대 128자(영문 기준)까지 가능하며 UTF-8 문자를 포함할 수 있습니다.

AdapterSize

미세 조정 작업의 어댑터 크기입니다.

매개변수

ADAPTER_SIZE_UNSPECIFIED

지정되지 않은 어댑터 크기입니다.

ADAPTER_SIZE_ONE

어댑터 크기 1.

ADAPTER_SIZE_FOUR

어댑터 크기 4.

ADAPTER_SIZE_EIGHT

어댑터 크기 8.

ADAPTER_SIZE_SIXTEEN

어댑터 크기 16.

예시

지도 조정 작업 만들기

Python용 Vertex AI SDK를 사용하거나 POST 요청을 전송하여 지도 텍스트 모델 조정 작업을 만들 수 있습니다.

기본 사용 사례

기본 사용 사례는 baseModeltraining_dataset_uri의 값만 설정합니다. 다른 모든 매개변수는 기본값을 사용합니다.

REST

모델 조정 작업을 만들려면 tuningJobs.create 메서드를 사용하여 POST 요청을 전송합니다. 일부 매개변수는 모든 모델에서 지원되지 않습니다. 조정하려는 모델에 적용 가능한 매개변수만 포함해야 합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다.
  • BASE_MODEL: 조정할 기반 모델의 이름입니다. 지원되는 값: gemini-1.5-pro-002, gemini-1.5-flash-002, gemini-1.0-pro-002
  • TRAINING_DATASET_URI: 학습 데이터 세트의 Cloud Storage URI. 데이터 세트는 JSONL 파일 형식이어야 합니다. 최상의 결과를 얻으려면 100~500개 이상의 예시를 제공하세요. 자세한 내용은 지도 조정 데이터 세트 정보 를 참고하세요.

HTTP 메서드 및 URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

JSON 요청 본문:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI"
  },
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

Python


import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.5-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>

고급 사용 사례

고급 사용 사례는 기본 사용 사례를 확장하지만 epoch_count, learning_rate_multiplier, adapter_size와 같은 선택적 hyper_parameters의 값도 설정합니다.

REST

모델 조정 작업을 만들려면 tuningJobs.create 메서드를 사용하여 POST 요청을 전송합니다. 일부 매개변수는 모든 모델에서 지원되지 않습니다. 조정하려는 모델에 적용 가능한 매개변수만 포함해야 합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다.
  • BASE_MODEL: 조정할 기반 모델의 이름입니다. 지원되는 값은 gemini-1.5-pro-002, gemini-1.5-flash-002, gemini-1.0-pro-002입니다.
  • TRAINING_DATASET_URI: 학습 데이터 세트의 Cloud Storage URI. 데이터 세트는 JSONL 파일 형식이어야 합니다. 최상의 결과를 얻으려면 100~500개 이상의 예시를 제공하세요. 자세한 내용은 지도 조정 데이터 세트 정보 를 참고하세요.
  • VALIDATION_DATASET_URI(선택사항): 검증 데이터 세트 파일의 Cloud Storage URI
  • EPOCH_COUNT선택사항: 학습 중에 모델이 전체 학습 데이터 세트에서 수행하는 완료 횟수입니다. 미리 입력된 권장 값을 사용하려면 설정하지 않은 상태로 둡니다.
  • ADAPTER_SIZE선택사항: 조정 작업에 사용할 어댑터 크기입니다. 어댑터 크기는 조정 작업의 학습 가능한 매개변수 수에 영향을 미칩니다. 어댑터 크기가 클수록 모델이 더 복잡한 작업을 학습할 수 있다는 의미이지만 더 큰 학습 데이터 세트와 더 긴 학습 시간이 필요합니다.
  • LEARNING_RATE_MULTIPLIER(선택사항): 권장 학습률에 적용할 배수. 권장 값을 사용하려면 설정하지 않은 상태로 둡니다.
  • TUNED_MODEL_DISPLAYNAME(선택사항): 조정된 모델의 표시 이름. 설정하지 않으면 임의의 이름이 생성됩니다.

HTTP 메서드 및 URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

JSON 요청 본문:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "trainingDatasetUri": "TRAINING_DATASET_URI",
      "validationDatasetUri": "VALIDATION_DATASET_URI",
      "hyperParameters": {
          "epochCount": EPOCH_COUNT,
          "adapterSize": "ADAPTER_SIZE",
          "learningRateMultiplier": LEARNING_RATE_MULTIPLIER
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME"
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

Python


import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.5-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_train_data.jsonl",
    # The following parameters are optional
    validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/gemini-1_5/text/sft_validation_data.jsonl",
    epochs=4,
    adapter_size=4,
    learning_rate_multiplier=1.0,
    tuned_model_display_name="tuned_gemini_1_5_pro",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)
# Example response:
# projects/123456789012/locations/us-central1/models/1234567890@1
# projects/123456789012/locations/us-central1/endpoints/123456789012345
# <google.cloud.aiplatform.metadata.experiment_resources.Experiment object at 0x7b5b4ae07af0>

조정 작업 나열

Python용 Vertex AI SDK를 사용하거나 GET 요청을 전송하여 현재 프로젝트에서 조정 작업 목록을 볼 수 있습니다.

REST

모델 조정 작업을 만들려면 tuningJobs.create 메서드를 사용하여 POST 요청을 전송합니다. 일부 매개변수는 모든 모델에서 지원되지 않습니다. 조정하려는 모델에 적용 가능한 매개변수만 포함해야 합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다.

HTTP 메서드 및 URL:

GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7c85287b2680>
# resource name: projects/12345678/locations/us-central1/tuningJobs/123456789012345

조정 작업의 세부정보 가져오기

Python용 Vertex AI SDK를 사용하거나 GET 요청을 전송하여 조정 작업의 세부정보를 가져올 수 있습니다.

REST

모델 조정 작업 목록을 보려면 tuningJobs.get 메서드를 사용하여 GET 요청을 전송하고 TuningJob_ID를 지정합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다.
  • TUNING_JOB_ID: 조정 작업의 ID

HTTP 메서드 및 URL:

GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
response = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)

print(response)
# Example response:
# <vertexai.tuning._supervised_tuning.SupervisedTuningJob object at 0x7cc4bb20baf0>
# resource name: projects/1234567890/locations/us-central1/tuningJobs/4982013113894174720

조정 작업 취소

Python용 Vertex AI SDK를 사용하거나 POST 요청을 전송하여 조정 작업을 취소할 수 있습니다.

REST

모델 조정 작업 목록을 보려면 tuningJobs.cancel 메서드를 사용하여 GET 요청을 전송하고 TuningJob_ID를 지정합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다.
  • TUNING_JOB_ID: 조정 작업의 ID

HTTP 메서드 및 URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"

PowerShell

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.

Python

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# LOCATION = "us-central1"
vertexai.init(project=PROJECT_ID, location=LOCATION)

tuning_job_id = "4982013113894174720"
job = sft.SupervisedTuningJob(
    f"projects/{PROJECT_ID}/locations/{LOCATION}/tuningJobs/{tuning_job_id}"
)
job.cancel()

다음 단계

자세한 문서는 다음을 참조하세요.