데이터 기반 프롬프트 옵티마이저

이 문서에서는 데이터 기반 옵티마이저를 사용하여 프롬프트 집합에 대한 시스템 안내를 개선해 프롬프트 성능을 자동으로 최적화하는 방법을 설명합니다.

데이터 기반 옵티마이저를 사용하면 시스템 안내나 개별 프롬프트를 수동으로 다시 작성하지 않고도 프롬프트를 대규모로 빠르게 개선할 수 있습니다. 이는 특히 한 모델에 작성된 시스템 안내와 프롬프트를 다른 모델에서 사용하려는 경우에 유용합니다.

프롬프트 최적화 예시

예를 들어 문맥에 맞는 정보를 참조하여 요리 관련 질문에 답하는 프롬프트 집합의 시스템 안내를 최적화하려면 데이터 기반 옵티마이저를 사용하면 됩니다. 이 태스크를 완료하려면 다음과 유사한 입력을 준비합니다.

시스템 안내

You are a professional chef. Your goal is teaching how to cook healthy cooking recipes to your apprentice.

Given a question from your apprentice and some context, provide the correct answer to the question.
Use the context to return a single and correct answer with some explanation.

프롬프트 템플릿

Question: {input_question}
Facts: {input_context}

샘플 프롬프트

input_question input_context
맛과 부드러움을 극대화하면서 건강에 해로 성분 형성을 최소화하는 붉은 육류와 돼지고기 조리 기법에는 어떤 것이 있나요? 안전을 위해 내부 온도 화씨 145도(섭씨 63도)로 붉은 고기와 돼지고기를 조리해야 합니다. 레몬 주스나 식초와 같은 산성 식재료에 고기를 재워두면 질긴 근육 섬유가 분해되어 부드러워집니다. 굽기와 팬에 굽기와 같은 고열 조리법은 맛있는 갈변과 캐러멜화를 만들 수 있지만 유해 성분을 생성할 수 있는 탄화를 방지하는 것이 중요합니다.
첨가당이나 인공 식재료를 사용하지 않고도 단백질 쉐이크에 맛과 영양을 더하는 창의적인 방법에는 무엇이 있나요? 시금치나 케일과 같은 잎이 많은 푸른 채소를 넣으면 맛을 크게 바꾸지 않고도 쉐이크의 영양가를 높일 수 있는 좋은 방법입니다. 일반 우유 대신 무가당 아몬드 밀크나 코코넛 워터를 사용하면 각각 은은한 단맛 및 건강한 지방이나 전해질을 보충할 수 있습니다. 쉐이크를 과도하게 블렌딩하면 실제로 뜨거워질 수 있다는 사실을 알고 계셨나요? 시원하고 상큼한 맛을 유지하려면 블렌딩 시간을 짧게 하고 필요하면 블렌더를 잠시 쉬게 하세요.

최적화된 시스템 안내

As a highly skilled chef with a passion for healthy cooking, you love sharing your knowledge with
aspiring chefs. Today, a culinary intern approaches you with a question about healthy cooking. Given
the intern's question and some facts, provide a clear, concise, and informative answer that will help
the intern excel in their culinary journey.

최적화 작동 방식

데이터 기반 옵티마이저는 다음 매개변수를 사용합니다.

  • 최적화 모드: 데이터 기반 옵티마이저가 시스템 안내를 최적화할지, 시스템 안내에 추가할 샘플 프롬프트를 몇 개의 샷 예시로 선택할지, 아니면 둘 다 선택할지 지정합니다.
  • 평가 측정항목: 데이터 기반 옵티마이저가 시스템 안내를 최적화하거나 샘플 프롬프트를 선택하는 데 사용하는 측정항목입니다.
  • 타겟 모델: 데이터 기반 옵티마이저가 시스템 안내를 최적화하고 샘플 프롬프트를 선택하는 Google 모델입니다.

데이터 기반 옵티마이저를 실행하면 샘플 프롬프트를 반복적으로 평가하고 시스템 안내를 다시 작성하여 타겟 모델에 가장 적합한 평가 점수를 생성하는 버전을 찾는 맞춤 학습 작업을 실행하여 선택사항에 따라 시스템 안내가 최적화됩니다.

작업이 끝나면 데이터 기반 옵티마이저에서 평가 점수와 함께 최적화된 시스템 안내를 출력합니다.

평가 측정항목

데이터 기반 옵티마이저는 평가 측정항목을 사용하여 시스템 명령어를 최적화하고 샘플 프롬프트를 선택합니다. 표준 평가 측정항목을 사용하거나 자체 맞춤 평가 측정항목을 정의할 수 있습니다. 참고: 모든 평가 측정항목은 점수가 높을수록 성능이 우수하다는 속성이 있어야 합니다(MUST).

한 번에 여러 측정항목을 사용할 수 있습니다. 하지만 맞춤 측정항목은 한 번에 하나만 사용할 수 있습니다. 표준 측정항목과 맞춤 측정항목을 함께 사용하는 경우 측정항목 중 하나만 맞춤 측정항목으로 설정할 수 있습니다. 나머지는 표준 측정항목이어야 합니다.

측정항목을 하나씩 또는 조합하여 지정하는 방법을 알아보려면 프롬프트 템플릿 및 시스템 지침 만들기의 SDK 탭에 있는 EVALUATION_METRIC_PARAMETERS를 참고하세요.

맞춤 평가 측정항목

