코드 모델 조정

코드 모델은 지도 조정을 사용하여 조정할 수 있습니다. 지도 조정에서는 추론 중에 코드 생성 또는 코드 채팅 모델에서 원하는 출력 유형을 보여주는 라벨이 있는 예를 사용합니다. 코드 모델은 인간 피드백 기반 강화 학습(RLHF) 조정을 사용하는 조정을 지원하지 않습니다.

코드 모델 조정 사용 시나리오

모델이 일반적인 언어 및 코드 패턴에서 벗어나는 틈새 또는 특정 항목을 학습하도록 하려면 조정이 필요합니다. 다음은 code-bisoncodechat-bison 모델에 학습시킬 수 있는 항목의 예시입니다.

  • 커스텀 라이브러리용 코드 생성 방법. 커스텀 라이브러리의 라벨이 지정된 샘플로 코드 모델을 학습시켜 해당 커스텀 라이브러리와 관련된 코드를 생성하거나 코드에 대해 채팅할 수 있습니다.
  • 코드베이스 사용 방법. 코드베이스의 라벨이 지정된 샘플로 모델을 학습시키면 코드베이스의 고유 특성을 사용하는 코드 코드를 생성하거나 코드에 대해 채팅할 수 있습니다.
  • 프로그래밍 언어의 변형을 사용하여 코드를 생성하는 방법. 언어 변형의 라벨이 지정된 샘플로 코드 모델을 학습시키면 해당 언어 변형의 특정 규칙과 표준을 사용하는 코드를 생성하거나 코드에 대해 채팅할 수 있습니다.

이러한 시나리오에는 프롬프트 안내만으로는 캡처하기 어려운 코드 요구사항이 포함됩니다. 다음은 몇 가지 예시입니다.

코드 생성

  • 이 샘플 프롬프트 및 응답은 특정 데이터 세트로 작동하도록 code-bison을 조정하는 데 도움이 됩니다.

  • 이 샘플 프롬프트 및 응답은 code-bison이 Python을 사용하여 제품을 만들도록 하는 교육에 도움이 됩니다.

코드 채팅

  • 이 샘플 프롬프트 및 응답은 사용자가 특정 데이터 세트로 작업하는 방법을 배울 수 있도록 codechat-bison을 조정하는 데 도움이 됩니다.

  • 이 샘플 프롬프트 및 응답은 사용자가 채팅 세션 중에 Python을 사용하여 제품을 만드는 방법을 배울 수 있도록 codechat-bison을 조정하는 데 도움이 됩니다.

코드 모델 조정 데이터 세트 준비

코드 모델을 조정하는 데 사용되는 데이터 세트에는 모델이 수행하려는 작업과 일치하는 예시가 포함됩니다. 데이터 세트에는 최소 10개의 예시가 포함되어야 하지만 양질의 결과를 얻기 위해서는 최소 500개의 예시를 사용하는 것이 좋습니다. 예시를 많이 제공할수록 더 좋은 결과가 나옵니다.

코드 모델 조정을 위한 데이터 세트 형식

코드 생성 모델 및 코드 채팅 모델의 조정 데이터 세트는 JSON Line(JSONL) 형식이어야 합니다. 다음은 각 모델의 데이터 세트 형식 및 데이터 세트 예시에 관한 세부정보를 보여줍니다.

코드 생성

코드 생성 모델 조정 데이터 세트는 각 줄에 단일 조정 예시가 포함된 JSON Lines(JSONL) 형식이어야 합니다. 각 예시는 모델에 대한 프롬프트가 포함된 input_text 필드와 조정된 모델이 생성할 것으로 예상되는 응답 예시가 포함된 output_text 필드로 구성됩니다.

텍스트 생성 모델의 데이터 세트에 포함할 수 있는 예시의 최대 개수는 10,000개입니다.

코드 생성 모델 조정 데이터 세트의 예시

이 주제에서는 코드 생성 모델 조정 데이터 세트의 두 가지 예시를 보여줍니다. 다음은 코드 생성 조정 데이터 세트의 첫 번째 예시입니다.

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

다음은 코드 생성 조정 데이터 세트의 두 번째 예시입니다.

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

코드 채팅

코드 채팅 모델 조정 데이터 세트는 각 줄에 단일 조정 예시가 포함된 JSON Lines(JSONL) 형식이어야 합니다. 각 예시는 조정된 모델이 생성할 것으로 예상되는 예시 채팅 프롬프트와 응답을 포함하는 하나의 messages 필드로 구성됩니다.

코드 채팅 모델의 데이터 세트에 있는 예시에 포함할 수 있는 author 필드 수는 최대 10,000개입니다. 이 최댓값은 모든 예의 모든 messages에 있는 모든 author 필드의 합계입니다.

코드 채팅 모델 조정 데이터 세트의 예시

이 주제에서는 코드 채팅 모델 조정 데이터 세트의 두 가지 예시를 보여줍니다. 다음은 코드 채팅 조정 데이터 세트의 첫 번째 예시입니다.

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

다음은 코드 채팅 조정 데이터 세트의 두 번째 예시입니다.

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

프로덕션 데이터와 일관성 유지

