Core ML — iOS, macOS, watchOS 및 tvOS 기기에서 ML 모델을 직접 실행하도록 최적화된 Apple의 머신러닝 프레임워크입니다. 클라우드 기반 ML 서비스와 달리 Core ML은 Apple의 하드웨어 가속기(Neural Engine, GPU, CPU)를 사용하여 데이터 처리 시 지연 시간을 최소화합니다. Apple Core ML Documentation (2026)에 따르면, 이 프레임워크는 통합된 .mlpackage 형식으로 PyTorch, TensorFlow 및 Create ML 모델을 지원하며 평균 추론 시간은 5–50ms입니다.
주요 포인트
Core ML은 Apple이 WWDC 2017에서 iPhone, iPad, Mac, Apple Watch 및 Apple TV용 개발 에코시스템의 일부로 발표한 머신러닝 프레임워크입니다. Core ML은 기기에서 ML 모델을 실행하기 위한 런타임을 제공하여 개발자를 하드웨어 최적화의 세부 사항에서 해방시킵니다. 프레임워크는 각 모델 작업에 가장 적합한 컴퓨팅 엔진(A12+ 칩의 Neural Engine, GPU 또는 CPU)을 자동으로 선택합니다.
Core ML의 주요 장점은 Apple Silicon과의 깊은 통합입니다. 신경망 작업은 전용 Neural Engine에서 실행되며 프로세서의 메인 코어에 부하를 주지 않습니다. Apple(WWDC 2025)에 따르면 Core ML 모델은 유사한 Android 기기의 TensorFlow Lite보다 6배 빠르게 실행됩니다.
Core ML은 이미지 분류, 객체 감지, 의미론적 분할, 자연어 처리, 음성 분석 및 표 형식 데이터 등 광범위한 머신러닝 작업을 지원합니다. 프레임워크는 다양한 유형의 모델(컨볼루션 신경망, 순환 신경망, 트랜스포머, 트리 앙상블, 선형 회귀, 가우시안 프로세스)과 함께 작동합니다.
Core ML은 .mlpackage 형식의 학습된 모델을 입력으로 받아 특정 기기에 최적화된 기계어 코드로 컴파일하고 통합 API를 통해 추론을 실행합니다. 모델 로드부터 결과 획득까지의 전체 파이프라인은 Swift 코드 3–5줄로 완료됩니다.
.mlpackage는 Apple이 2020년에 기존의 .mlmodel을 대체하기 위해 도입한 컨테이너 형식입니다. 패키지는 JSON 매니페스트, 바이너리 MLProgram 형식의 모델 파일, 메타데이터(작성자, 버전, 설명) 및 클래스 레이블과 같은 리소스를 포함하는 디렉토리입니다. Apple에 따르면 .mlpackage는 가중치 최적화를 통해 .mlmodel보다 모델 크기를 30–50% 줄입니다.
Apple Neural Engine(ANE)은 A12 Bionic(2018)부터 Apple 칩에 내장된 전용 신경 프로세서입니다. ANE는 동일한 전력 소비로 CPU보다 수십 배 더 효율적으로 행렬 연산을 처리합니다. ANE의 성능은 A12의 5 TOPS에서 M4 Ultra(2025)의 35 TOPS로 향상되어 수십억 개의 파라미터를 가진 모델을 실행할 수 있습니다. ANE은 신경망 아키텍처를 가진 모든 Core ML 모델에 자동으로 사용됩니다.
Core ML의 중요한 기능은 정밀도 손실 없이 모델을 FP16 및 INT8로 양자화할 수 있다는 것입니다. 양자화는 모델 크기를 2–4배 줄이고 ANE에서 추론 속도를 40–60% 향상시킵니다. Apple은 최적의 정밀도를 자동 선택하는 Xcode Model Quantization 도구를 제공합니다. 개발자가 모델을 업로드하고 허용 가능한 품질 손실(일반적으로 0.1–0.5%)을 지정하면 Xcode가 최적의 가중치 표현 형식을 선택합니다.
| 칩 | TOPS (ANE) | ResNet-50 추론 | 연도 |
|---|---|---|---|
| A12 Bionic | 5 | 18 ms | 2018 |
| A14 Bionic | 11 | 9 ms | 2020 |
| M1 Max | 22 | 4 ms | 2021 |
| M4 Ultra | 35 | 2 ms | 2025 |
대부분의 ML 모델은 PyTorch 또는 TensorFlow에서 생성되며 Core ML에서 사용하려면 .mlpackage 형식으로 변환해야 합니다. Apple은 모델 변환, 최적화 및 검증을 위한 Python 패키지 coremltools를 제공합니다.
coremltools는 ML 모델 변환을 위한 Apple의 공식 유틸리티입니다. PyTorch(torch.onnx 또는 직접), TensorFlow(SavedModel, H5, Frozen Graph) 및 ONNX에서 가져오기를 지원합니다. 변환 후 FP16 또는 INT8 양자화를 활성화하여 정밀도 손실 없이 모델 크기를 2–4배 줄일 수 있습니다.
coremltools 버전 8.0을 사용하여 학습된 PyTorch 모델을 Core ML 형식으로 변환하는 방법을 살펴보겠습니다. 이 과정은 Python에서 2–3단계로 진행됩니다.
import torch
import coremltools as ct
# 학습된 PyTorch 모델 로드 중
model = torch.load('model.pth')
model.eval()
# 샘플 입력으로 모델 추적 중
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
# Core ML .mlpackage로 변환 중
mlmodel = ct.convert(
traced_model,
convert_to='mlprogram',
inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')
코드는 학습된 PyTorch 모델을 로드하고, 샘플 입력으로 JIT 추적을 수행한 후 mlprogram 형식(Core ML 바이너리 형식)으로 변환합니다. 결과 .mlpackage를 Xcode로 드래그하여 Swift 코드에서 즉시 사용할 수 있습니다.
모델 변환 후 Swift에서 iOS 앱으로의 통합은 몇 줄로 완료됩니다. Xcode는 .mlpackage 메타데이터를 기반으로 모델의 Swift 클래스를 자동 생성합니다.
Core ML 및 Vision 프레임워크를 사용한 이미지 분류 예제를 살펴보겠습니다. Vision은 자동으로 이미지를 필요한 크기와 픽셀 형식으로 변환합니다.
import CoreML
import Vision
// Core ML 모델 로드 중
guard let model = try? VNCoreMLModel(
for: MobileNetV2.configuration.model
) else { return }
// VNCoreMLRequest 생성 중
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
// 상위 3개 예측 출력
for result in results.prefix(3) {
print("\(result.identifier):
\(result.confidence)")
}
}
// 이미지 처리 시작 중
let handler = VNImageRequestHandler(
url: imageURL
)
try? handler.perform([request])
Swift 코드는 Vision 프레임워크를 통해 MobileNetV2 모델을 로드하고, 분류 요청을 생성한 후 결과(클래스 레이블과 신뢰도 백분율이 포함된 VNClassificationObservation 객체 배열)를 처리합니다. 로드부터 결과 출력까지의 전체 파이프라인은 모델에 따라 5–50ms가 소요됩니다.
시작 시간을 최적화하기 위해 Core ML은 첫 사용 시 모델을 컴파일합니다. 사전 컴파일된 모델은 콜드 스타트를 2–3초에서 100–200ms로 단축합니다. 앱 첫 실행 시가 아니라 Xcode의 빌드 타임에 모델을 컴파일하는 것이 좋습니다. 이는 여러 ML 모델(예: 객체 감지 + 분류 + NLP)이 있는 앱에서 특히 중요합니다.
Core ML과 ML Kit은 유사한 온디바이스 ML 작업을 해결하지만 대상 에코시스템이 다릅니다. Core ML은 Apple Silicon과 깊이 통합되어 있으며 Apple 플랫폼만 지원합니다. Google의 ML Kit은 Android와 iOS를 위한 크로스 플랫폼 솔루션입니다.
| 특징 | Core ML | ML Kit |
|---|---|---|
| 플랫폼 | iOS, macOS, watchOS, tvOS | Android, iOS |
| 내장 API | Vision, Natural Language를 통해 | 15개 이상의 내장 API |
| 커스텀 모델 | .mlpackage (PyTorch, TF) | TFLite (어댑터를 통해) |
| 하드웨어 가속 | ANE, GPU, CPU | GPU (Android), CPU |
| 시작 용이성 | 모델 변환 필요 | 데이터 과학 없이 바로 사용 가능한 API |
| 성능 | 2–50 ms (ANE) | 80–200 ms (CPU/GPU) |
에코시스템이 Apple 전용이고 ANE를 통해 최대 성능이 필요하다면 Core ML을 선택하세요. 크로스 플랫폼 지원이나 변환 없이 바로 사용할 수 있는 API가 필요하다면 ML Kit이 더 실용적입니다.
실제로 많은 프로젝트에서 두 프레임워크를 모두 사용합니다. 높은 성능을 위해 iOS Core ML을, Android에서는 ML Kit이나 TensorFlow Lite를 사용합니다. 통합된 PyTorch 모델은 Apple용으로 .mlpackage로, Android용으로 .tflite로 변환되어 두 플랫폼에서 일관된 ML 기능 품질을 유지할 수 있습니다. 이 접근 방식은 DevOps 노력이 약간 더 필요하지만 최대 사용자 범위를 제공합니다.
자주 묻는 질문
iOS 11+ 기본 모델용, iOS 14+ .mlpackage 형식용. Apple Neural Engine에는 A12 Bionic 이상 칩이 필요합니다. Core ML은 2017년 이후의 모든 iPhone, iPad, Mac을 지원합니다.
네, coremltools 도구를 통해 가능합니다. TensorFlow 모델은 정밀도를 유지한 채 .mlpackage로 변환됩니다. TensorFlow 2.x, SavedModel, H5, Frozen Graph 형식을 지원합니다.
.mlpackage는 최신 컨테이너 형식으로, 메타데이터, 바이너리 MLProgram 파일 및 리소스를 포함하는 디렉토리 구조입니다. 기존 .mlmodel보다 2–3배 더 작고 양자화를 지원합니다.
모든 계산은 기기에서 엄격하게 실행됩니다. Core ML은 Apple 서버로 데이터를 전송하지 않습니다. 비행기 모드에서도 작동하며 추론에 인터넷 연결이 필요하지 않습니다.
Swift는 iOS/macOS 앱에 Core ML을 통합하는 주요 언어입니다. Python은 coremltools를 통한 모델 변환에 사용됩니다. Objective-C도 하위 호환성을 위해 지원됩니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.