FunctionGemma 파인튜닝 가이드
Source: Google Developers Blog
Date: 2026년 1월 16일
Agentic AI 세계에서 도구를 호출하는 능력은 자연어를 실행 가능한 소프트웨어 동작으로 변환하는 핵심입니다. 지난 달 우리는 FunctionGemma 를 출시했으며, 이는 Gemma 3 270M 모델을 함수 호출에 특화되도록 미세 조정한 버전입니다. FunctionGemma는 자연어를 실행 가능한 API 동작으로 변환하는 빠르고 비용 효율적인 에이전트를 구축하는 개발자를 위해 설계되었습니다.
특정 애플리케이션은 종종 전문 모델을 필요로 합니다. 이 글에서는 툴 선택 모호성—모델이 하나 이상의 유사한 함수를 호출해야 하는 상황—을 처리하도록 FunctionGemma를 미세 조정하는 방법을 보여줍니다. 또한 FunctionGemma Tuning Lab 을 소개합니다. 이 데모 도구는 훈련 코드를 한 줄도 작성하지 않고도 해당 과정을 손쉽게 이용할 수 있게 해줍니다.
왜 툴 호출을 위해 파인‑튜닝을 해야 할까?
답은 컨텍스트와 정책에 있습니다. 일반 모델은 귀사의 비즈니스 규칙을 알지 못합니다. 파인‑튜닝의 일반적인 사용 사례는 다음과 같습니다:
- 선택 모호성 해소 – 사용자가 “여행 정책이 뭐야?”라고 물으면 기본 모델은 구글 검색을 기본으로 할 수 있습니다. 기업용 모델은 대신 내부 지식 베이스를 검색해야 합니다.
- 초특화 – 공개 데이터에는 없는 틈새 작업이나 독점 포맷을 마스터하도록 모델을 훈련합니다. 예를 들어 도메인‑특정 모바일 액션 (디바이스 기능 제어) 처리나 내부 API를 파싱해 복잡한 규제 보고서를 작성하는 경우가 있습니다.
- 모델 증류 – 큰 모델을 사용해 합성 학습 데이터를 생성한 뒤, 그 특정 워크플로를 효율적으로 실행하도록 더 작고 빠른 모델을 파인‑튜닝합니다.
사례 연구: 내부 문서 vs. Google 검색
실제 예시를 살펴보겠습니다. 이는 기술 가이드에서 FunctionGemma를 Hugging Face TRL 라이브러리를 사용해 파인‑튜닝하는 방법을 다룹니다.
과제
목표는 두 가지 특정 도구를 구분하도록 모델을 학습시키는 것이었습니다.
search_knowledge_base– 내부 문서search_google– 공개 정보
“Python에서 간단한 재귀 함수를 작성하는 모범 사례는 무엇인가요?” 라는 질문을 하면 일반 모델은 기본적으로 Google을 사용합니다.
“여행 식비에 대한 환급 한도는 얼마인가요?” 와 같은 질문에 대해서는 모델이 이것이 내부 정책에 관한 질문임을 알아야 합니다.
해결책
성능을 평가하기 위해 bebechien/SimpleToolCalling 데이터셋을 사용했습니다. 이 데이터셋에는 위 두 도구 중 하나를 선택해야 하는 샘플 대화가 포함되어 있습니다.
데이터셋은 학습용과 테스트용으로 나뉘어 있습니다. 테스트 세트를 별도로 유지하면 보지 못한 데이터에 대해 모델을 평가할 수 있어, 단순히 예시를 외우는 것이 아니라 라우팅 로직을 학습했는지 확인할 수 있습니다.
베이스 FunctionGemma 모델을 50 / 50 비율로 학습‑테스트를 나누어 평가했을 때, 결과는 최적이 아니었습니다. 베이스 모델은 잘못된 도구를 선택하거나 정책을 “논의”하겠다고 제안했으며, 함수 호출을 실행하지 않았습니다.
⚠️ 데이터 분포에 관한 중요한 주의사항
데이터를 어떻게 나누는지는 데이터 자체만큼이나 중요합니다.
from datasets import load_dataset
# Load the raw dataset
dataset = load_dataset("bebechien/SimpleToolCalling", split="train")
# Convert to conversational format
dataset = dataset.map(
create_conversation,
remove_columns=dataset.features,
batched=False,
)
# 50 % training / 50 % test split (no shuffling)
dataset = dataset.train_test_split(test_size=0.5, shuffle=False)
가이드에서는 원본 데이터셋이 이미 섞여 있기 때문에 50 / 50 학습‑테스트 분할에 shuffle=False를 의도적으로 사용했습니다.
함정: 소스 데이터가 카테고리별로 정렬돼 있다면(예: search_google 예시가 모두 먼저, 그 다음에 search_knowledge_base 예시) 셔플을 비활성화하면 모델은 한 도구만 학습하고 다른 도구만 테스트하게 되어 성능이 크게 떨어집니다.
권장 방법:
- 소스 데이터가 미리 섞여 있는지 확인하거나,
- 순서를 알 수 없을 경우
shuffle=True로 설정해 모든 도구가 균형 있게 학습에 포함되도록 합니다.
결과
모델은 8 epoch 동안 SFTTrainer(Supervised Fine‑Tuning)를 사용해 파인‑튜닝되었습니다. 학습 데이터는 어떤 질의가 어느 도메인에 속하는지 명시적으로 모델에 가르쳤습니다.

