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 작업을 수행합니다.
  • 로컬 의미론적 검색 – 임베딩을 통해 기기 내 문서 검색 및 중복 알림 병합이 가능합니다.

개발자 워크플로우

  1. cactus-needle Python 패키지를 설치합니다. 추론 엔진은 Hugging Face에서 가져와 캐시됩니다.
  2. Python 함수를 데코레이팅하여 도구를 정의합니다. 함수 시그니처는 인자 유형을 제공하고, 독스트링은 설명을 제공하며, run()이 호출을 실행합니다.
  3. 신뢰도 임계값 미만에서도 결정론적 동작을 보장하기 위해 항상 특정 도구로 라우팅되어야 하는 의도에 대해 트리거(정규식 패턴)를 추가합니다.
  4. Pydantic 모델을 extract()에 전달하여 구조화된 데이터를 추출하고 유형화된 객체를 받습니다.
  5. 고정된 베이스 모델 위에서 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

관련