커스텀 측정항목은 표준 측정항목이 애플리케이션에 적합하지 않은 경우에 유용합니다. 데이터 기반 옵티마이저는 한 번에 하나의 맞춤 측정항목만 지원합니다.

커스텀 측정항목을 만드는 방법을 알아보려면 커스텀 측정항목 만들기를 참고하세요.

표준 평가 측정항목

데이터 기반 옵티마이저는 맞춤 평가 측정항목을 지원하며 다음 평가 측정항목도 추가로 지원합니다.

측정항목 유형 사용 사례 측정항목 설명
모델 기반 요약 summarization_quality 참조할 텍스트 본문을 고려하여 질문에 답하는 모델의 기능을 설명합니다.
질의 응답 question_answering_correctness* 질문에 올바르게 답변하는 모델의 능력을 설명합니다.
question_answering_quality 참조할 텍스트 본문이 주어지면 질문에 답할 수 있는 모델의 능력을 설명합니다.
일관성 coherence 일관된 응답을 제공하는 모델의 능력을 설명하고 생성된 텍스트가 논리적으로 작성되고 상식적인지 측정합니다.
안전 safety 모델의 안전 수준, 즉 응답에 안전하지 않은 텍스트가 포함되어 있는지 여부를 설명합니다.
유창성 fluency 모델의 언어 숙련도를 설명합니다.
그라운딩 groundedness 입력 텍스트에만 포함된 정보를 제공하거나 참조하는 모델의 기능을 설명합니다.
혜성 comet** 참조에 대한 번역 품질에 관한 모델의 기능을 설명합니다.
MetricX metricx** 번역 품질에 대한 모델의 기능을 설명합니다.
컴퓨팅 기반 도구 사용 및 함수 호출 tool_call_valid* 유효한 도구 호출을 예측하는 모델의 기능을 설명합니다.
tool_name_match* 올바른 도구 이름으로 도구 호출을 예측하는 모델의 기능을 설명합니다. 첫 번째 도구 호출만 검사됩니다.
tool_parameter_key_match* 올바른 파라미터 이름으로 도구 호출을 예측하는 모델의 기능을 설명합니다.
tool_parameter_kv_match* 올바른 파라미터 이름과 키 값으로 도구 호출을 예측하는 모델의 기능을 설명합니다.
일반 텍스트 생성 bleu* 한 자연어에서 다른 자연어로 번역된 예측의 품질을 평가하는 알고리즘 결과를 보유합니다. 예측 품질은 예측 파라미터와 참조 파라미터 간의 일치를 기준으로 평가됩니다.
exact_match* 예측 파라미터가 참조 파라미터와 정확하게 일치하는지 계산합니다.
rouge_1* 제공된 예측 파라미터를 참조 파라미터와 비교하는 데 사용됩니다.
rouge_2*
rouge_l*
rouge_l_sum*

* question_answering_correctness 또는 계산 기반 평가를 사용하여 프롬프트를 최적화하려면 다음 중 하나를 수행해야 합니다.

  • 프롬프트에 대한 정답을 표시하는 변수를 프롬프트 템플릿에 추가합니다.
  • 프롬프트에 대한 정답이 없지만 이전에 Google 모델과 함께 프롬프트를 사용하여 타겟팅된 결과를 얻은 경우 정답을 추가하는 대신 source_model 파라미터를 구성에 추가할 수 있습니다. source_model 파라미터가 설정되면 데이터 기반 옵티마이저가 소스 모델에서 샘플 프롬프트를 실행하여 정답을 자동으로 생성합니다.

** comet 또는 metricx를 사용하여 프롬프트를 최적화하려면 데이터에서 소스 텍스트의 해당 필드 이름을 지정하는 translation_source_field_name 매개변수를 구성에 제공해야 합니다. 또한 MetricX 값이 클수록 좋다는 속성을 따르도록 0 (가장 나쁨)에서 25 (가장 좋음) 사이로 수정되었습니다.

시작하기 전에

Compute Engine 기본 서비스 계정에 프롬프트를 최적화하는 데 필요한 권한이 있는지 확인하려면 관리자에게 Compute Engine 기본 서비스 계정에 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 커스텀 역할이나 다른 사전 정의된 역할을 통해 Compute Engine 기본 서비스 계정에 필요한 권한을 부여할 수도 있습니다.

프롬프트 최적화

다음과 같은 방법으로 프롬프트를 최적화할 수 있습니다.

프롬프트를 최적화하려면 사용할 방법을 선택한 후 다음 섹션에 자세히 설명된 단계를 완료합니다.

  1. 프롬프트 템플릿 및 시스템 안내 만들기
  2. 샘플 프롬프트 준비
  3. 선택사항: 맞춤 측정항목 만들기
  4. 구성 만들기
  5. 프롬프트 최적화 작업 실행
  6. 결과 분석 및 반복

프롬프트 템플릿 및 시스템 안내 만들기

프롬프트 템플릿은 교체 가능한 변수를 통해 모든 프롬프트 형식을 정의합니다. 프롬프트 템플릿을 사용하여 프롬프트를 최적화하면 변수가 프롬프트 데이터 세트의 데이터로 대체됩니다.

프롬프트 템플릿 변수는 다음 요구사항을 충족해야 합니다.

  • 변수를 중괄호로 묶어야 합니다.
  • 변수 이름에 공백이나 대시가 포함되어서는 안 됩니다. -
  • 멀티모달 입력을 나타내는 변수에는 변수 뒤에 MIME_TYPE 문자열이 포함되어야 합니다.

    @@@MIME_TYPE
    

    MIME_TYPE을 타겟 모델에서 지원하는 이미지, 동영상, 오디오 또는 문서 MIME 유형으로 바꿉니다.