데이터 세트의 예는 예상되는 프로덕션 트래픽과 일치해야 합니다. 데이터 세트에 특정 형식, 키워드, 안내 또는 정보가 포함된 경우 프로덕션 데이터의 형식이 동일한 방식으로 지정되어야 하며 동일한 안내를 포함해야 합니다.

예를 들어 데이터 세트의 예시에 "question:""context:"가 포함된 경우 프로덕션 트래픽 형식 지정 시 "question:""context:"가 데이터 세트 예시를 표시하는 것과 동일한 순서로 포함되어야 합니다. 컨텍스트를 제외하면 데이터 세트 예시에 정확한 질문이 있더라도 모델이 패턴을 인식하지 못합니다.

예시에 안내 포함

코드 생성과 같은 태스크의 경우 안내가 포함되지 않은 예시의 데이터 세트를 만들 수 있습니다. 그러나 데이터 세트의 예에 있는 안내를 제외하면 특히 소규모 데이터 세트의 경우 안내를 포함한 것보다 조정 후 성능이 저하됩니다.

안내 제외:

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

안내 포함:

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Cloud Storage에 조정 데이터 세트 업로드

조정 작업을 실행하려면 Cloud Storage 버킷에 하나 이상의 데이터 세트를 업로드해야 합니다. 새 Cloud Storage 버킷을 만들거나 기존 버킷을 사용하여 데이터 세트 파일을 저장할 수 있습니다. 버킷의 리전은 중요하지 않지만 모델을 조정하려는 동일한 Google Cloud 프로젝트에 있는 버킷을 사용하는 것이 좋습니다.

버킷이 준비되면 데이터 세트 파일을 버킷에 업로드합니다.

지도 조정 리전 설정

지도 조정 작업을 구성할 때 3개의 Google Cloud 리전 설정을 지정할 수 있습니다. 한 리전은 모델을 조정하는 파이프라인이 실행되는 장소입니다. 다른 리전은 모델 조정 작업이 실행되고 조정된 모델이 업로드되는 곳입니다.

파이프라인 작업 리전

파이프라인 작업 리전은 파이프라인 작업이 실행되는 리전입니다. 선택적인 모델 업로드 리전이 지정되지 않은 경우 모델이 파이프라인 작업 리전에 업로드되고 배포됩니다. 변환된 데이터 세트와 같은 중간 데이터는 파이프라인 작업 리전에 저장됩니다. 파이프라인 작업 리전에 사용할 수 있는 리전을 알아보려면 지원되는 파이프라인 작업 및 모델 업로드 리전을 참조하세요. 다음 방법 중 하나를 사용해서 파이프라인 작업 리전을 지정해야 합니다.

  • Vertex AI SDK를 사용하는 경우 조정할 모델을 나타내는 객체의 tune_model 메서드(예: TextGenerationModel.tune_model 메서드)에 tuning_job_location 매개변수를 사용하여 파이프라인 작업이 실행되는 리전을 지정할 수 있습니다.

  • pipelineJobs.create 메서드를 사용하여 POST 요청을 전송하여 지도 조정 작업을 만드는 경우 URL을 사용하여 파이프라인 작업이 실행되는 리전을 지정합니다. 다음 URL에서 PIPELINE_JOB_REGION의 두 인스턴스를 모두 파이프라인이 실행되는 리전으로 바꿉니다.

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Google Cloud 콘솔을 사용하여 지도 모델 조정 작업을 만드는 경우, 조정 작업을 만들 때 리전 제어에 파이프라인 작업 리전을 지정합니다. Google Cloud 콘솔에서 리전 컨트롤은 파이프라인 작업 리전과 모델 업로드 리전을 모두 지정합니다. Google Cloud 콘솔을 사용하여 지도 모델 조정 작업을 만들면 두 리전은 항상 동일합니다.

모델 업로드 리전

선택적인 tuned_model_location 매개변수를 사용하여 조정된 모델을 업로드할 위치를 지정합니다. 모델 업로드 리전을 지정하지 않으면 조정된 모델이 파이프라인 작업 리전에 업로드됩니다. 모델 업로드 리전에 지원되는 파이프라인 작업 및 모델 업로드 리전 중 하나를 사용할 수 있습니다. 다음 방법 중 하나를 사용해서 모델 업로드 리전을 지정할 수 있습니다.

  • Vertex AI SDK를 사용하는 경우 tuned_model_location 매개변수는 조정할 모델을 나타내는 객체의 tune_model 메서드(예: TextGenerationModel.tune_model 메서드)에 지정됩니다.

  • pipelineJobs 메서드를 사용하여 POST 요청을 전송하여 지도 모델 조정 작업을 만드는 경우 location 매개변수를 사용하여 모델 업로드를 지정할 수 있습니다.

  • Google Cloud 콘솔을 사용하여 지도 모델 조정 작업을 만드는 경우, 조정 작업을 만들 때 리전 제어에 모델 업로드 리전을 지정합니다. Google Cloud 콘솔에서 리전 컨트롤은 모델 업로드 리전과 파이프라인 작업 리전을 모두 지정합니다. Google Cloud 콘솔을 사용하여 지도 모델 조정 작업을 만들면 두 리전은 항상 동일합니다.

모델 조정 리전

모델 조정 리전에서 모델 조정 계산이 수행됩니다. 이 리전은 선택한 가속기 유형에 따라 결정됩니다. 가속기 유형에 TPU를 지정하면 모델 조정 계산이 europe-west4에서 수행됩니다. 가속기 유형에 GPU를 지정하면 모델 조정이 us-central1에서 수행됩니다.

