TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 23 READS

14MB로 도구를 호출하는 모델: 커액터스 니들2가 겨냥하는 저가 엣지

14MB로 도구를 호출하는 모델: 커액터스 니들2가 겨냥하는 저가 엣지
SOURCE IMAGE · HACKER NEWS

엣지 AI라는 말은 그동안 맥이나 고사양 PC를 떠올리게 했다. 하지만 실제 세상의 엣지는 대부분 값싼 하드웨어다. 연결된 IoT 기기는 약 210억 대로 PC(약 15억 대)를 압도하고, 신흥 시장에서는 대다수 스마트폰이 200달러 미만에 출하된다. 저가 폰, 라즈베리 파이, 마이크로컨트롤러, 웨어러블, 소형 로봇, 커넥티드 홈 기기를 모두 합치면 엣지 기기의 약 5분의 4가 200달러 미만이다. 커액터스(Cactus)가 공개한 니들2(Needle 2)는 바로 이 영역을 노린다. GPU도 NPU도 없고 램은 수백 MB에 불과한 하드웨어다. 45M(4,500만) 파라미터 모델이 14MB 바이너리로 돌아가고, 세션 램은 28MB에 머문다.

문제를 작게 다시 정의하다

니들의 출발점은 "불을 켜는 데 프런티어 모델이 필요하지 않다"는 관찰이다. 시계든 집이든 로봇이든 이미 자신의 기능을 타입이 정해진 매개변수를 가진 함수로 노출하고 있다. 그렇다면 남는 어려운 문제는 지저분한 자연어 한 문장을 어떤 함수에 어떤 값으로 매핑할지 정하는 일뿐이다. 이렇게 틀을 좁히면 세상 지식도, 장문 산문 생성 능력도 필요 없어진다. 챗봇에는 수십억 파라미터가 필요하지만 이 작업에는 45M로 충분하다는 것이 니들 설계의 핵심 베팅이다. 구조화 추출도 같은 형식에 들어온다. 스키마와 문단을 넣으면 타입이 지정된 필드가 돌아오고, 열거형 필드는 분류기가 되며, 배열 필드는 한 번의 호출로 목록을 모은다. 모든 응답은 호출 봉투(call envelope)로 이뤄지고, 빈 호출은 거절을 의미하며, 선언된 스키마에서 컴파일된 바이트 단위 문법이 토큰 하나하나를 제약한다. 문법이 구문을 책임지므로 45M 파라미터 전부가 함수 선택과 인자 근거화에 쓰인다.

작은 모델이 모든 것을 커버할 수는 없다. 니들은 이를 추측으로 메우는 대신 스스로 한계를 드러낸다. 모든 응답에는 학습된 신뢰도 점수가 붙고, 범위를 벗어난 요청에는 빈 호출을 돌려준다. 임계값을 넘으면 실행하고, 못 넘으면 되묻거나 클라우드로 넘긴다. 대부분의 기기 요청은 일상적인 제어이므로 이런 에스컬레이션은 드물게 일어나고, 기본 경로는 사설·즉시·무료로 유지된다.

양자화를 사후에 하지 않는다

작은 모델은 사후 양자화에 특히 취약하다. 니들2는 사후 양자화를 아예 하지 않고, 사전학습부터 사후학습까지 커액터스 퀀트(Cactus Quants)를 겨냥해 가중치·활성값·KV 캐시를 함께 훈련시킨다. 즉 배포되는 2비트 모델이 곧 훈련된 모델 그 자체다. 이 방식으로 45M 파라미터가 14MB에 담긴다. 아키텍처 측면에서도 파라미터를 아끼는 선택이 이어진다. 하다마드 MLP는 통상의 밀집 투영 대신 고정된 월시 변환과 학습된 대각 성분을 써서 채널 혼합 비용을 거의 0에 가깝게 줄이고, 엔그램(engram)은 세상 지식을 해시된 n-그램 테이블로 빼내 토큰당 몇 행만 읽는다. 27층·512폭 네트워크에 다중 레인 잔차 스트림을 더해 훨씬 넓은 망 수준의 라우팅 유연성을 층당 몇 번의 내적 비용으로 확보한다. 메모리 시스템은 고정 램 기기를 거꾸로 상정해 설계됐다. 어텐션은 256토큰 슬라이딩 윈도로 KV 캐시를 세션 길이와 무관하게 묶어두고, 시스템 프롬프트와 도구 선언은 영구 싱크로 고정돼 도구 정보가 구조적으로 밀려나지 않는다. 그 결과 램 사용량은 대화가 길어져도 28MB라는 결정적 상한을 지킨다.