다음 방법 중 하나를 사용하여 프롬프트 템플릿과 시스템 안내를 만듭니다.

노트북

노트북을 통해 데이터 기반 옵티마이저를 실행하려면 다음을 수행하여 시스템 안내와 프롬프트 템플릿을 만듭니다.

  1. Colab Enterprise에서 Vertex AI 프롬프트 옵티마이저 노트북을 엽니다.

    Vertex AI 프롬프트 옵티마이저 노트북으로 이동

  2. 프롬프트 템플릿 및 시스템 안내 만들기 섹션에서 다음을 수행합니다.

    1. SYSTEM_INSTRUCTION 필드에 시스템 안내를 입력합니다. 예를 들면 다음과 같습니다.

      Based on the following images and articles respond to the questions.'\n' Be concise,
      and answer \"I don't know\" if the response cannot be found in the provided articles or images.
      
    2. PROMPT_TEMPLATE 필드에 프롬프트 템플릿을 입력합니다. 예를 들면 다음과 같습니다.

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
      
    3. question_answering_correctness 또는 계산 기반 평가를 사용하여 프롬프트를 최적화하려면 다음 중 하나를 수행해야 합니다.

    • 프롬프트 템플릿에 {target} 변수를 추가하여 프롬프트의 정답 응답을 나타냅니다. 예를 들면 다음과 같습니다.

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • 프롬프트에 대한 정답이 없지만 이전에 Google 모델과 함께 프롬프트를 사용하여 타겟팅된 결과를 얻은 경우 정답을 추가하는 대신 source_model 파라미터를 구성에 추가할 수 있습니다. source_model 파라미터가 설정되면 데이터 기반 옵티마이저가 소스 모델에서 샘플 프롬프트를 실행하여 정답 응답을 자동으로 생성합니다.

SDK

노트북을 사용하지 않고 SDK를 통해 데이터 기반 옵티마이저를 실행하려면 다음을 수행하여 프롬프트 템플릿 및 시스템 안내의 텍스트 파일을 만듭니다.

  1. 시스템 안내 텍스트 파일을 만듭니다.

  2. 텍스트 파일에서 시스템 안내를 텍스트 파일에 정의합니다. 예를 들면 다음과 같습니다.

    Based on the following images and articles respond to the questions.'\n' Be concise, and answer \"I don't know\" if the response cannot be found in the provided articles or images.
    
  3. 프롬프트 템플릿 텍스트 파일을 만듭니다.

  4. 텍스트 파일에서 변수를 하나 이상 포함하는 프롬프트 템플릿을 정의합니다. 예를 들면 다음과 같습니다.

    Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}
    
  5. question_answering_correctness 또는 계산 기반 평가를 사용하여 프롬프트를 최적화하려면 다음 중 하나를 수행해야 합니다.

    • 프롬프트 템플릿에 {target} 변수를 추가하여 프롬프트의 정답 응답을 나타냅니다. 예를 들면 다음과 같습니다.

      Article 1:\n\n{article_1}\n\nImage 1:\n\n{image_1} @@@image/jpeg\n\nQuestion: {question}\n\n Answer: {target}
      
    • 프롬프트에 대한 정답이 없지만 이전에 Google 모델과 함께 프롬프트를 사용하여 타겟팅된 결과를 얻은 경우 정답을 추가하는 대신 source_model 파라미터를 구성에 추가할 수 있습니다. source_model 파라미터가 설정되면 데이터 기반 옵티마이저가 소스 모델에서 샘플 프롬프트를 실행하여 정답 응답을 자동으로 생성합니다.

샘플 프롬프트 준비

데이터 기반 옵티마이저에서 최상의 결과를 얻으려면 샘플 프롬프트를 50~100개 사용합니다.

  • 샘플 프롬프트가 5개만 있어도 이 도구를 효과적으로 사용할 수 있습니다.
  • 가장 좋은 샘플에는 타겟 모델이 저조하게 수행하는 예시와 타겟 모델이 잘 수행하는 예시가 포함됩니다.

샘플 프롬프트에는 프롬프트 템플릿의 변수를 대체하는 데이터가 포함되어 있습니다. JSONL 또는 CSV 파일을 사용하여 샘플 프롬프트를 저장할 수 있습니다.

JSONL 파일

  1. JSONL 파일을 만듭니다.
  2. JSONL 파일에서 각 변수를 대체하는 프롬프트 데이터를 추가합니다. 예를 들면 다음과 같습니다.

    {"article_1": "The marine life …", "image_1": "gs://path_to_image", "Question": "What are some most effective ways to reduce ocean pollution?", "target": "The articles and images don't answer this question."}
    
    {"article_1": "During the year …", "image_1": "gs://path_to_image", "Question": "Who was the president in 2023?", "target": "Joe Biden"}
    
  3. JSONL 파일을 Cloud Storage 버킷에 업로드합니다.

CSV 파일

  1. CSV 파일을 만듭니다.
  2. 첫 번째 행에 프롬프트 템플릿의 변수를 추가합니다.
  3. 다음 행에 각 변수를 대체하는 샘플 데이터를 추가합니다.
  4. CSV 파일을 Cloud Storage 버킷에 업로드합니다.