지원되는 파이프라인 작업 및 모델 업로드 리전

다음 리전 중 하나를 사용해서 모델 업로드 리전을 지정하고 파이프라인 작업 리전을 지정할 수 있습니다.

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

코드 모델 조정 작업 만들기

Google Cloud 콘솔, API 또는 Python용 Vertex AI SDK를 사용하여 지도 조정 작업을 만들 수 있습니다. 모델 조정 구성에 대한 안내는 권장 구성을 참조하세요.

코드 생성 모델 조정 작업 만들기

다음은 Google Cloud 콘솔 또는 REST API 명령어를 사용하여 코드 생성 모델 조정 작업을 만드는 방법을 보여줍니다.

REST

코드 생성 모델 조정 작업을 만들려면 pipelineJobs 메서드를 사용하여 POST 요청을 전송합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNINGPIPELINE_DISPLAYNAME: pipelineJob의 표시 이름입니다.
  • OUTPUT_DIR: 파이프라인 아티팩트를 출력할 버킷의 URI입니다.
  • MODEL_DISPLAYNAME: pipelineJob에서 업로드(생성)한 모델의 표시 이름입니다.
  • DATASET_URI: 데이터 세트 파일의 URI입니다.
  • EVAL_DATASET_URI: (선택사항) 일괄 예측 및 평가를 위한 평가 데이터 세트가 포함된 JSONL 파일의 URI입니다. codechat-bison에는 평가가 지원되지 않습니다. 자세한 내용은 코드 모델 조정을 위한 데이터 세트 형식을 참조하세요. 평가 데이터 세트에는 10~250개 사이의 예시가 필요합니다.
  • EVAL_INTERVAL: (선택사항, 기본값 20) 각 평가 사이의 조정 단계 수입니다. 채팅 모델에는 평가 간격이 지원되지 않습니다. 평가가 전체 평가 데이터 세트에서 실행되므로 평가 간격이 좁을수록 조정 시간이 더 길어집니다. 예를 들어 steps가 200이고 EVAL_INTERVAL이 100인 경우에는 평가 측정항목에 데이터 포인트가 2개만 사용됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다.
  • PIPELINE_JOB_REGION: 파이프라인 조정 작업이 실행되는 리전입니다. 또한 조정된 모델이 업로드되는 기본 리전입니다. 모델을 다른 리전에 업로드하려면 location 매개변수를 사용하여 조정된 모델 업로드 리전을 지정합니다. 자세한 내용은 파이프라인 작업 리전을 참조하세요.
  • MODEL_UPLOAD_REGION: (선택사항) 조정된 모델이 업로드된 리전입니다. 모델 업로드 리전을 지정하지 않으면 조정된 모델이 파이프라인 작업이 실행되는 동일한 리전에 업로드됩니다. 자세한 내용은 모델 업로드 리전을 참조하세요.
  • ACCELERATOR_TYPE: (선택사항, 기본값 GPU) 모델 조정에 사용할 가속기 유형입니다. 유효한 옵션은 다음과 같습니다.
    • GPU: 조정에 8개의 A100 80GB GPU를 사용합니다. 할당량이 충분한지 확인합니다. GPU를 선택하면 VPC-SC가 지원됩니다. CMEK는 조정 위치 및 모델 업로드 위치가 us-centra1일 때 지원됩니다. 자세한 내용은 지도 조정 리전 설정을 참조하세요. GPU를 선택하면 모델 조정 계산이 us-central1 리전에서 수행됩니다.
    • TPU: 조정에 TPU v3 포드 코어 64개를 사용합니다. 할당량이 충분한지 확인합니다. CMEK는 지원되지 않지만 VPC-SC가 지원됩니다. TPU를 선택하면 모델 조정 계산이 europe-west4 리전에서 수행됩니다.
  • ENABLE_EARLY_STOPPING: (선택사항, 기본값 true) true로 설정된 경우 예측 토큰의 정확도로 측정되는 모델 성능이 평가 실행 사이에 충분히 향상되지 않을 경우 모든 조정 단계를 완료하기 전에 조정을 중지하는 boolean입니다. false이면 모든 조정 단계가 완료될 때까지 조정이 계속됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다. 채팅 모델에는 조기 중단 사용 설정이 지원되지 않습니다.
  • ENABLE_CHECKPOINT_SELECTION: 문자열 값으로 true, false, default일 수 있습니다. `true`로 설정된 경우 Vertex AI는 조정 작업 중에 생성된 모든 체크포인트 중에서 최고의 모델 평가 성능을 보유한 체크포인트를 선택하고 반환합니다. `false`로 설정하면 조정 작업 중에 마지막으로 생성된 체크포인트가 반환됩니다. 각 체크포인트는 조정 작업 중 모델의 스냅샷을 나타냅니다.
  • TENSORBOARD_RESOURCE_ID: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
  • ENCRYPTION_KEY_NAME: (선택사항) 데이터 암호화에 사용할 고객 관리 암호화 키(CMEK)의 정규화된 이름입니다. us-central1에서만 CMEK를 사용할 수 있습니다. us-central1을 사용하고 CMEK를 지정하지 않으면 Google이 소유하고 Google이 관리하는 키가 사용됩니다. 기본적으로 Google 소유 및 Google 관리 키는 다른 모든 사용 가능한 리전에서 사용됩니다. 자세한 내용은 CMEK 개요를 참조하세요.
  • STEPS: 모델 튜닝을 위해 실행할 단계 수입니다. 기본값은 300입니다. 배치 크기는 조정 위치 및 모델 크기에 따라 달라집니다. text-bison@002, chat-bison@002, code-bison@002, codechat-bison@002와 같은 8k 모델의 경우:
    • us-central1의 배치 크기는 8입니다.
    • europe-west4의 배치 크기는 24입니다.
    text-bison-32k, chat-bison-32k, code-bison-32k, codechat-bison-32k와 같은 32k 모델의 경우:
    • us-central1의 배치 크기는 8입니다.
    • europe-west4의 배치 크기는 8입니다.

    예를 들어 europe-west4에서 text-bison@002를 학습시키는 경우, 학습 데이터 세트에 240개의 예시가 있고, steps를 20으로 설정하면 학습 예시 수는 20단계와 배치 크기 24의 곱으로, 480개의 학습 단계가 됩니다. 이 경우 예시가 두 번 진행되므로 학습 프로세스에 2세대가 있습니다. us-central1에서 학습 데이터 세트에 240개의 예시가 있고 steps를 15로 설정하는 경우, 학습 예시의 수는 15 단계와 배치 크기 8의 곱으로, 120개의 학습 단계가 됩니다. 이 경우에는 학습 단계가 예시의 절반이므로 0.5세대가 있습니다.

  • LEARNING_RATE_MULTIPLIER : 각 반복의 보폭. 기본값은 1입니다.

