LiteRT를 사용한 Qualcomm NPU에서 최고 성능 발휘하기
Source: Google Developers Blog
번역할 텍스트를 제공해 주시면, 요청하신 대로 한국어로 번역해 드리겠습니다. (코드 블록, URL 및 마크다운 형식은 그대로 유지됩니다.)
개요
NOV 24, 2025
Lu Wang – 시니어 스태프 소프트웨어 엔지니어
Modern smartphones feature sophisticated SoCs (system‑on‑a‑chip), composed of CPU, GPU, and NPU, which enable compelling on‑device GenAI experiences that are far more interactive and real‑time than their server‑only counterparts. The GPU is the most ubiquitous accelerator for AI tasks, with GPU compute available on roughly 90 % of all Android devices. However, relying solely on the GPU can create performance bottlenecks—especially when building complex, interactive GenAI experiences.
예시 시나리오
- 디바이스에서 연산 집약적인 텍스트‑투‑이미지 생성 모델을 실행한다.
- 동시에 ML 기반 세그멘테이션 모델로 실시간 카메라 피드를 처리한다.
가장 강력한 모바일 GPU조차도 이 결합된 부하 하에서는 어려움을 겪으며, 급격한 프레임 드롭과 깨진 사용자 경험을 초래한다.
비디오 (플레이스홀더)
죄송합니다, 사용 중인 브라우저가 이 비디오 재생을 지원하지 않습니다.
![]() | 전체 GPU 추론 시 성능 병목 현상(왼쪽) vs. NPU/GPU 병렬 처리 시 원활한 사용자 경험(오른쪽). Qualcomm Snapdragon 8 Elite를 탑재한 Samsung Galaxy S25 Ultra에서 캡처. |
NPU가 중요한 이유
- 높은 처리량 – 전용 AI 연산을 위해 수십 TOPS(tera‑operations‑per‑second)를 제공하며, 모바일 GPU가 유지할 수 있는 수준을 크게 초과합니다.
- 전력 효율성 – CPU나 GPU보다 훨씬 높은 와트당 TOPS를 제공하며, 배터리 구동 장치에 중요한 요소입니다.
- 보편성 – 이제는 틈새 기능이 아니며, 최근 Qualcomm SoC의 80 % 이상에 NPU가 포함되어 있습니다.
- 병렬성 – GPU와 CPU와 병렬로 실행되어, 무거운 AI 처리를 NPU에 오프로드하고 GPU는 렌더링을, CPU는 메인 스레드 로직을 담당하도록 합니다.
이 현대적인 아키텍처는 최신 AI 애플리케이션이 요구하는 부드럽고 반응성이 뛰어나며 빠른 성능을 구현합니다.
LiteRT Qualcomm AI Engine Direct Accelerator 소개
NPU 성능을 LiteRT에 제공하기 위해, 구글의 고성능 온‑디바이스 ML 프레임워크인 LiteRT에 대해 주요 업그레이드를 발표하게 되어 기쁩니다: LiteRT Qualcomm AI Engine Direct (QNN) Accelerator. Qualcomm과 긴밀히 협업하여 개발되었으며, 이전의 TFLite QNN delegate를 대체합니다.
개발자를 위한 새로운 기능
1. 통합되고 간소화된 모바일 배포 워크플로
더 이상 다음을 할 필요가 없습니다:
- 저수준 벤더‑특정 SDK와 상호작용 – LiteRT는 SoC 컴파일러와 런타임을 통합하고 이를 단일하고 간소화된 API로 노출합니다.
- 개별 SoC 버전을 대상으로 함 – LiteRT는 칩 간 파편화를 추상화하여 여러 SoC에 동시에 배포를 확장할 수 있게 합니다.
이제 ahead‑of‑time (AOT) 또는 on‑device compilation 중 하나를 사용하여 지원되는 모든 디바이스에 모델을 원활하게 배포할 수 있습니다. 이를 통해 사전 학습된 .tflite 모델(예: Qualcomm AI Hub에서) 을 프로덕션에 통합하는 것이 그 어느 때보다 쉬워졌습니다.
2. 최첨단 온‑디바이스 성능
- 다양한 LiteRT 연산을 지원하여 전체 모델 위임 및 최대 NPU 활용을 가능하게 합니다.
- 복잡한 LLM 및 GenAI 모델을 위한 특수 커널과 최적화를 포함하여 Gemma와 FastVLM과 같은 모델에 대해 최신 성능을 제공합니다.
우수한 성능, 실제 결과
우리는 새로운 LiteRT QNN accelerator를 비전, 오디오, NLP를 아우르는 72개의 표준 ML 모델에 대해 벤치마킹했습니다. 결과는 원시 성능이 크게 향상되었음을 보여줍니다:
- CPU 대비 최대 100× 속도 향상
- GPU 대비 최대 10× 속도 향상
이 가속기는 90개의 LiteRT 연산을 지원하며, 72개 모델 중 64개가 NPU에 완전히 위임될 수 있습니다.
실시간 영향
Qualcomm 최신 플래그십 SoC인 Snapdragon 8 Elite Gen 5에서 성능 이점은 상당합니다:
- > 56개 모델이 11,000 토큰 / s 로 실행
- 디코드 처리량: > 100 토큰 / s
이러한 수치는 모바일 디바이스에서 부드럽고 실시간 인터랙티브 AI 경험을 가능하게 합니다.
라이브 데모: 장면 이해
Note: 모든 브라우저에서 비디오 재생이 지원되지 않을 수 있습니다.
Sorry, your browser doesn't support playback for this video.
Snapdragon 8 Elite Gen 5와 Xiaomi 17 Pro Max에서 실행되는 FastVLM 비전 모달리티를 활용한 장면 이해.
3단계로 시작하기
LiteRT의 통합 워크플로우를 사용해 Qualcomm SoC의 NPU에 .tflite 모델을 배포합니다. 사전 학습된, 프로덕션 품질 모델은 Qualcomm AI Hub와 같은 소스에서 제공됩니다.
1단계 (선택) – 대상 SoC에 대한 AOT 컴파일
모델을 오프라인에서 사전 컴파일(AOT)하는 것은 선택 사항이지만, 특히 대형 모델의 경우 디바이스 초기화 시간과 최대 메모리 사용량을 줄여줍니다.
1️⃣ 호스트에서 LiteRT로 컴파일
from ai_edge_litert.aot import aot_compile as aot_lib
from ai_edge_litert.aot.vendors.qualcomm import target as qnn_target
# Compile for **all** supported SoCs
compiled_models = aot_lib.aot_compile(tflite_model_path)
# Or compile for **specific** Qualcomm SoC versions
# Example: Snapdragon 8 Elite Gen5 (SM8850)
sm8850_target = qnn_target.Target(qnn_target.SocModel.SM8850)
compiled_models = aot_lib.aot_compile(
tflite_model_path,
target=[sm8850_target],
)
2️⃣ 컴파일된 모델을 Google Play AI Pack으로 내보내기
from ai_edge_litert.aot.ai_pack import export_lib as ai_pack_export
# Bundle model variants + metadata so Play can deliver the right one
ai_pack_export.export(
compiled_models,
ai_pack_dir,
ai_pack_name,
litert_model_name,
)
전체 예제: LiteRT AOT Compilation notebook을 참고하세요.
2단계 – Google Play for On‑device AI로 배포
Android 프로젝트에 모델(또는 AI Pack)을 추가합니다.
📦 온‑디바이스 컴파일용
원본 .tflite 파일을 app/src/main/assets/에 복사합니다.
📦 AOT 컴파일용
1단계에서 생성된 전체 AI Pack을 프로젝트 루트에 복사하고 Gradle에 참조합니다:
// my_app/settings.gradle.kts
include(":ai_pack:my_model")
// my_app/app/build.gradle.kts
android {
// …
assetPacks.add(":ai_pack:my_model")
}
3️⃣ Qualcomm NPU 런타임 라이브러리 가져오기
# For AOT compilation
./litert_npu_runtime_libraries/fetch_qualcomm_library.sh # downloads litert_npu_runtime_libraries.zip
# For on‑device (JIT) compilation
# ./litert_npu_runtime_libraries/fetch_qualcomm_library.sh # downloads litert_npu_runtime_libraries_jit.zip
4️⃣ 런타임 라이브러리를 동적 기능 모듈로 추가
// my_app/settings.gradle.kts
include(":litert_npu_runtime_libraries:runtime_strings")
include(":litert_npu_runtime_libraries:qualcomm_runtime_v79")
// my_app/app/build.gradle.kts
android {
// …
dynamicFeatures.add(":litert_npu_runtime_libraries:qualcomm_runtime_v79")
}
dependencies {
// Strings for NPU runtime libraries
implementation(project(":litert_npu_runtime_libraries:runtime_strings"))
}
전체 가이드: 공식 Play for On‑device AI tutorial을 참고하세요.
3단계 – LiteRT Runtime API로 NPU에서 추론 실행
LiteRT는 SoC‑specific 세부 사항을 숨기고 NPU를 사용할 수 없을 때 내장된 fallback(CPU/GPU)을 제공합니다. AOT‑컴파일된 모델은 부분 위임도 지원합니다.
// 1️⃣ Load the model (fallback to GPU if NPU is missing)
val model = CompiledModel.create(
context.assets,
"model/mymodel.tflite",
CompiledModel.Options(Accelerator.NPU, Accelerator.GPU)
)
// 2️⃣ Allocate input / output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// 3️⃣ Fill the first input buffer
inputBuffers[0].writeFloat(/* your input data */)
// 4️⃣ Run inference
model.run(inputBuffers, outputBuffers)
// 5️⃣ Read the output
val result = outputBuffers[0].readFloat()
📱 샘플 앱
전체 워크플로우는 image‑segmentation sample (Kotlin + NPU)에서 확인할 수 있습니다.
I’m happy to help translate the text, but I don’t see any content provided. Could you please paste the text you’d like translated?
다음 단계
새로운 LiteRT Qualcomm AI Engine Direct (QNN) Accelerator는 LiteRT에게 큰 성과이며, 하드웨어의 잠재력과 실제 애플리케이션 성능 사이의 격차를 메웁니다. 이 힘으로 여러분이 무엇을 만들지 매우 기대됩니다.
- LiteRT DevSite 탐색하기
- LiteRT GitHub repository 확인하기
즐거운 빌딩 되세요!
Acknowledgements
Special thanks to the Google ODML team and the Qualcomm LiteRT team for their significant contributions.
Google ODML team
- Alice Zheng
- Advait Jain
- Andrew Zhang
- Arian Arfaian
- Chintan Parikh
- Chunlei Niu
- Cormac Brick
- Gerardo Carranza
- Gregory Karpiak
- Jingjiang Li
- Jing Jin
- Julius Kammerl
- Lu Wang
- Luke Boyer
- Marissa Ikonomidis
- Maria Lyubimtseva
- Matt Kreileder
- Matthias Grundmann
- Na Li
- Ping Yu
- Quentin Khan
- Rishika Sinha
- Sachin Kotwani
- Sebastian Schmidt
- Steven Toribio
- Teng‑Hui Zhu
- Terry (Woncheol) Heoi
- Vitalii Dziuba
- Weiyi Wang
- Yu‑Hui Chen
- Zichuan We
Qualcomm LiteRT team
- Alen Huang
- Bastiaan Aarts
- Brett Taylor
- Chun‑Hsueh Lee (Jack)
- Chun‑Po Chang (Jerry)
- Chun‑Ting Lin (Graham)
- Felix Baum
- Jiun‑Kai Yang (Kelvin)
- Krishna Sridhar
- Ming‑Che Lin (Vincent)
- William Lin