선택사항: 맞춤 측정항목 만들기

.

다음 단계에 따라 커스텀 측정항목을 만듭니다.

  1. requirements.txt라는 텍스트 파일을 만듭니다.

  2. requirements.txt 파일에서 커스텀 평가 측정항목 함수에 필요한 라이브러리를 정의합니다. 모든 함수에는 functions-framework 패키지가 필요합니다.

    예를 들어 ROUGE-L을 계산하는 커스텀 측정항목의 requirements.txt 파일은 다음과 유사하게 보입니다.

    functions-framework==3.*
    rouge-score
    
  3. main.py Python 파일을 만듭니다.

  4. main.py 파일에서 커스텀 평가 함수를 작성합니다. 함수에서 다음을 허용해야 합니다.

    • HTTP POST 요청
    • LLM의 출력인 response와 프롬프트 데이터 세트에 제공된 경우 프롬프트에 대한 정답인 reference이 포함된 JSON 입력입니다.

    예를 들어 ROUGE-L을 계산하는 커스텀 측정항목의 main.py 파일은 다음과 유사하게 보입니다.

    from typing import Any
    import json
    import functions_framework
    from rouge_score import rouge_scorer
    
    # Register an HTTP function with the Functions Framework
    @functions_framework.http
    def main(request):
       request_json = request.get_json(silent=True)
       if not request_json:
           raise ValueError('Can not find request json.')
    
       """Extract 'response' and 'reference' from the request payload. 'response'
       represents the model's response, while 'reference' represents the ground
       truth response."""
       response = request_json['response']
       reference = request_json['reference']
    
       # Compute ROUGE-L F-measure
       scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=True)
       scores = scorer.score(reference, response)
       final_score = scores['rougeL'].fmeasure
    
       # Return the custom score in the response
       return json.dumps({
           # The following key is the CUSTOM_METRIC_NAME that you pass to the job
           'custom_accuracy': final_score,
           # The following key is optional
           'explanation': 'ROUGE_L F-measure between reference and response',
       })
    
  5. gcloud functions deploy 명령어를 실행하여 커스텀 평가 함수를 Cloud Run 함수로 배포합니다.

    gcloud functions deploy FUNCTION_NAME \
       --project PROJECT_ID \
       --gen2 \
       --memory=2Gb \
       --concurrency=6 \
       --min-instances 6 \
       --region=REGION \
       --runtime="python310" \
       --source="." \
       --entry-point main \
       --trigger-http \
       --timeout=3600 \
       --quiet
    

    다음을 바꿉니다.

    • FUNCTION_NAME: 커스텀 평가 측정항목의 이름입니다.
    • PROJECT_ID: 프로젝트 ID입니다.
    • REGION: 함수를 배포하려는 리전입니다. 타겟 모델을 사용하는 것과 동일한 리전이어야 합니다.

구성 만들기

데이터 기반 옵티마이저 구성은 프롬프트 최적화 작업에 설정할 매개변수를 지정합니다.

다음 옵션 중 하나를 사용하여 구성을 만듭니다.

노트북

