React Native에서 온디바이스 AI 구축의 실용적인 교훈

✍️ OpenClawRadar📅 게시일: February 25, 2026🔗 Source
React Native에서 온디바이스 AI 구축의 실용적인 교훈
Ad

LLM을 이용한 텍스트 생성

React Native에서 GGUF 모델을 실행하려면 llama.rn을 사용하세요. 이는 llama.cpp를 래핑하고 Android(JNI)와 iOS(Metal)용 네이티브 바인딩을 제공합니다. 콜백을 통한 토큰 스트리밍이 잘 작동합니다.

메모리 관리가 중요합니다: 7B Q4 모델은 런타임에 약 5.5GB의 RAM이 필요합니다(파일 크기 × 1.5는 KV 캐시와 활성화를 위한 공간). 디바이스 RAM의 60%를 하드 예산으로 사용하고, 50%에서 경고를 표시하며, 60%에서 차단하여 OS가 앱을 강제 종료하는 것을 방지하세요.

GPU 가속은 Android에서는 OpenCL(Adreno GPU), iOS에서는 Metal을 사용합니다. Android에서 GPU 레이어가 0보다 크면 Flash attention이 충돌하므로 코드에서 이를 강제하세요. KV 캐시 양자화(f16/q8_0/q4_0)는 대부분의 디바이스에서 GPU보다 더 큰 효과를 냅니다; 테스트에서 f16에서 q4_0로 변경하면 추론 속도가 약 3배 증가했습니다.

Stable Diffusion을 이용한 이미지 생성

이는 플랫폼별로 다르며 두 플랫폼을 모두 커버하는 단일 라이브러리는 없습니다.

  • Android: MNN(알리바바 프레임워크, CPU, 모든 ARM64 디바이스에서 작동)과 QNN(Qualcomm AI 엔진, NPU 가속, Snapdragon 8 Gen 1+만 해당)을 사용하세요. QNN은 3배 빠르지만 최근 Qualcomm 칩에서만 작동합니다. 런타임 감지와 자동 폴백을 구현하세요.
  • iOS: Apple의 ml-stable-diffusion 파이프라인을 Core ML과 Neural Engine 가속과 함께 사용하세요. 팔레타이즈된 모델(~1GB, 6비트)은 메모리가 제한된 디바이스에 적합합니다; 전체 정밀도(~4GB, fp16)는 ANE에서 더 빠르지만 여유 공간이 필요합니다.

실제 벤치마크: 512×512 해상도, 20단계에서 Snapdragon NPU는 5–10초, 플래그십 CPU는 15초, iOS ANE는 8–15초가 소요됩니다. 사용자가 앱이 멈췄다고 생각하지 않도록 N 디노이징 단계마다 실시간 미리보기를 표시하세요.

Ad

Whisper를 이용한 음성 전사

whisper.rn은 whisper.cpp를 래핑하며 통합이 간단합니다. 여러 모델 크기(Tiny/Base/Small)를 제공하고 사용자가 속도 대 정확도 트레이드오프를 선택할 수 있게 하세요. 실시간 부분 전사(말하는 대로 단어가 나타남)는 네이티브 느낌을 줍니다.

오디오를 네이티브 코드에서 버퍼링하고 전사 후 지우세요; 개인정보 보호가 중요하다면 오디오 파일을 디스크에 쓰지 마세요.

멀티모달 모델을 이용한 비전

비전 모델은 두 개의 파일이 필요합니다: 메인 GGUF와 mmproj(멀티모달 프로젝터) 동반 파일입니다. 이를 투명하게 처리하세요: 비전 모델을 자동 감지하고, mmproj를 자동 다운로드하며, 단일 단위로 추적하고, 링크가 끊어지면 런타임에 모델 디렉토리를 검색하세요. 2B 비전 모델의 경우 두 파일을 병렬로 다운로드하여 다운로드 시간을 거의 절반으로 줄이세요.

