인터넷 없이 작동하는 AI: 스마트폰에서 AI 기능을 구현하는 방법

모바일

온디바이스 AICore MLLiteRTONNX모바일 AI

이 글은 누구를 위한 것인가

  • 앱에 AI 기능을 넣고 싶지만 서버 비용과 응답속도가 걱정인 개발자
  • 사용자 데이터를 서버로 보내지 않고 AI를 구현하고 싶은 팀
  • Apple Intelligence, Gemini Nano 같은 온디바이스 AI가 어떻게 작동하는지 궁금한 분

들어가며

스마트폰 카메라 앱을 열면 순식간에 인물, 음식, 풍경을 구분해서 최적 설정을 잡는다. 키보드에서 문장을 쓰면 실시간으로 다음 단어를 제안한다. 사진에서 텍스트를 자동으로 인식한다.

이 모든 AI 기능이 서버와 통신하지 않고 스마트폰 안에서 이루어진다. 온디바이스 AI(On-Device AI)다.

예전에는 AI는 당연히 서버에서 돌리는 것이었다. 스마트폰이 감당하기엔 너무 느리고 배터리를 많이 먹었으니까. 그런데 2024~2025년 사이 상황이 극적으로 바뀌었다. 최신 스마트폰에는 AI 전용 칩(NPU)이 탑재되고, 모델 경량화 기술이 발전하면서 온디바이스 AI가 현실적인 선택이 됐다.


1. 온디바이스 AI가 뜨는 이유

프라이버시

의료, 금융, 개인 사진 처리 같은 민감한 데이터를 서버로 보내지 않아도 된다. 데이터가 기기 밖으로 나가지 않는다.

응답 속도

서버 왕복이 없으니 응답이 즉각적이다. 실시간 번역, 음성 인식, 카메라 효과처럼 지연이 0에 가까워야 하는 기능에 필수다.

오프라인 동작

비행기 안, 지하철, 해외에서도 AI 기능이 작동한다. 인터넷 연결에 의존하지 않는다.

서버 비용 절감

사용자 수가 늘어도 AI 처리 서버 비용이 늘지 않는다. 비용이 기기 하드웨어로 오프로드된다.


2. 스마트폰의 AI 전용 칩

현대 스마트폰에는 AI 연산 전용 하드웨어가 탑재되어 있다.

플랫폼칩셋AI 가속 유닛연산 성능 (2025)
iPhone 16 ProA18 ProNeural Engine35 TOPS
Samsung Galaxy S25Snapdragon 8 EliteHexagon NPU45 TOPS
Google Pixel 9Tensor G4TPU이미지/음성 특화
OnePlus 13Snapdragon 8 EliteHexagon NPU45 TOPS

TOPS(Tera Operations Per Second)는 초당 조 단위 연산 횟수다. 수치가 높을수록 AI 연산이 빠르다. 최신 폰의 NPU는 일반 CPU보다 20~30배 빠르게 AI 연산을 처리한다.


3. iOS: Core ML

Apple이 2017년 공개한 온디바이스 ML 프레임워크다. Xcode와 완전히 통합되어 있어 iOS 앱에서 가장 쉽게 AI를 구현할 수 있다.

Core ML 사용 흐름

1. 모델 준비
   - Apple Model Gallery에서 제공하는 모델 다운로드
   - 또는 PyTorch/TensorFlow 모델을 coremltools로 변환

2. Xcode에 모델 추가
   - .mlmodel 파일을 드래그앤드롭
   - Xcode가 자동으로 Swift 인터페이스 생성

3. 코드에서 사용
import CoreML
import Vision

// Core ML 모델 로드
let model = try! VNCoreMLModel(for: MobileNetV2().model)

// 이미지 분류 요청
let request = VNCoreMLRequest(model: model) { request, error in
    guard let results = request.results as? [VNClassificationObservation],
          let topResult = results.first else { return }

    print("분류 결과: \(topResult.identifier) (\(topResult.confidence * 100)%)")
}

// 이미지 처리
let handler = VNImageRequestHandler(cgImage: cgImage)
try! handler.perform([request])

Core ML이 지원하는 작업들

  • 이미지 분류, 객체 감지, 이미지 세그멘테이션
  • 텍스트 분류, 감성 분석
  • 음성 인식
  • 사운드 분류

4. Android: LiteRT (구 TensorFlow Lite)

