Apple Core AI 통합#
coreai-core은 macosx_26_0_arm64 및 manylinux_2_34_x86_64 wheel을 게시하므로 Apple silicon Mac과 glibc 2.34 이상을 사용하는 x86_64 Linux에서 내보내기를 실행할 수 있습니다. 내보낸 .aimodel은 iOS 27 및 macOS 27에서 실행됩니다. Ultralytics iOS SDK(8.9.15 이상)와 Flutter 플러그인(0.6.15 이상)은 iOS 27 기기에서 .aimodel 에셋을 옵트인 방식으로 로드하며, Core ML은 계속 기본값으로 사용됩니다.
Core AI는 Apple silicon에서 신경망을 직접 실행하기 위한 Apple의 새로운 프레임워크입니다. .aimodel 모델 형식, 최신 Swift 추론 API, PyTorch 기반 변환 도구, 사전 컴파일, 모델 특수화, 전용 디버깅 및 프로파일링 도구를 도입합니다.
Apple은 Core AI를 온디바이스 AI 실행의 차세대 기술이자 온디바이스 Apple Intelligence를 구동하는 추론 프레임워크로 설명합니다. 이 프레임워크는 소형 비전 모델부터 대형 생성형 모델에 이르는 최신 신경망 아키텍처를 위해 설계되었으며, CPU, GPU 및 Apple 신경망 엔진(ANE)에 작업을 분배할 수 있습니다.
Core AI는 Core ML의 새로운 이름이 아니라 새로운 배포 경로입니다. 두 프레임워크는 서로 다른 모델 형식, 변환 도구, 런타임 API 및 애플리케이션 통합 패턴을 사용합니다.
Core AI와 Core ML 비교#
| 기능 | Core AI | Core ML |
|---|---|---|
| 모델 아티팩트 | .aimodel | .mlpackage 또는 .mlmodel |
| Ultralytics 내보내기 | format=coreai에서 사용 가능 | format=coreml에서 사용 가능 |
| Apple 런타임 API | AIModel, InferenceFunction, NDArray | 주로 VNCoreMLModel 및 VNCoreMLRequest를 통해 사용하는 MLModel |
| 변환 워크플로 | PyTorch torch.export을 coreai-torch을 통해 변환 | coremltools을 통한 TorchScript 변환 |
| 주요 목적 | 최신 신경망 및 생성형 AI | 신경망 및 비신경망 모델을 포함한 광범위한 머신러닝 배포 |
| 이미지 통합 | 애플리케이션에서 텐서를 준비하거나 Core AI 이미지 디스크립터 및 버퍼를 사용합니다 | 이미지 크기 조정, 방향 설정, 요청 처리를 위해 Vision 프레임워크와 직접 통합합니다 |
| 하드웨어 | CPU, GPU 및 Apple 신경망 엔진 | CPU, GPU 및 Apple 신경망 엔진 |
| 모델 준비 | 설치 시 또는 첫 사용 시 특수화하며, 선택적으로 사전 컴파일을 수행합니다 | Xcode 또는 온디바이스 모델 컴파일 |
| 사용자 지정 연산 | 사용자 지정 Core AI 로워링 및 Metal 커널 | Core ML 사용자 지정 레이어 및 지원되는 MIL 연산 |
| 배포 가능 여부 | 새로운 Apple 운영 체제 세대에서 사용 가능하며 현재 베타 버전입니다 | 기존 Apple 운영 체제 전반에서 폭넓게 지원합니다 |
| Ultralytics iOS 및 Flutter SDK | iOS 27 이상 기기에서 옵트인 방식으로 사용 가능 | 완전히 지원되며 기본값으로 사용됩니다 |
애플리케이션에서 폭넓은 기기 지원, Vision 프레임워크 통합, 또는 의사결정 트리와 표 형식 파이프라인 같은 모델 유형이 필요한 경우 Core ML을 사용하는 것이 적절합니다. Apple은 Core ML을 계속 지원하며 신경망이 아닌 모델 유형을 사용하는 개발자에게 Core ML을 안내합니다.
Core AI 형식의 작동 방식#
Core AI 작성 워크플로는 PyTorch 모델에서 시작합니다.
PyTorch model
↓ torch.export
ExportedProgram
↓ coreai-torch
Core AI program
↓ optimize and save
.aimodel
↓ specialize or compile ahead of time
Apple silicon executableApple의 coreai-torch 패키지는 PyTorch ATen 연산을 Core AI 연산으로 로워링해 torch.export.ExportedProgram를 변환합니다. 지원되지 않는 연산은 사용자 지정 로워링 또는 사용자 지정 Metal 커널로 구현할 수 있습니다.
결과로 생성되는 .aimodel은 특수화되지 않은 모델 에셋입니다. 애플리케이션이 모델을 준비하면 Core AI가 대상 기기에 맞게 모델을 특수화합니다. 애플리케이션은 첫 사용 시 이 작업을 수행하도록 하거나, 더 일찍 특수화를 요청하거나, 초기 로딩 시간을 줄이기 위해 사전 컴파일된 모델을 제공할 수 있습니다.
Swift에서 애플리케이션은 Core AI 프레임워크로 에셋을 로드하고, 추론 함수를 선택한 다음, 타입이 지정된 NDArray 입력을 제공하고 이름이 지정된 출력을 받습니다. 이는 Core ML 모델을 Vision 요청으로 감싸는 방식과 다르므로, Core AI를 채택하려면 .aimodel 에셋용으로 설계된 애플리케이션 런타임이 필요합니다.
구현 세부 정보는 Apple 문서의 AIModel, 모델 특수화 및 캐싱, 사전 컴파일을 참조하세요.
YOLO26 모델을 Core AI로 내보내기#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai") # 'yolo26n.aimodel'을 생성합니다
model.export(format="coreai", quantize=16) # FP16 asset
# 내보낸 모델 실행
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")전체 인수 목록은 내보내기 모드를 참조하세요. 그래프는 정적입니다. export에 지정된 imgsz 크기로 추적되므로 동일한 크기로 예측해야 합니다. Ultralytics 메타데이터는 에셋 자체의 metadata.json 안에 포함되므로 클래스 이름, stride, task가 내보내기 전후에도 유지됩니다.
헤드 선택#
nms=False을 사용하면 YOLO26은 그래프 내부에서 탐지 결과를 선택하는 엔드투엔드 헤드를 내보냅니다. Core AI에는 top-k 프리미티브가 없으므로, 이 선택은 전체 정렬로 변환되며 Apple 신경망 엔진 파티션 경계에서 고정 비용(약 1.7 ms)이 발생합니다. 이 비용은 max_det과 관계없이 동일합니다. nms=None로 내보내면 대신 원시 (1, 84, 8400) 예측 결과가 출력되며, 비최대 억제는 predictor에서 처리합니다.
yolo export model=yolo26n.pt format=coreai nms=None quantize=16iOS 27.0을 실행하는 iPhone 17 Pro에서 YOLO26n 640 모델의 측정 시간은 그래프에 헤드가 포함된 경우 3.01 ms, 헤드가 없는 경우 1.28 ms입니다(FP16, 사전 컴파일, 각각 50회 반복하는 세 블록을 교차 실행). 두 모델 모두 추론 시 YOLO(...)을 통해 왕복 변환됩니다. 그래프 호출 한 번으로 완성된 탐지 결과를 반환해야 한다면 nms=False을 사용하고, 외부 NMS를 사용하려면 기본값인 nms=None를 유지하세요.
iOS 27 또는 macOS 27에서 애플리케이션은 Apple의 Core AI Swift API를 통해 내보낸 에셋을 로드하고 실행합니다. 내보낸 에셋은 진입점 main을 사용하고, [batch, 3, imgsz, imgsz] 형태의 단일 images 입력을 받으며, output0을 반환합니다(인스턴스 세그멘테이션 모델은 output1도 반환합니다).
import CoreAI
let modelURL = Bundle.main.url(forResource: "yolo26n", withExtension: "aimodel")!
let model = try await AIModel(contentsOf: modelURL)
guard let function = try model.loadFunction(named: "main") else {
throw AppError.missingInferenceFunction
}
let outputs = try await function.run(inputs: ["images": imageTensor])현재의 Core ML 및 Vision 워크플로와 달리, Ultralytics iOS SDK의 Core AI 경로는 자체적으로 레터박스 전처리 및 NDArray 구성을 수행하고, 에셋의 metadata.json에서 동일한 Ultralytics 메타데이터를 읽으며 Core ML 출력 디코더를 재사용합니다. 앱에서 .aimodel 경로 또는 .aimodel.zip URL을 전달하면 로드됩니다. Apple은 Core AI 프레임워크 문서에서 최신 API 세부 정보를 제공하고, Core AI 모델 저장소에서 작동하는 모델 예제를 제공합니다.
측정 성능#
기본 원시 헤드(nms=None)를 사용하는 YOLO26n FP16(quantize=16) Core ML 및 Core AI 내보내기의 엔드투엔드 단일 이미지 추론 성능입니다. 측정은 메모리 16 GB, macOS 27.0이 설치된 Apple M4 탑재 Mac mini(성능 CPU 코어 4개 및 효율 CPU 코어 6개, 10코어 GPU, 16코어 신경망 엔진)에서 ultralytics 8.4.168, Core ML 추론용 coremltools 9.0, Python 3.13에서 Core AI 추론용 coreai-torch 0.4.3 및 coreai-core 1.0.0b3을 사용해 측정했습니다. 각 셀에는 총 시간(전처리 + 추론 + 후처리)이 표시되며, 그 아래에 단계별 시간이 표시됩니다.
| 모델 | 작업 | 크기 (픽셀) | Core ML CPUCPU_ONLY(ms) | Core ML CPU + ANE 우선CPU_AND_NE(ms) | Core AI CPUcpu_only()(ms) | Core AI CPU + ANE 우선neural_engine()(ms) |
|---|---|---|---|---|---|---|
| YOLO26n | 감지 | 640 | 14.4 0.6 / 13.4 / 0.4 | 7.6 0.6 / 6.7 / 0.4 | 16.8 0.6 / 15.9 / 0.3 | 2.8 0.6 / 2.0 / 0.2 |
| YOLO26n-seg | 분할 | 640 | 18.7 0.6 / 16.5 / 1.5 | 9.2 0.6 / 7.1 / 1.5 | 25.3 0.6 / 23.2 / 1.5 | 5.1 0.6 / 3.1 / 1.4 |
| YOLO26n-sem | 의미론적 | 640 | 33.9 1.3 / 32.2 / 0.4 | 73.7 1.4 / 71.9 / 0.4 | 47.1 1.2 / 38.5 / 7.4 | 18.7 1.2 / 11.1 / 6.4 |
| YOLO26n-depth | 깊이 | 640 | 36.8 0.8 / 35.5 / 0.5 | 12.1 0.9 / 10.7 / 0.5 | 40.2 0.8 / 39.0 / 0.5 | 7.5 0.7 / 6.3 / 0.5 |
| YOLO26n-cls | 분류 | 224 | 3.8 1.9 / 1.8 / 0.0 | 3.3 1.9 / 1.4 / 0.0 | 3.0 1.9 / 1.0 / 0.0 | 2.4 1.9 / 0.6 / 0.0 |
| YOLO26n-pose | 포즈 | 640 | 15.5 0.6 / 14.6 / 0.3 | 7.0 0.6 / 6.2 / 0.3 | 17.8 0.5 / 17.0 / 0.3 | 2.7 0.5 / 2.0 / 0.2 |
| YOLO26n-obb | OBB | 640 | 32.7 1.3 / 31.1 / 0.2 | 16.9 1.5 / 15.2 / 0.2 | 37.2 1.1 / 35.9 / 0.2 | 5.7 1.3 / 4.3 / 0.1 |
- 속도 값은 단일 이미지 버스트 지연 시간입니다.
bus.jpg에서 Ultralytics Python API를 통해 호출한predict15회의 평균이며, 이때 워밍업 호출 3회를 먼저 수행하고 각 모델과 컴퓨팅 유닛은 별도의 새 프로세스에서 실행합니다. CPU/가속기 순서는 하나의 순차 실행에서 작업별로 번갈아 적용했습니다. Core ML 행은coremltools.ComputeUnit.CPU_ONLY또는CPU_AND_NE으로 로드하고, Core AI 행은SpecializationOptions.cpu_only()또는SpecializationOptions.from_preferred_compute_unit_kind(ComputeUnitKind.neural_engine())로 특수화하며, 최종 연산 배치는 각 프레임워크에서 제어합니다. - Detect, segment, classify, pose 및 OBB는 모든 컴퓨팅 유닛에서 두 형식 모두 동일한 예측을 반환했습니다. 이 Mac에서는 Neural Engine을 우선 사용하도록 설정한 Core ML FP16 시맨틱 모델이 CPU만 사용하는 경우보다 느리며, Core AI 시맨틱 후처리는 0.4ms인 Core ML보다 긴 6.4~7.4ms가 소요됩니다.
- iPhone 17 Pro에서 기기 내 성능을 비교한 결과는 CoreML 통합에서 확인하세요.
Core AI의 장점#
Core AI는 향후 Ultralytics 배포에 유용할 수 있는 몇 가지 장점을 제공합니다.
- 최신 PyTorch 내보내기 경로: 변환은
torch.export에서 시작하므로, 많은 기존 내보내기 도구에서 사용하는 추적 워크플로보다 표현력이 뛰어난 PyTorch 그래프를 보존합니다. - 세밀한 런타임 제어: 애플리케이션에서 특수화, 컴파일된 모델 캐시, 추론 함수, 메모리 및 컴퓨팅 배치를 관리할 수 있습니다.
- 고급 모델 지원: 상태 유지 실행, 동적 형태, 하나의 아티팩트 내 여러 함수 및 사용자 지정 Metal 커널은 최신 비전 및 생성형 아키텍처를 위해 설계되었습니다.
- 전용 개발자 도구: Core AI Debugger를 사용하면 그래프와 텐서 값을 검사하고, 해당 값을 원본 Python 코드까지 추적할 수 있습니다. Xcode와 Instruments는 런타임 프로파일링을 제공합니다.
- 제로 카피 활용: Core AI는 카메라, 그래픽 및 추론 워크로드 간의 복사를 줄이기 위한 스토리지 및 버퍼 제어 기능을 제공합니다.
- Apple 실리콘 최적화: 기기별 특수화를 통해 Apple은 특정 기기에서 사용 가능한 CPU, GPU 및 Neural Engine에 맞춰 모델을 최적화할 수 있습니다.
- 유연한 압축: Apple의 Core AI Optimization 도구는 저비트 가중치 형식을 포함하여 양자화, 팔레타이제이션 및 가지치기를 지원합니다.
이러한 기능은 동적 실행, 더 큰 멀티모달 구성 요소 또는 기존 Core ML 연산에 적절히 매핑되지 않는 사용자 지정 연산을 사용하는 향후 YOLO 모델에 특히 유용할 수 있습니다.
현재의 단점 및 제한 사항#
현재 Core AI는 프로덕션 Core ML 경로를 대체하지 않습니다.
- 최신 운영 체제 필요: 공개 프레임워크는 iOS 27 및 macOS 27 세대를 대상으로 하지만, Core ML은 훨씬 더 많은 기기에서 사용할 수 있습니다.
- 베타 소프트웨어: Apple의 Core AI 프레임워크와 Python 도구 체인의 일부는 아직 초기 단계이며, 정식 출시 전에 변경될 수 있습니다.
- 제한적인 내보내기 환경: 현재
coreai-torch은 Python 3.11~3.14와 최신 PyTorch 버전을 요구하므로, Ultralytics가 지원하는 Python 및 PyTorch 버전 범위보다 훨씬 좁습니다. - 제한된 내보내기 플랫폼:
coreai-core은macosx_26_0_arm64및manylinux_2_34_x86_64휠만 게시하므로,format=coreai을 사용하려면 macOS 26 이상을 실행하는 Apple 실리콘 Mac 또는 glibc 2.34 이상을 사용하는 x86_64 Linux(예: Ubuntu 22.04 이상)가 필요합니다..aimodel를 실행하려면 여전히 Apple 하드웨어가 필요합니다. - 기본값이 아닌 Ultralytics SDK의 옵트인 옵션: iPhone 17 Pro의 기기 내 비교에서 Core AI는 전체 파이프라인 성능 면에서 Core ML보다 앞서지 않고 동등한 수준입니다. 시맨틱, 깊이 및 CPU 전용 추론은 더 느리고 FP16 에셋은 다운로드 크기가 약 두 배이므로, iOS SDK와 Flutter 플러그인은 Core ML을 기본값으로 유지합니다.
- SDK에서는 raw head를 사용하세요:
nms=False을 사용하는 경우 YOLO26n은 Core ML보다 Core AI에서 실행 시간이 약 두 배 걸리며(한 번의 비교 실행에서 3.06ms 대 1.53ms), FP16 엔드투엔드 포즈 모델은 iOS 27.0에서 Core AI의 기본 배치로 실행할 때 탐지를 반환하지 않습니다(apple/coreai-torch#115). 기본값인 raw head(nms=None)를 사용하면 두 문제를 모두 피할 수 있으며, SDK는 Swift에서 NMS를 실행합니다. head 선택을 참조하세요. - iOS Simulator 런타임 미지원: iOS Simulator SDK에는 Core AI가 포함되어 있지 않습니다.
- 애플리케이션 마이그레이션 필요:
.aimodel은.mlpackage을 대체할 수 없습니다. 모델 로드, 전처리, 추론 호출, 메타데이터 처리 및 출력 디코딩을 위한 Core AI 구현이 필요하며, Ultralytics SDK는 이를 제공하지 않습니다. - 제한된 프로덕션 검증: 지원되는 YOLO 작업 및 기기 조합 전반에서 성능, 전력 사용량, 최초 실행 시 특수화 시간, 정확도 및 압축을 검증해야 합니다.
- NMS 파이프라인 없음: Core ML은 이전 YOLO 탐지 모델에 NMS 단계를 포함할 수 있습니다. Core AI는 기본적으로 raw one-to-many 예측을 내보내며, YOLO26의 NMS 없는 head에는
nms=False을 사용하세요. 임베디드 NMS(nms=True)와dynamic=True는 지원되지 않습니다.coreai-torch에는torchvision::nms에 대한 lowering이 없으므로 NMS는 호스트에서 실행됩니다. - 고정 입력 크기: 내보낸 그래프는 하나의
imgsz에서 추적되며 동적 형태를 지원하지 않으므로, 내보내기 시 사용한 크기로 예측해야 합니다. - FP16 에셋은 로드 중 중단될 수 있음: 일부 FP16
.aimodel에셋은 Apple Neural Engine 프로그램을 로드하지 못하고 MPSGraph에서 어설션 실패가 발생하여, 대체 경로로 전환하는 대신 프로세스가 종료됩니다. 이 문제는 Ultralytics 코드가 실행되기 전 Apple 런타임 내부에서 발생하며, 동일한 에셋은 CPU 전용 특수화로 로드됩니다. 에셋에서 이 문제가 발생하면 FP32로 전환하세요. iPhone 17 Pro에서 확인한 FP16 SDK 에셋(모든 nano 모델, 모든 크기의 detect 모델, 각 작업별 최대 크기 모델)은 중단 없이 로드되었습니다.
어떤 Apple 형식을 사용해야 하나요?#
다음이 필요하다면 현재는 Core ML을 사용하세요.
- 현재 및 이전 Apple 운영 체제 전반에 배포
- Ultralytics iOS 또는 Flutter SDK의 기본 경로
- Vision 프레임워크를 통한 이미지 처리
- 테스트를 거친 FP16 및 INT8 YOLO 배포
- 호환되는 레거시 탐지 모델에 임베디드 NMS 사용
iOS 27 또는 macOS 27을 요구할 수 있고 다음 기능이 필요하다면 Core AI를 평가하세요.
- 최신 Apple 기기 내 신경망 런타임
- 명시적인 특수화 및 캐시 관리
- 고급 동적 또는 상태 유지 모델 실행
- 사용자 지정 Core AI 연산 또는 Metal 커널
- 상세한 Core AI 그래프 디버깅 및 런타임 프로파일링
애플리케이션이 전환되는 동안 Core ML과 Core AI는 공존할 것으로 예상됩니다. 두 프레임워크의 배포 대상과 애플리케이션 계약이 다르므로, Core AI를 지원하더라도 Core ML이 당장 불필요해지는 것은 아닙니다.
Ultralytics 로드맵#
전용 coreai 내보내기 대상이 구현되었습니다. 지원되는 YOLO26 작업 모델의 내보내기 및 수치 검증을 macOS 26에서 Ultralytics CI로 지속 실행하며, FP16 지연 시간을 기기에서 측정합니다. Core AI가 Core ML 경로와 동등한 수준에 도달하기까지 남은 로드맵은 다음과 같습니다.
- Apple Neural Engine에서 엔드투엔드 head 지연 시간 격차 해소(apple/coreai-torch#66) 및 Neural Engine 정확성 문제 해결(apple/coreai-torch#115, #116).
- INT8 및 팔레타이즈된 Core AI 에셋. SDK 에셋은 FP16이며, INT8 Core ML 에셋보다 다운로드 크기가 약 두 배입니다.
- Apple 프레임워크 및 변환 도구의 정식 버전 출시(iOS 27 및 macOS 27 세대는 현재 베타 단계입니다).
- 지원되는 기기 조합 전반의 메모리, 전력 및 특수화 벤치마크.
Ultralytics iOS SDK와 Flutter 플러그인은 iOS 27 이상에서 Core AI를 옵트인 옵션으로 로드합니다. Core ML은 기본값으로 유지되며 iOS 27 미만을 지원할 때 권장되는 대상입니다. 남은 항목은 Ultralytics 로드맵과 릴리스 노트를 확인하세요.
추가 리소스#
- Apple Core AI 개요
- Core AI 프레임워크 문서
- Core AI PyTorch 확장
- Core AI 최적화
- Apple Core AI 모델 저장소
- Ultralytics Core ML 통합
자주 묻는 질문#
예. macOS 26 이상을 실행하는 Apple 실리콘 Mac 또는 glibc 2.34 이상을 사용하는 x86_64 Linux에서
model.export(format="coreai")또는yolo export format=coreai로 내보내세요. 내보낸.aimodel는 iOS 27 및 macOS 27에서 실행됩니다. Ultralytics iOS 및 Flutter SDK는 iOS 27 기기에서 이를 옵트인 옵션으로 로드합니다. 기본 경로 또는 해당 세대보다 이전 운영 체제의 경우format="coreml"를 사용해 Core ML.mlpackage파일을 내보내세요.당장은 아닙니다. Core AI는 최신 신경망을 위한 Apple의 새로운 경로인 반면, Core ML은 계속 지원되며 더 폭넓은 운영 체제 지원, Vision 통합 및 비신경망 모델 지원을 제공합니다.
아니요. 두 형식은 서로 다른 모델 표현을 포함하며 각기 다른 프레임워크에서 로드됩니다. 적절한 Apple 도구 체인을 통해 소스 모델에서 변환해야 합니다.
초기 통합은 Core ML과 공존할 것으로 예상됩니다. 향후 대체 여부는 운영 체제 보급률, 도구의 안정성 및 기기 내 성능에 따라 결정됩니다.