Интеграция Apple Core AI#
coreai-core публикует только колёса macosx_26_0_arm64, поэтому экспорт выполняется на Mac с Apple silicon. Экспортированный .aimodel работает на iOS 27 и macOS 27. SDK Ultralytics для iOS и Flutter пока не загружают ресурсы .aimodel — для них используй Core ML.
Core AI — новый фреймворк Apple для непосредственного запуска нейронных сетей на Apple silicon. Он представляет формат моделей .aimodel, современный API инференса на Swift, инструменты конвертации на основе PyTorch, компиляцию заранее, специализацию моделей, а также специализированные инструменты отладки и профилирования.
Apple описывает Core AI как следующий этап развития выполнения AI на устройстве и инференс-фреймворк, лежащий в основе Apple Intelligence на устройстве. Он рассчитан на современные архитектуры нейронных сетей — от компактных моделей компьютерного зрения до больших генеративных моделей — и может распределять нагрузку между CPU, GPU и нейронным движком Apple (ANE).
Core AI — это новый путь развёртывания, а не новое название Core ML. Фреймворки используют разные форматы моделей, инструменты конвертации, runtime API и способы интеграции с приложениями.
Сравнение Core AI и Core ML#
| Возможность | Core AI | Core ML |
|---|---|---|
| Артефакт модели | .aimodel | .mlpackage или .mlmodel |
| Экспорт Ultralytics | Доступен с format=coreai | Доступен с format=coreml |
| API runtime Apple | AIModel, InferenceFunction и NDArray | MLModel, часто через VNCoreMLModel и VNCoreMLRequest |
| Процесс конвертации | PyTorch torch.export через coreai-torch | Конвертация TorchScript через coremltools |
| Основной фокус | Современные нейронные сети и генеративный AI | Широкое развёртывание моделей машинного обучения, включая нейронные и ненейронные модели |
| Интеграция с изображениями | Приложения подготавливают тензоры или используют дескрипторы и буферы изображений Core AI | Прямая интеграция с фреймворком Vision для масштабирования и ориентации изображений, а также формирования запросов |
| Аппаратное обеспечение | CPU, GPU и нейронный движок Apple | CPU, GPU и нейронный движок Apple |
| Подготовка модели | Специализация при установке или первом использовании с опциональной компиляцией заранее | Компиляция модели в Xcode или на устройстве |
| Пользовательские операции | Пользовательские понижения Core AI и ядра Metal | Пользовательские слои Core ML и поддерживаемые операции MIL |
| Доступность развёртывания | Новое поколение операционных систем Apple; в настоящее время бета-версия | Широкая поддержка существующих операционных систем Apple |
| SDK Ultralytics для iOS и Flutter | Пока не поддерживается | Полностью поддерживается |
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Пакет Apple coreai-torch преобразует torch.export.ExportedProgram, понижая операции PyTorch ATen до операций Core AI. Неподдерживаемые операции можно реализовать с помощью пользовательского понижения или пользовательского ядра Metal.
Получившийся .aimodel — неспециализированный ресурс модели. Когда приложение подготавливает модель, Core AI специализирует её для целевого устройства. Приложение может выполнить это при первом использовании, запросить специализацию заранее или включить в поставку скомпилированную заранее модель, чтобы сократить начальное время загрузки.
В Swift приложения загружают ресурс с помощью фреймворка Core AI, выбирают функцию инференса, передают типизированные входы NDArray и получают именованные выходы. Это отличается от обёртывания модели Core ML в запрос Vision, поэтому для использования Core AI нужен runtime приложения, рассчитанный на ресурсы .aimodel.
Подробнее о реализации см. в документации Apple по AIModel, специализации и кэшированию моделей и компиляции заранее.
Экспорт моделей YOLO26 в Core AI#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="coreai") # creates 'yolo26n.aimodel'
model.export(format="coreai", quantize=16) # FP16 asset
# Run the exported model
coreai_model = YOLO("yolo26n.aimodel")
results = coreai_model("https://ultralytics.com/images/bus.jpg")Полный список аргументов см. в разделе Режим экспорта. Граф статичен: он трассируется при
imgsz, переданном в export, поэтому выполняй предсказание для этого же размера. Метаданные Ultralytics хранятся внутри собственного metadata.json ресурса, поэтому имена классов, stride и задача сохраняются при обратном преобразовании.
Выбор головы#
С 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:
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 потребует определить предобработку изображений, создание NDArray, метаданные модели и декодирование выходов в SDK Ultralytics для iOS. Актуальные сведения об API Apple предоставляет в документации фреймворка Core AI, а рабочие примеры моделей — в репозитории моделей Core AI.
Преимущества Core AI#
Core AI предлагает несколько перспективных преимуществ для будущего развёртывания Ultralytics:
- Современный путь экспорта PyTorch: конвертация начинается с
torch.export, сохраняя более выразительный граф PyTorch по сравнению с процессом трассировки, который используют многие существующие экспортёры. - Тонкий контроль runtime: приложения могут управлять специализацией, кэшами скомпилированных моделей, функциями инференса, памятью и размещением вычислений.
- Расширенная поддержка моделей: выполнение с сохранением состояния, динамические формы, несколько функций в одном артефакте и пользовательские ядра Metal рассчитаны на современные архитектуры компьютерного зрения и генеративные архитектуры.
- Специализированные инструменты разработчика: Core AI Debugger может проверять графы и значения тензоров, а также связывать их с исходным кодом на Python. Xcode и Instruments обеспечивают профилирование runtime.
- Возможности zero-copy: 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, что значительно уже поддерживаемого Ultralytics диапазона версий Python и PyTorch. - Экспорт выполняется только на macOS:
coreai-coreпубликует только колёсаmacosx_26_0_arm64, поэтому дляformat=coreaiнужен Mac с Apple silicon на macOS 26 или новее. - Пока нет runtime приложения Ultralytics: официальное приложение YOLO для iOS и плагин Flutter в настоящее время загружают ресурсы Core ML через
MLModelи Vision. - Требуется миграция приложения:
.aimodelнельзя заменить на.mlpackage; для этого нужна реализация Core AI, включающая загрузку модели, предобработку, вызовы инференса, обработку метаданных и декодирование выходов. - Ограниченные производственные данные: производительность, энергопотребление, время специализации при первом запуске, точность и сжатие необходимо проверить на всей матрице поддерживаемых задач YOLO и устройств.
- Конвейер без NMS: Core ML может упаковывать стадию NMS для более старых моделей обнаружения YOLO. По умолчанию Core AI экспортирует сырые предсказания «один ко многим»; используй
nms=Falseдля головы YOLO26 без NMS. Встроенный NMS (nms=True) иdynamic=Trueне поддерживаются. Уcoreai-torchнет трансляции дляtorchvision::nms, поэтому NMS остаётся на хосте. - Фиксированный размер входа: экспортированный граф трассируется при одном значении
imgszи не поддерживает динамические формы, поэтому выполняй предсказание при размере, с которым он был экспортирован. - Ресурсы FP16 могут аварийно завершить работу при загрузке: некоторые ресурсы FP16
.aimodelне могут загрузить программу Apple Neural Engine, и MPSGraph вызывает ошибку утверждения, завершая процесс вместо отката. Это происходит внутри runtime Apple, до выполнения какого-либо кода Ultralytics, а тот же ресурс загружается со специализацией только для CPU. Пока проблема не исправлена в upstream, предпочитай FP32.
Какой формат Apple выбрать?#
Используй Core ML сегодня, если тебе нужны:
- Развёртывание на текущих и более старых операционных системах Apple
- Интеграция с SDK Ultralytics для iOS или Flutter
- Обработка изображений через фреймворк Vision
- Протестированное развёртывание YOLO в FP16 и INT8
- Встроенный NMS для совместимых устаревших моделей детекции
Рассмотри Core AI, если можешь потребовать iOS 27 или macOS 27 и тебе нужны:
- Новейший runtime нейронных сетей Apple на устройстве
- Явное управление специализацией и кэшем
- Расширенное выполнение динамических моделей или моделей с состоянием
- Пользовательские операции Core AI или ядра Metal
- Подробная отладка графов Core AI и профилирование runtime
Ожидается, что Core ML и Core AI будут сосуществовать в процессе перехода приложений. Поддержка Core AI не отменяет немедленную необходимость в Core ML, поскольку их целевые платформы и контракты интеграции с приложениями различаются.
Дорожная карта Ultralytics#
Выделенная цель экспорта coreai реализована: экспорт и численная валидация охватывают поддерживаемые модели задач YOLO26 и непрерывно выполняются в CI Ultralytics на macOS 26, а задержка FP16 измеряется на устройстве. Оставшиеся пункты дорожной карты до достижения Core AI паритета с путём Core ML:
- Загрузка моделей Core AI и предобработка в SDK Ultralytics для iOS.
- Интеграция с Flutter и стратегия совместимости для устройств ниже iOS 27.
- Стабильные выпуски фреймворка Apple и инструментов конвертации (поколение iOS 27 и macOS 27 в настоящее время находится на этапе бета-тестирования).
- Тесты памяти, энергопотребления и специализации на всей матрице поддерживаемых устройств.
Core ML по-прежнему остаётся рекомендуемой целью для приложений, которым нужен SDK Ultralytics для iOS или Flutter либо поддержка версий ниже 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 или более поздней версии; экспортированный.aimodelработает на iOS 27 и macOS 27. Для iOS- и Flutter SDK Ultralytics, а также для операционных систем более ранних поколений экспортируй файлы Core ML.mlpackageс помощьюformat="coreml".Не сразу. Core AI — это новый путь Apple для современных нейронных сетей, а Core ML по-прежнему поддерживается и обеспечивает более широкую поддержку операционных систем, интеграцию с Vision и поддержку ненейронных моделей.
Нет. Они содержат разные представления модели и загружаются разными фреймворками. Преобразование необходимо начинать с исходной модели с помощью соответствующего набора инструментов Apple.
Ожидается, что первоначальная интеграция будет сосуществовать с Core ML. Любое решение о будущей замене будет зависеть от распространения операционных систем, стабильности инструментов, производительности, а также последующей поддержки iOS и Flutter.