노트북을 통해 데이터 기반 옵티마이저를 실행하려면 다음을 수행하여 구성을 만듭니다.

  1. Colab Enterprise에서 데이터 기반 옵티마이저 노트북을 엽니다.

    Vertex AI 프롬프트 옵티마이저 노트북으로 이동

  2. 프로젝트 설정 구성 섹션에서 다음을 수행합니다.

    1. PROJECT_ID 필드에 프로젝트 ID를 입력합니다.
    2. LOCATION 필드에 데이터 기반 옵티마이저를 실행할 위치를 입력합니다.
    3. OUTPUT_PATH 필드에 데이터 기반 옵티마이저가 최적화된 시스템 안내 또는 샘플 몇 개를 작성할 Cloud Storage 버킷의 URI를 입력합니다. 예를 들면 gs://bucket-name/output-path입니다.
    4. INPUT_PATH 필드에 Cloud Storage 버킷의 샘플 프롬프트 URI를 입력합니다. 예를 들면 gs://bucket-name/sample-prompts.jsonl입니다.
  3. 최적화 설정 구성 섹션에서 다음을 수행합니다.

    1. TARGET_MODEL 필드에 프롬프트를 최적화할 모델을 입력합니다.
    2. THINKING_BUDGET 필드에 프롬프트를 최적화하려는 타겟 모델의 사고 예산을 입력합니다. 기본값은 -1입니다. 이는 비사고 모델의 경우 사고가 없음을 의미하고 Gemini-2.5와 같은 사고 모델의 경우 자동 사고를 의미합니다. 수동 예산 설정에 대해 알아보려면 생각하기를 참고하세요.
    3. OPTIMIZATION_MODE에 사용하려는 최적화 모드를 입력합니다. instruction, demonstration 또는 instruction_and_demo 중 하나여야 합니다.
    4. EVAL_METRIC 필드에 프롬프트를 최적화할 평가 측정항목을 입력합니다.
    5. 선택사항: SOURCE_MODEL 필드에 시스템 안내와 프롬프트가 이전에 사용된 Google 모델을 입력합니다. source_model 파라미터가 설정되면 데이터 기반 옵티마이저는 소스 모델에서 샘플 프롬프트를 실행하여 정답이 필요한 평가 측정항목의 정답을 자동으로 생성합니다. 이전에 Google 모델로 프롬프트를 실행하지 않았거나 타겟 결과를 달성하지 못한 경우 대신 프롬프트에 정답을 추가합니다. 자세한 내용은 이 문서의 프롬프트 및 시스템 안내 만들기 섹션을 참조하세요.
  4. 선택사항: 고급 최적화 설정 구성 섹션에서 구성에 선택적 파라미터를 추가할 수 있습니다.

  5. 선택적 파라미터 보기
    • NUM_INST_OPTIMIZATION_STEPS 필드에 데이터 기반 옵티마이저가 명령어 최적화 모드에서 사용하는 반복 횟수를 입력합니다. 이 값을 늘리면 런타임이 선형적으로 증가합니다. 10~20 사이의 정수여야 합니다. 설정하지 않으면 기본값은 10입니다.
    • NUM_DEMO_OPTIMIZATION_STEPS 필드에 데이터 기반 옵티마이저에서 평가하는 데모 수를 입력합니다. demonstrationinstruction_and_demo 최적화 모드와 함께 사용됩니다. 10~30 사이의 정수여야 합니다. 설정하지 않으면 기본값은 10입니다.
    • NUM_DEMO_PER_PROMPT 필드에 프롬프트당 생성되는 데모 수를 입력합니다. 2에서 전체 샘플 프롬프트 수 - 1 사이의 정수여야 합니다. 설정하지 않은 경우 기본값은 3입니다.
    • TARGET_MODEL_QPS 필드에 데이터 기반 옵티마이저에서 타겟 모델에 전송하는 초당 쿼리 수 (QPS)를 입력합니다. 이 값을 늘리면 런타임이 선형적으로 감소합니다. 3.0 이상이지만 타겟 모델에 설정된 QPS 할당량보다 작은 부동 소수점 수여야 합니다. 설정하지 않은 경우 기본값은 3.0입니다.
    • SOURCE_MODEL_QPS 필드에 데이터 기반 옵티마이저에서 소스 모델에 전송하는 초당 쿼리 수(QPS)를 입력합니다. 3.0 이상이지만 소스 모델에 설정된 QPS 할당량보다 작은 부동 소수점 수여야 합니다. 설정하지 않으면 기본값은 3.0입니다.
    • EVAL_QPS 필드에 데이터 기반 옵티마이저에서 생성형 AI 평가 서비스 또는 Cloud Run 함수에 전송하는 초당 쿼리 수 (QPS)를 입력합니다.
      • 모델 기반 측정항목의 경우 3.0 이상인 부동 소수점 수여야 합니다. 설정하지 않으면 기본값은 3.0입니다.
      • 커스텀 측정항목의 경우 3.0 이상인 부동 소수점 수여야 합니다. 이 값에 따라 데이터 기반 옵티마이저가 커스텀 측정항목 Cloud Run Functions를 호출하는 속도가 결정됩니다.
    • 평가 측정항목을 두 개 이상 사용하려면 다음을 수행합니다.
      1. EVAL_METRIC_1 필드에 사용하려는 평가 측정항목을 입력합니다.
      2. EVAL_METRIC_1_WEIGHT 필드에 데이터 기반 옵티마이저가 최적화를 실행할 때 사용할 가중치를 입력합니다.
      3. EVAL_METRIC_2 필드에 사용하려는 평가 측정항목을 입력합니다.
      4. EVAL_METRIC_2_WEIGHT 필드에 데이터 기반 옵티마이저가 최적화를 실행할 때 사용할 가중치를 입력합니다.
      5. 원하는 경우 EVAL_METRIC_3 필드에 사용하려는 평가 측정항목을 입력합니다.
      6. EVAL_METRIC_3_WEIGHT 필드에 데이터 기반 옵티마이저가 최적화를 실행할 때 사용할 가중치를 입력할 수 있습니다.
      7. METRIC_AGGREGATION_TYPE 필드에 데이터 기반 옵티마이저가 최적화를 실행할 때 사용할 가중치를 입력합니다.
    • PLACEHOLDER_TO_VALUE 필드에 시스템 안내의 변수를 대체하는 정보를 입력합니다. 이 플래그에 포함된 정보는 데이터 기반 옵티마이저에 의해 최적화되지 않습니다.
    • RESPONSE_MIME_TYPE 필드에 타겟 모델에서 사용하는 MIME 응답 유형을 입력합니다. text/plain 또는 application/json 중 하나여야 합니다. 설정하지 않은 경우 기본값은 text/plain입니다.
    • TARGET_LANGUAGE 필드에 시스템 안내 언어를 입력합니다. 설정하지 않으면 기본값은 영어입니다.

SDK

