이 튜토리얼에서는 전체 의미를 변경하지 않고 더 정확한 표현을 제공하거나 한정어를 추가하여 지정된 문장을 보강하는 모델을 조정하는 방법을 보여줍니다. Gemini Enterprise 에이전트 플랫폼 모델을 참조하는
원격 모델을 만들고,
지도 조정을
사용하고,
조정된 모델을
ML.EVALUATE 함수로평가합니다.
튜닝은 프롬프트에서 예상 동작을 정의하기 어렵거나 프롬프트가 예상 결과를 일관되게 생성하지 않는 경우와 같이 호스팅된 Agent Platform 모델을 맞춤설정하는 데 도움이 됩니다. 지도 조정은 다음과 같은 방식으로 모델에 영향을 줍니다.
- 모델이 특정 응답 스타일(예: 더 간결하거나 더 상세함)을 반환하도록 안내합니다.
- 특정 캐릭터로서 프롬프트에 응답하는 등 새로운 행동을 모델에 학습시킵니다.
- 모델이 새 정보를 사용하여 자체적으로 업데이트되도록 합니다.
이 튜토리얼의 목표는 모델이 제공된 정답 콘텐츠와 최대한 유사한 스타일과 콘텐츠의 텍스트를 생성하도록 하는 것입니다.
목표
- 데이터 세트를 만듭니다.
- 학습 및 평가 데이터를 테이블로 가져옵니다.
- 기준 모델을 만듭니다.
- 기준 모델 성능을 평가합니다.
- 조정된 모델을 만듭니다.
- 조정된 모델 성능을 평가합니다.
비용
이 문서에서는 비용이 청구될 수 있는 구성요소를 사용합니다 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 model.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
자세한 내용은 다음 리소스를 참조하세요.
시작하기 전에
이 튜토리얼을 실행하려면 다음 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.getIamPolicy및resourcemanager.projects.setIamPolicy - 모델을 만들고 추론을 실행하기:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
-
Google Cloud 콘솔의 프로젝트 선택기 페이지에서 프로젝트를 선택하거나 만듭니다. Google Cloud
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할을 부여받은 프로젝트를 선택할 수 있습니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기.
-
BigQuery, BigQuery Connection, Agent Platform API, Compute Engine API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한을 이미 보유하고 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 부여받을 수 있습니다. 역할 부여 방법 알아보기.
데이터 세트 만들기
BigQuery 데이터 세트를 만들려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
왼쪽 창에서 탐색기를 클릭합니다.

