Ultralytics YOLO27:

Интеграция Apple Core AI#

Для экспорта в Core AI требуется macOS 26 или новее на Apple silicon либо Linux x86_64

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. SDK Ultralytics для iOS (версии 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 Neural Engine (ANE).

Core AI — это новый способ развёртывания, а не новое название Core ML. Во фреймворках используются разные форматы моделей, инструменты преобразования, API среды выполнения и схемы интеграции с приложениями.

Сравнение Core AI и Core ML#

ВозможностьCore AICore ML
Артефакт модели.aimodel.mlpackage или .mlmodel
Экспорт UltralyticsДоступно в format=coreaiДоступно в format=coreml
API среды выполнения AppleAIModel, InferenceFunction и NDArrayMLModel, часто через VNCoreMLModel и VNCoreMLRequest
Процесс преобразованияPyTorch torch.export через coreai-torchПреобразование TorchScript через coremltools
Основное назначениеСовременные нейронные сети и генеративный ИИШирокий спектр задач машинного обучения, включая нейронные и ненейронные модели
Интеграция изображенийПриложения подготавливают тензоры либо используют дескрипторы изображений и буферы Core AIПрямая интеграция с фреймворком Vision для масштабирования изображений, работы с ориентацией и отправки запросов
ОборудованиеCPU, GPU и Apple Neural EngineCPU, GPU и Apple Neural Engine
Подготовка моделиСпециализация при установке или первом использовании, с возможностью компиляции до выполненияКомпиляция модели в Xcode или на устройстве
Пользовательские операцииПользовательские преобразования Core AI и ядра MetalПользовательские слои Core ML и поддерживаемые операции MIL
Доступность развёртыванияНовое поколение операционных систем Apple; сейчас бета-версияШирокая поддержка существующих операционных систем Apple
SDK Ultralytics для iOS и FlutterМожно включить на устройствах с 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

Пакет Apple coreai-torch преобразует torch.export.ExportedProgram, переводя операции PyTorch ATen в операции Core AI. Неподдерживаемые операции можно реализовать с помощью пользовательского преобразования или пользовательского ядра 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")

Полный список аргументов смотри в разделе Режим экспорта. Граф статический: он трассируется при значении 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 в SDK Ultralytics для iOS самостоятельно выполняет предварительную обработку 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, 10-ядерный GPU, 16-ядерный Neural Engine), 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. В каждой ячейке указано общее время (предобработка + инференс + постобработка), а ниже приведена разбивка по этапам.

МодельЗадачаразмер
(пиксели)
CPU Core ML
CPU_ONLY
(мс)
CPU Core ML + предпочтительно ANE
CPU_AND_NE
(мс)
CPU Core AI
cpu_only()
(мс)
CPU Core AI + предпочтительно ANE
neural_engine()
(мс)
YOLO26nОбнаружение64014.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Сегментация64018.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Семантическая сегментация64033.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Глубина64036.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Классификация2243.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Поза64015.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-obbOBB64032.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()), а размещение операций в итоге определяется каждым фреймворком.
  • Для обнаружения объектов, сегментации, классификации, оценки позы и 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 позволяет проверять графы и значения тензоров, а также находить исходный код 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, что существенно ограничивает выбор по сравнению с поддерживаемыми Ultralytics версиями Python и PyTorch.
  • Ограниченный выбор платформ для экспорта: 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=False YOLO26n работает на Core AI примерно вдвое дольше, чем на Core ML (3,06 против 1,53 мс в одном сравнительном запуске), а сквозная модель позы FP16 не выдаёт детекций при размещении по умолчанию в Core AI на iOS 27.0 (apple/coreai-torch#115). Исходная голова (nms=None, вариант по умолчанию) позволяет избежать обеих проблем, а SDK выполняют NMS на Swift. Смотри раздел «Выбор головы модели».
  • Среда выполнения в симуляторе iOS недоступна: SDK симулятора iOS не включает Core AI.
  • Требуется адаптация приложения: .aimodel нельзя просто подставить вместо .mlpackage; для загрузки модели, предварительной обработки, вызовов инференса, работы с метаданными и декодирования выходных данных нужна реализация Core AI вне SDK Ultralytics, где такая реализация уже предусмотрена.
  • Мало данных о работе в производственной среде: производительность, энергопотребление, время специализации при первом запуске, точность и сжатие нужно проверить на всех поддерживаемых задачах YOLO и устройствах.
  • Нет конвейера NMS: Core ML может включать этап NMS в пакет для старых моделей детекции YOLO. По умолчанию Core AI экспортирует исходные предсказания «один ко многим»; для головы YOLO26 без NMS используй nms=False. Встроенные NMS (nms=True) и dynamic=True не поддерживаются. Для coreai-torch нет преобразования torchvision::nms, поэтому NMS выполняется на хосте.
  • Фиксированный размер входных данных: экспортированный граф трассируется с одним значением imgsz и не поддерживает динамические формы, поэтому выполняй предсказание с размером, указанным при экспорте.
  • Ресурсы FP16 могут приводить к аварийному завершению при загрузке: некоторым ресурсам FP16 .aimodel не удаётся загрузить программу 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 для различных задач и непрерывно выполняются в Ultralytics CI на macOS 26; задержка FP16 измеряется на устройстве. До достижения Core AI паритета с Core ML остаётся:

  1. Устранить разницу в задержке сквозной головы на Apple Neural Engine (apple/coreai-torch#66) и исправить ошибки корректности Neural Engine (apple/coreai-torch#115, #116).
  2. Ресурсы Core AI с INT8 и палетизацией; ресурсы SDK используют FP16 и примерно вдвое больше по размеру при скачивании, чем ресурсы Core ML с INT8.
  3. Стабильные релизы фреймворка Apple и инструментов преобразования (поколения iOS 27 и macOS 27 сейчас находятся в бета-версии).
  4. Проверка памяти, энергопотребления и времени специализации на поддерживаемом наборе устройств.

SDK Ultralytics для iOS и плагин Flutter позволяют включить Core AI на iOS 27 и новее; по умолчанию в них используется Core ML, который рекомендуется для поддержки устройств с версиями iOS ниже 27. Следи за планом развития Ultralytics и примечаниями к выпускам, чтобы узнать о выполнении оставшихся задач.

Дополнительные ресурсы#

Часто задаваемые вопросы#

  • Да. Выполни экспорт с помощью 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. Решение о возможной замене в будущем будет зависеть от распространённости операционных систем, стабильности инструментов и производительности на устройстве.

Участники

Комментарии