SDK를 통해 데이터 기반 옵티마이저를 실행하려면 다음을 실행하여 프롬프트 최적화에 사용할 파라미터가 포함된 JSON 파일 만들기를 생성합니다.

  1. 프롬프트를 최적화하는 데 사용할 파라미터가 있는 JSON 파일을 만듭니다. 각 구성 파일에는 다음 파라미터가 필요합니다.

    {
     "project": "PROJECT_ID",
     "system_instruction": "SYSTEM_INSTRUCTION",
     "prompt_template": "PROMPT_TEMPLATE",
     "target_model": "TARGET_MODEL",
     "thinking_budget": "THINKING_BUDGET,
     EVALUATION_METRIC_PARAMETERS,
     "optimization_mode": "OPTIMIZATION_MODE",
     "input_data_path": "SAMPLE_PROMPT_URI",
     "output_path": "OUTPUT_URI"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • SYSTEM_INSTRUCTION: 최적화할 시스템 안내입니다.
    • PROMPT_TEMPLATE: 프롬프트 템플릿입니다.
    • TARGET_MODEL: 프롬프트를 최적화할 모델입니다.
    • THINKING_BUDGET: 프롬프트를 최적화하려는 타겟 모델의 사고 예산입니다. 기본값은 -1입니다. 이는 비사고 모델의 경우 사고가 없음을, Gemini-2.5와 같은 사고 모델의 경우 자동 사고를 의미합니다. 수동 예산 설정에 대해 알아보려면 생각하기를 참고하세요.
    • EVALUATION_METRIC_PARAMETERS: 지정하는 파라미터는 사용 중인 평가 측정항목의 수와 측정항목이 표준인지 맞춤설정인지에 따라 다릅니다.

      단일 표준 측정항목

      단일 표준 평가 측정항목을 사용하는 경우 다음 파라미터를 사용합니다.

       "eval_metric": "EVALUATION_METRIC",
       

      EVALUATION_METRIC을 프롬프트를 최적화하려는 측정항목으로 바꿉니다.

      단일 커스텀 측정항목

      단일 커스텀 평가 측정항목을 사용하는 경우 다음 파라미터를 사용합니다.

      "eval_metric": "custom_metric",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      다음을 바꿉니다.

      • CUSTOM_METRIC_NAME: final_score에 해당하는 키에 의해 정의된 측정항목 이름입니다. 예를 들면 custom_accuracy입니다.
      • FUNCTION_NAME: 이전에 배포한 Cloud Run 함수의 이름입니다.

      여러 표준 측정항목

      표준 평가 측정항목을 여러 개 사용하는 경우 다음 파라미터를 사용하세요.

      "eval_metrics_types": [EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      

      다음을 바꿉니다.

      • EVALUATION_METRIC_LIST: 평가 측정항목 목록입니다. 배열이어야 합니다. 예를 들면 "bleu", "summarization_quality"입니다.
      • EVAL_METRICS_WEIGHTS: 각 측정항목에 대한 가중치입니다. 배열이어야 하며 EVALUATION_METRIC_LIST와 길이가 같아야 합니다.
      • METRIC_AGGREGATION_TYPE: 평가 측정항목에 사용되는 집계 유형입니다. weighted_sum 또는 weighted_average 중 하나여야 합니다. 설정하지 않은 경우 기본값은 weighted_sum입니다.

      여러 표준 및 커스텀 측정항목

      단일 맞춤 측정항목과 하나 이상의 표준 측정항목이 혼합된 여러 평가 측정항목을 사용하는 경우 다음 파라미터를 사용하세요.

      "eval_metrics_types": ["custom_metric", EVALUATION_METRIC_LIST],
      "eval_metrics_weights": [EVAL_METRICS_WEIGHTS],
      "aggregation_type": "METRIC_AGGREGATION_TYPE",
      "custom_metric_name": "CUSTOM_METRIC_NAME",
      "custom_metric_cloud_function_name": "FUNCTION_NAME",
      

      다음을 바꿉니다.

      • EVALUATION_METRIC_LIST: 표준 평가 측정항목 목록입니다. 배열이어야 합니다. 예를 들면 "bleu", "summarization_quality"입니다.
      • EVAL_METRICS_WEIGHTS: 각 측정항목에 대한 가중치입니다. 배열이어야 합니다.
      • METRIC_AGGREGATION_TYPE: 평가 측정항목에 사용되는 집계 유형입니다. weighted_sum 또는 weighted_average 중 하나여야 합니다. 설정하지 않은 경우 기본값은 weighted_sum입니다.
      • CUSTOM_METRIC_NAME: final_score에 해당하는 키에 의해 정의된 측정항목 이름입니다. 예를 들면 custom_accuracy입니다.
      • FUNCTION_NAME: 이전에 배포한 Cloud Run 함수의 이름입니다.
    • OPTIMIZATION_MODE: 최적화 모드입니다. instruction, demonstration 또는 instruction_and_demo 중 하나여야 합니다.

    • SAMPLE_PROMPT_URI: Cloud Storage 버킷의 샘플 프롬프트 URI입니다. 예를 들면 gs://bucket-name/sample-prompts.jsonl입니다.

    • OUTPUT_URI: 데이터 기반 옵티마이저가 최적화된 시스템 안내 또는 샘플을 작성할 Cloud Storage 버킷의 URI입니다. 예를 들면 gs://bucket-name/output-path입니다.

  2. 구성 파일에 선택적 파라미터를 추가할 수 있습니다.

    선택적 파라미터는 다음과 같은 5가지 카테고리로 분류됩니다.

    • 최적화 프로세스 파라미터. 이러한 매개변수는 최적화의 품질에 직접적인 영향을 미치는 전체 최적화 프로세스(예: 실행 시간 및 최적화 반복 횟수)를 제어합니다.
    • 모델 선택 및 위치 파라미터. 이러한 파라미터는 데이터 기반 옵티마이저에서 사용하는 모델과 이러한 모델을 사용하는 위치를 지정합니다.
    • 지연 시간(QPS) 파라미터. 이 파라미터는 QPS를 제어하여 최적화 프로세스의 속도에 영향을 미칩니다.
    • 기타. 프롬프트의 구조와 콘텐츠를 제어하는 기타 파라미터입니다.

      선택적 파라미터 보기
      "num_steps": NUM_INST_OPTIMIZATION_STEPS,
      "num_demo_set_candidates": "NUM_DEMO_OPTIMIZATION_STEPS,
      "demo_set_size": NUM_DEMO_PER_PROMPT,
      "target_model_location": "TARGET_MODEL_LOCATION",
      "source_model": "SOURCE_MODEL",
      "source_model_location": "SOURCE_MODEL_LOCATION",
      "target_model_qps": TARGET_MODEL_QPS,
      "eval_qps": EVAL_QPS,
      "source_model_qps": SOURCE_MODEL_QPS,
      "response_mime_type": "RESPONSE_MIME_TYPE",
      "language": "TARGET_LANGUAGE",
      "placeholder_to_content": "PLACEHOLDER_TO_CONTENT",
      "data_limit": DATA_LIMIT
      

      다음을 바꿉니다.

      • 최적화 프로세스 파라미터:

        • NUM_INST_OPTIMIZATION_STEPS: 데이터 기반 옵티마이저가 명령 최적화 모드에서 사용하는 반복 횟수입니다. 이 값을 늘리면 런타임이 선형적으로 증가합니다. 10~20 사이의 정수여야 합니다. 설정하지 않으면 기본값은 10입니다.
        • NUM_DEMO_OPTIMIZATION_STEPS: 데이터 기반 옵티마이저에서 평가하는 데모 수입니다. demonstrationinstruction_and_demo 최적화 모드와 함께 사용됩니다. 2과 전체 샘플 프롬프트 수 - 1 사이의 정수여야 합니다. 설정하지 않으면 기본값은 10입니다.
        • NUM_DEMO_PER_PROMPT: 프롬프트당 생성된 데모 수입니다. 3~6 사이의 정수여야 합니다. 설정하지 않은 경우 기본값은 3입니다.
      • 모델 선택 및 위치 파라미터:

        • TARGET_MODEL_LOCATION: 타겟 모델을 실행할 위치입니다. 설정하지 않은 경우 기본값은 us-central1입니다.
        • SOURCE_MODEL: 시스템 안내와 메시지가 이전에 사용된 Google 모델입니다. source_model 파라미터가 설정되면 데이터 기반 옵티마이저는 소스 모델에서 샘플 프롬프트를 실행하여 정답이 필요한 평가 측정항목의 정답을 자동으로 생성합니다. 이전에 Google 모델로 프롬프트를 실행하지 않았거나 타겟 결과를 달성하지 못한 경우 대신 프롬프트에 정답을 추가합니다. 자세한 내용은 이 문서의 프롬프트 및 시스템 안내 만들기 섹션을 참조하세요.
        • SOURCE_MODEL_LOCATION: 소스 모델을 실행할 위치입니다. 설정하지 않은 경우 기본값은 us-central1입니다.
      • 지연 시간(QPS) 파라미터:

        • TARGET_MODEL_QPS: 데이터 기반 옵티마이저에서 타겟 모델에 전송하는 초당 쿼리 수(QPS)입니다. 이 값을 늘리면 런타임이 선형적으로 감소합니다. 3.0 이상이지만 타겟 모델에 설정된 QPS 할당량보다 작은 부동 소수점 수여야 합니다. 설정하지 않으면 기본값은 3.0입니다.
        • EVAL_QPS: 데이터 기반 옵티마이저에서 생성형 AI 평가 서비스 또는 Cloud Run 함수에 전송하는 초당 쿼리 수 (QPS)입니다.
          • 모델 기반 측정항목의 경우 3.0 이상인 부동 소수점 수여야 합니다. 설정하지 않으면 기본값은 3.0입니다.
          • 커스텀 측정항목의 경우 3.0 이상인 부동 소수점 수여야 합니다. 이 값에 따라 데이터 기반 옵티마이저가 커스텀 측정항목 Cloud Run Functions를 호출하는 속도가 결정됩니다.
        • SOURCE_MODEL_QPS: 데이터 기반 옵티마이저에서 소스 모델에 전송하는 초당 쿼리 수(QPS)입니다. 3.0 이상이지만 소스 모델에 설정된 QPS 할당량보다 작은 부동 소수점 수여야 합니다. 설정하지 않은 경우 기본값은 3.0입니다.
      • 기타 매개변수:

        • RESPONSE_MIME_TYPE: 타겟 모델에서 사용하는 MIME 응답 유형입니다. text/plain 또는 application/json 중 하나여야 합니다. 설정하지 않은 경우 기본값은 text/plain입니다.
        • TARGET_LANGUAGE: 시스템 안내 언어입니다. 설정하지 않은 경우 기본값은 영어입니다.
        • PLACEHOLDER_TO_CONTENT: 시스템 안내 변수를 대체하는 정보입니다. 데이터 기반 프롬프트 옵티마이저는 이 플래그에 포함된 정보를 최적화하지 않습니다.
        • DATA_LIMIT: 유효성 검사에 사용된 데이터의 양입니다. 런타임은 이 값에 따라 선형적으로 증가합니다. 5~100 사이의 정수여야 합니다. 설정하지 않으면 기본값은 100입니다.
  3. JSON 파일을 Cloud Storage 버킷에 업로드합니다.

프롬프트 옵티마이저 실행

다음 옵션 중 하나를 사용하여 데이터 기반 옵티마이저를 실행합니다.

노트북

다음을 실행하여 노트북을 통해 데이터 기반 옵티마이저를 실행합니다.

  1. Colab Enterprise에서 Vertex AI 프롬프트 옵티마이저 노트북을 엽니다.

    데이터 기반 옵티마이저 노트북으로 이동

  2. 프롬프트 옵티마이저 실행 섹션에서 play_circle 셀 실행을 클릭합니다.

    데이터 기반 옵티마이저가 실행됩니다.

REST

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

  • LOCATION: Vertex AI 프롬프트 옵티마이저를 실행할 위치입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • JOB_NAME: Vertex AI 프롬프트 옵티마이저 작업 이름입니다.
  • PATH_TO_CONFIG: Cloud Storage 버킷의 구성 파일 URI입니다. 예를 들면 gs://bucket-name/configuration.json입니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "n1-standard-4"
        },
        "replicaCount": 1,
        "containerSpec": {
          "imageUri": "us-docker.pkg.dev/vertex-ai-restricted/builtin-algorithm/apd:preview_v1_0",
          "args": ["--config=PATH_TO_CONFIG""]
        }
      }
    ]
  }
}

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

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/customJobs"

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/customJobs" | Select-Object -Expand Content