500M의 SmolVLM은 모바일에 적합한 스위트 스팟으로, 플래그십 디바이스에서 약 7초가 소요되며 문서 읽기와 장면 설명에 유용합니다.

온디바이스 에이전트 루프를 위한 도구 호출

함수 호출을 지원하는 모델은 자동 루프를 통해 도구(웹 검색, 계산기, 날짜/시간, 디바이스 정보)를 사용할 수 있습니다: LLM이 생성하고, 도구 호출을 파싱하며, 실행하고, 결과를 컨텍스트에 다시 주입하고, LLM이 계속합니다. 무한 루프를 방지하기 위해 최대 3회 반복, 총 5회 호출로 제한하세요.

두 가지 파싱 경로를 지원하세요: 더 큰 모델은 llama.rn을 통해 구조화된 JSON 도구 호출을 네이티브로 출력하고, 더 작은 모델은 <tool_call>과 같은 XML을 출력합니다. 모델 로드 시점에 jinja 채팅 템플릿을 검사하여 도구 지원을 감지하세요; 모델이 도구를 지원하지 않으면 시스템 프롬프트에 도구 정의를 주입하지 않아 환각을 피하세요. 계산기는 재귀 하강 파서를 사용합니다—절대 eval()을 사용하지 마세요.

의도 분류

앱이 텍스트와 이미지 생성을 모두 수행한다면, 입력 분석을 기반으로 사용자가 원하는 것을 결정해야 합니다.

📖 전체 소스 읽기: r/LocalLLaMA

Ad

👀 See Also

레딧 사용자가 일관된 AI 코딩 지원을 위한 실용적인 클로드 설정 공유
Guides

레딧 사용자가 일관된 AI 코딩 지원을 위한 실용적인 클로드 설정 공유

한 개발자가 단일 프롬프트에서 분리된 컨텍스트 파일(about-me.md, my-voice.md, my-rules.md)로 전환하고, 클로드가 컨텍스트를 읽고 질문을 하며 계획을 세운 후 작업을 실행하는 구조화된 워크플로우를 구현한 경험을 설명합니다.

OpenClawRadar
맞춤형 4x RTX PRO 6000 서버 vs Dell GB300: 30개 미세 조정 파이프라인을 위한 결정
Guides

맞춤형 4x RTX PRO 6000 서버 vs Dell GB300: 30개 미세 조정 파이프라인을 위한 결정

약 30개의 미세 조정된 프로덕션 파이프라인을 실행하기 위한 두 가지 온프레미스 아키텍처에 대한 심층 분석: 96GB GDDR7을 탑재한 RTX PRO 6000 Blackwell을 4~8개 장착한 커스텀 4U 서버와 252GB HBM3e + 496GB 통합 메모리를 갖춘 NVIDIA GB300 Grace Blackwell 어플라이언스.

OpenClawRadar
Windows 11 Home에서 Claude Desktop 작업 공간 VM 서비스 문제 수정
Guides

Windows 11 Home에서 Claude Desktop 작업 공간 VM 서비스 문제 수정

커뮤니티에서 개발한 수정 사항이 Windows 11 Home의 Claude Desktop 작업 공간 기능에서 발생하는 'VM 서비스가 실행 중이지 않음' 오류를 해결합니다. 수동 PowerShell 명령과 GitHub에서 사용 가능한 자동화 도구가 제공됩니다.

OpenClawRadar
8GB VRAM + 32GB RAM에서 ~190k 컨텍스트로 Qwen3.6-35B-A3B 실행 – 설정 및 벤치마크
Guides

8GB VRAM + 32GB RAM에서 ~190k 컨텍스트로 Qwen3.6-35B-A3B 실행 – 설정 및 벤치마크

Reddit 사용자가 RTX 4060(8GB VRAM) + 32GB DDR5에서 TurboQuant 및 특정 플래그를 사용하여 Qwen3.6-35B-A3B GGUF 모델에 작동하는 llama.cpp 구성을 공유하며, 192k 컨텍스트에서 37-51 tok/s를 달성했습니다.

OpenClawRadar