HTTP 메서드 및 URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

JSON 요청 본문:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

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

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다. pipelineSpec은 공간 절약을 위해 잘렸습니다.

콘솔

Google Cloud 콘솔을 사용하여 감독 조정으로 코드 생성 또는 코드 채팅 모델을 조정하려면 다음 단계를 수행합니다.

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

    Vertex AI Studio로 이동

  2. 조정 및 정제 탭을 클릭합니다.
  3. 조정된 모델 만들기를 클릭합니다.
  4. 지도 조정을 클릭합니다.
  5. 모델 세부정보를 구성합니다.
    • 조정된 모델 이름: 조정된 모델의 이름을 입력합니다.
    • 기본 모델: 조정하려는 모델을 선택합니다.
    • 리전: 파이프라인 조정 작업이 실행되는 리전과 조정된 모델이 배포되는 리전을 선택합니다.
    • 출력 디렉터리: 모델을 조정할 때 아티팩트가 저장되는 Cloud Storage 위치를 입력합니다.
  6. 고급 설정을 구성하려면 고급 옵션을 확장합니다.
    • 학습 단계: 모델 조정을 위해 실행할 단계 수를 입력합니다. 기본값은 300입니다. 배치 크기는 조정 위치 및 모델 크기에 따라 달라집니다. text-bison@002, chat-bison@002, code-bison@002, codechat-bison@002와 같은 8k 모델의 경우:
      • us-central1의 배치 크기는 8입니다.
      • europe-west4의 배치 크기는 24입니다.
      text-bison-32k, chat-bison-32k, code-bison-32k, codechat-bison-32k와 같은 32k 모델의 경우:
      • us-central1의 배치 크기는 8입니다.
      • europe-west4의 배치 크기는 8입니다.

      예를 들어 europe-west4에서 text-bison@002를 학습시키는 경우, 학습 데이터 세트에 240개의 예시가 있고, steps를 20으로 설정하면 학습 예시 수는 20단계와 배치 크기 24의 곱으로, 480개의 학습 단계가 됩니다. 이 경우 예시가 두 번 진행되므로 학습 프로세스에 2세대가 있습니다. us-central1에서 학습 데이터 세트에 240개의 예시가 있고 steps를 15로 설정하는 경우, 학습 예시의 수는 15 단계와 배치 크기 8의 곱으로, 120개의 학습 단계가 됩니다. 이 경우에는 학습 단계가 예시의 절반이므로 0.5세대가 있습니다.

    • 학습률 배수: 각 반복의 보폭을 입력합니다. 기본값은 1입니다.
    • 가속기 유형: (선택사항) 모델 조정에 사용할 가속기 유형을 입력합니다. 유효한 옵션은 다음과 같습니다.
      • GPU: 조정에 8개의 A100 80GB GPU를 사용합니다. 할당량이 충분한지 확인합니다. GPU를 선택하면 VPC-SC가 지원됩니다. CMEK는 조정 위치 및 모델 업로드 위치가 us-centra1일 때 지원됩니다. 자세한 내용은 지도 조정 리전 설정을 참조하세요. GPU를 선택하면 모델 조정 계산이 us-central1 리전에서 수행됩니다.
      • TPU: 조정에 TPU v3 포드 코어 64개를 사용합니다. 할당량이 충분한지 확인합니다. CMEK는 지원되지 않지만 VPC-SC가 지원됩니다. TPU를 선택하면 모델 조정 계산이 europe-west4 리전에서 수행됩니다.
    • 텐서보드 인스턴스 추가: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
    • 암호화(선택사항) Google 소유 및 Google 관리 키 또는 고객 관리 암호화 키(CMEK)를 사용합니다. us-central1 리전에서만 암호화에 CMEK를 사용할 수 있습니다. 다른 모든 사용 가능한 리전에서는 Google 소유 및 Google 관리 키가 사용됩니다. 자세한 내용은 CMEK 개요를 참조하세요.
    • 서비스 계정(선택사항) 사용자 관리 서비스 계정을 선택합니다. 서비스 계정에 따라 서비스 코드로 액세스할 수 있는 Google Cloud 리소스가 결정됩니다. 서비스 계정을 선택하지 않으면 대부분의 모델에 적합한 권한이 포함된 서비스 에이전트가 사용됩니다.
  7. 계속을 클릭합니다.
  8. 데이터 세트 파일을 업로드하려면  Cloud Storage에 JSONL 파일 업로드를 선택합니다. 데이터 세트 파일이 Cloud Storage 버킷에 이미 있으면  Cloud Storage의 기존 JSONL 파일을 선택합니다.

    JSONL 파일 업로드

    • JSONL 파일 선택에서 찾아보기를 클릭하고 데이터 세트 파일을 선택합니다.
    • 데이터 세트 위치에서 찾아보기를 클릭하고 데이터 세트 파일을 저장할 Cloud Storage 버킷을 선택합니다.

    기존 JSONL 파일 사용

    Cloud Storage 파일 경로에서 찾아보기를 클릭한 후 데이터 세트 파일이 있는 Cloud Storage 버킷을 선택합니다.

  9. (선택사항) 조정된 모델을 평가하려면 모델 평가 사용 설정을 선택하고 모델 평가를 구성합니다.
    • 평가 데이터 세트: (선택사항) 일괄 예측 및 평가를 위한 평가 데이터 세트가 포함된 JSONL 파일의 URI입니다. codechat-bison에는 평가가 지원되지 않습니다. 자세한 내용은 코드 모델 조정을 위한 데이터 세트 형식을 참조하세요. 평가 데이터 세트에는 10~250개 사이의 예시가 필요합니다.
    • 평가 간격: (선택사항, 기본값: 20) 각 평가 간의 조정 단계 수입니다. 채팅 모델에는 평가 간격이 지원되지 않습니다. 평가가 전체 평가 데이터 세트에서 실행되므로 평가 간격이 좁을수록 조정 시간이 더 길어집니다. 예를 들어 steps가 200이고 EVAL_INTERVAL이 100인 경우에는 평가 측정항목에 데이터 포인트가 2개만 사용됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다.
    • 조기 중단 사용 설정: (선택사항, 기본값 true) true로 설정된 경우 예측 토큰의 정확도로 측정되는 모델 성능이 평가 실행 사이에 충분히 향상되지 않을 경우 모든 조정 단계를 완료하기 전에 조정을 중지하는 boolean입니다. false이면 모든 조정 단계가 완료될 때까지 조정이 계속됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다. 채팅 모델에는 조기 중단 사용 설정이 지원되지 않습니다.
    • 체크포인트 선택 사용 설정: 사용 설정된 경우 Vertex AI가 조정 작업 중 생성된 모든 체크포인트에서 모델 평가 성능이 최상인 체크포인트를 선택하고 반환합니다. 사용 중지된 경우 조정 작업 중 생성된 마지막 체크포인트가 반환됩니다. 각 체크포인트는 조정 작업 중 모델의 스냅샷을 나타냅니다.
    • 텐서보드 ID: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
  10. 조정 시작을 클릭합니다.

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.

