Cactus Needle 3 릴리스: 장치 내 도구 호출 및 구조화된 추출을 위한 8–29MB 기반 모델
Needle 3는 크기가 훨씬 작지만 DeepSeek 수준의 성능 달성
Cactus Compute는 모바일 도구 호출 및 추출 벤치마크에서 DeepSeek V4 Flash와 동등하거나 이를 능가할 수 있는 8–29MB 바이너리 기반 모델인 Needle 3를 발표했다. 이 모델은 Raspberry Pi 5부터 마이크로컨트롤러에 이르기까지 다양한 장치에서 완전히 오프라인으로 작동한다. 모델의 작고 가벼운 크기 덕분에 스마트홈 허브, 웨어러블 기기, 로봇, 심지어 임베디드 컨트롤러에도 실용적으로 적용 가능하다.
기본 기능은 즉시 사용 가능
- 도구 호출 – Needle 3는 사용자 발화를 분석하고 개발자가 제공한 도구 상자에서 적절한 함수를 선택하며, 모든 인수를 채운다. JSON 리스트 형태로 호출 결과를 반환하며, 매칭되는 도구가 없을 경우 허구적인 응답 대신 빈 리스트를 반환한다.
- 구조화된 추출 – Pydantic 스키마를 제공하면, 개발자는 불규칙한 텍스트(예: 송장, 예약 정보)에서 타입이 지정된 JSON 객체를 얻을 수 있다. 디코딩 문법은 구문적 유효성을 보장한다.
- 텍스트 임베딩 – 동일한 모델은 장치 내 의미 검색, 중복 감지, 라우팅을 위한 문장 벡터를 생성할 수 있다.
이러한 기본 기능을 통해 다음과 같은 엔드투엔드 제품을 구현할 수 있다:
- 음성 제어 스마트홈 명령 (
"침실 조명을 어둡게 하고 잠그세요") - 로봇 명령 시퀀싱 (
"주방은 청소하지만 침실은 그대로 두세요") - 스마트폰, 웨어러블 기기, AR 안경, 자동차 내부용 장치 내 보조 도구
지능의 계단식 설계: 하나의 바이너리, 여러 하위 네트워크
Needle 3는 Simple Attention Networks와 CQ2-비트 양자화 기반으로 구축되었다. 29층 백본(29 L)은 121M 파라미터를 포함하지만, 2L부터 20L까지의 모든 접두어가 기능적인 하위 네트워크를 형성한다. 개발자는 지연 시간이나 메모리 제약 조건을 충족하는 가장 작은 하위 네트워크를 선택한 후, 하위 작업에 대해 미세 조정할 수 있다.
- 4층(4 L) 미세 조정 모델은 작업 전용 데이터에서 단일 에포크 후 DeepSeek V4 Flash와 동등한 성능을 달성한다.
- 하위 네트워크 크기는 9MB(2L) 에서 29MB(20L) 까지 다양하며, 다양한 초소형 하드웨어를 커버한다.
- 훈련에는 3600억 토큰의 고유 구조화된 데이터를 사용했으며, Raspberry Pi 5에서 400–4000토큰/초의 디코딩 속도를 기록했다.
12개 플랫폼에 걸쳐 1MB 미만 엔진으로 배포
Cactus는 macOS, Linux(x86_64, arm64, armv7, riscv64, mipsel), Windows, Android, iOS, tvOS, watchOS, WebAssembly, WASI 구성 요소 등 12개 플랫폼용 사전 빌드된 추론 엔진(<1MB)을 제공한다. needle build --platform 명령어는 적절한 엔진을 다운로드하고 needle3.cact 가중치 파일을 함께 배치한다.
| 플랫폼 | 엔진 아티팩트 |
|---|---|
| macOS (arm64) | needle CLI, libneedle.a, needle.h |
| Linux (다양한 아키텍처) | macOS와 동일한 항목에 더해 각 ABI용 바이너리 |
| Windows (x86_64/arm64) | needle.exe, libneedle.a, needle.h |
| Android / iOS / watchOS / tvOS | 정적 라이브러리 + 헤더 |
| 브라우저 (Wasm) | needle.js, needle.wasm, needle.h |
| WASI 구성 요소 | needle.component.wasm, needle.wit |
개발자 워크플로우: 도구 정의에서 실행까지
- 도구 정의 – Python 함수에 데코레이터를 적용; 서명은 인수 타입을 제공하고, docstring은 자연어 설명을 제공하며,
run()은 호출을 실행한다. - 옵션 트리거 – 정규 표현식 패턴을 사용해 일치할 경우 신뢰도 게이팅을 우회하고 강제 호출한다.
- 추출 –
extract()에 Pydantic 모델을 전달해 타입이 지정된 객체를 얻는다. - 신뢰도 게이팅 – 모든 응답에는 보정된 신뢰도 점수(최소 0.1)가 포함된다. 최소값 이하의 점수는 호출을 생략하고, 높은 점수는 자동 실행 여부, 확인 요청 여부, 거부 여부 결정에 사용할 수 있다.
- 미세 조정 – 제공된 Python 패키지를 사용해 동결된 베이스 모델에 대해 LoRA를 수행한 후, 어떤 하위 네트워크에도 적용 가능한 4비트
.cact파일로 내보낼 수 있다.
커뮤니티의 실제 관찰 결과
"모든 조명 켜기/끄기"와 "욕실이 너무 어두워요"는 작동했지만, 더 간접적인 표현은 실패했고, 온도 조절 명령은 종종 온도 방향을 반전시켰다. (gs17)
모델은 약 10개의 도구까지 처리할 수 있지만, 그 이상이 되면 혼란이 커진다. (sourcecodeplz)
스마트홈 데모에서 "집을 따뜻하게 해줘"라는 명령이 온도가 아니라 조명 밝기를 조절하는 것으로 잘못 처리되어, 조명 관련 의도에 대한 편향이 드러났다. (Retro_Dev)
사용자들은 가끔 잘못된 라우팅을 경험했는데, 예를 들어 "조금 더 크게 해줘"라는 명령이 자동차 음량을 낮추게 했고, "내가 조금만 가야 해"라는 요청에 대해 음악 재생과 같은 관련 없는 동작을 생성하기도 했다. (IanCal)
한 참여자는 모델이 매칭되는 도구가 없을 경우 빈 리스트를 반환한다는 점을 강조하며, 허구적인 호출보다 훨씬 바람직하다고 평가했다. (eriwang915)
여러 댓글러들이 장치 내 개인정보 보호와 ESP32 기반 장치와 같은 제약된 하드웨어에서 모델을 실행할 수 있다는 점을 칭찬했지만, 최신 ESP32-P4에서의 성능은 아직 테스트되지 않았다. (digdugdirk, viccis)
한계와 미해결 과제
- 일반적 추론: 모델은 도구 선택과 인수 채우기에 뛰어나지만, 때때로 비논리적인 추론을 보인다(예: "고양이가 토했다"는 표현을 진공청소기 동작으로 매핑). 이는 거대한 세계 지식을 희생하고 초소형 크기를 유지하는 데 따른 트레이드오프다.
- 데이터셋 의존성: 커뮤니티 구성원들은 사용자가 스마트홈 명령을 다양한 방식으로 표현하는 것을 처리하기 위해 기반 구조화 데이터셋의 품질이 매우 중요하다고 강조했다.
- 하드웨어 제약: Raspberry Pi 5에서는 추론이 가능하지만, 현재 Apple GPU를 활용하지 않아 macOS 장치에서 성능이 제한된다.
- 더 큰 오픈 모델과의 비교: 벤치마크 결과 Needle 3는 Qwen 3.8를 능가하고 Gemma 4-E4B에 근접하지만, MNLI와 같은 일반 분류 작업에서는 여전히 뒤처진다.
왜 Needle 3가 장치 내 AI에 중요한가
Needle 3는 30MB 미만의 모델로도 구조화된 JSON 출력과 신뢰할 수 있는 도구 호출이 가능하다는 것을 보여주며, 기가바이트 규모의 LLM을 호스팅할 수 없는 장치에서 개인정보 보호를 지키는 보조 도구의 가능성을 열었다. Cactus가 제공하는 하위 네트워크 계단식 설계 덕분에 개발자는 지연 시간, 메모리, 정확도 사이에서 균형을 맞출 수 있어, 스마트홈 허브, 웨어러블 기기, 자동차 인포테인먼트, 산업용 엣지 컨트롤러 등 다양한 분야에서 장치 내 AI의 실현 가능성을 높였다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- 프로젝트
- Dispatch