Интеграция с Apple Core AI#
coreai-core публикует колеса macosx_26_0_arm64 и manylinux_2_34_x86_64, поэтому экспорт выполняется на компьютерах Mac с Apple silicon и в Linux x86_64 с glibc 2.34 или новее. Экспортированная .aimodel работает на iOS 27 и macOS 27. iOS SDK Ultralytics (версии 8.9.15 и новее) и плагин Flutter (версии 0.6.15 и новее) загружают ресурсы .aimodel по выбору пользователя на устройствах с iOS 27; Core ML остается вариантом по умолчанию.
Core AI — это новый фреймворк Apple для непосредственного запуска нейронных сетей на Apple silicon. Он поддерживает новый формат моделей .aimodel, современный API инференса на Swift, инструменты конвертации на базе PyTorch, предварительную компиляцию, специализацию моделей, а также специальные инструменты отладки и профилирования.
Apple называет Core 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 |
| API среды выполнения Apple | AIModel, InferenceFunction и NDArray | MLModel, часто через VNCoreMLModel и VNCoreMLRequest |
| Процесс конвертации | PyTorch torch.export через coreai-torch | Конвертация TorchScript через coremltools |
| Основная задача | Современные нейронные сети и генеративный ИИ | Широкий спектр задач развертывания машинного обучения, включая нейронные и ненейронные модели |
| Интеграция изображений | Приложения подготавливают тензоры или используют дескрипторы изображений и буферы Core AI | Прямая интеграция с фреймворком Vision для масштабирования и ориентации изображений, а также отправки запросов |
| Оборудование | CPU, GPU и нейронный движок Apple | CPU, GPU и нейронный движок Apple |
| Подготовка модели | Специализация при установке или первом использовании, с возможностью предварительной компиляции | Компиляция модели в Xcode или на устройстве |
| Пользовательские операции | Пользовательские понижающие преобразования Core AI и ядра Metal | Пользовательские слои Core ML и поддерживаемые операции MIL |
| Доступность для развертывания | Новое поколение операционных систем Apple; сейчас бета-версия | Широкая поддержка существующих операционных систем Apple |
| iOS SDK и Flutter SDK от Ultralytics | Использование по выбору пользователя на устройствах с iOS 27 и новее | Полная поддержка; используется по умолчанию |
Core ML остается подходящим выбором, если приложению нужна поддержка широкого спектра устройств, интеграция с фреймворком Vision или работа с такими типами моделей, как деревья решений и табличные конвейеры. Apple продолжает поддерживать 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 executableПакет coreai-torch от Apple преобразует torch.export.ExportedProgram, понижая операции PyTorch ATen до операций Core AI. Неподдерживаемые операции можно реализовать с помощью пользовательского понижающего преобразования или пользовательского ядра Metal.
В результате получается неспециализированный ресурс .aimodel. При подготовке модели приложение специализирует ее для целевого устройства. Приложение может выполнить эту операцию при первом использовании, запросить специализацию заранее или включить в поставку модель, скомпилированную предварительно, чтобы сократить время первоначальной загрузки.
В 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")Полный список аргументов см. в разделе Режим экспорта. Граф статический: трассировка выполняется с размером imgsz, переданным в export, поэтому запускай предсказание с тем же размером. Метаданные Ultralytics хранятся внутри собственного metadata.json ресурса, поэтому названия классов, шаг и задача сохраняются при обратном преобразовании.
Выбор головы модели#
С nms=False YOLO26 экспортирует сквозную голову, которая выбирает детекции непосредственно внутри графа. В Core AI нет примитива top-k, поэтому это действие сводится к полной сортировке и добавляет фиксированные затраты на границе секции Apple Neural Engine — около 1,7 мс независимо от max_det. При экспорте с nms=None вместо этого выдаются исходные предсказания (1, 84, 8400), а подавление немаксимумов выполняет предиктор:
yolo export model=yolo26n.pt format=coreai nms=None quantize=16На iPhone 17 Pro с iOS 27.0 YOLO26n при размере 640 обрабатывает данные за 3,01 мс с головой в графе и за 1,28 мс без нее (FP16, предварительная компиляция, три чередующихся блока по 50 итераций). В обоих случаях инференс выполняется через YOLO(...). Используй nms=False, если один вызов графа должен возвращать готовые детекции, или оставь значение по умолчанию nms=None для внешнего NMS.
На iOS 27 или macOS 27 приложение загрузит экспортированный ресурс и запустит его через Swift API Core AI от Apple. В экспортированных ресурсах используется точка входа main; они принимают один вход images формы [batch, 3, imgsz, imgsz] и возвращают 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, путь Core AI в iOS SDK Ultralytics самостоятельно выполняет предобработку с letterbox и формирование NDArray, считывает те же метаданные Ultralytics из ресурса metadata.json и повторно использует декодеры выходных данных Core ML. Ресурс загружается, когда приложение передает путь .aimodel или URL .aimodel.zip. Актуальные сведения об API Apple приводит в документации фреймворка Core AI, а примеры работающих моделей доступны в репозитории моделей Core AI.
Измеренная производительность#
Сквозной инференс одного изображения для YOLO26n FP16 (quantize=16) в вариантах экспорта Core ML и Core AI со стандартной исходной головой (nms=None) на Mac mini с Apple M4 (4 производительных и 6 энергоэффективных ядер CPU, GPU с 10 ядрами, Neural Engine с 16 ядрами), 16 ГБ памяти и macOS 27.0. Использовались ultralytics 8.4.168, coremltools 9.0 для инференса Core ML и coreai-torch 0.4.3 с coreai-core 1.0.0b3 для инференса Core AI на Python 3.13. В каждой ячейке указано общее время (предобработка + инференс + постобработка), а ниже приведено время для каждого этапа.
| Модель | Задача | размер (пиксели) | Core ML CPUCPU_ONLY(мс) | Core ML CPU + предпочтительно ANECPU_AND_NE(мс) | Core AI CPUcpu_only()(мс) | Core AI CPU + предпочтительно ANEneural_engine()(мс) |
|---|---|---|---|---|---|---|
| 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 |
- Значения скорости — это задержки при пакетном выполнении для одного изображения: среднее значение для 15 вызовов
predictпосле 3 прогревочных вызовов наbus.jpgчерез Python API Ultralytics; каждая модель и вычислительный блок запускались в отдельном новом процессе. Порядок 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 семантическая модель Core ML FP16 работает медленнее с предпочтительным Neural Engine, чем только на CPU, а постобработка Core AI для семантической модели занимает 6,4–7,4 мс против 0,4 мс у Core ML.
- Сравни результаты на устройстве iPhone 17 Pro в интеграции CoreML.
Преимущества Core AI#
Core AI предлагает несколько перспективных преимуществ для будущего развертывания Ultralytics:
- Современный путь экспорта PyTorch: преобразование начинается с
torch.export, сохраняя более выразительный граф PyTorch, чем при трассировке, используемой во многих существующих средствах экспорта. - Точная настройка среды выполнения: приложения могут управлять специализацией, кэшами скомпилированных моделей, функциями инференса, памятью и размещением вычислений.
- Расширенная поддержка моделей: выполнение с сохранением состояния, динамические формы, несколько функций в одном артефакте и пользовательские ядра Metal предназначены для современных архитектур компьютерного зрения и генеративных моделей.
- Специализированные инструменты разработчика: Core AI Debugger позволяет анализировать графы и значения тензоров, а также отслеживать их до исходного кода Python. Xcode и Instruments обеспечивают профилирование во время выполнения.
- Возможность обходиться без копирования: Core AI предоставляет средства управления хранилищем и буферами, предназначенные для сокращения копирований между рабочими нагрузками камеры, графики и инференса.
- Оптимизация для Apple Silicon: специализация для устройства позволяет Apple оптимизировать модель для CPU, GPU и Neural Engine, доступных на конкретном устройстве.
- Гибкое сжатие: инструменты Core AI Optimization от Apple поддерживают квантование, палетизацию и прореживание, в том числе форматы весов с малой битностью.
Эти возможности могут быть особенно полезны для будущих моделей YOLO с динамическим выполнением, более крупными мультимодальными компонентами или пользовательскими операциями, которые трудно сопоставить с существующими операциями Core ML.
Текущие недостатки и ограничения#
В настоящее время Core AI не заменяет производственный путь Core ML:
- Требуются новые операционные системы: общедоступный фреймворк рассчитан на поколения iOS 27 и macOS 27, тогда как Core ML поддерживает гораздо больше уже используемых устройств.
- Бета-версия ПО: фреймворк Core AI от Apple и части его набора инструментов Python всё ещё находятся на предварительной стадии и могут измениться до стабильных выпусков.
- Более узкие требования к среде экспорта:
coreai-torchсейчас требует Python 3.11–3.14 и последние версии PyTorch, что значительно сужает диапазон по сравнению с версиями Python и PyTorch, поддерживаемыми Ultralytics. - Ограниченное число платформ экспорта:
coreai-coreпубликует только колёсаmacosx_26_0_arm64иmanylinux_2_34_x86_64, поэтому дляformat=coreaiнужен Mac на Apple Silicon с macOS 26 или новее либо Linux x86_64 с glibc 2.34 или новее (например, Ubuntu 22.04+). Для запуска.aimodelпо-прежнему требуется оборудование Apple. - В SDK Ultralytics это дополнительный вариант, а не вариант по умолчанию: на iPhone 17 Pro сравнение на устройстве показывает, что Core AI не превосходит Core ML во всём конвейере: семантический инференс, инференс для глубины и инференс только на CPU работают медленнее, а FP16-ресурсы примерно вдвое увеличивают размер загрузки. Поэтому в SDK для iOS и плагине Flutter по умолчанию используется Core ML.
- Для SDK используй необработанную голову: с
nms=FalseYOLO26n работает на Core AI примерно вдвое дольше, чем на Core ML (3,06 против 1,53 мс в одном сравнительном запуске), а сквозная модель позы FP16 не возвращает обнаружений при размещении по умолчанию в Core AI на iOS 27.0 (apple/coreai-torch#115). Необработанная голова (nms=None, значение по умолчанию) позволяет избежать обеих проблем, а SDK выполняют NMS в Swift. См. Выбор головы. - Нет среды выполнения в iOS Simulator: SDK iOS Simulator не включает Core AI.
- Требуется миграция приложения:
.aimodelнельзя использовать вместо.mlpackage; за пределами SDK Ultralytics, в котором есть реализация Core AI, необходимо реализовать загрузку модели, предобработку, вызовы инференса, обработку метаданных и декодирование выходных данных. - Мало данных о работе в production: производительность, энергопотребление, время специализации при первом запуске, точность и сжатие необходимо проверить для всей матрицы поддерживаемых задач YOLO и устройств.
- Нет конвейера NMS: Core ML может включать этап NMS для старых моделей обнаружения YOLO. По умолчанию Core AI экспортирует необработанные предсказания «один ко многим»; для головы YOLO26 без NMS используй
nms=False. Встроенные NMS (nms=True) иdynamic=Trueне поддерживаются. Дляcoreai-torchнет понижения уровня дляtorchvision::nms, поэтому NMS выполняется на хосте. - Фиксированный размер входных данных: экспортированный граф трассируется для одного
imgszи не поддерживает динамические формы, поэтому выполняй предсказание с размером, для которого граф был экспортирован. - Ресурсы FP16 могут привести к аварийному завершению при загрузке: некоторые ресурсы
.aimodelв формате FP16 не загружают программу Apple Neural Engine, из-за чего MPSGraph вызывает ошибку утверждения и завершает процесс вместо переключения на другой вариант. Это происходит внутри среды выполнения Apple, до запуска любого кода Ultralytics; тот же ресурс загружается при специализации только для CPU. Если ресурс ведёт себя так, используй FP32. Проверенные ресурсы FP16 из SDK загрузились на iPhone 17 Pro без аварийного завершения: все модели nano, модели detect всех размеров и самая крупная модель каждой задачи.
Какой формат Apple выбрать?#
Используй Core ML уже сейчас, если тебе нужны:
- Развёртывание на текущих и более старых операционных системах Apple
- Путь по умолчанию в SDK Ultralytics для iOS или Flutter
- Обработка изображений с помощью фреймворка Vision
- Проверенное развёртывание YOLO в FP16 и INT8
- Встроенный NMS для совместимых устаревших моделей обнаружения
Рассмотри Core AI, если можешь потребовать iOS 27 или macOS 27 и тебе нужны:
- Новейшая нейросетевая среда выполнения Apple на устройстве
- Явное управление специализацией и кэшами
- Расширенное выполнение динамических моделей или моделей с сохранением состояния
- Пользовательские операции Core AI или ядра Metal
- Подробная отладка графов Core AI и профилирование во время выполнения
Core ML и Core AI, как ожидается, будут сосуществовать, пока приложения переходят на новую технологию. Поддержка Core AI не устраняет сразу необходимость в Core ML, поскольку целевые операционные системы и контракты приложений у них различаются.
Дорожная карта Ultralytics#
Специализированная цель экспорта coreai реализована: экспорт и численная проверка охватывают поддерживаемые модели YOLO26 для разных задач и непрерывно выполняются в CI Ultralytics на macOS 26; задержка FP16 измеряется на устройстве. Что ещё предстоит сделать, чтобы Core AI сравнялся по возможностям с Core ML:
- Сократить разрыв в задержке головы на всём конвейере на Apple Neural Engine (apple/coreai-torch#66) и устранить проблемы корректности на Neural Engine (apple/coreai-torch#115, #116).
- Ресурсы Core AI в формате INT8 и с палетизацией; ресурсы SDK представлены в FP16 и примерно вдвое превышают размер загрузки ресурсов Core ML в INT8.
- Стабильные выпуски фреймворка Apple и инструментов преобразования (поколения iOS 27 и macOS 27 сейчас находятся в бета-версии).
- Тесты памяти, энергопотребления и времени специализации для матрицы поддерживаемых устройств.
SDK Ultralytics для iOS и плагин Flutter загружают Core AI как дополнительный вариант на iOS 27 и новее; Core ML остаётся вариантом по умолчанию и рекомендуемой целью для поддержки версий ниже iOS 27. Следи за дорожной картой Ultralytics и примечаниями к выпускам, чтобы узнать о выполнении оставшихся задач.
Дополнительные ресурсы#
- Обзор Apple Core AI
- Документация фреймворка Core AI
- Расширения Core AI для PyTorch
- Core AI Optimization
- Репозиторий моделей Apple Core AI
- Интеграция Ultralytics с Core ML
Часто задаваемые вопросы#
Да. Выполни экспорт с помощью
model.export(format="coreai")илиyolo export format=coreaiна Mac с Apple Silicon и macOS 26 или новее либо на Linux x86_64 с glibc 2.34 или новее; экспортированный.aimodelработает на iOS 27 и macOS 27. SDK Ultralytics для iOS и Flutter загружают его как дополнительный вариант на устройствах с iOS 27. Для пути по умолчанию и операционных систем предыдущего поколения экспортируй файлы Core ML.mlpackageс помощьюformat="coreml".Не сразу. Core AI — это новый путь Apple для современных нейронных сетей, а Core ML по-прежнему поддерживается и обеспечивает более широкую совместимость с операционными системами, интеграцию с Vision и поддержку моделей, не основанных на нейросетях.
Нет. В них представлены разные форматы моделей, и они загружаются разными фреймворками. Преобразование нужно начинать с исходной модели, используя соответствующий набор инструментов Apple.
Ожидается, что первоначальная интеграция будет сосуществовать с Core ML. Решение о возможной замене в будущем будет зависеть от распространённости операционных систем, стабильности инструментов и производительности на устройствах.