정식 배포 전 시험판인 llama.cpp의 새 사전 공개판이 스냅드래곤의 신경망 처리 장치에서 합성곱을 실행하도록 지원을 넓혔다. 음성 모델을 기기에서 돌리는 개발자는 입력의 특징을 뽑는 계산을 이 장치에 맡기는 경로를 시험할 수 있다.
1. 특징을 뽑는 두 계산을 Hexagon에 추가
2026년 10월 28일 공개된 b11970은 스냅드래곤의 신경망 처리 장치인 Hexagon 실행부에 일반 합성곱과 깊이별 합성곱을 추가했다. 합성곱은 입력의 작은 영역을 훑으며 특징을 뽑는 계산이다. 채널은 서로 나뉜 특징 데이터 묶음이다. 일반 방식이 여러 채널의 정보를 조합한다면, 깊이별 방식은 채널마다 따로 계산한다.
원문 코드에서 두 연산의 이름은 CONV_2D와 CONV_2D_DW다. 지원 추가의 의미는 모델을 구성하는 이 계산들을 Hexagon에서 직접 실행할 선택지가 늘었다는 데 있다. 리뷰에는 새 연산을 포함한 음성 모델 전체를 실행하는 사례도 실렸다.
일반 합성곱은 Hexagon의 행렬 연산 장치인 HMX를 이용하며, 입력을 작은 묶음으로 준비해 행렬 곱셈 형태로 계산한다. 깊이별 합성곱에는 입력 데이터가 메모리에 놓인 순서에 맞춘 별도의 벡터 계산 경로, 여러 값을 묶어 처리하는 방식이 들어갔다.
2. 음성 입력부터 응답까지 실행한 사례
변경 제안의 리뷰어는 LFM2.5-Audio-1.5B-Q4_0 모델로 음성을 받아쓰는 실행 명령을 남겼다. 숫자 정밀도를 낮춰 용량을 줄인 4비트 양자화 모델과 32K 컨텍스트를 사용하며, 주 모델과 음성 정보를 입력 형식에 맞추는 음성 입력 처리용 투영 모델을 서로 다른 연산 장치에 배치한다.
아래는 리뷰 댓글의 명령을 그대로 옮긴 것이다. 개발자는 음성 파일을 받아 응답을 생성하는 전체 실행에서 새 연산이 쓰이는 사례를 이 명령으로 살펴볼 수 있다.
./scripts/snapdragon/run.py --target adb --devices 2 -- ./bin/llama-cli -m ../gguf/LFM2.5-Audio-1.5B-Q4_0.gguf --mmproj ../gguf/mmproj-LFM2.5-Audio-1.5B-Q4_0.gguf --audio ../test-images/sample-speech-1m.wav -p "Please transcribe the audio for me." --device HTP0 --mmproj-device HTP1 -c $((32*1024)) -ngl 99 --jinja -s아래는 같은 리뷰 실행에서 리뷰어가 기록한 두 단계의 속도다. 출처는 변경 제안의 리뷰 댓글이다.
표: 음성 모델의 단계별 처리 속도
조건: 위 명령과 동일한 리뷰 실행. LFM2.5-Audio-1.5B-Q4_0, 주 모델 HTP0·투영 모델 HTP1, 32K 컨텍스트, sample-speech-1m.wav 입력
단위: 토큰/초
| 단계 | 속도 |
|---|---|
| 입력 처리(Prompt) | 162.8 |
| 생성(Generation) | 73.9 |
리뷰어는 새 합성곱 연산이 양호해 보인다고 평가하면서, 행렬 곱셈(MUL_MAT)과 데이터를 메모리에 연속으로 놓는 연산(CONT)에는 추가 최적화가 필요하다고 적었다. 따라서 이 사례가 개발자에게 주는 다음 점검 대상은 합성곱 지원 여부뿐 아니라 모델 전체의 다른 연산에 드는 시간이다.
3. 연산 검증과 플랫폼별 설치 경로
변경 제안 작성자는 v73·v75·v81 안드로이드 기기에서 시험했다고 밝혔다. 작성자가 보고한 백엔드, 각 장치에서 연산을 맡는 실행부의 연산 테스트 결과는 1021개 중 1021개 통과다. 연산 단위의 검증과 별도로 앞선 음성 실행 예가 모델 전체의 동작 사례를 제공한다.
릴리스 페이지에는 스냅드래곤용 리눅스 arm64와 안드로이드 arm64 빌드가 각각 올라와 있다. 두 빌드는 중앙 처리 장치, Adreno 그래픽 장치, Hexagon 신경망 처리 장치를 지원하는 패키지로 표시돼 있다. 각 다운로드 옆에는 해당 플랫폼의 설정 안내 링크가 있다.
사용자는 자신의 운영체제에 맞는 패키지와 안내를 선택하고, 리뷰의 음성 실행 예를 참고해 모델 배치를 시험할 수 있다. 배포판은 사전 공개 상태로 표시돼 있어, 도입 단계에서는 이 배포 상태도 함께 확인할 항목이다.
4. 실행 범위 확대와 함께 관리할 메모리
합성곱을 Hexagon에 맡길 수 있는 이점에는 데이터를 계산에 맞게 준비하는 비용이 따른다. 구현은 입력·가중치·출력에 임시 메모리를 배정하고, 장치 내부 메모리 크기에 맞춰 작업을 나눈다. 가중치는 모델이 학습한 곱셈 계수다. HMX 계산 결과를 16비트 반정밀도로 저장하기 전에는 가중치의 최대 절댓값과 곱셈에 쓰이는 항 수에 따라 결과를 축소하고, 32비트 출력으로 풀어낼 때 원래 크기로 복원한다. 이는 중간 결과가 반정밀도로 표현할 수 있는 범위를 넘는 것을 막기 위한 처리다. 개발자가 살펴볼 대상도 연산 지원에서 데이터 준비와 이동을 포함한 전체 실행으로 넓어진다.
5. 적용할 모델과 측정값의 범위
소수 값을 표현하는 부동소수점 자료형으로 가중치는 16비트 또는 32비트, 입력·출력은 32비트를 받는다. 데이터 배치 조건과 함께 깊이별 합성곱에는 필터의 가로·세로 크기를 곱한 값이 64 이하여야 한다는 조건이 있다.
리뷰의 속도는 칩셋·운영체제 버전·반복 횟수와 이전 버전 비교값이 함께 제시되지 않은 단일 실행 결과이므로, 같은 조건의 개선 폭보다는 해당 음성 모델의 실행 사례로 읽는 편이 적절하다.
b11970의 핵심은 합성곱의 Hexagon 실행 범위 확대이며, 도입 판단의 다음 기준은 사용할 모델 전체의 처리 성능이다.
