조정 및 평가로 모델 성능 향상

이 문서에서는 BigQuery ML 원격 모델을 참조하는 Gemini Enterprise Agent Platform gemini-2.0-flash-001 모델을 만드는 방법을 설명합니다. 그런 다음 지도 조정을 사용하여 새 학습 데이터로 모델을 조정한 후 모델을 ML.EVALUATE 함수로 평가합니다.

조정은 모델의 예상 동작을 프롬프트에서 간결하게 정의하기 어렵거나 프롬프트가 예상 결과를 충분히 일관되게 생성하지 않는 경우와 같이 호스팅된 Agent Platform 모델을 맞춤설정해야 하는 시나리오를 해결하는 데 도움이 될 수 있습니다. 지도 조정은 다음과 같은 방식으로 모델에 영향을 줍니다.

  • 모델이 특정 응답 스타일(예: 더 간결하거나 더 상세함)을 반환하도록 안내합니다.
  • 특정 캐릭터로서 프롬프트에 응답하는 등 새로운 행동을 모델에 학습시킵니다.
  • 모델이 새 정보를 사용하여 자체적으로 업데이트되도록 합니다.

이 튜토리얼의 목표는 모델이 제공된 정답 콘텐츠와 최대한 유사한 스타일과 콘텐츠의 텍스트를 생성하도록 하는 것입니다.

필요한 역할

이 튜토리얼을 실행하려면 다음 Identity and Access Management(IAM) 역할이 필요합니다.

  • BigQuery 데이터 세트, 연결, 모델을 만들고 사용하기: BigQuery 관리자(roles/bigquery.admin)
  • 연결의 서비스 계정에 권한 부여: 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin)

이러한 사전 정의된 역할에는 이 문서의 작업을 수행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

  • 데이터 세트 만들기: bigquery.datasets.create
  • 테이블을 만듭니다. bigquery.tables.create
  • 연결을 만들고, 위임하고, 사용하기: bigquery.connections.*
  • 기본 연결 설정: bigquery.config.*
  • 서비스 계정 권한 설정: resourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy
  • 모델을 만들고 추론을 실행하기:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

시작하기 전에

  1. 콘솔의 프로젝트 선택기 페이지에서 프로젝트를 선택하거나 만듭니다. Google Cloud Google Cloud

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할을 부여받은 프로젝트를 선택할 수 있습니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기.

    프로젝트 선택기로 이동

  2. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  3. BigQuery, BigQuery Connection, Agent Platform API, Compute Engine API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 serviceusage.services.enable 권한이 포함된 서비스 사용량 관리자 IAM 역할(roles/serviceusage.serviceUsageAdmin)이 필요합니다. 역할 부여 방법 알아보기.

    API 사용 설정

비용

이 문서에서는 비용이 청구될 수 있는 구성요소를 사용합니다 Google Cloud.

  • BigQuery: You incur costs for the queries that you run in BigQuery.
  • BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
  • Gemini Enterprise Agent Platform: You incur costs for calls to and supervised tuning of the gemini-2.0-flash-001 model.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.

신규 Google Cloud 사용자는 무료 체험판을 사용할 수 있습니다.

자세한 내용은 다음 리소스를 참조하세요.

데이터 세트 만들기

ML 모델을 저장할 BigQuery 데이터 세트를 만듭니다.

콘솔

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

    BigQuery 페이지로 이동

  2. 탐색기 창에서 프로젝트 이름을 클릭합니다.

  3. 작업 보기 > 데이터 세트 만들기를 클릭합니다.

  4. 데이터 세트 만들기 페이지에서 다음을 수행합니다.

    • 데이터 세트 IDbqml_tutorial을 입력합니다.

    • 위치 유형에서 멀티 리전을 선택한 후 미국을 선택합니다.

    • 나머지 기본 설정은 그대로 두고 데이터 세트 만들기 를 클릭합니다.

bq

새 데이터 세트를 만들려면 bq mk --dataset 명령어를 사용합니다.

  1. 데이터 위치가 US로 설정된 bqml_tutorial 데이터 세트를 만듭니다.

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. 데이터 세트가 생성되었는지 확인합니다.

    bq ls

API

정의된 데이터 세트 리소스를 사용하여 datasets.insert 메서드를 호출합니다.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

테스트 테이블 만들기

Hugging Face의 공개 task955_wiki_auto_style_transfer 데이터 세트를 기반으로 학습 및 평가 데이터 테이블을 만듭니다.

  1. Cloud Shell을 엽니다.

  2. Cloud Shell에서 다음 명령어를 실행하여 테스트 및 평가 데이터 테이블을 만듭니다.

    python3 -m pip install pandas pyarrow fsspec huggingface_hub
    
    python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);"
    
    python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);"
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_train
    
    bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING
    
    bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
    

기준 모델 만들기

