계산 기반 평가 수행

Vertex AI에서 기반 모델 및 조정된 생성형 AI 모델의 성능을 평가할 수 있습니다. 모델은 제공한 평가 데이터 세트에 따라 측정항목 집합을 사용해서 평가됩니다. 이 페이지에서는 평가 파이프라인 서비스를 통한 계산 기반 모델 평가의 작동 방식, 평가 데이터 세트를 만들고 형식을 지정하는 방법, Google Cloud 콘솔, Vertex AI API 또는 Python용 Vertex AI SDK를 사용하여 평가를 수행하는 방법을 설명합니다.

계산 기반 모델 평가 작동 방식

모델 성능을 평가하려면 먼저 프롬프트와 정답 쌍이 포함된 평가 데이터 세트를 만듭니다. 각 쌍에서 프롬프트는 평가하려는 입력이고, 정답은 해당 프롬프트의 이상적인 응답입니다. 평가 중에는 각 평가 데이터 세트 쌍에 있는 프롬프트가 모델에 전달되어 출력을 생성합니다. 모델에서 생성된 출력과 평가 데이터 세트의 정답을 사용해서 평가 측정항목을 계산합니다.

평가에 사용되는 측정항목 유형은 평가 중인 태스크에 따라 달라집니다. 다음 표에서는 각 태스크를 평가하는 데 사용되는 지원되는 태스크와 측정항목을 보여줍니다.

태스크 측정항목
분류 Micro-F1, Macro-F1, Per class F1
요약 ROUGE-L
질의 응답 완전 일치 검색
텍스트 생성 BLEU, ROUGE-L

지원되는 모델

모델 평가는 text-bison의 기본 및 미세 조정된 버전에서 지원됩니다.

평가 데이터 세트 준비

모델 평가에 사용되는 평가 데이터 세트에는 평가하려는 태스크와 일치하는 프롬프트 및 정답 쌍이 포함됩니다. 데이터 세트에는 최소 하나의 프롬프트와 정답 쌍이 포함되어야 하지만 의미 있는 측정항목을 얻으려면 최소 10개 이상의 쌍이 권장됩니다. 예시를 많이 제공할수록 더욱 의미 있는 결과를 얻을 수 있습니다.

데이터 세트 형식

평가 데이터 세트는 JSON Lines(JSONL) 형식이어야 합니다. 여기서 각 줄에는 각각 input_textoutput_text 필드에 지정된 단일 프롬프트와 정답 쌍이 포함됩니다. input_text 필드에는 평가하려는 프롬프트가 포함되고 output_text 필드에는 프롬프트에 대한 이상적인 응답이 포함됩니다.

input_text의 최대 토큰 길이는 8,192이고 output_text의 최대 토큰 길이는 1,024입니다.

Cloud Storage에 평가 데이터 세트 업로드

새 Cloud Storage 버킷을 만들거나 기존 버킷을 사용하여 데이터 세트 파일을 저장할 수 있습니다. 버킷은 모델과 동일한 리전에 있어야 합니다.

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

모델 평가 수행

REST API 또는 Google Cloud 콘솔을 사용하여 모델을 평가할 수 있습니다.

REST

모델 평가 작업을 만들려면 pipelineJobs 메서드를 사용하여 POST 요청을 전송합니다.

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

  • PROJECT_ID: 파이프라인 구성요소를 실행하는 Google Cloud 프로젝트입니다.
  • PIPELINEJOB_DISPLAYNAME: pipelineJob의 표시 이름입니다.
  • LOCATION: 파이프라인 구성요소를 실행하는 리전입니다. 현재 us-central1만 지원됩니다.
  • DATASET_URI: 참조 데이터 세트의 Cloud Storage URI입니다. 하나 이상의 URI를 지정할 수 있습니다. 이 매개변수는 와일드 카드를 지원합니다. 이 매개변수에 대한 자세한 내용은 InputConfig를 참조하세요.
  • OUTPUT_DIR: 평가 출력을 저장할 Cloud Storage URI입니다.
  • MODEL_NAME: 다음과 같이 조정된 모델 리소스 또는 게시자 모델을 지정합니다.
    • 게시자 모델: publishers/google/models/MODEL@MODEL_VERSION

      예: publishers/google/models/text-bison@001

    • 조정된 모델: projects/PROJECT_NUMBER/locations/LOCATION/models/ENDPOINT_ID

      예: projects/123456789012/locations/us-central1/models/1234567890123456789

    평가 작업은 모델 또는 해당 리소스의 기존 배포에 영향을 주지 않습니다.

  • EVALUATION_TASK: 모델을 평가하려는 태스크입니다. 평가 작업은 해당 특정 태스크와 관련된 측정항목 집합을 계산합니다. 허용되는 값은 다음과 같습니다.
    • summarization
    • question-answering
    • text-generation
    • classification
  • INSTANCES_FORMAT: 데이터 세트의 형식입니다. 현재 jsonl만 지원됩니다. 이 매개변수에 대한 자세한 내용은 InputConfig를 참조하세요.
  • PREDICTIONS_FORMAT: 평가 출력의 형식입니다. 현재 jsonl만 지원됩니다. 이 매개변수에 대한 자세한 내용은 InputConfig를 참조하세요.
  • MACHINE_TYPE: (선택사항) 평가 작업을 실행할 머신 유형입니다. 기본값은 e2-highmem-16입니다. 지원되는 머신 유형 목록은 머신 유형을 참조하세요.
  • SERVICE_ACCOUNT: (선택사항) 평가 작업을 실행하는 데 사용할 서비스 계정입니다. 커스텀 서비스 계정을 만드는 방법은 세부 권한으로 서비스 계정 구성을 참조하세요. 지정하지 않으면 Vertex AI 커스텀 코드 서비스 에이전트가 사용됩니다.
  • NETWORK: (선택사항) 평가 작업을 피어링할 Compute Engine 네트워크의 정규화된 이름입니다. 네트워크 이름의 형식은 projects/PROJECT_NUMBER/global/networks/NETWORK_NAME입니다. 이 필드를 지정하는 경우 Vertex AI에 대한 VPC 네트워크 피어링을 사용해야 합니다. 지정하지 않으면 평가 작업이 네트워크와 피어링되지 않습니다.
  • KEY_NAME: (선택사항) 고객 관리 암호화 키(CMEK)의 이름입니다. 구성된 경우 제공된 암호화 키를 사용해서 평가 작업으로 생성된 리소스가 암호화됩니다. 키 이름의 형식은 projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY입니다. 키는 평가 작업과 동일한 리전에 있어야 합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "location": "LOCATION",
      "batch_predict_gcs_source_uris": ["gs://DATASET_URI"],
      "batch_predict_gcs_destination_output_uri": "gs://OUTPUT_DIR",
      "model_name": "MODEL_NAME",
      "evaluation_task": "EVALUATION_TASK",
      "batch_predict_instances_format": "INSTANCES_FORMAT",
      "batch_predict_predictions_format: "PREDICTIONS_FORMAT",
      "machine_type": "MACHINE_TYPE",
      "service_account": "SERVICE_ACCOUNT",
      "network": "NETWORK",
      "encryption_spec_key_name": "KEY_NAME"
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}

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

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

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