Google이 TensorFlow Lite를 LiteRT로 리브랜딩했다. Android 앱에서 온디바이스 ML의 표준이다.

// LiteRT로 이미지 분류
import org.tensorflow.lite.Interpreter
import org.tensorflow.lite.support.image.TensorImage

class ImageClassifier(context: Context) {
    private val interpreter: Interpreter

    init {
        val model = FileUtil.loadMappedFile(context, "mobilenet_v2.tflite")
        interpreter = Interpreter(model)
    }

    fun classify(bitmap: Bitmap): String {
        val tensorImage = TensorImage.fromBitmap(bitmap)
        val outputBuffer = TensorBuffer.createFixedSize(intArrayOf(1, 1001), DataType.FLOAT32)

        interpreter.run(tensorImage.buffer, outputBuffer.buffer)

        // 가장 높은 확률의 클래스 반환
        val scores = outputBuffer.floatArray
        val topIndex = scores.indices.maxByOrNull { scores[it] } ?: 0
        return labels[topIndex]
    }
}

Hexagon NPU 활용 (Snapdragon 기기)

// NPU 가속 활성화
val options = Interpreter.Options().apply {
    addDelegate(HexagonDelegate(context))
    // 또는 GPU 가속
    addDelegate(GpuDelegate())
}
val interpreter = Interpreter(model, options)

NPU 델리게이트를 추가하면 동일한 모델이 CPU 대비 10~20배 빠르게 실행된다.


5. ONNX Runtime으로 플랫폼 간 모델 이식

PyTorch, TensorFlow 등 다양한 프레임워크로 학습된 모델을 ONNX 형식으로 변환하면, 하나의 모델 파일을 iOS, Android, Windows, 웹에서 모두 실행할 수 있다.

# PyTorch 모델 → ONNX 변환
import torch
import torch.onnx

model = MyModel()
dummy_input = torch.randn(1, 3, 224, 224)

torch.onnx.export(
    model,
    dummy_input,
    "model.onnx",
    opset_version=17,
    input_names=['input'],
    output_names=['output']
)
// iOS에서 ONNX Runtime 사용
import OnnxRuntimeBindings

let env = ORTEnv(loggingLevel: ORTLoggingLevelWarning)!
let session = try ORTSession(env: env, modelPath: "model.onnx", sessionOptions: nil)

6. 모바일 최적화를 위한 모델 경량화

대형 AI 모델은 스마트폰에서 실행할 수 없다. 경량화가 필수다.

양자화 (Quantization)

# TFLite 양자화 변환
converter = tf.lite.TFLiteConverter.from_saved_model('saved_model')
converter.optimizations = [tf.lite.Optimize.DEFAULT]  # INT8 양자화

# 크기와 속도:
# FP32 원본: 100MB, 100ms
# INT8 양자화: 25MB, 30ms (속도 3배 향상, 크기 4배 감소)
tflite_model = converter.convert()

프루닝 (Pruning)

모델에서 중요도 낮은 가중치를 제거한다. 모델 크기 30~50% 감소, 성능 손실 5% 미만.


7. 2026년 주목할 온디바이스 AI

Apple Intelligence (iOS 18.1+) Siri 강화, 작문 보조, 이미지 생성, 알림 요약. 모두 온디바이스 처리. 일부 기능만 Apple 서버 활용 (Private Cloud Compute).

Google Gemini Nano Pixel 기기와 일부 Android 기기에 탑재. 요약, 번역, 텍스트 생성을 온디바이스에서 처리. Android 14+에서 AICore API로 개발자가 직접 활용 가능.

Samsung Galaxy AI 통화 통역, 실시간 번역, 사진 편집 AI. 갤럭시 S24 이후 모델에서 온디바이스 처리.


맺으며

온디바이스 AI는 더 이상 실험적 기술이 아니다. 수억 명의 사람들이 매일 스마트폰에서 온디바이스 AI를 쓰고 있다. 개발자로서 이 능력을 어떻게 앱에 통합할지가 다음 과제다.

시작점으로는 Apple의 Vision 프레임워크(Core ML 내장)나 Android의 ML Kit가 가장 쉽다. 이미 학습된 모델이 포함되어 있어서 코드 몇 줄로 얼굴 인식, 텍스트 인식, 객체 감지를 구현할 수 있다. 여기서 시작해서 필요하면 커스텀 모델로 확장하는 것이 현실적인 접근이다.