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. 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 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 и нейронный движок AppleCPU, 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 CPU
CPU_ONLY
(мс)
Core ML CPU + предпочтительно ANE
CPU_AND_NE
(мс)
Core AI CPU
cpu_only()
(мс)
Core AI CPU + предпочтительно 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()), а размещение финальных операций определяется каждым фреймворком.
  • 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=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 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:

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

Участники

Комментарии