curl 명령어 예시

PROJECT_ID=myproject
REGION=us-central1
MODEL_NAME=publishers/google/models/text-bison@001
TEST_DATASET_URI=gs://my-gcs-bucket-uri/dataset.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output

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" -d \
$'{
  "displayName": "evaluation-llm-text-generation-pipeline",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "location": "'${REGION}'",
      "batch_predict_gcs_source_uris": ["'${TEST_DATASET_URI}'"],
      "batch_predict_gcs_destination_output_uri": "'${OUTPUT_DIR}'",
      "model_name": "'${MODEL_NAME}'",
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/vertex-evaluation/pipeline-templates/evaluation-llm-text-generation-pipeline/1.0.1"
}'

Python

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


from google.auth import default
import vertexai
from vertexai.preview.language_models import (
    EvaluationTextClassificationSpec,
    TextGenerationModel,
)

# Set credentials for the pipeline components used in the evaluation task
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

def evaluate_model(
    project_id: str,
    location: str,
) -> object:
    """Evaluate the performance of a generative AI model."""

    vertexai.init(project=project_id, location=location, credentials=credentials)

    # Create a reference to a generative AI model
    model = TextGenerationModel.from_pretrained("text-bison@002")

    # Define the evaluation specification for a text classification task
    task_spec = EvaluationTextClassificationSpec(
        ground_truth_data=[
            "gs://cloud-samples-data/ai-platform/generative_ai/llm_classification_bp_input_prompts_with_ground_truth.jsonl"
        ],
        class_names=["nature", "news", "sports", "health", "startups"],
        target_column_name="ground_truth",
    )

    # Evaluate the model
    eval_metrics = model.evaluate(task_spec=task_spec)
    print(eval_metrics)

    return eval_metrics

Console

Google Cloud 콘솔을 사용하여 모델 평가 작업을 만들려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 Vertex AI Model Registry 페이지로 이동합니다.

    Vertex AI Model Registry로 이동

  2. 평가하려는 모델의 이름을 클릭합니다.
  3. 평가 탭에서 평가 만들기를 클릭하고 다음과 같이 구성합니다.
    • 목표: 평가하려는 태스크를 선택합니다.
    • 대상 열 또는 필드: (분류만 해당) 예측 대상 열을 입력합니다. 예: ground_truth.
    • 소스 경로: 평가 데이터 세트의 URI를 입력하거나 선택합니다.
    • 출력 형식: 평가 출력의 형식을 입력합니다. 현재 jsonl만 지원됩니다.
    • Cloud Storage 경로: 평가 출력을 저장할 URI를 입력하거나 선택합니다.
    • 클래스 이름: (분류만 해당) 사용 가능한 클래스 이름의 목록을 입력합니다.
    • 컴퓨팅 노드 수: 평가 작업을 실행할 컴퓨팅 노드 수를 입력합니다.
    • 머신 유형: 평가 작업을 실행하는 데 사용할 머신 유형을 선택합니다.
  4. 평가 시작을 클릭합니다.

평가 결과 보기

평가 작업을 만들 때 지정한 Cloud Storage 출력 디렉터리에서 평가 결과를 찾을 수 있습니다. 파일 이름은 evaluation_metrics.json입니다.

조정된 모델의 경우 다음을 수행하여 Google Cloud 콘솔에서 평가 결과를 볼 수도 있습니다.

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

    Vertex AI Model Registry로 이동

  2. 모델의 이름을 클릭하여 평가 측정항목을 확인합니다.

  3. 평가 탭에서 보려는 평가 실행 이름을 클릭합니다.

다음 단계