FunctionGemma: 함수 호출에 특화된 270M 규모의 On-Device 특화 모델 (feat. Google)

FunctionGemma 소개

FunctionGemma 는 Google이 새롭게 공개한 Gemma 3 270M 기반의 함수 호출(Function Calling) 특화 모델입니다. 최근 AI 업계의 흐름이 단순한 대화형 인터페이스에서 실질적인 작업을 수행하는 '액티브 에이전트(Active Agents)'로 전환됨에 따라, 모델이 단순히 말하는 것을 넘어 행동(Act)할 수 있는 능력이 중요해졌습니다. FunctionGemma는 이러한 요구에 맞춰 자연어 명령을 구조화된 API 호출이나 도구 사용(Tool Use) 명령으로 변환하는 데 최적화되어 있습니다.

특히 FunctionGemma 모델은 2억 7천만(270M) 개라는 매우 적은 파라미터 수를 가지고 있어, 스마트폰이나 NVIDIA Jetson Nano와 같은 에지 디바이스에서도 단독으로 구동 가능한 것이 가장 큰 특징입니다. 이를 통해 데이터가 외부 서버로 전송되지 않는 완벽한 로컬 환경에서, 캘린더 일정 등록이나 시스템 설정 변경과 같은 복잡한 워크플로우를 지연 없이 처리할 수 있습니다. FunctionGemma는 독립적인 에이전트로 작동하거나, 더 큰 모델(예: Gemma 3 27B) 앞단에서 간단한 명령을 즉시 처리하고 복잡한 요청만 라우팅하는 지능형 컨트롤러 역할을 수행할 수 있습니다.

FunctionGemma 모델을 기존의 LLM 및 다른 방법론과 비교하면 다음과 같습니다:

  • vs. 일반 대화형 모델: 일반적인 Gemma 모델이 사용자와의 자연스러운 대화에 초점을 맞췄다면, FunctionGemma 는 '대화'보다는 '행동'에 목적을 둡니다. 직접적인 챗봇 용도보다는 사용자의 의도를 파악하여 정확한 JSON 형태의 함수 호출 코드를 생성하고, 도구의 실행 결과를 다시 자연어로 요약하여 전달하는 데 특화되어 있습니다.

  • vs. 제로샷(Zero-shot) 프롬프팅: 범용 모델을 제로샷으로 사용하여 도구를 호출할 때보다, 특정 도구와 API에 맞춰 파인튜닝(Fine-tuning)했을 때 훨씬 더 강력하고 결정론적인(Deterministic) 성능을 발휘합니다. Google의 'Mobile Actions' 평가에 따르면, 파인튜닝을 통해 모델의 정확도가 58%에서 85%로 급격히 향상되었습니다.

FunctionGemma 주요 기능

초경량 아키텍처와 에지(Edge) 최적화

FunctionGemma는 Gemma 3 270M 아키텍처를 기반으로 합니다. 270M 파라미터는 최신 LLM 중에서도 매우 작은 크기로, NVIDIA Jetson Nano와 같은 임베디드 시스템 및 모바일 기기 등의 제한된 컴퓨팅 파워와 배터리 환경에서도 효율적으로 동작합니다.

FunctionGemma는 Gemma의 256k 어휘 집합을 사용하여 JSON 및 다국어 입력을 효율적으로 토큰화합니다. 또한, 최대 32K 토큰 길이의 입력 및 출력을 지원하여, 복잡한 함수 정의나 긴 작업 내역을 처리할 수 있습니다.

통합된 액션 및 채팅 워크플로우 (Function Calling Cycle)