from __future__ import annotations

import os

import vertexai
from vertexai.language_models import CodeGenerationModel

PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")


def tune_code_generation_model() -> CodeGenerationModel:
    # Initialize Vertex AI
    vertexai.init(project=PROJECT_ID, location="us-central1")

    model = CodeGenerationModel.from_pretrained("code-bison@002")

    # TODO(developer): Update the training data path
    tuning_job = model.tune_model(
        training_data="gs://cloud-samples-data/ai-platform/generative_ai/headline_classification.jsonl",
        tuning_job_location="europe-west4",
        tuned_model_location="us-central1",
    )

    print(tuning_job._status)
    # Example response:
    # ...
    # pipeline_job = aiplatform.PipelineJob.get('projects/1234567890/locations/europe-west4/pipelineJobs/tune...
    # PipelineState.PIPELINE_STATE_PENDING
    return model

코드 생성 모델을 조정하는 curl 명령어 예시

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

코드 채팅 모델 조정 작업 만들기

다음은 Google Cloud 콘솔 또는 REST API 명령어를 사용하여 코드 채팅 모델 조정 작업을 만드는 방법을 보여줍니다.

REST

코드 채팅 모델 조정 작업을 만들려면 pipelineJobs 메서드를 사용하여 POST 요청을 전송합니다.

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

  • PROJECT_ID: 프로젝트 ID
  • TUNINGPIPELINE_DISPLAYNAME: pipelineJob의 표시 이름입니다.
  • OUTPUT_DIR: 파이프라인 아티팩트를 출력할 버킷의 URI입니다.
  • PIPELINE_JOB_REGION: 파이프라인 조정 작업이 실행되는 리전입니다. 또한 조정된 모델이 업로드되는 기본 리전입니다. 모델을 다른 리전에 업로드하려면 location 매개변수를 사용하여 조정된 모델 업로드 리전을 지정합니다. 자세한 내용은 파이프라인 작업 리전을 참조하세요.
  • MODEL_UPLOAD_REGION: (선택사항) 조정된 모델이 업로드된 리전입니다. 모델 업로드 리전을 지정하지 않으면 조정된 모델이 파이프라인 작업이 실행되는 동일한 리전에 업로드됩니다. 자세한 내용은 모델 업로드 리전을 참조하세요.
  • ACCELERATOR_TYPE: (선택사항, 기본값 GPU) 모델 조정에 사용할 가속기 유형입니다. 유효한 옵션은 다음과 같습니다.
    • GPU: 조정에 8개의 A100 80GB GPU를 사용합니다. 할당량이 충분한지 확인합니다. GPU를 선택하면 VPC-SC가 지원됩니다. CMEK는 조정 위치 및 모델 업로드 위치가 us-centra1일 때 지원됩니다. 자세한 내용은 지도 조정 리전 설정을 참조하세요. GPU를 선택하면 모델 조정 계산이 us-central1 리전에서 수행됩니다.
    • TPU: 조정에 TPU v3 포드 코어 64개를 사용합니다. 할당량이 충분한지 확인합니다. CMEK는 지원되지 않지만 VPC-SC가 지원됩니다. TPU를 선택하면 모델 조정 계산이 europe-west4 리전에서 수행됩니다.
  • MODEL_DISPLAYNAME: pipelineJob에서 업로드(생성)한 모델의 표시 이름입니다.
  • DATASET_URI: 데이터 세트 파일의 URI입니다.
  • TENSORBOARD_RESOURCE_ID: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
  • ENCRYPTION_KEY_NAME: (선택사항) 데이터 암호화에 사용할 고객 관리 암호화 키(CMEK)의 정규화된 이름입니다. us-central1에서만 CMEK를 사용할 수 있습니다. us-central1을 사용하고 CMEK를 지정하지 않으면 Google이 소유하고 Google이 관리하는 키가 사용됩니다. 기본적으로 Google 소유 및 Google 관리 키는 다른 모든 사용 가능한 리전에서 사용됩니다. 자세한 내용은 CMEK 개요를 참조하세요.
  • DEFAULT_CONTEXT: 조정 데이터 세트의 모든 미세 조정 예시에 적용되는 컨텍스트입니다. 예시에서 context 필드를 설정하면 기본 컨텍스트가 재정의됩니다.
  • STEPS: 모델 튜닝을 위해 실행할 단계 수입니다. 기본값은 300입니다. 배치 크기는 조정 위치 및 모델 크기에 따라 달라집니다. text-bison@002, chat-bison@002, code-bison@002, codechat-bison@002와 같은 8k 모델의 경우:
    • us-central1의 배치 크기는 8입니다.
    • europe-west4의 배치 크기는 24입니다.
    text-bison-32k, chat-bison-32k, code-bison-32k, codechat-bison-32k와 같은 32k 모델의 경우:
    • us-central1의 배치 크기는 8입니다.
    • europe-west4의 배치 크기는 8입니다.

    예를 들어 europe-west4에서 text-bison@002를 학습시키는 경우, 학습 데이터 세트에 240개의 예시가 있고, steps를 20으로 설정하면 학습 예시 수는 20단계와 배치 크기 24의 곱으로, 480개의 학습 단계가 됩니다. 이 경우 예시가 두 번 진행되므로 학습 프로세스에 2세대가 있습니다. us-central1에서 학습 데이터 세트에 240개의 예시가 있고 steps를 15로 설정하는 경우, 학습 예시의 수는 15 단계와 배치 크기 8의 곱으로, 120개의 학습 단계가 됩니다. 이 경우에는 학습 단계가 예시의 절반이므로 0.5세대가 있습니다.

  • LEARNING_RATE_MULTIPLIER: 각 반복의 보폭. 기본값은 1입니다.

