Pixel 10 Pro XL (Tensor G5)에서 Gemma 4 E4B를 구동하는 OpenAI 호환 서버 구축 후기
요약
Pixel 10 Pro XL (Tensor G5)에서 Gemma 4 E4B 모델을 구동하기 위해 OpenAI 호환 HTTP 서버를 구축한 후기입니다. 이 앱은 온디바이스(on-device)로 작동하며, 클라우드 연결 없이 TypingMind 등 모든 OpenAI 클라이언트에 직접 스트리밍 방식으로 연결할 수 있습니다. 안정 상태 디코드 속도는 약 11 tok/s로 측정되었습니다.
핵심 포인트
- Pixel의 GPU를 활용하여 온디바이스 LLM 서버 구축 가능
- OpenAI 표준 엔드포인트를 구현하여 범용성 확보
- 안정 상태에서 약 11 tok/s의 디코드 속도 달성
- Tailscale을 통한 안전한 원격 접속 및 통신 지원
무엇인가: Pixel을 OpenAI와 호환되는 HTTP 서버로 변환하는 Android 앱(PixelUnlockGPU)입니다. 표준 /v1/chat/completions 엔드포인트를 스트리밍 방식으로 제공하므로, 클라우드나 구독 없이 TypingMind 또는 모든 OpenAI 클라이언트에 직접 연결하여 대화할 수 있으며, 모델은 LiteRT-LM을 통해 완전히 온디바이스(on-device)에서 실행됩니다.
장치: Pixel 10 Pro XL (Tensor G5, 공유 LPDDR 16 GB). 모델: Gemma 4 E4B instruct, GPU 번들, 2.97 GB 크기이며 다운로드 시 SHA-256으로 검증되었습니다. 컨텍스트 창은 32k로 제한됩니다.
측정 수치 (벤치마크가 아닌 실제 온디바이스 측정값):
- 안정 상태 디코드 속도: 약 11 tok/s (약 300단어 생성에 대한 첫 토큰부터 마지막 토큰까지)
- 후속 대화 처리 시간: 약 1.7초 (서버가 턴(turn)마다 KV 프리픽스(prefix)를 자동 재사용하므로, TypingMind와 같은 상태 비저장(stateless) 클라이언트는 히스토리를 다시 프리필할 필요가 없습니다)
- 엔진 초기화 빌드 시간: 모델 변경 시 한 번에 약 12초 (앱 내에서 표시되며, 측정 지표에서 의도적으로 분리됨)
- 짧은 답변의 경우 11 tok/s보다 느리게 읽히는데, 이는 워밍업(warm)과 프리필(prefill)이 창을 지배하기 때문입니다. 따라서 UI는 디코드 tok/s와 prefill ms를 분리하여 표시합니다.
보안/접근성: 세 가지 독립적인 모드를 제공합니다 — 루프백 전용, 일반 LAN (비암호화), 또는 Tailscale(CGNAT tailnet IP 바인딩; 같은 tailnet에 있는 노트북 등으로부터 WireGuard 종단 간 암호화 통신; VPN이 끊어지면 루프백으로 저하). MacBook에서 tailnet을 통해 실제 채팅 완료를 검증했습니다.
솔직한 한계점: - NPU 경로는 순정 Tensor G5 펌웨어에서는 중단됩니다 — GPU가 배송 백엔드입니다 (전체 조사 내용과 함께 문서화됨)
- Android는 일반 앱에 대해 이름이 지정된 GPU 온도 센서를 차단하므로, 앱 내 게이지는 °C 대신 OS 열 여유분(thermal headroom)을 보여줍니다
- 실제 토큰 카운트는 어디에도 없습니다 — LiteRT-LM은 이를 노출하지 않으므로 사용량은 약 4자/토큰으로 추정되며 그렇게 표시됩니다
stop시퀀스는 명시적으로 거부됩니다 (엔진에 요청별 stop API가 없음); 클라이언트 측 에뮬레이션은 해결해야 할 문제입니다.
휴대폰에서 llama.cpp/ollama를 사용하지 않은 이유: Tensor 전용 공식 LiteRT-LM GPU 경로, 항상 켜져 있는 Android 서비스(Ktor/Netty), 그리고 기존 클라이언트가 작동하도록 하는 OpenAI 와이어 연결을 원했기 때문입니다.
GGML 백엔드를 원하시면 추가해 드릴 수 있습니다. 엔진 레이어는 추상화되어 있기 때문입니다.
기반 기술 및 기여: server/inference foundation은 mlnomadpy/localllm(Apache 2.0)에서 파생되었으며, Tensor G5 런타임 지식과 jegly/Box의 사전 구축된 디스패치 라이브러리(Apache 2.0)를 활용했습니다. 전체 출처 표시는 NOTICE 파일 및 개별 파일 헤더에 있습니다. Apache 2.0 라이선스를 따르며, 기여 환영합니다. (사용 블록, 스톱 시퀀스 에뮬레이션, 문서화 등 표시된 good-first-issues가 있습니다.)
저장소(Repo) 및 APK(릴리스 버전 v0.1.0/v0.1.1): https://github.com/cannitellinicholas-spec/PixelUnlockGPU
Tensor G5의 특이점에 대해서는 무엇이든 답변해 드릴 수 있습니다. 계획했던 것보다 Gate-2 디버깅을 더 많이 했습니다.
제출자: /u/VerityAISolutions
[링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기