스냅드래곤 기기에서 언어 모델을 실행하는 개발자에게 초저비트 모델을 신경망 처리 장치(NPU)로 돌릴 선택지가 생겼다. 모델 가중치를 적은 비트로 표현하는 형식과 필요한 연산이 추가돼, 1비트·2비트 모델을 기기의 가속기로 실행할 기반이 마련됐다.
1. 두 릴리스가 나눠 완성한 지원
공개일은 b11716이 2026년 10월 17일, b11717이 18일이다. 날짜는 협정세계시 기준이며, 앞선 릴리스가 저비트 행렬곱을 넣고 후속 릴리스가 변환과 행 추출 연산을 보완했다.
새로 지원하는 형식은 1비트 양자화인 Q1_0과 2비트 양자화인 Q2_0이다. 양자화는 모델의 가중치를 더 적은 비트로 표현하는 방식이다. 첫 변경은 모델을 불러올 때 가중치 배치를 다시 포장하고, 임의 바이트 구간을 다시 읽는 기능도 포함한다.
행렬곱은 벡터 연산 장치인 HVX와 행렬 가속기인 HMX 양쪽에서 지원한다. 단순히 파일을 읽는 데 그치지 않고, 새 형식의 가중치를 실제 계산 경로에 연결한 변경이다.
2. 행 추출과 아다마르 변환 추가
후속 변경은 필요한 행만 골라 읽는 GET_ROWS를 평면 배치와 타일 배치 모두에 추가했다. 타일 배치는 행렬을 작은 블록으로 나눠 연속 저장하는 방식으로, 가속기가 계산할 데이터를 가져오기 쉽게 만든다.
아다마르 행렬곱도 추가됐다. 이는 입력값을 덧셈과 뺄셈으로 섞는 변환이다. 이 경로는 처리 길이가 32 이상인 2의 거듭제곱이어야 하고, 가중치와 출력은 32비트 부동소수점, 입력은 32비트 또는 16비트 부동소수점이어야 한다.
입력의 각 행과 출력은 연속 배치돼야 하며, 입력과 출력의 크기도 같아야 한다. 장치 내부 작업 메모리에 들어가는지도 지원 판정에 포함된다. 따라서 새 저비트 가중치 지원과 아다마르 연산의 자료형 조건은 구분해서 읽어야 한다.
3. 저장 공간 이익과 실행 중 변환 비용
후속 변경 제안자는 Bonsai-2의 1비트·2비트 경로가 이제 온전히 사용 가능하다고 설명했다. 다만 4비트 이상 형식보다 줄어든 주메모리 점유를 더 잘 활용하려면 추가 최적화가 필요하다고 밝혔다. 사용 가능하다는 선언이 곧 최적의 실행 효율을 뜻하지는 않는다.
개발자 문서에 따르면 행렬 가속기 경로에서는 576바이트짜리 1비트 타일을 실행 중 16비트 부동소수점 타일 네 개, 합계 8192바이트로 펼쳐 장치 내부 메모리에 둔다. 같은 576바이트의 2비트 타일은 두 개, 합계 4096바이트로 펼치므로 저장 표현의 축소와 별개로 변환 작업과 중간 저장 공간이 필요하다.
4. 검증 결과와 성능 근거의 경계
첫 변경 제안에는 여러 아키텍처의 빌드 통과와 안드로이드의 SM8850 기기에서 v81로 시험했다는 기록이 있다. 1비트와 2비트 지원은 각각 128개 테스트 중 128개를 통과했다. 이는 첫 변경의 검증 기록이며, 후속 변경까지 같은 범위로 검증했다는 뜻은 아니다.
두 변경 제안에는 새 형식의 처리 속도나 실제 메모리 절감폭을 비교한 측정치가 제시되지 않았다. 그러므로 테스트 통과 수를 속도 향상의 근거로 삼을 수는 없다.
5. 배포본과 연산 시험으로 접근
릴리스에는 스냅드래곤용 리눅스 및 안드로이드 arm64 배포본과 설치 안내 링크가 있다. 이 배포본은 CPU와 Adreno GPU, Hexagon NPU를 포함한다. 직접 빌드하는 경우 안내 문서의 통합 빌드 도구가 도커 컨테이너와 프리셋을 이용해 컴파일과 배포를 돕는다.
다음은 저장된 스냅드래곤 안내 문서의 행렬곱 시험 명령을 그대로 옮긴 것이다. 지정한 NPU에서 연산을 시험하는 예이며, 본사이-2 모델의 실행 명령이나 성능 측정 결과는 아니다.
~/src/llama.cpp$ ./scripts/snapdragon/run.py --target adb --devices HTP0:0 -- test-backend-ops -b HTP0:0 -o MUL_MAT모델 실행은 실행 도구에서 NPU 장치를 선택하고 모델 경로를 넘기는 방식이다. 다만 새 형식 모델을 만드는 구체적인 변환 명령은 제공된 자료에 제시되지 않았다.
이번 변경은 초저비트 모델을 NPU에서 시험할 기반을 넓혔으며, 도입 판단에서는 연산 지원과 실행 효율을 나눠 확인해야 한다.
