Core ML은 Apple의 기계 학습 프레임워크로, 사전 학습된 ML 모델을 iOS, iPadOS, macOS, watchOS 및 tvOS 애플리케이션에 직접 통합할 수 있습니다. 이 프레임워크는 신경망, 결정 트리, 선형 회귀 및 양만슬립법을 지원하고, TensorFlow, PyTorch, Keras 및 ONNX에서 Apple 자체 형식으로의 모델 변환도 지원합니다. Apple Machine Learning Research (2025)에 따르면, Core ML은 온전히 기기 상에서 추론을 수행하여 데이터 개인정보보호를 보장하고 대부분의 모델에 대한 지연 시간이 10 밀리초 미만입니다.
주요 고개
Core ML은 WWDC 2017에서 소개된 Apple 기계 학습 생태계의 중요 구성 요소입니다. Core ML 이전에 iOS 개발자들은 제3자 라이브러리 (TensorFlow Mobile, Caffe2) 또는 커스텀 해결 책을 사용하여 기기상에서 ML 모델을 실행했습니다. Core ML은 고전적인 회귀부터 깊은 신경망까지 모든 모델 유형에 대한 단일 통합 인터페이스를 제공하고 특정 기기에 대한 로오레벨 최적화를 담당했습니다.
Core ML의 첫 버전 (2017)은 고정 입력 크기의 정적 모델만 지원했습니다. Core ML 2 (2018)는 배치 예측 및 실시간 모델 업데이트를 지원했습니다. Core ML 3 (2019)는 기기상 학습과 수십 개의 새로운 신경망 레이어를 지원했습니다. Core ML 4 (2021)는 다중 출력 모델과 개선된 이미지 처리를 도입했습니다. Core ML 5 (2024)는 동적 신경망과 새로운 ML 레이어를 사용한 기기상 지도 학습을 지원했습니다.
기기상에서 기계 학습을 실행하면 세 가지 주요 장점이 있습니다: 개인정보보호 — 데이터가 결혼 기기를 떠나지 않음 (GDPR 및 HIPAA 요구사항 충족), 속도 — 네트워크 지연 없이 밀리초 단위로 추론 완료, 오프라인 가능 — 인터넷 연결 없이 모델 작동. Apple Privacy Report (2025)에 따르면, Apple 플랫폼의 ML 추론 중 90%가 넘어 Core ML 덕분에 기기상에서 수행됩니다.
Core ML 아키텍처는 다중 계층 원칙에 기반합니다: 최상위 계층에는 개발자 API (MLModel, MLFeatureProvider, MLPredictionOptions), 중간 계층에는 .mlpackage 형식의 모델, 하위 계층에는 컴퓨팅 백엔드: Apple Neural Engine (ANE), GPU (Metal Shaders) 및 CPU (BNNS, Accelerate framework)가 있습니다. Core ML은 모델과 기기 하드웨어에 따라 최적의 백엔드를 자동 선택합니다.
| 백엔드 | 기기 | 성능 |
|---|---|---|
| Neural Engine | iPhone Xs+, iPad A12+, Mac M1+ | 최대 (TOPS) |
| GPU (Metal) | 모든 Apple 기기 | 높음 (병렬 컴퓨팅) |
| CPU (BNNS) | 모든 Apple 기기 | 기본 (호환성) |
Neural Engine (ANE)은 Apple A12+ 및 M1+ 침에 내장된 전문 신경 프로세서입니다. ANE는 A17 Pro에서 최대 15.8 TOPS, M4에서 38 TOPS의 성능으로 합솝 신경망 (CNN) 연산과 행렬 곱셈에 최적화되어 있습니다. Core ML은 모델이 ANE에서 실행될 수 있는지 자동으로 판단하고, 가능한 경우 그곳에 로드합니다. 모델이 ANE에서 지원되지 않는 작업을 포함하는 경우, Core ML은 계산을 GPU와 CPU 간에 분산시킵니다.
GPU 계산을 위해 Core ML은 Metal Performance Shaders Graph (MPSGraph)를 사용합니다. MPSGraph는 GPU에서 계산 그래프를 빌드하고 실행하기 위한 프레임워크입니다. MPSGraph는 Core ML에서 신경망 그래프를 가져와 특정 GPU 아키텍처 (7코어 A17 GPU 또는 40코어 M4 Ultra GPU)에 최적화된 Metal Shaders로 컴파일합니다. MPSGraph의 자동 최적화에는 레이어 횵합, 중복 작업 제거 및 최적 데이터 형식 선택이 포함됩니다.
Core ML은 세 가지 카테고리로 나놈 모든 주요 기계 학습 모델 유형을 지원합니다: 신경망 (합솝 CNN, 순환 RNN/LSTM, 트랜스포머), 양만 모델 (Random Forest, Gradient Boosting, XGBoost, 결정 트리), 회귀 모델 (선형 회귀, SVM, CRF). 각 모델 유형은 자체 MLModelType 서브프로토콜이 있으며, Core ML이 적합한 백엔드와 실행 형식을 자동 선택합니다.
Core ML은 150가지 이상의 신경망 레이어 유형을 지원합니다: Convolution (1D/2D/3D), BatchNormalization, Pooling (Max/Average), Activation (ReLU, Sigmoid, Tanh, LeakyReLU, PReLU), Recurrent (LSTM/GRU/SimpleRNN), Transformers (MultiHeadAttention, LayerNorm), Metal 특화 레이어. 지원되지 않는 레이어의 경우 Core ML은 커스텀 레이어 메커니즘을 제공합니다 — Metal Shading Language 또는 Swift로 레이어 구현을 작성할 수 있습니다.
let model = try MLModel(contentsOf: modelURL)
let input = try MLMultiArray(shape: [1, 224, 224, 3], dataType: .float32)
let prediction = try model.prediction(from: input)
2021년 이전에 Core ML은 .mlmodel 형식을 사용했습니다 — 모든 모델 가중치와 메타데이터를 포함한 이진 파일입니다. Xcode 13 및 Core ML 4부터, Apple은 새로운 .mlpackage 형식을 도입했습니다 — 모델, 메타데이터, 입력/출력 설명 및 JSON 형식의 전/후처리 파일을 포함하는 디렉토리 기반 패키지 구조입니다. mlpackage는 git 버전 관리를 지원하여 팀 개발을 간소화합니다. .mlmodel에서 .mlpackage로의 변환은 Xcode Model Compiler 유틸리티 또는 coremltools Python 스크립트로 수행됩니다.
변환은 Python에서 coremltools 라이브러리를 사용하여 수행됩니다. coremltools는 TensorFlow 1.x/2.x (SavedModel, PB, HDF5), PyTorch (TorchScript, traced/scripted 모델), Keras (H5), ONNX 및 Create ML으로 생성된 모델의 입력을 지원합니다. 표준 변환 파이프라인은 세 단계로 구성됩니다: 원본 형식으로 모델 로드, MIL (Model Intermediate Language) — Core ML의 내부 표현 — 으로 변환, .mlpackage로 익스포트.
import coremltools as ct
model = ct.converters.pytorch.convert(
source = "model.pt",
inputs = [ct.TensorType(shape=(1, 3, 224, 224))]
)
model.author = "IT Sectr"
model.short_description = "Image classifier"
model.save("MyModel.mlpackage")
변환 후에는 동일한 데이터에서 원본 모델과 변환된 Core ML 모델의 예측을 비교하여 모델 정확도를 검증해야 합니다. 허용되는 편차는 Float32의 경우 1e-3 (0.1%), Float16/Int8의 경우 1e-2 (1%) 이하입니다. coremltools는 자동 비교를 위한 ct.utils.compare_models() 유틸리티를 제공합니다. 편차가 기준을 초과하면 지원되지 않는 작업에 문제가 있을 수 있습니다 — 커스텀 레이어로 교체하거나 모델을 간소화해야 합니다.
최적화 Core ML 모델은 중요한 정확도 손실 없이 모델 크기를 줄이고 추론 속도를 높이는 과정입니다. Apple은 coremltools와 Xcode에 포함된 여러 최적화 도구를 제공합니다: 양자화 (가중치 정밀도 감소), 프루닝 (비중요 뉴론 제거), 중복 레이어 제거 및 계산 그래프 감소를 위한 레이어 횵합.
양자화는 Float32와 비교하여 모델 크기를 약 2배 (Float16) 또는 4배 (Int8) 감소시킵니다. Core ML은 세 가지 양자화 모드를 지원합니다: 캐리브레션 데이터셋을 사용한 학습 후 양자화 (PTQ), coremltools를 통한 변환 중 양자화, 그리고 양자화 인식 학습 (QAT). 대부분의 컴퓨터 비전 모델의 경우 PTQ to Float16은 추론 속도가 두 배가 되면서 0.5% 미만의 정확도 손실을 보입니다.
Xcode는 Core ML Model Profiler 도구를 제공하여 시뮬레이터 또는 실제 기기에서 다양한 기기에서 모델 성능을 측정할 수 있습니다. 프로파일러는 각 레이어의 실행 시간, 백엔드 부하 (ANE/GPU/CPU), 최대 메모리 사용량 및 모델 병목 현상을 보여줍니다. Apple Performance Optimization Guide에 따르면, 80% 이상의 모델이 다른 레이어보다 훨씬 느리게 작동하는 레이어가 적어도 하나 있으며, 이는 교체 또는 횵합으로 최적화할 수 있습니다.
Swift를 사용하여 iOS 애플리케이션에 학습된 Core ML 모델의 통합을 살펴봅시다. Xcode 프로젝트에 .mlpackage 파일을 추가(드래그 또는 Swift Package Manager 통해)하면 Xcode가 자동으로 타입화된 입력과 출력을 가진 Swift 모델 클래스를 생성합니다. 개발자는 입력 데이터를 직접 파싱할 필요가 없습니다 — 생성된 클래스는 모델 메타데이터에 따라 UIImage, MLMultiArray, String 또는 기타 유형을 수락합니다.
import CoreML
import Vision
guard let model = try? VNCoreMLModel(
for: MyImageClassifier().model
) else { return }
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
if let topResult = results.first {
print("Class: \(topResult.identifier)")
print("Confidence: \(topResult.confidence)")
}
}
let handler = VNImageRequestHandler(
cgImage: image.cgImage!,
options: [:]
)
try handler.perform([request])
Core ML을 통합할 때 에러 처리를 구현해야 합니다: 기기 호환성 미달(너무 오래된 iOS 버전), 메모리 부족 또는 모델 파일 괴갴 등의 이유로 모델이 로드되지 않을 수 있습니다. 팬백 로직을 구현하는 것이 좋습니다: 양자화된 Int8 형식으로 로드에 실패하면 Float16 버전을 로드하고, 그것도 실패하면 Float32를 로드합니다. Apple Crash Analytics에 따르면, ML 애플리케이션 충돌의 5% 이상이 모델 로딩 오류로 인해 발생합니다.
Core ML과 Create ML은 Apple ML 생태계의 두 가지 보완적인 도구입니다. Core ML은 기기상 모델 실행(추론)을 담당하고, Create ML은 모델 학습을 담당합니다. Create ML에서 생성된 모델은 애플리케이션에 통합하기 위해 특히 Core ML 형식 (.mlpackage)으로 익스포트됩니다. 웹 개발 용어를 비유하자면, Core ML은 브라우저(실행)이고, Create ML은 코드를 작성하기 위한 IDE(학습)입니다.
| 매개변수 | Core ML | Create ML |
|---|---|---|
| 목적 | 모델 실행 (추론) | 모델 학습 |
| 플랫폼 | iOS, iPadOS, macOS, watchOS, tvOS | macOS (만) |
| 형식 | .mlpackage (소비) | .mlpackage (생성) |
| 코드 | Swift / Objective-C API | Xcode UI 또는 Swift API |
| 사용자 | 애플리케이션 개발자 | 개발자 / 데이터 과학자 |
자주 묻는 질문
Core ML은 iOS, iPadOS, macOS, watchOS 및 tvOS 기기에서 사전 학습된 ML 모델을 실행하기 위한 Apple의 기계 학습 프레임워크입니다. 신경망, 결정 트리 및 회귀를 지원하고 최적의 컴퓨팅 백엔드 (Neural Engine, GPU 또는 CPU)를 자동 선택합니다.
TensorFlow는 서버와 모바일 기기에서 모델을 학습하고 실행하기 위한 보편적인 프레임워크입니다. Core ML은 하드웨어 특화 최적화 (ANE, GPU, Metal)를 통해 Apple 기기에서만 모델을 실행 (학습 아님)하기 위한 전문 엔진입니다. TensorFlow Mobile은 iOS에서 더 이상 지원되지 않습니다 — Apple은 자사 플랫폼의 모든 ML 작업에 Core ML을 권장합니다.
변환은 Python에서 coremltools 라이브러리를 사용하여 수행됩니다: PyTorch 모델을 TorchScript (torch.jit.trace)로 익스포트한 후 ct.converters.pytorch.convert()를 사용하여 .mlpackage를 생성합니다. coremltools는 PyTorch 레이어를 지원되는 Core ML 레이어에 자동 매핑하고 ANE를 위해 그래프를 최적화합니다.
Core ML은 iOS 11 및 그 이후의 모든 iPhone에서 작동합니다. 그러나 성능은 하드웨어에 따라 다릅니다: iPhone 5s/6 — CPU 만 (느린 추론), iPhone 8/X — GPU (Metal), iPhone Xs 및 그 이후 — Neural Engine (A17 Pro에서 최대 15.8 TOPS). 최고의 성능을 위해서는 최소 iOS 버전을 12+로 설정하는 것이 좋습니다.
현대 형식은 .mlpackage입니다 (모델, 메타데이터 및 입력/출력 설명을 포함한 디렉토리). 레거시 형식은 .mlmodel (단일 이진 파일)입니다. Xcode는 빌드 중에 .mlmodel을 .mlpackage로 자동 변환하지만, 새 프로젝트에서는 .mlpackage를 직접 사용하는 것이 권장됩니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.