엣지 추론(Edge Inference) — Apple Neural Engine, Qualcomm Hexagon, WebGPU/WebLLM, Jetson
엣지(edge)에서의 핵심 제약은 연산(compute)이 아니라 메모리 대역폭(memory bandwidth)입니다. 모바일 DRAM은 50-90 GB/s 수준이고, 데이터센터의 HBM3는 2-3 TB/s를 넘습니다. 30-50배 격차입니다. 디코드(decode)는 메모리 바운드(memory-bound)이므로 이 격차가 결정적입니다. 2026년의 지형은 네 갈래로 나뉩니다. Apple M4/A18 Neural Engine은 통합 메모리(unified memory) 구조, 즉 CPU↔NPU 복사가 없는 구조에서 최대 38 TOPS를 냅니다. Qualcomm Snapdragon X Elite / 8 Gen 4 Hexagon은 45 TOPS에 도달합니다. WebGPU + WebLLM은 M3 Max에서 Llama 3.1 8B(Q4)를 약 41 tok/s로 실행합니다. 같은 백엔드(backend) 네이티브(native)의 대략 70-80% 수준이고, GitHub 스타(star) 17.6k, OpenAI 호환(OpenAI-compatible) API, 모바일 커버리지(coverage) 약 70-75%를 갖습니다. NVIDIA Jetson Orin Nano Super(8GB)는 Llama 3.2 3B / Phi-3가 들어가고, AGX Orin은 vLLM으로 gpt-oss-20b를 약 40 tok/s로 실행하며, Jetson T4000(JetPack 7.1)은 AGX Orin의 2배입니다. TensorRT Edge-LLM은 EAGLE-3, NVFP4, 청크 프리필(chunked prefill)을 지원하며, Bosch, ThunderSoft, MediaTek이 CES 2026에서 시연했습니다.
유형: Learn
언어: Python(표준 라이브러리, 장난감 수준의 대역폭 바운드 디코드 시뮬레이터(bandwidth-bound decode simulator))
선수 지식: Phase 17 · 04(vLLM Serving Internals), Phase 17 · 09(Production Quantization)
예상 시간: 약 60분
학습 목표
- 모바일 LLM 추론이 왜 메모리 대역폭 바운드(memory-bandwidth-bound)이며 연산(compute)은 부차적인지 설명할 수 있습니다.
- 네 가지 엣지 타깃(edge target), 즉 Apple ANE, Qualcomm Hexagon, WebGPU/WebLLM, NVIDIA Jetson을 열거하고 각각을 적합한 사용 사례(use case)에 맞출 수 있습니다.
- 2026년 WebGPU 커버리지 공백, 즉 Firefox Android가 따라오는 중이라는 점과 Safari iOS 26 출시(landing)를 말할 수 있습니다.
- 타깃별 양자화 형식(quantization format)을 고를 수 있습니다. 예: ANE에는 Core ML INT4 + FP16, Hexagon에는 QNN INT8/INT4, 브라우저(browser)에는 WebGPU Q4, Jetson Thor에는 NVFP4를 선택할 수 있습니다.
문제
어떤 고객이 온디바이스(on-device) 챗봇을 원합니다. 음성 우선(voice-first)이고, 기본값이 프라이빗(private-by-default)이며, 오프라인(offline)으로 동작해야 합니다. MacBook Pro M3 Max에서는 Llama 3.1 8B Q4가 약 55 tok/s로 동작합니다. 괜찮습니다. iPhone 16 Pro에서는 같은 모델이 3 tok/s로 동작합니다. 괜찮지 않습니다. Snapdragon 8 Gen 3가 들어간 중급 Android에서는 7 tok/s입니다. Chrome Android v121+의 WebGPU 브라우저에서는 기기에 따라 4-8 tok/s 사이입니다.
이러한 처리량(throughput) 편차는 단순한 포팅(porting) 문제가 아닙니다. 대역폭 격차 × 양자화 형식 × NPU가 사용자 공간(user-space)에서 접근 가능한지 여부가 만든 결과입니다. 2026년 엣지 추론은 서로 다른 네 가지 문제이고, 서로 다른 네 가지 해법입니다.
개념
대역폭(Bandwidth)이 진짜 천장(ceiling)입니다
디코드는 토큰(token)마다 가중치(weight) 전체를 읽습니다. Q4의 7B 모델 하나는 3.5 GB입니다. 3.5 GB를 50 GB/s로 읽으면 70 ms가 걸리고, 이론적인 천장(theoretical ceiling)은 약 14 tok/s입니다. 90 GB/s, 즉 고급 모바일 DRAM에서는 천장이 약 25 tok/s까지 올라갑니다. 이 숫자 아래에서는 연산을 아무리 늘려도 도움이 되지 않습니다.
데이터센터의 HBM3는 3 TB/s로 같은 3.5 GB를 1.2 ms 만에 읽습니다. 천장은 830 tok/s입니다. 같은 모델, 같은 가중치인데도 메모리 서브시스템(memory subsystem)이 다르기 때문에 결과가 달라집니다.
Apple Neural Engine(M4 / A18)
- 최대 38 TOPS입니다. 통합 메모리(unified memory), 즉 CPU와 ANE가 같은 메모리 풀(pool)을 공유하므로 복사 비용(copy overhead)이 없습니다.
- Core ML과 컴파일된
.mlmodel을 통해 접근하거나, PyTorch에서 Metal Performance Shaders(MPS)를 통해 접근합니다.
- llama.cpp의 Metal 백엔드는 MPS를 사용하며 ANE를 직접 쓰지는 않습니다. 네이티브 ANE를 쓰려면 Core ML 변환이 필요합니다.
- 2026년 iOS 앱(app)의 실용적 경로는 INT4 가중치 + FP16 활성화(activation)를 쓰는 Core ML입니다.
Qualcomm Hexagon(Snapdragon X Elite / 8 Gen 4)
- 최대 45 TOPS입니다. SoC 안에서 CPU/GPU와 통합되어 있지만 메모리 도메인(memory domain)은 분리되어 있습니다.
- QNN(Qualcomm Neural Network) SDK와 AI Hub가 PyTorch/ONNX 변환을 제공합니다.
- 채팅 템플릿(chat template), Llama 3.2, Phi-3가 AI Hub의 일급(first-class) 아티팩트(artifact)로 제공됩니다.
Intel / AMD NPU(Lunar Lake, Ryzen AI 300)
- 40-50 TOPS입니다. 소프트웨어 생태계(software)는 Apple/Qualcomm보다 뒤처져 있습니다. OpenVINO가 개선되고 있지만 아직 틈새(niche)에 머무릅니다.
- Windows ARM의 코파일럿(copilot) 앱과, 로컬 우선(local-first)을 지향하는 AMD/Intel 데스크톱 네이티브 앱에 적합합니다.
WebGPU + WebLLM
- WebGPU 컴퓨트 셰이더(compute shader)로 브라우저 안에서 모델을 실행합니다. 설치가 필요 없습니다.
- M3 Max에서 Llama 3.1 8B Q4가 약 41 tok/s입니다. 같은 백엔드의 네이티브 대비 약 70-80%입니다.
- WebLLM은 GitHub 스타 17.6k, OpenAI 호환 JS API, Apache 2.0 라이선스를 갖습니다.
- 2026년 커버리지는 Chrome Android v121+, Safari iOS 26 정식 출시(GA), Firefox Android는 아직 따라오는 중입니다. 전체 모바일 커버리지는 약 70-75%입니다.
NVIDIA Jetson 계열
- Orin Nano Super(8GB): Llama 3.2 3B, Phi-3가 들어가며 tok/s도 괜찮습니다.
- AGX Orin: vLLM으로 gpt-oss-20b를 약 40 tok/s로 실행합니다.
- Thor / T4000(JetPack 7.1): AGX Orin의 2배 성능이며 EAGLE-3와 NVFP4를 지원합니다.
- TensorRT Edge-LLM(2026)은 EAGLE-3 추측 디코딩(speculative decoding), NVFP4 가중치, 청크 프리필(chunked prefill)을 지원합니다. 데이터센터 최적화가 엣지로 이식된 결과물입니다.
타깃별 양자화 선택
| 타깃(Target) | 형식(Format) | 비고(Notes) |
|---|
| Apple ANE | INT4 weights + FP16 activations | Core ML 변환 경로 |
| Qualcomm Hexagon | QNN INT8 / INT4 | AI Hub 컨버터(converter) |
| WebGPU / WebLLM | Q4 MLC(q4f16_1) | mlc_llm convert_weight와 컴파일된 .wasm 사용. GGUF는 지원하지 않음 |
| Jetson Orin Nano | Q4 GGUF 또는 TRT-LLM INT4 | 메모리 바운드 |
| Jetson AGX / Thor | NVFP4 + FP8 KV | Edge-LLM 경로 |
엣지에서의 긴 컨텍스트 함정(long-context trap)
Llama 3.1의 128K 컨텍스트(context)는 데이터센터용 기능입니다. RAM 8 GB 스마트폰에서 4 GB 모델 + 32K 토큰에 필요한 2 GB KV 캐시(KV cache) + OS 오버헤드(overhead)를 합치면 메모리 부족(OOM)이 됩니다. 엣지 배포(deployment)는 공격적인 KV 양자화(KV quantization, 예: Q4 KV)를 받아들이지 않는 한 컨텍스트를 4K-8K로 유지합니다.
음성(Voice)이 결정적 사용 사례입니다
음성 에이전트(voice agent)는 지연(latency)에 민감합니다. 첫 토큰(first token)이 500 ms 미만이어야 합니다. 로컬 추론(local inference)은 네트워크 지연을 완전히 제거합니다. 음성-텍스트 변환(speech-to-text), 예를 들어 엣지에서 실행되는 Whisper Turbo 변형(variant)과 결합하면 엣지 추론은 양산 품질(production-quality)의 음성 루프(voice loop)가 됩니다.
기억해야 할 숫자
- Apple M4 / A18 ANE: 38 TOPS.
- Qualcomm Hexagon SD X Elite: 45 TOPS.
- WebLLM M3 Max: Llama 3.1 8B Q4에서 약 41 tok/s.
- AGX Orin: vLLM으로 gpt-oss-20b 약 40 tok/s.
- 데이터센터-엣지 대역폭 격차: 30-50배.
- WebGPU 모바일 커버리지: 약 70-75%(Firefox Android 지연).
사용해보기
code/main.py는 엣지 타깃별 대역폭 바운드 수식으로 이론적인 디코드 처리량 천장(theoretical decode throughput ceiling)을 계산합니다. 관측된 벤치마크(observed benchmark)와 비교하고, 병목(bottleneck)이 연산이 아니라 대역폭이라는 점을 강조합니다.
산출물 만들기
이 강의는 outputs/skill-edge-target-picker.md를 만듭니다. 플랫폼(iOS/Android/browser/Jetson), 모델, 지연/메모리 예산(latency/memory budget)이 주어지면 양자화 형식과 변환 파이프라인(conversion pipeline)을 골라 줍니다.
연습문제
- 쉬움:
code/main.py를 실행하세요. Snapdragon 8 Gen 3의 대역폭이 약 77 GB/s일 때 Q4의 7B 모델 디코드 천장을 계산하세요. 관측값인 6-8 tok/s와 비교했을 때 런타임(runtime)은 효율적입니까?
- 중간: Android의 WebGPU는 Chrome v121+가 필요합니다. 오래된 브라우저를 위한 폴백(fallback)을 설계하세요. 같은 OpenAI 호환 API를 사용하는 서버 측(server-side) 폴백을 고려하세요.
- 중간: iOS 앱에서 4K 컨텍스트 스트리밍(streaming)이 필요합니다. iPhone 16에서 활성 메모리(active memory)를 4 GB 아래로 유지하려면 어떤 모델/형식 조합이 필요합니까?
- 어려움: Jetson AGX Orin은 gpt-oss-20b를 40 tok/s로 실행하지만 Jetson Nano에는 3B만 들어갑니다. 제품이 둘 다 타깃으로 한다면 추론 스택(inference stack)을 어떻게 통합하겠습니까?
- 어려움: "WebLLM은 2026년에 양산 준비(production-ready) 상태인가?"를 논증하세요. 커버리지, 성능, Firefox Android의 공백을 근거로 삼으세요.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| ANE | "Apple neural engine" | M 시리즈와 A 시리즈에 들어간 온디바이스 NPU. 통합 메모리 사용 |
| Hexagon | "Qualcomm NPU" | Snapdragon에 들어간 NPU. QNN SDK로 접근 |
| WebGPU | "browser GPU" | W3C가 표준화한 브라우저 GPU API. 2026년 Chrome/Safari에 적용 |
| WebLLM | "browser LLM runtime" | MLC-LLM 프로젝트. Apache 2.0. OpenAI 호환 JS |
| Jetson | "NVIDIA edge" | Orin Nano / AGX / Thor / T4000 계열 |
| TRT Edge-LLM | "edge TensorRT" | TensorRT-LLM의 2026년 엣지 포트(port). EAGLE-3 + NVFP4 |
| Unified memory | "shared pool" | CPU와 NPU가 같은 RAM을 바라보는 구조. 복사 비용 없음 |
| Bandwidth-bound | "memory limited" | 가중치를 읽는 bytes/sec가 디코드를 제한하는 상태 |
| Core ML | "Apple conversion" | ANE 네이티브 모델을 위한 Apple 프레임워크 |
| QNN | "Qualcomm stack" | Qualcomm Neural Network SDK |
더 읽을거리