왼쪽 창이 표시되지 않으면 왼쪽 창 펼치기를 클릭하여 창을 엽니다.
탐색기에서 프로젝트를 펼친 다음 데이터 세트를 클릭합니다.
데이터 세트 페이지에서 데이터 세트 만들기 를 클릭합니다.
데이터 세트 만들기 창에서 다음을 수행합니다.
데이터 세트 ID에
bqml_tutorial을 입력합니다.데이터 위치 로 US 를 선택합니다.
나머지 기본 설정은 그대로 둡니다.
데이터 세트 만들기 를 클릭합니다.
bq
새 데이터 세트를 만들려면
bq mk --dataset 명령어를 사용합니다.
데이터 위치가
US로 설정된bqml_tutorial이라는 데이터 세트를 만듭니다.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
데이터 세트가 생성되었는지 확인합니다.
bq ls
API
정의된 데이터 세트 리소스로 datasets.insert
메서드를 호출합니다.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
테스트 테이블 만들기
Hugging Face의 공개
task955_wiki_auto_style_transfer 데이터 세트
를 기반으로 학습 및 평가 데이터 테이블을 만듭니다.
Cloud Shell을 엽니다.
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 load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING bq load --replace=true --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
학습 데이터 보기
입력 학습 데이터는 일반적인 의미를 변경하지 않고 문장을 자세히 설명하도록 모델에 요청하는 프롬프트입니다. 각 프롬프트에는 다시 작성할 문장과 함께 동일한 긍정적 예시 2개와 부정적 예시 2개가 포함됩니다. 출력은 모델에서 생성된 더 자세한 문장입니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 실행하여 입력 및 출력 데이터의 예를 확인합니다.
SELECT * FROM bqml_tutorial.wiki_auto_style_transfer_train LIMIT 1;
결과는 다음과 비슷합니다.
+-----------------------------------------------+-------------------------------------------------+ | input | output | +-----------------------------------------------+-------------------------------------------------+ | Definition: In this task, we ask you to | Merton College ( in full : The House or College | | elaborate the sentence without changing its | of Scholars of Merton in the University of | | general meaning. You can do so by explaining | Oxford ) is one of the constituent colleges of | | further the input sentence, using more | the University of Oxford in England . | | precise wording, adding qualifiers and | | | auxiliary information etc. | | | | | | Positive Example 1 - | | | Input: The Inheritance Cycle is a series of | | | fantasy books written by Christopher Paolini. | | | Output: The Inheritance Cycle is a tetralogy | | | of young adult high fantasy novels written by | | | American author Christopher Paolini. | | | | | | Positive Example 2 - | | | Input: The Greco-Roman or Graeco-Roman world, | | | refers to geographical regions and countries | | | who had the language , culture , government | | | or religion of the ancient Greeks and Romans. | | | Output: The Greco-Roman world , Greco-Roman | | | culture , or the term Greco-Roman (spelled | | | Graeco-Roman in the United Kingdom and the | | | Commonwealth), when used as an adjective , as | | | understood by modern scholars and writers , | | | refers to those geographical regions and | | | countries that culturally ( and so | | | historically ) were directly , long-term , | | | and intimately influenced by the language , | | | culture , government and religion of the | | | ancient Greeks and Romans. | | | | | | Negative Example 1 - | | | Input: Boryla, an American football | | | quarterback, did not participate in the 1952 | | | playoffs. | | | Output: Boryla was not in the 1952 playoffs. | | | | | | Negative Example 2 - | | | Input: The wild population in China decreased | | | to around 2,000 in 2005. | | | Output: By 2005, the wild population | | | decreased to about 2,000. | | | | | | Now complete the following example - | | | Input: Merton College is one of the colleges | | | of the University of Oxford . | | | Output: | | +-----------------------------------------------+-------------------------------------------------+
기준 모델 만들기
Gemini 모델을 통해 원격 모델을 만듭니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 실행하여 원격 모델을 만듭니다.
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'gemini-2.5-pro');
쿼리가 완료되는 데 몇 초 정도 걸리며 그 이후에는
gemini_baseline모델이 탐색기 창의bqml_tutorial데이터 세트에 표시됩니다. 이 쿼리에서는CREATE MODEL문을 사용하여 모델을 만들므로 쿼리 결과가 없습니다.
기준 모델 성능 확인
조정 없이 평가 데이터에서 원격 모델의 성능을 확인하려면
AI.GENERATE_TEXT 함수를 실행합니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
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 | +-------------------------------------------------+-------------------------------------------------+ | In mathematics, and more specifically in graph | In mathematics , and more specifically in graph | | theory, a graph is an abstract structure that | theory , a graph is a structure amounting to a | | is used to model pairwise relationships between | set of objects in which some pairs of the | | objects. A graph in this context is made up of | objects are in some sense " related " . | | vertices (also called nodes or points) and | | | edges (also called links or lines) that connect | | | pairs of vertices. | | | ... | ... | +-------------------------------------------------+-------------------------------------------------+
기준 모델은 정답 콘텐츠에 제공된 사실을 정확하게 반영하는 텍스트를 생성하지만 텍스트 스타일은 때때로 다릅니다. 기준 모델은 원하는 정답보다 더 긴 설명을 생성하는 경향이 있습니다.
기준 모델 평가
모델 성능에 대한 자세한 평가를 수행하려면
ML.EVALUATE 함수를 사용합니다.
이 함수는 모델의 응답과 이상적인 응답의 비교 방법을 보여주기 위해 생성된 텍스트의 정확성과 품질을 측정하는 모델 측정항목을 계산합니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
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.32571814014498979 | 0.45752569962901607 | 0.557224161991254 | 0.49205029983307907 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
이러한 점수는 성능을 정량적으로 측정하는 방법을 제공합니다. 다음 섹션에서는 조정된 모델을 만들고 성능을 기준 모델과 비교하는 방법을 보여줍니다.
조정된 모델 만들기
모델 만들기에서 만든 것과 매우 비슷한 원격 모델을 만들지만 이번에는
AS SELECT 절
을 지정하여 모델을 조정하기 위한 학습 데이터를 제공합니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 실행하여 원격 모델을 만듭니다.
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned` REMOTE WITH CONNECTION DEFAULT OPTIONS ( endpoint = 'gemini-2.5-pro', 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 함수를 실행합니다.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
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 함수를 사용하세요.
콘솔에서 Google Cloud BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 쿼리를 실행합니다.
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.44878025403825506 | 0.57236062510796448 | 0.638794269320597 | 0.59591519400141835 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
조정된 모델은 성능이 크게 개선되었으며 모든 평가 측정항목에서 기준 모델보다 성능이 우수합니다.
정리
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.
프로젝트 삭제
프로젝트 Google Cloud 삭제:
gcloud projects delete PROJECT_ID
개별 리소스 삭제
프로젝트를 재사용하려면 이 튜토리얼에서 만든 리소스를 삭제합니다.
BigQuery 페이지로 이동합니다.
bqml_tutorial데이터 세트를 삭제합니다. 데이터 세트를 삭제하면 모델과 테이블도 삭제됩니다.탐색기 창에서 프로젝트를 펼치고 데이터 세트 를 클릭합니다.
데이터 세트 목록에서
bqml_tutorial데이터 세트를 클릭합니다.세부정보 창에서 삭제 를 클릭합니다.
데이터 세트 삭제 대화상자에서 삭제 를 클릭합니다.
다음 단계
ML.EVALUATE함수에 대해 자세히 알아봅니다.AI.GENERATE_TEXT함수에 대해 자세히 알아봅니다.- 원격 모델의 지도 조정 옵션을 검토합니다.