응답은 다음과 유사합니다.

SDK

Colab 또는 노트북에 다음 코드 섹션을 추가하여 SDK를 통해 데이터 기반 최적화 도구를 실행합니다.

다음을 바꿉니다.

  • LOCATION: 데이터 기반 최적화 도구를 실행할 위치입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • PROJECT_NUMBER: 프로젝트 번호입니다. Cloud 콘솔에서 확인할 수 있습니다.
  • PATH_TO_CONFIG: Cloud Storage의 구성 파일 URI입니다. 예를 들면 gs://bucket-name/configuration.json입니다.
# Authenticate
from google.colab import auth
auth.authenticate_user(project_id=PROJECT_ID)

# Set the Service Account
SERVICE_ACCOUNT = f"{PROJECT_NUMBER}-compute@developer.gserviceaccount.com"

# Import Vertex AI SDK and Setup
import vertexai
vertexai.init(project=PROJECT_ID, location=LOCATION)

#Create the Vertex AI Client
client = vertexai.Client(project=PROJECT_ID, location=LOCATION)

# Setup the job dictionary
vapo_config = {
  'config_path': PATH_TO_CONFIG,
  'service_account': SERVICE_ACCOUNT,
  'wait_for_completion': True,
}

#Start the Vertex AI Prompt Optimizer
client = client.prompt_optimizer.optimize(method="vapo", config=vapo_config)

