피드로 돌아가기
I Started Building a Roguelike RPG — Powered by On-Device AI #2
Dev.toDev.to
AI/ML

S24 Ultra에서 Phi-4-mini 온디바이스 LLM 구현 및 NPU 최적화 분투기

I Started Building a Roguelike RPG — Powered by On-Device AI #2

as1as2026년 4월 3일5advanced

Context

Unity 환경의 Android 기기에서 온디바이스 LLM을 통한 실시간 게임 콘텐츠 생성 시도. 대규모 모델 파일의 APK 포함 문제와 NPU 가속 라이브러리 접근 권한 충돌 발생. CPU 기반 추론의 심각한 성능 저하 문제 직면.

Technical Solution

  • JSON 구조 생성 능력이 검증된 Phi-4-mini(3.8B) 모델의 INT4 양자화 버전 채택
  • cross-platform 지원 및 하드웨어 가속 백엔드 교체가 용이한 ONNX Runtime 활용
  • Unity C# 환경의 부재를 해결하기 위해 tiktoken 스타일의 BPE Tokenizer를 직접 구현
  • Java의 2.1GB 배열 크기 제한을 피하기 위해 모델 파일을 StreamingAssets 외부로 이동 후 adb push 방식으로 배포
  • NPU 가속을 위한 libcdsprpc.so 라이브러리 접근을 위해 AndroidManifest에 uses-native-library 선언 및 Min SDK 31 설정
  • TextMeshPro의 한국어 렌더링 문제를 해결하기 위해 십진수 기반의 Custom Range 폰트 에셋 생성

Impact

  • 모델 크기: 4.9GB (INT4 양자화)
  • 추론 속도 (S24 Ultra): CPU 0.21 tok/s → QNN HTP(시도) 0.31 tok/s
  • 추론 속도 (Mac Editor CPU): 0.45 tok/s
  • 모델 배포 시간: adb push 기준 약 94초

Key Takeaway

온디바이스 AI 구현 시 모델 파라미터 크기에 따른 CPU 한계를 인식하고, OS 레벨의 네이티브 라이브러리 접근 권한과 SDK 버전을 고려한 하드웨어 가속 설계가 필수적임.


2GB 이상의 대용량 에셋은 StreamingAssets 대신 외부 저장소 배포 전략을 사용하고, NPU 가속 필요 시 Min SDK 31 이상에서 vendor partition 라이브러리 선언을 검토할 것

원문 읽기