HTTP 메서드 및 URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

JSON 요청 본문:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

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

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 수신됩니다.
pipelineSpec은 공간 절약을 위해 잘렸습니다.

콘솔

Google Cloud 콘솔을 사용하여 감독 조정으로 코드 생성 또는 코드 채팅 모델을 조정하려면 다음 단계를 수행합니다.

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

    Vertex AI Studio로 이동

  2. 조정 및 정제 탭을 클릭합니다.
  3. 조정된 모델 만들기를 클릭합니다.
  4. 지도 조정을 클릭합니다.
  5. 모델 세부정보를 구성합니다.
    • 조정된 모델 이름: 조정된 모델의 이름을 입력합니다.
    • 기본 모델: 조정하려는 모델을 선택합니다.
    • 리전: 파이프라인 조정 작업이 실행되는 리전과 조정된 모델이 배포되는 리전을 선택합니다.
    • 출력 디렉터리: 모델을 조정할 때 아티팩트가 저장되는 Cloud Storage 위치를 입력합니다.
  6. 고급 설정을 구성하려면 고급 옵션을 확장합니다.
    • 학습 단계: 모델 조정을 위해 실행할 단계 수를 입력합니다. 기본값은 300입니다. 배치 크기는 조정 위치 및 모델 크기에 따라 달라집니다. text-bison@002, chat-bison@002, code-bison@002, codechat-bison@002와 같은 8k 모델의 경우:
      • us-central1의 배치 크기는 8입니다.
      • europe-west4의 배치 크기는 24입니다.
      text-bison-32k, chat-bison-32k, code-bison-32k, codechat-bison-32k와 같은 32k 모델의 경우:
      • us-central1의 배치 크기는 8입니다.
      • europe-west4의 배치 크기는 8입니다.

      예를 들어 europe-west4에서 text-bison@002를 학습시키는 경우, 학습 데이터 세트에 240개의 예시가 있고, steps를 20으로 설정하면 학습 예시 수는 20단계와 배치 크기 24의 곱으로, 480개의 학습 단계가 됩니다. 이 경우 예시가 두 번 진행되므로 학습 프로세스에 2세대가 있습니다. us-central1에서 학습 데이터 세트에 240개의 예시가 있고 steps를 15로 설정하는 경우, 학습 예시의 수는 15 단계와 배치 크기 8의 곱으로, 120개의 학습 단계가 됩니다. 이 경우에는 학습 단계가 예시의 절반이므로 0.5세대가 있습니다.

    • 학습률 배수: 각 반복의 보폭을 입력합니다. 기본값은 1입니다.
    • 가속기 유형: (선택사항) 모델 조정에 사용할 가속기 유형을 입력합니다. 유효한 옵션은 다음과 같습니다.
      • GPU: 조정에 8개의 A100 80GB GPU를 사용합니다. 할당량이 충분한지 확인합니다. GPU를 선택하면 VPC-SC가 지원됩니다. CMEK는 조정 위치 및 모델 업로드 위치가 us-centra1일 때 지원됩니다. 자세한 내용은 지도 조정 리전 설정을 참조하세요. GPU를 선택하면 모델 조정 계산이 us-central1 리전에서 수행됩니다.
      • TPU: 조정에 TPU v3 포드 코어 64개를 사용합니다. 할당량이 충분한지 확인합니다. CMEK는 지원되지 않지만 VPC-SC가 지원됩니다. TPU를 선택하면 모델 조정 계산이 europe-west4 리전에서 수행됩니다.
    • 텐서보드 인스턴스 추가: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
    • 암호화(선택사항) Google 소유 및 Google 관리 키 또는 고객 관리 암호화 키(CMEK)를 사용합니다. us-central1 리전에서만 암호화에 CMEK를 사용할 수 있습니다. 다른 모든 사용 가능한 리전에서는 Google 소유 및 Google 관리 키가 사용됩니다. 자세한 내용은 CMEK 개요를 참조하세요.
    • 서비스 계정(선택사항) 사용자 관리 서비스 계정을 선택합니다. 서비스 계정에 따라 서비스 코드로 액세스할 수 있는 Google Cloud 리소스가 결정됩니다. 서비스 계정을 선택하지 않으면 대부분의 모델에 적합한 권한이 포함된 서비스 에이전트가 사용됩니다.
  7. 계속을 클릭합니다.
  8. 데이터 세트 파일을 업로드하려면  Cloud Storage에 JSONL 파일 업로드를 선택합니다. 데이터 세트 파일이 Cloud Storage 버킷에 이미 있으면  Cloud Storage의 기존 JSONL 파일을 선택합니다.

    JSONL 파일 업로드

    • JSONL 파일 선택에서 찾아보기를 클릭하고 데이터 세트 파일을 선택합니다.
    • 데이터 세트 위치에서 찾아보기를 클릭하고 데이터 세트 파일을 저장할 Cloud Storage 버킷을 선택합니다.

    기존 JSONL 파일 사용

    Cloud Storage 파일 경로에서 찾아보기를 클릭한 후 데이터 세트 파일이 있는 Cloud Storage 버킷을 선택합니다.

  9. (선택사항) 조정된 모델을 평가하려면 모델 평가 사용 설정을 선택하고 모델 평가를 구성합니다.
    • 평가 데이터 세트: (선택사항) 일괄 예측 및 평가를 위한 평가 데이터 세트가 포함된 JSONL 파일의 URI입니다. codechat-bison에는 평가가 지원되지 않습니다. 자세한 내용은 코드 모델 조정을 위한 데이터 세트 형식을 참조하세요. 평가 데이터 세트에는 10~250개 사이의 예시가 필요합니다.
    • 평가 간격: (선택사항, 기본값: 20) 각 평가 간의 조정 단계 수입니다. 채팅 모델에는 평가 간격이 지원되지 않습니다. 평가가 전체 평가 데이터 세트에서 실행되므로 평가 간격이 좁을수록 조정 시간이 더 길어집니다. 예를 들어 steps가 200이고 EVAL_INTERVAL이 100인 경우에는 평가 측정항목에 데이터 포인트가 2개만 사용됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다.
    • 조기 중단 사용 설정: (선택사항, 기본값 true) true로 설정된 경우 예측 토큰의 정확도로 측정되는 모델 성능이 평가 실행 사이에 충분히 향상되지 않을 경우 모든 조정 단계를 완료하기 전에 조정을 중지하는 boolean입니다. false이면 모든 조정 단계가 완료될 때까지 조정이 계속됩니다. 이 매개변수를 사용하려면 evaluation_data_uri를 설정해야 합니다. 채팅 모델에는 조기 중단 사용 설정이 지원되지 않습니다.
    • 체크포인트 선택 사용 설정: 사용 설정된 경우 Vertex AI가 조정 작업 중 생성된 모든 체크포인트에서 모델 평가 성능이 최상인 체크포인트를 선택하고 반환합니다. 사용 중지된 경우 조정 작업 중 생성된 마지막 체크포인트가 반환됩니다. 각 체크포인트는 조정 작업 중 모델의 스냅샷을 나타냅니다.
    • 텐서보드 ID: (선택사항) Vertex AI 텐서보드 인스턴스의 ID입니다. Vertex AI 텐서보드 인스턴스는 조정 작업이 완료된 후 실험을 만드는 데 사용됩니다. Vertex AI 텐서보드 인스턴스는 조정 파이프라인과 동일한 리전에 있어야 합니다.
  10. 조정 시작을 클릭합니다.

