
이 글은 대규모 언어 모델(LLM)을 직접 학습하고, 이를 iOS와 Android 스마트폰에서 로컬로 실행하는 전체 과정을 정리한 기술 블로그입니다.
Unsloth, TorchAO, ExecuTorch를 활용해 Qwen3 계열 모델을 파인튜닝하고 양자화한 뒤, 실제 스마트폰(iPhone과 Android)에서 구동하는 방법과 배포 절차를 단계별로 설명합니다.
클라우드 의존 없이 개인정보 보호, 즉각적인 응답, 오프라인 사용이 가능한 모바일 LLM 환경을 어떻게 구축할 수 있는지에 초점을 맞춥니다.
모바일 온디바이스 LLM이 주목받는 배경
기존 LLM 서비스는 대부분 서버에서 모델을 실행하고 네트워크를 통해 응답을 받는 구조입니다. 이 방식은 다음과 같은 한계를 가집니다.
- 네트워크 지연으로 인한 응답 속도 문제
- 민감한 데이터가 외부 서버로 전송되는 개인정보 이슈
- 오프라인 환경에서 사용 불가
ExecuTorch 기반 온디바이스 LLM은 이러한 문제를 해결하기 위해 등장했습니다. 모델을 스마트폰 내부에서 직접 실행함으로써 빠른 응답 속도, 개인정보 보호, 오프라인 사용이라는 장점을 동시에 제공합니다.
ExecuTorch 기반 모바일 LLM 실행 개요
이번 튜토리얼은 PyTorch 및 Meta에서 사용하는 ExecuTorch를 중심으로 구성된 워크플로우를 다룹니다.
핵심 구성 요소는 다음과 같습니다.
- Unsloth: LLM 파인튜닝 및 양자화 인식 학습(QAT) 지원
- TorchAO: INT8/INT4 기반 양자화 인식 학습 적용
- ExecuTorch: 모바일 및 엣지 디바이스용 PyTorch 런타임
이 조합을 통해 Meta가 Instagram, WhatsApp 등에서 사용하는 것과 동일한 ExecuTorch 기술을 개인 개발 환경에서도 활용할 수 있습니다.
Qwen3 모델과 성능 특징
튜토리얼에서는 주로 Qwen3-0.6B 모델을 사용합니다.
주요 특징은 다음과 같습니다.
- Pixel 8 및 iPhone 15 Pro에서 약 40 tokens/s 성능
- TorchAO 기반 QAT 적용으로 정확도 약 70% 회복
- 모델 파일 크기 약 472MB (.pte 포맷)
- 로컬 실행으로 개인정보 보호 및 오프라인 사용 가능
또한 Qwen3 외에도 Gemma3, Llama3, Qwen2.5, Phi4 등 다양한 모델이 모바일 배포 대상으로 지원됩니다.
양자화 인식 학습(QAT)과 phone-deployment 설정
모바일 환경에서는 모델 크기와 연산 효율이 매우 중요합니다. 이를 위해 Unsloth에서는 qat_scheme = "phone-deployment" 옵션을 제공합니다.
이 설정의 핵심은 다음과 같습니다.
- 내부적으로 INT8 동적 활성화 양자화 + INT4 가중치 양자화 적용
- 학습 중에는 fake quantization을 사용해 16비트 연산 유지
- 학습 완료 후 실제 양자화 모델로 변환
이를 통해 단순 PTQ(Post-Training Quantization)보다 정확도를 더 잘 유지하면서 모바일에 적합한 모델을 생성할 수 있습니다.
LLM 학습 및 ExecuTorch 모델 변환 과정
1. 환경 준비 및 라이브러리 설치
pip install --upgrade unsloth unsloth_zoo
pip install torchao==0.14.0 executorch pytorch_tokenizers
2. Qwen3-0.6B 모델 로드 및 파인튜닝 설정
from unsloth import FastLanguageModel
import torch
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Qwen3-0.6B",
max_seq_length = 1024,
full_finetuning = True,
qat_scheme = "phone-deployment",
)
이 설정을 통해 스마트폰 배포를 전제로 한 전체 파인튜닝과 QAT가 동시에 적용됩니다.
3. ExecuTorch용 모델(.pte)로 변환
파인튜닝 후 모델은 ExecuTorch에서 사용하는 .pte 파일로 변환됩니다.
python -m executorch.examples.models.qwen3.convert_weights "phone_model" pytorch_model_converted.bin
curl -L -o 0.6B_config.json https://raw.githubusercontent.com/pytorch/executorch/main/examples/models/qwen3/config/0_6b_config.json
python -m executorch.examples.models.llama.export_llama \
--model "qwen3_0_6b" \
--checkpoint pytorch_model_converted.bin \
--params 0.6B_config.json \
--output_name qwen3_0.6B_model.pte \
-kv --use_sdpa_with_kv_cache -X --xnnpack-extended-ops \
--max_context_length 1024 --max_seq_length 128 --dtype fp32 \
--metadata '{"get_bos_id":199999, "get_eos_ids":[200020,199999]}'
iOS에서 LLM 실행하기
개발 환경 준비
- macOS 필요
- Xcode 15 이상 설치
- iOS 18 플랫폼 다운로드
실제 아이폰에서 실행하려면 Apple Developer Program 가입이 필요하며, ExecuTorch는 Increased Memory Limit 권한을 요구합니다.
ExecuTorch 데모 앱 실행
ExecuTorch 예제 프로젝트를 다운로드해 Xcode에서 실행합니다.
curl -L https://github.com/meta-pytorch/executorch-examples/archive/main.tar.gz | \
tar -xz --strip-components=2 executorch-examples-main/llm/apple
Simulator에서는 별도 개발자 계정 없이 실행 가능하며, .pte 모델과 tokenizer.json 파일을 지정한 폴더에 복사해 로드합니다.
실제 아이폰에서는 Xcode 서명 설정, Developer Mode 활성화, Finder를 통한 모델 파일 전송 과정을 거쳐 앱에서 모델을 로드할 수 있습니다.
Android에서 LLM 실행하기
기본 요구 사항
- Java 17
- Android Command Line Tools
- Android SDK / NDK (NDK 25)
- adb 환경 구성
Android Studio 없이 커맨드라인만으로 빌드 및 배포가 가능합니다.
ExecuTorch LlamaDemo 앱 빌드
git clone https://github.com/meta-pytorch/executorch-examples.git
cd executorch-examples/llm/android/LlamaDemo
./gradlew :app:assembleDebug
생성된 app-debug.apk를 adb 또는 직접 파일 전송 방식으로 스마트폰에 설치합니다.
모델 파일 전송 및 로드
Android에서는 모델을 특정 디렉토리에 배치해야 합니다.
adb shell mkdir -p /data/local/tmp/llama
adb shell chmod 777 /data/local/tmp/llama
adb push tokenizer.json /data/local/tmp/llama
adb push model.pte /data/local/tmp/llama
이후 앱에서 모델과 토크나이저를 선택하고 로드하면, 스마트폰에서 직접 LLM과 대화할 수 있습니다.
이 글에서는 LLM을 학습부터 배포까지 직접 제어해, iOS와 Android 스마트폰에서 로컬로 실행하는 전체 과정을 살펴봤습니다.
Unsloth와 TorchAO를 활용한 양자화 인식 학습, ExecuTorch 기반 모델 변환, 그리고 실제 모바일 배포 절차는 온디바이스 AI의 현실적인 가능성을 보여줍니다.
이 접근 방식의 핵심 가치는 다음과 같습니다.
- 클라우드 없이도 가능한 고성능 LLM 실행
- 개인정보 보호와 즉각적인 응답
- 모바일 환경에서도 실사용 가능한 성능 확보
앞으로 모바일 AI는 서버 중심 구조에서 벗어나, 사용자 기기 자체에서 지능을 실행하는 방향으로 더욱 확장될 가능성이 큽니다. ExecuTorch 기반 온디바이스 LLM은 그 변화를 직접 실험하고 적용할 수 있는 실질적인 출발점이라 할 수 있습니다.
https://docs.unsloth.ai/new/deploy-llms-phone
How to Run and Deploy LLMs on your iOS or Android Phone | Unsloth Documentation
Tutorial for fine-tuning your own LLM and deploying it on your Android or iPhone with ExecuTorch.
docs.unsloth.ai

'인공지능' 카테고리의 다른 글
| GPT-5.2-Codex 공개, 현실 세계 소프트웨어 엔지니어링과 사이버 보안을 겨냥한 에이전트형 코딩 모델 (0) | 2025.12.19 |
|---|---|
| FunctionGemma: 엣지 환경을 위한 함수 호출 특화 경량 AI 모델 정리 (0) | 2025.12.19 |
| Nemotron-Cascade-14B-Thinking 모델 개념과 성능 분석: 고급 추론 특화 AI 모델 소개 (0) | 2025.12.18 |
| Gemini 3 Flash 기술 개념과 특장점 정리: 속도와 지능을 동시에 잡은 차세대 AI 모델 (0) | 2025.12.18 |
| Agentic AI 시대의 핵심 기준, Agent Quality 완전 정리 - 자율형 AI를 신뢰할 수 있는 시스템으로 만드는 방법 (0) | 2025.12.18 |