손실(오류율)이 초기에 급격히 감소하여 새로운 라우팅 로직에 빠르게 적응함을 보여줍니다.
파인‑튜닝 후 모델의 동작은 크게 바뀌었습니다. 이제 기업 정책을 엄격히 따릅니다. 예를 들어 다음과 같이 질문했을 때:
“새 Jira 프로젝트를 만드는 절차는 무엇인가요?”
파인‑튜닝된 모델은 올바르게 다음과 같이 출력합니다:
call:search_knowledge_base{query:Jira project creation process}
FunctionGemma 튜닝 랩 소개
모두가 Python 의존성을 관리하고, SFTConfig를 설정하며, 처음부터 학습 루프를 작성하고 싶어 하는 것은 아닙니다. **FunctionGemma 튜닝 랩**을 소개합니다.

FunctionGemma 튜닝 랩은 Hugging Face Spaces에 호스팅된 사용자 친화적인 데모입니다. 모델에게 특정 함수 스키마를 가르치는 전체 과정을 간소화합니다.
주요 기능
- 코드 없이 인터페이스 – UI에서 직접 함수 스키마(JSON)를 정의합니다; Python 스크립트가 필요 없습니다.
- 맞춤 데이터 가져오기 – User Prompt, Tool Name, Tool Arguments가 포함된 CSV 파일을 업로드합니다.
- 원클릭 파인튜닝 – 슬라이더로 학습률과 에포크를 조정하고 즉시 학습을 시작합니다. 기본 설정은 대부분의 사용 사례에 잘 맞습니다.
- 실시간 시각화 – 학습 로그와 손실 곡선이 실시간으로 업데이트되어 수렴을 모니터링할 수 있습니다.
- 자동 평가 – 랩은 학습 전후 성능을 자동으로 평가하여 개선 사항에 대한 즉각적인 피드백을 제공합니다.
튜닝 랩 시작하기
랩을 로컬에서 실행하려면 Hugging Face CLI로 저장소를 클론하고 앱을 시작합니다:
hf download google/functiongemma-tuning-lab --repo-type=space --local-dir=functiongemma-tuning-lab
cd functiongemma-tuning-lab
pip install -r requirements.txt
python app.py
이것으로 끝—자신만의 함수 스키마로 FunctionGemma를 파인‑튜닝할 준비가 되었습니다!
결론
TRL을 사용해 직접 학습 스크립트를 작성하든, FunctionGemma Tuning Lab의 데모 시각 인터페이스를 사용하든, 파인튜닝은 FunctionGemma의 전체 잠재력을 열어주는 핵심입니다. 파인튜닝은 일반적인 어시스턴트를 엄격한 비즈니스 로직을 준수하고 복잡하고 독점적인 데이터 구조를 처리할 수 있는 전문 에이전트로 변환합니다.
읽어 주셔서 감사합니다!