코드 채팅 모델을 조정하는 curl 명령어 예시

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

다음 표에는 태스크별로 코드 모델을 조정하기 위한 권장 구성이 나와 있습니다.

작업 데이터 세트에 있는 예의 개수 학습 단계
코드 생성 500+ 200-1000
코드 채팅 500+ 200-1000

학습 단계의 경우 특정 데이터 세트에서 최적의 성능을 얻기 위해 두 개 이상의 값을 시도할 수 있습니다(예: 100, 200, 500).

조정된 모델 목록 보기

Google Cloud 콘솔 또는 Python용 Vertex AI SDK를 사용하여 현재 프로젝트에서 조정된 코드 모델 목록을 볼 수 있습니다.

조정된 코드 모델 목록(콘솔) 보기

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

Vertex AI Model Registry로 이동

조정된 코드 생성 모델 목록(SDK) 보기

다음 샘플 코드는 Python용 Vertex AI SDK를 사용하여 현재 프로젝트에서 조정된 코드 생성 모델을 나열합니다.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

조정된 코드 채팅 모델 목록(SDK) 보기

다음 샘플 코드는 Python용 Vertex AI SDK를 사용하여 현재 프로젝트에서 조정된 코드 채팅 모델을 나열합니다.

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

조정된 모델 로드