Gemini Enterprise 에이전트 플랫폼 gemini-2.0-flash-001 모델을 통해 원격 모델 을 만듭니다.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 실행하여 원격 모델을 만듭니다.

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline`
    REMOTE WITH CONNECTION DEFAULT
    OPTIONS (ENDPOINT ='gemini-2.0-flash-001');

    쿼리가 완료되는 데 몇 초 정도 걸리며 그 이후에는 gemini_baseline 모델이 탐색기 창의 bqml_tutorial 데이터 세트에 표시됩니다. 이 쿼리에서는 CREATE MODEL 문을 사용하여 모델을 만들므로 쿼리 결과가 없습니다.

기준 모델 성능 확인

원격 모델로 AI.GENERATE_TEXT 함수 를 실행하여 조정 없이 평가 데이터에서 성능을 확인합니다.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    SELECT result, ground_truth
    FROM
      AI.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ));

    출력 데이터를 검사하고 result 값과 ground_truth 값을 비교하면 기준 모델이 정답 콘텐츠에 제공된 사실을 정확하게 반영하는 텍스트를 생성하지만 텍스트의 스타일은 상당히 다른 것을 확인할 수 있습니다.

기준 모델 평가

모델 성능에 대한 자세한 평가를 수행하려면 ML.EVALUATE 함수를 사용합니다. 이 함수는 생성된 텍스트의 정확성과 품질을 측정하는 모델 측정항목을 계산하여 모델의 응답과 이상적인 응답의 비교 방법을 보여줍니다.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_baseline`,
        (
          SELECT
            input AS input_text, output AS output_text
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

결과는 다음과 유사합니다.

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

평가 측정항목에 따르면 기준 모델 성능은 나쁘지 않지만 생성된 텍스트와 정답의 유사성은 낮습니다. 따라서 지도 조정을 수행하여 이 사용 사례에서 모델 성능을 개선할 수 있는지 확인할 가치가 있습니다.

조정된 모델 만들기

모델 만들기에서 만든 것과 매우 비슷한 원격 모델을 만들지만 이번에는 AS SELECT 을 지정하여 모델을 조정하기 위한 학습 데이터를 제공합니다.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 실행하여 원격 모델을 만듭니다.

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned`
      REMOTE
        WITH CONNECTION DEFAULT
      OPTIONS (
        endpoint = 'gemini-2.0-flash-001',
        max_iterations = 500,
        data_split_method = 'no_split')
    AS
    SELECT
      input AS prompt, output AS label
    FROM `bqml_tutorial.wiki_auto_style_transfer_train`;

    쿼리를 완료하는 데 몇 분 정도 걸리며 그 이후에는 gemini_tuned 모델이 탐색기 창의 bqml_tutorial 데이터 세트에 표시됩니다. 이 쿼리에서는 CREATE MODEL 문을 사용하여 모델을 만들므로 쿼리 결과가 없습니다.

조정된 모델 성능 확인

AI.GENERATE_TEXT 함수를 실행하여 조정된 모델이 평가 데이터에서 수행되는 방법을 확인합니다.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    SELECT result, ground_truth
    FROM
      AI.GENERATE_TEXT(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS ground_truth
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
          LIMIT 10
        ));

    출력 데이터를 검토하면 조정된 모델이 정답 콘텐츠와 스타일이 훨씬 더 유사한 텍스트를 생성하는 것을 확인할 수 있습니다.

조정된 모델 평가

ML.EVALUATE 함수를 사용하여 조정된 모델의 응답을 이상적인 응답과 비교하는 방법을 확인하세요.

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

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 쿼리를 실행합니다.

    SELECT *
    FROM
      ML.EVALUATE(
        MODEL `bqml_tutorial.gemini_tuned`,
        (
          SELECT
            input AS prompt, output AS label
          FROM `bqml_tutorial.wiki_auto_style_transfer_valid`
        ),
        STRUCT('text_generation' AS task_type));

결과는 다음과 유사합니다.

   +---------------------+---------------------+-------------------------------------------+--------------------------------------------+
   | bleu4_score         | rouge-l_precision   | rouge-l_recall      | rouge-l_f1_score    | evaluation_status                          |
   +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+
   | 0.416868792119966   | 0.642001000843349   | 0.55910008048151372 | 0.5907226262084847  | {                                          |
   |                     |                     |                     |                     |  "num_successful_rows": 176,               |
   |                     |                     |                     |                     |  "num_total_rows": 176                     |
   |                     |                     |                     |                     | }                                          |
   +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
   

학습 데이터 세트에서 1,408개의 예만 사용했음에도 불구하고 성능이 눈에 띄게 향상된 것을 알 수 있습니다(평가 측정항목이 더 높음).

정리

  1. 콘솔에서 리소스 관리 페이지로 이동합니다. Google Cloud

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.