엔진은 계산하지 않는 것으로 속도를 번다

추론 엔진의 속도는 계산을 거부하는 데서 나온다. 가중치는 램으로 풀어놓지 않고 2비트 코드를 벡터 레지스터 안에서 정수 내적으로 전개하므로 상주 메모리가 블롭 크기에 머물고 연산 경로는 활성값·KV 캐시·라우팅 테이블까지 int8로 일관된다. 문법은 보장 장치이자 최적화 장치다. 로짓이 만들어지기 전에 어떤 토큰이 합법인지 알기 때문에 구조 토큰에서는 어휘 투영의 최대 98%를 건너뛰고, 출력이 이미 강제된 단계에서는 통째로 생략한다. 하나의 범용 바이너리가 시작 시 CPU를 탐지해 SDOT, NEON, AVX2, RISC-V 벡터, wasm SIMD, 스칼라 중 커널 계층을 스스로 고른다. 이 모든 기법은 출력을 바꾸지 않으며 참조 경로와 토큰 단위로 검증된다. 근본적으로는 에너지 논리다. 플래시나 DRAM에서 1바이트를 옮기는 비용이 곱셈-누산보다 수십~수백 배 크기 때문에, 관건은 토큰당 FLOPs와 바이트를 함께 줄이는 것이다. 니들과 같은 폭·깊이의 통상 트랜스포머는 토큰당 164 MFLOPs를, 같은 파라미터 수로 압축해도 87 MFLOPs를 쓰지만, 니들은 70 MFLOPs만 쓰고 파라미터의 5분의 1을 산술 비용이 없는 조회 메모리로 둔다. 커액터스 측 계산으로는 벤치마크 대상 모델들보다 토큰당 7배에서 85배 적은 연산량이다.

벤치마크와 솔직한 비대칭

평가는 구글 모바일 액션, DroidCall, Seal-Tools의 도메인 내·외 테스트, BFCL v4 단일 턴 등 다섯 개 공개 함수 호출 벤치마크에서 이뤄졌다. 채점은 순서까지 따지는 엄격 완전 일치로, 함수 이름·호출 순서·모든 인자 값이 맞아야 통과한다. 니들2 수치는 CQ 2비트 가중치, 도구 검색 활성화, 256토큰 슬라이딩 윈도라는 실제 배포 구성 그대로 측정됐고, 베이스라인은 vLLM에서 f16 전체 문맥으로, 애플 FM은 온디바이스로 돌렸다. 커액터스는 두 가지 비대칭을 먼저 인정한다. 정밀도 측면에서 베이스라인이 f16을 유지하는 것은 베이스라인에 유리하고, 니들이 도구 호출만을 위해 훈련된 반면 베이스라인은 범용 언어 모델이라는 점은 니들에 유리하다. 표가 답하려는 질문은 하나다. 온디바이스 예산 안에서 어떤 모델이 도구 호출을 정확히 실행하는가.

한계도 분명하다. 니들의 학습 코퍼스는 스마트홈·모바일·웨어러블·TV·차량 같은 소비자 기기 동작과 구조화 추출에 집중돼 있어, BFCL의 범용·엔터프라이즈 API 표면, 특히 자바와 자바스크립트 SDK 범주는 그 분포 바깥에 있다. 그럼에도 파이썬 단순 호출에서는 여섯 배 큰 FunctionGemma와 1점 차 이내로 붙고, 3,641개 행 전체에서 93.4%의 형식 정합률을 지킨다. 격차는 학습 데이터가 닿지 않은 자바, 자바스크립트, 병렬 다중 호출에 몰려 있다. 실무자 관점에서 니들의 의미는 명확하다. 기성 범용 어시스턴트가 아니라, 45M이라는 크기 덕에 자신의 컴퓨터에서 몇 분에서 몇 시간이면 재훈련해 자기 기기의 도구 어휘를 말하도록 특화할 수 있는 모델이라는 점이다. 실제로 웨어러블 선구 기업 페블은 화면 없는 인덱스 링을 위해 Index 01 앱에서 이 모델을 로컬로 구동해, 네트워크 없이도 음성 요청을 동작으로 바꾼다. 다만 벤치마크의 비대칭이 보여주듯, 이 접근은 범용성을 포기하는 대가로 좁은 영역의 정확도와 초저전력을 얻는 명확한 트레이드오프 위에 서 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://cactuscompute.com/needle
SHARE
처리 중...