지도 미세 조정을 사용하여 번역 LLM 모델 조정

이 문서에서는 지도 미세 조정을 사용하여 번역 LLM 모델을 조정하는 방법을 설명합니다.

시작하기 전에

시작하기 전에 지도 미세 조정 데이터 세트를 준비해야 합니다. 사용 사례에 따라 요구사항이 다릅니다.

지원되는 모델

  • translation-llm-002(미리보기에서는 텍스트 조정만 지원)

조정 작업 만들기

REST API 또는 Python용 Vertex AI SDK를 사용하여 지도 미세 조정 작업을 만들 수 있습니다.

REST

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

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

  • PROJECT_ID: 프로젝트 ID
  • TUNING_JOB_REGION: 조정 작업이 실행되는 리전. 또한 조정된 모델이 업로드되는 기본 리전입니다. 지원되는 리전: us-central1
  • BASE_MODEL: 조정할 번역 모델의 이름입니다. 지원되는 값: translation-llm-002.
  • TRAINING_DATASET_URI: 학습 데이터 세트의 Cloud Storage URI. 데이터 세트는 JSONL 파일 형식이어야 합니다. 최상의 결과를 얻으려면 100~500개 이상의 예시를 제공하세요. 자세한 내용은 지도 조정 데이터 세트 정보 를 참고하세요.
  • VALIDATION_DATASET_URI: (선택사항) 검증 데이터 세트 파일의 Cloud Storage URI
  • 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",
  },
  "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 응답이 수신됩니다.

curl 명령어 예시

PROJECT_ID=myproject
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
   "baseModel": "translation-llm-002",
   "supervisedTuningSpec" : {
      "training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
      "validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
   },
   "tunedModelDisplayName": "tuned_translation_llm"
}'

Python

from vertexai.generative_models import GenerativeModel

sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))

import time

import vertexai
from vertexai.tuning import sft

# TODO(developer): Update and un-comment below line.
# PROJECT_ID = os.environ["GOOGLE_CLOUD_PROJECT"]
vertexai.init(project=PROJECT_ID, location="us-central1")

sft_tuning_job = sft.train(
  source_model="translation-llm-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",
    tuned_model_display_name="tuned_translation_llm_002",
)

# 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>

조정 작업 목록 보기

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

REST

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

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

  • 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

콘솔

Google Cloud 콘솔에서 조정 작업을 보려면 Vertex AI Studio 페이지로 이동합니다.

Vertex AI Studio로 이동

번역 LLM 조정 작업은 번역 LLM 조정된 모델 섹션 아래 표에 나와 있습니다.

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

Google Cloud 콘솔, Vertex AI SDK for Python을 사용하거나 tuningJobs 메서드를 사용하여 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

콘솔

  1. Google Cloud 콘솔에서 조정된 모델의 세부정보를 보려면 Vertex AI Studio 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 번역 LLM 조정 모델 표에서 모델을 찾아 세부정보를 클릭합니다.

    모델의 세부정보가 표시됩니다.

조정 작업 취소

Google Cloud 콘솔, Vertex AI SDK for Python을 사용하거나 tuningJobs 메서드를 사용하여 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()

콘솔

  1. Google Cloud 콘솔에서 조정 작업을 취소하려면 Vertex AI Studio 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 번역 조정 모델 표에서 실행 관리를 클릭합니다.

  3. 취소를 클릭합니다.

프롬프트로 조정된 모델 테스트

Vertex AI SDK for Python을 사용하거나 tuningJobs 메서드를 사용해 POST 요청을 전송하여 현재 프로젝트에서 조정 작업을 테스트할 수 있습니다.

다음 예시에서는 '하늘은 왜 파란색이야?' 질문으로 모델에 프롬프트를 입력합니다.

REST

프롬프트로 조정된 모델을 테스트하려면 POST 요청을 전송하고 TUNED_ENDPOINT_ID를 지정합니다.

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

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

HTTP 메서드 및 URL:

POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent

JSON 요청 본문:

{
    "contents": [
        {
            "role": "USER",
            "parts": {
                "text" : "English: Hello. Spanish:"
            }
        }
    ],
}

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

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/endpoints/ENDPOINT_ID:generateContent"

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/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content

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

Python

from vertexai.generative_models import GenerativeModel

sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))

조정 및 검증 측정항목

모델 조정 작업을 구성하여 모델 조정 및 모델 평가 측정항목을 수집하고 보고할 수 있으며 이를 Vertex AI Studio에서 시각화할 수 있습니다.

  1. Google Cloud 콘솔에서 조정된 모델의 세부정보를 보려면 Vertex AI Studio 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 조정 및 증류 테이블에서 측정항목을 보려는 조정된 모델의 이름을 클릭합니다.

    조정 측정항목은 Monitor 탭 아래에 표시됩니다.

모델 조정 측정항목

모델 조정 작업은 translation-llm-002에 대해 다음 조정 측정항목을 자동으로 수집합니다.

  • /train_total_loss: 학습 단계의 조정 데이터 세트 손실
  • /train_fraction_of_correct_next_step_preds: 학습 단계의 토큰 정확성. 단일 예측은 일련의 토큰으로 구성됩니다. 이 측정항목은 조정 데이터 세트의 정답과 비교할 때 예측된 토큰의 정확도를 측정합니다.
  • /train_num_predictions: 학습 단계에서 예측된 토큰 수

모델 검증 측정항목:

translation-llm-002에 대해 다음 유효성 검사 측정항목을 수집하도록 모델 조정 작업을 구성할 수 있습니다.

  • /eval_total_loss: 검증 단계의 검증 데이터 세트 손실
  • /eval_fraction_of_correct_next_step_preds: 검증 단계의 토큰 정확성. 단일 예측은 일련의 토큰으로 구성됩니다. 이 측정항목은 검증 데이터 세트의 정답과 비교할 때 예측된 토큰의 정확도를 측정합니다.
  • /eval_num_predictions: 검증 단계에서 예측된 토큰 수

조정 작업이 실행되기 시작하면 측정항목 시각화를 사용할 수 있습니다. 조정이 진행되면 실시간으로 업데이트됩니다. 조정 작업을 만들 때 검증 데이터 세트를 지정하지 않으면 조정 측정항목의 시각화만 제공됩니다.

다음 단계