Cactus Needle 3 8‑29 MB 파운데이션 모델, 소형 기기에서 DeepSeek V4 Flash와 대등한 성능 발휘
Needle 3, 30 MB 미만의 바이너리로 LLM 수준의 도구 호출 제공
Needle 3는 마이크로컨트롤러, 휴대폰, 웨어러블 및 기타 소형 기기에서 실행되는 8‑29 MB 단일 바이너리로, 10배 더 큰 모델과 견줄 만한 도구 호출 성능을 제공합니다. 핵심은 Cactus의 *지능형 사다리(intelligence ladder)*를 통해 개발자가 2~20개 레이어의 서브 네트워크를 선택하고, 4개 레이어 버전을 미세 조정하여 단 한 번의 에포크(epoch)만으로 다운스트림 작업에서 DeepSeek V4 Flash 수준의 정확도를 달성할 수 있다는 점입니다.
아키텍처: 사다리형 단순 어텐션 네트워크(SAN)
모든 레이어는 독립적인 서브 네트워크입니다.
- 이 모델은 CQ2‑bit(2비트) 정밀도로 양자화된 29‑121 M 파라미터로 구성됩니다.
- 각 깊이(2L‑20L)는 단조 증가하는 용량의 서브 모델을 형성하여, 개발자가 지연 시간 및 메모리 제약을 충족하는 가장 작은 모델을 선택할 수 있게 합니다.
- 기반이 되는 SAN은 기존의 MLP 중심 트랜스포머 블록을 대체하여, 도구 스키마를 추론하는 능력을 희생하지 않으면서 파라미터 수를 줄였습니다.
- 학습에는 도구 정의 이해 및 구조화된 추출에 중점을 둔 독점 구조화 데이터셋의 360 B 토큰이 사용되었습니다.
핵심 기능
도구 호출(Tool calls)
"앱이 노출하는 함수를 바탕으로, Needle은 적절한 함수를 선택하고 사용자의 말에서 모든 인자를 채웁니다. 두 가지를 요청하면 순서대로 두 번의 호출을 얻게 되며, 어떤 도구도 다루지 않는 것을 요청하면 추측이 아닌 빈 리스트를 받게 됩니다."
- Needle은 사용자 발화에서 추출된 인자가 포함된 함수 호출의 JSON 리스트를 반환합니다.
- 일치하는 도구가 없으면 모델은 호출을 환각(hallucination)하는 대신 빈 리스트를 반환합니다.
- 신뢰도 점수는 보정되어 있으며, 0.1 미만의 호출은 억제됩니다.
구조화된 추출(Structured extraction)
"형태를 선언하고, 복잡한 텍스트를 전달하면, 송장, 예약, 알림, 양식 등 유형화된 필드를 돌려받습니다."
- 사용자가 Pydantic 스키마를 제공하면, Needle은 필드를 유형화된 객체로 추출합니다.
- 디코드 문법은 구문적으로 유효한 JSON을 보장하여 다운스트림 처리를 안정적으로 만듭니다.
텍스트 임베딩
- 동일한 모델이 로컬 의미론적 검색, 중복 탐지 또는 가장 적절한 도구로의 라우팅을 위해 문장 수준 벡터를 생성할 수 있습니다.
소형 하드웨어에서의 성능
| 기기 | 토큰 / 초 (디코드) | 토큰 / 초 (프리필) |
|---|---|---|
| Raspberry Pi 5 | 400 – 4 000 | 1 000 – 10 000 |
추론 엔진은 1 MB 미만이며 시작 시 needle3.cact 가중치를 로드합니다. 사전 빌드된 바이너리는 macOS, Linux (x86_64, arm64, armv7, riscv64, mipsel), Windows, Android, iOS, tvOS, watchOS, WebAssembly 및 WASI에서 사용할 수 있습니다.
Cactus가 입증한 실제 사용 사례
- 스마트 홈 – *"침실 조명을 어둡게 하고 문을 잠가"*와 같은 음성 명령은 클라우드 왕복 없이 두 개의 오프라인 도구 호출을 생성합니다.
- 로봇 공학 – *"주방은 청소하되 침실은 그대로 둬"*와 같은 명령은 순서가 지정된 동작 기본 요소로 변환됩니다.
- 휴대폰 – 로컬 어시스턴트는 서버로 데이터를 전송하지 않고도 사진 앨범을 만들거나, URL을 열거나, 임대 문서를 찾을 수 있습니다.
- 웨어러블 – 손목 착용 기기는 알림을 구조화된 필드(상점, 금액, 날짜)로 파싱할 수 있습니다.
- AR 글래스 – 오프라인 내비게이션 및 주변 검색 쿼리가 기기 내에서 완전히 실행됩니다.
- 자동차 – 실내 온도 조절, 미디어, 내비게이션 및 통화 처리가 로컬에서 수행되어 장거리 주행 시 개인 정보를 보호합니다.
- 데스크톱 – 평이한 영어 명령으로 이메일 초안 작성, 타이머 시작, 탭 열기 등의 OS 작업을 수행합니다.
- 로컬 의미론적 검색 – 임베딩을 통해 기기 내 문서 검색 및 중복 알림 병합이 가능합니다.
개발자 워크플로우
cactus-needlePython 패키지를 설치합니다. 추론 엔진은 Hugging Face에서 가져와 캐시됩니다.- Python 함수를 데코레이팅하여 도구를 정의합니다. 함수 시그니처는 인자 유형을 제공하고, 독스트링은 설명을 제공하며,
run()이 호출을 실행합니다. - 신뢰도 임계값 미만에서도 결정론적 동작을 보장하기 위해 항상 특정 도구로 라우팅되어야 하는 의도에 대해 트리거(정규식 패턴)를 추가합니다.
- Pydantic 모델을
extract()에 전달하여 구조화된 데이터를 추출하고 유형화된 객체를 받습니다. - 고정된 베이스 모델 위에서 LoRA를 통해 미세 조정하고, 모든 서브 네트워크 깊이에 대해 4비트
.cact파일을 내보냅니다.
"제한적인 테스트 결과, 최대 10개의 도구/정의까지 작동합니다. 그 이상이 되면 혼란스러워합니다" – 도구 세트 크기 제한에 대한 사용자 관찰.
커뮤니티 피드백 하이라이트
- 성공 사례: 사용자들은 안정적인 다중 도구 호출(예: 조명 끄기 및 문 잠그기)과 정확한 신뢰도 게이팅을 보고했습니다.
- 한계: "더 밝게"와 같은 발화나 모호한 온도 요청은 더 높은 신뢰도 점수를 보이면서도 잘못된 동작을 생성하거나 잘못 라우팅되는 경우가 있었습니다.
- 도구 세트 확장성: 약 10개 이상의 도구 정의가 로드되면 모델 성능이 저하되는 경향이 있습니다.
- 도메인 지식: 한 댓글 작성자가 언급했듯이, 이 모델은 더 큰 LLM이 보유한 세계 지식(예: 아티스트 이름)이 부족하여 틈새 도메인에 영향을 줄 수 있습니다.
- 편향: 섭씨/화씨 혼동 및 예상치 못한 온도 조절기 조정 사례가 관찰되었습니다.
- 경쟁사 비교: 벤치마크에 따르면 특정 작업에 대해 미세 조정된 Needle 3는 FunctionGemma 및 Needle 2를 능가하지만, 일반적인 분류 작업에서는 여전히 더 큰 인코더 전용 모델에 뒤처집니다.
Needle 3가 중요한 이유
Needle 3는 기기 내 구조화된 JSON 생성 및 도구 호출이 30 MB 미만의 크기에서 실현 가능함을 입증하여, 웨어러블, 마이크로컨트롤러 및 엣지 기기에 개인 정보 보호 AI를 도입할 수 있는 길을 열었습니다. 사다리형 아키텍처를 노출함으로써 Cactus는 개발자가 지연 시간, 메모리 및 정확성의 균형을 맞출 수 있게 하며, 오픈 소스 추론 엔진은 다양한 하드웨어 스펙트럼 전반에 걸친 배포를 단순화합니다.
시작하기
pip install cactus-needle
needle build --platform linux-arm64 # 1 MB 엔진 및 가중치 다운로드
그런 다음 도구를 정의합니다:
from cactus_needle import tool
@tool
def set_lights(room: str, brightness: int):
"""*room*의 조명을 *brightness*(0‑100)로 설정합니다."""
# 하드웨어 통합 코드
return {"status": "ok"}
사용자 프롬프트를 모델에 보내고 선택된 함수 호출과 신뢰도 점수가 포함된 JSON 응답을 받습니다.
전망
Cactus는 데이터셋 관리, 전체 깊이 미세 조정 및 평가 파이프라인을 통해 Cactus Platform을 확장하여, 더 많은 도메인(예: 휴대폰에서의 OpenStreetMap 편집)이 기기 내 LLM 추론의 이점을 누릴 수 있도록 할 계획입니다. 커뮤니티가 ESP32, 자동차 ECU 및 WebAssembly 타겟으로 실험함에 따라, Needle 3는 저전력, 개인 정보 보호 우선 AI 어시스턴트의 사실상 표준이 될 수 있습니다.
Sources
관련
- Dispatch
- Dispatch
- 프로젝트
- Dispatch
- Dispatch