최적화가 완료되면 구성에 지정된 출력 위치에서 출력 아티팩트를 검사합니다.

결과 분석 및 반복

데이터 기반 옵티마이저를 실행한 후 다음 옵션 중 하나를 사용하여 작업 진행 상황을 검토합니다.

노트북

노트북을 통해 데이터 기반 옵티마이저 결과를 보려면 다음을 수행합니다.

  1. Vertex AI 프롬프트 옵티마이저 노트북을 엽니다.

  2. 결과 검사 섹션에서 다음을 수행합니다.

    1. RESULT_PATH 필드에 데이터 기반 옵티마이저를 구성하여 결과를 작성할 Cloud Storage 버킷의 URI를 추가합니다. 예를 들면 gs://bucket-name/output-path입니다.

    2. play_circle 셀 실행을 클릭합니다.

콘솔

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 학습 파이프라인 페이지로 이동합니다.

    학습 파이프라인으로 이동

  2. 커스텀 작업 탭을 클릭합니다. 목록에 데이터 기반 옵티마이저의 맞춤 학습 작업이 상태와 함께 표시됩니다.

작업이 완료되면 다음을 수행하여 최적화를 검토합니다.

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. Cloud Storage 버킷 이름을 클릭합니다.

  3. 프롬프트를 평가하는 데 사용한 최적화 모드(instruction 또는 demonstration)와 이름이 같은 폴더로 이동합니다. instruction_and_demo 모드를 사용한 경우 두 폴더 모두 표시됩니다. instruction 폴더에는 시스템 안내 최적화의 결과가, demonstration 폴더에는 demonstration 최적화의 결과와 최적화된 시스템 안내가 포함됩니다.

    폴더에는 다음과 같은 파일이 포함됩니다.

    • config.json: Vertex AI 프롬프트 옵티마이저에서 사용한 전체 구성입니다.
    • templates.json: 데이터 기반 옵티마이저에서 생성한 각 시스템 안내 또는 몇 가지 샷 집합과 평가 점수입니다.
    • eval_results.json: 생성된 시스템 안내 또는 몇 가지 샷 예시 집합과 해당 평가 점수 각각에 대한 타겟 모델의 응답입니다.
    • optimized_results.json: 성능이 가장 우수한 시스템 안내 또는 몇 가지 샷 예시와 평가 점수입니다.
  4. 최적화된 시스템 안내를 보려면 optimized_results.json 파일을 봅니다.

권장사항

  • 프리뷰 모델은 global 리전을 통해서만 지원되며 Vertex 맞춤 작업은 global을 리전으로 지원하지 않습니다. 따라서 VAPO를 사용하여 미리보기 모델을 타겟 모델로 최적화하지 마세요.

  • GA 모델의 경우 사용자는 데이터 상주 요구사항을 준수하기 위해 global 대신 us-central1 또는 europe-central2와 같은 리전별 위치를 선택할 수 있습니다.

다음 단계