Needle: Gemini의 Tool Calling 능력을 26M 파라미터 모델로 증류
Show HN: Needle: We Distilled Gemini Tool Calling into a 26M Model
TL;DR Highlight
Gemini의 함수 호출(tool calling) 능력만 뽑아서 26M(2600만) 파라미터짜리 초경량 모델로 만든 프로젝트로, 폰/워치/스마트글라스 같은 엣지 디바이스에서 직접 실행 가능하다.
Who Should Read
스마트폰이나 IoT 기기처럼 리소스가 제한된 환경에서 AI 기반 함수 호출 기능을 구현하고 싶은 모바일/임베디드 개발자, 또는 에이전트 파이프라인에서 tool routing 비용을 줄이고 싶은 AI 서비스 개발자.
Core Mechanics
- Needle은 Gemini 3.1의 tool calling 능력만을 knowledge distillation(큰 모델의 지식을 작은 모델에 전달하는 기법)으로 뽑아낸 26M(2600만) 파라미터짜리 모델이다. 모델 파일 크기가 약 14MB 수준이라 일반 앱에 번들로 포함할 수 있다.
- 아키텍처는 'Simple Attention Network'라고 부르는 인코더-디코더 구조로, 인코더 12개 + 디코더 8개 레이어로 구성된다. FFN(Feed-Forward Network) 레이어 없이 Attention만으로 설계해서 파라미터 수를 극단적으로 줄였다.
- d=512 차원, 8헤드 어텐션/4 KV헤드(GQA), BPE 어휘 크기 8192로 설계되어 있고, ZCRMSNorm, RoPE 위치 인코딩, Gated Residual 같은 최신 기법들을 조합했다.
- 사전학습은 TPU v6e 16개로 200B(2000억) 토큰을 27시간 동안 학습했고, 이후 single-shot 함수 호출 데이터셋 2B(20억) 토큰으로 45분간 파인튜닝했다.
- 실제 배포 환경(Cactus 플랫폼)에서 prefill 속도 6000 tokens/sec, decode 속도 1200 tokens/sec로 동작한다. 이 정도면 엣지 디바이스에서도 실시간 응답이 충분히 가능한 속도다.
- single-shot 함수 호출 벤치마크에서 FunctionGemma-270m, Qwen-0.6B, Granite-350m, LFM2.5-350m 같은 더 큰 모델들을 앞섰다. 단, 이 모델들은 대화 능력까지 포함한 범용 모델이라 직접 비교는 공정하지 않다.
- Needle은 오직 'single-shot tool call' 즉 사용자 입력 → 함수 호출 한 번 매핑만 잘한다. 자유로운 대화나 멀티턴 추론은 지원하지 않으며, 그 용도로는 쓰면 안 된다.
- 가중치와 데이터셋 생성 코드가 완전 오픈소스로 공개되어 있고, Mac/PC에서 로컬로 파인튜닝할 수 있는 UI도 제공한다. 자신만의 툴셋에 맞게 추가 학습이 가능하다.
Evidence
- CLI 도구에 자연어 인터페이스를 붙이는 데 쓸 수 있겠다는 아이디어가 나왔다. 예를 들어 `toolcli add tom to teamfutz group`이라고 입력하면 내부적으로 `toolcli --gadd teamfutz tom`을 실행하는 식인데, 모델 크기가 14MB밖에 안 되니 CLI 앱에 번들로 포함하는 게 현실적으로 가능하다는 의견이었다.
- 실제로 알람 설정과 쇼핑 목록 추가를 테스트해봤더니 Siri보다 잘 동작했다는 사용 후기가 있었다. Home Assistant 연동에도 쓰면 좋겠다는 의견도 여럿 달렸다.
- 이 모델이 정확히 어디에 쓰이는 건지 모르겠다는 질문이 많았다. Claude Haiku나 Gemini Flash 같은 경량 LLM의 대체재인지, 아니면 에이전트 파이프라인에서 tool routing만 담당하는 특수 모델인지 포지셔닝이 불분명하다는 지적이었다. 이에 대해 '더 큰 모델에 넘기기 전 첫 번째 tool call 패스로 쓰면 좋겠다'는 댓글이 달리기도 했다.
- Gemini 대신 왜 굳이 tool calling이 약한 모델(Gemini)을 distillation 대상으로 선택했냐는 날카로운 질문도 있었다. GPT-4o나 Claude처럼 tool calling이 더 강한 모델에서 증류했다면 결과가 더 좋지 않았겠냐는 의문이었다.
- HuggingFace 레포에서 `needle-tokenizer` 데이터셋 접근이 막혀 있어서 README의 설치 가이드를 그대로 따르면 에러가 난다는 버그 리포트가 있었다. 아직 README와 실제 저장소 접근 권한이 맞지 않는 상태인 것으로 보인다.
How to Apply
- 에이전트 파이프라인에서 tool routing(어떤 함수를 호출할지 판단)만 Needle에 맡기고, 실제 응답 생성은 GPT-4o나 Claude 같은 큰 모델에 넘기는 구조로 쓰면, API 비용을 크게 줄이면서도 함수 선택 정확도를 유지할 수 있다.
- Home Assistant나 음성 비서처럼 '전사된 텍스트 + 사용 가능한 툴 목록 → 함수 호출' 패턴이 반복되는 IoT/스마트홈 프로젝트에 Needle을 임베딩하면, 클라우드 API 없이 기기 자체에서 intent 파악이 가능해진다.
- 자신만의 CLI 도구에 자연어 인터페이스를 붙이고 싶다면, Needle을 앱에 번들로 포함(~14MB)하고 자신의 커맨드 스펙으로 파인튜닝하면 된다. 저장소에 Mac/PC에서 버튼 하나로 파인튜닝하는 UI가 포함되어 있어 ML 지식 없이도 시도해볼 수 있다.
- Qwen이나 다른 오픈소스 LLM에 tool calling 능력을 추가하거나 개선하고 싶은 경우, Needle의 데이터셋 생성 파이프라인과 학습 코드를 참고해서 비슷한 방식으로 자체 모델을 증류하는 실험을 해볼 수 있다.
Code Example
# 설치 및 quickstart
git clone https://github.com/cactus-compute/needle
cd needle
pip install -r requirements.txt
# 모델 아키텍처 핵심 설정
# d=512, 8 heads / 4 KV heads (GQA), BPE vocab=8192
# Encoder x 12 (Self Attn + GQA + RoPE, no FFN)
# Decoder x 8 (Masked Self Attn + Cross Attn + RoPE)
# ZCRMSNorm + Gated Residual 사용
# Tied embedding (입력 임베딩과 출력 Linear 가중치 공유)
# 파인튜닝 실행
bash launch_train.shTerminology
관련 논문
Statewright – AI 에이전트를 안정적으로 만드는 Visual State Machine
AI 에이전트에게 40개 이상의 도구를 주면 오히려 성능이 떨어지는 문제를 State Machine으로 각 단계별 사용 가능한 도구를 제한해 해결하는 오픈소스 프로젝트다. 더 큰 모델 대신 더 작은 문제 공간을 만들어 신뢰성을 높이는 접근이 핵심이다.
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.