FunctionGemma는 사용자와 컴퓨터 사이의 통역사 역할을 수행합니다. 전체적인 동작 과정은 다음과 같습니다:

  1. 사용자 입력: 사용자가 자연어로 명령을 내립니다 (예: "내일 점심 약속 캘린더에 추가해줘").
  2. 함수 호출 생성 (Model's Turn): 모델은 미리 정의된 도구(Tools) 목록을 확인하고, 실행해야 할 함수와 인자(Arguments)를 포함한 구조화된 객체를 생성합니다.
  3. 도구 실행 (Developer's Turn): 개발자의 애플리케이션이 이 객체를 받아 실제 API나 코드를 실행합니다.
  4. 결과 요약 (Final Response): 실행 결과가 다시 모델로 전달되면, 모델은 이를 바탕으로 사용자에게 자연어 응답을 생성합니다.

파인튜닝(Fine-tuning)을 통한 성능 극대화

Google은 FunctionGemma를 "그대로 사용하는 모델"이라기보다 "커스터마이징을 위한 강력한 베이스 모델"로 정의합니다. 즉, 특정 도메인(스마트홈, 내비게이션 등)의 API 정의에 맞춰 모델을 추가 학습시키면, 일반적인 모델보다 월등히 높은 신뢰성을 확보할 수 있습니다.

모바일 환경에서의 액션 수행 능력을 평가한 결과, 파인튜닝 후 신뢰도가 대폭 상승(Baseline 58% -> 85%)하여 상용 수준의 성능을 입증했습니다. FunctionGemma 모델의 파인튜닝에 대해서는 예시 노트북을 참고해주세요.

광범위한 생태계 지원

FunctionGemma는 다양한 최신 프레임워크와 호환됩니다. FunctionGemma의 파인튜닝을 위해서는 Hugging Face Transformers, Unsloth, Keras, NVIDIA NeMo 등을 사용할 수 있습니다. 또한, LiteRT-LM, vLLM, MLX, Llama.cpp, Ollama, Vertex AI, LM Studio 등 다양한 런타임 환경을 지원하여 개발자가 원하는 환경에 손쉽게 배포할 수 있습니다.

필수 시스템 프롬프트

FunctionGemma가 도구 호출 기능을 올바르게 수행하기 위해서는 다음과 같은 Developer Role의 시스템 프롬프트가 필수적으로 포함되어야 합니다:

message = [
   {
      "role": "developer", 
      "content": "You are a model that can do function calling with the following functions"
   },
   # ... 이후 사용자 메시지 및 도구 정의
]

FunctionGemma 활용 사례

다음은 FunctionGemma을 사용하여 실제 사용자 경험을 변화시키는 사례들입니다. 더 자세한 내용은 Google AI Edge Gallery 앱에서 확인해보실 수 있습니다.

Mobile Actions (오프라인 모바일 비서)

FunctionGemma를 사용하여, 서버 연결 없이 100% 오프라인 상태에서 작동하는 스마트폰 에이전트의 가능성을 보여주는 사용 사례입니다. 사용자가 "내일 점심 약속을 캘린더에 추가해줘", "John을 연락처에 추가해", "손전등 켜줘" 와 같이 자연어로 명령하면, 모델이 이를 해석하여 적절한 OS 도구(Tool)를 찾아 실행합니다.

개발자는 Google이 제공하는 파인튜닝 쿡북을 참고하여 FunctionGemma 모델의 파인튜닝 방법을 익혀, 자신만의 모바일 액션 모델을 빌드하고 기기에 탑재할 수 있습니다.

TinyGarden (음성 제어 게임)

대화형 미니 게임에 FunctionGemma을 접목한 사례입니다. 예를 들어, 플레이어가 "윗줄에 해바라기를 심고 물을 줘" 라고 말하면, 모델은 이 명령을 plantCrop(작물 심기), waterCrop(물 주기)과 같은 구체적인 게임 함수로 분해하고 정확한 좌표(Grid coordinates)를 지정하여 실행합니다.

이 사례를 통해 270M 크기의 작은 모델이 서버 통신 없이도 모바일 기기 내에서 멀티 턴(Multi-turn) 로직을 처리하고 복잡한 게임 메커니즘을 제어할 수 있음을 보여줍니다.

FunctionGemma Physics Playground (웹 기반 물리 시뮬레이션)

X의 @xenovacom이 공개한 이 데모는 100% 로컬 웹 브라우저 환경에서 실행되는 게임으로, 로컬 AI가 강력하게 작동함을 보여주는 사례입니다. 자연어를 사용하여 물리 퍼즐을 해결하는 게임으로, Transformers.js와 FunctionGemma를 기반으로 구동됩니다.

:house: Gemma 공식 홈페이지

:scroll: Google Developers Blog에 소개된 FunctionGemma 출시 블로그

:package: FunctionGemma 모델 다운로드

:scroll: FunctionGemma 파인튜닝 예시 노트북




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요