Vertex AI SDK for Python을 사용하여 조정된 코드 모델을 로드할 수 있습니다.

조정된 코드 생성 모델 로드

다음 샘플 코드는 Python용 Vertex AI SDK를 사용하여 조정된 코드 생성 모델을 로드합니다. 샘플 코드에서 TUNED_MODEL_NAME을 조정된 모델의 정규화된 리소스 이름으로 바꿉니다. 이 이름은 projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID 형식입니다. Vertex AI Model Registry에서 조정된 모델의 모델 ID를 찾을 수 있습니다.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

조정된 코드 채팅 모델 로드

다음 샘플 코드는 Python용 Vertex AI SDK를 사용하여 조정된 코드 채팅 모델을 로드합니다.

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

측정항목 조정 및 평가

모델 조정 작업을 구성하여 모델 조정 및 모델 평가 측정항목을 수집하고 보고할 수 있습니다. 그런 후 Vertex AI 텐서보드를 사용하여 시각화할 수 있습니다.

모델 조정 측정항목

chat-bison, code-bison, codechat-bison, text-bison에 대해 다음 조정 측정항목을 수집하도록 모델 조정 작업을 구성할 수 있습니다.
  • /train_total_loss: 학습 단계의 조정 데이터 세트 손실
  • /train_fraction_of_correct_next_step_preds: 학습 단계의 토큰 정확성. 단일 예측은 일련의 토큰으로 구성됩니다. 이 측정항목은 조정 데이터 세트의 정답과 비교할 때 예측된 토큰의 정확도를 측정합니다.
  • /train_num_predictions: 학습 단계에서 예측된 토큰 수

모델 평가 측정항목

code-bisontext-bison에 대해 다음 평가 측정항목을 수집하도록 모델 조정 작업을 구성할 수 있습니다.

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

모델 조정 작업이 완료된 후 측정항목 시각화를 사용할 수 있습니다. 조정 작업을 만들 때 평가 데이터 세트가 아닌 Vertex AI 텐서보드 인스턴스 ID만 지정하면 조정 측정항목의 시각화만 사용할 수 있습니다.

할당량

us-central1의 조정 작업에는 8개의 A100 80GB GPU가 사용됩니다.

europe-west4의 조정 작업에는 TPU v3 pod 커스텀 모델 학습 리소스의 64개 코어를 사용합니다.

할당량이 충분하지 않거나 Google Cloud 프로젝트에서 여러 개의 동시 조정 작업을 실행하려는 경우 추가 할당량을 요청해야 합니다.

  • us-central1의 경우 Restricted image training Nvidia A100 80 GB GPUs per region 리전에서 us-central1에 대한 요청을 8의 배수로 제출합니다.

  • europe-west4의 경우 europe-west4 리전에서 Restricted image training TPU V3 pod cores per region에 대한 요청을 64의 배수로 제출합니다.

다음 단계

  • 더 많은 모델, 고급 기능, 최대 8시간의 파일 텍스트 변환 기능은 Speech-to-Text를 참고하세요.