Core ML
Core ML — это фреймворк машинного обучения, разработанный компанией Apple Inc. (организация признана нежелательной и запрещена в РФ) для интеграции моделей машинного обучения в приложения, работающие под управлением операционных систем iOS, macOS, watchOS и tvOS. Core ML предоставляет разработчикам инструменты для внедрения обученных моделей непосредственно в приложения, обеспечивая выполнение вычислений на устройстве без необходимости обращения к удалённым серверам. Это позволяет повысить скорость обработки данных, обеспечить конфиденциальность пользовательской информации и снизить зависимость от интернет-соединения.
История
Развитие Core ML связано с общим трендом на внедрение технологий искусственного интеллекта в мобильные и настольные платформы. До появления Core ML разработчики использовали сторонние библиотеки, такие как TensorFlow или PyTorch, которые требовали сложной интеграции и часто не были оптимизированы для работы на устройствах Apple.
Первый публичный анонс Core ML состоялся на Всемирной конференции разработчиков Apple (WWDC) в июне 2017 года. Фреймворк был представлен как часть операционной системы iOS 11. Вместе с ним были анонсированы инструменты для преобразования моделей из других фреймворков (например, Core ML Tools) и библиотека Vision для работы с изображениями.
В последующих версиях операционных систем Apple расширяла возможности Core ML. В iOS 12 появилась поддержка моделей с плавающей запятой половинной точности (Float16), что позволило уменьшить размер моделей и ускорить их выполнение. В iOS 13 была добавлена поддержка нейронных сетей с несколькими выходами и возможность обучения моделей непосредственно на устройстве (on-device training). В iOS 14 и macOS Big Sur появилась поддержка моделей, использующих архитектуру Transformer, а также улучшенная интеграция с Neural Engine — специализированным аппаратным блоком для ускорения вычислений, встроенным в процессоры Apple A12 и более новые, а также в чипы серии M.
Архитектура и принцип работы
Core ML работает как слой абстракции между обученной моделью машинного обучения и аппаратным обеспечением устройства. Основные компоненты архитектуры включают:
- Модель Core ML — файл с расширением
.mlmodel(или скомпилированный.mlmodelc), содержащий описание архитектуры нейронной сети, обученные веса и метаданные. - Core ML Runtime — среда выполнения, которая загружает модель, интерпретирует её структуру и выполняет вычисления.
- Аппаратные ускорители — Central Processing Unit (CPU), Graphics Processing Unit (GPU) и Neural Engine. Core ML автоматически выбирает наиболее подходящий вычислительный блок в зависимости от типа модели и доступного оборудования.
Процесс работы включает следующие этапы:
- Подготовка модели — модель, обученная в стороннем фреймворке (например, TensorFlow, PyTorch, scikit-learn), конвертируется в формат Core ML с помощью утилиты
coremltools. - Интеграция — разработчик добавляет файл
.mlmodelв проект Xcode. Xcode автоматически компилирует модель в бинарный формат.mlmodelcи генерирует интерфейс для взаимодействия с ней на языке Swift или Objective-C. - Выполнение — при запуске приложения модель загружается в память. Входные данные (изображения, текст, числовые массивы) преобразуются в формат
MLMultiArrayилиCVPixelBufferи передаются в модель. Core ML выполняет прямой проход (inference) и возвращает результат.
Классификация моделей
Core ML поддерживает широкий спектр типов моделей машинного обучения, которые можно разделить на несколько категорий:
- Нейронные сети — полносвязные, свёрточные, рекуррентные, сети с долгой краткосрочной памятью (LSTM), а также архитектуры на основе Transformer.
- Модели на основе деревьев решений — случайный лес, градиентный бустинг (XGBoost, LightGBM).
- Линейные модели — логистическая регрессия, линейная регрессия, метод опорных векторов (SVM).
- Модели на основе ансамблей — комбинации нескольких алгоритмов.
- Модели для работы с текстом — Word Embeddings, модели для анализа тональности, классификации текстов.
- Модели для работы с изображениями — классификация, обнаружение объектов, сегментация, оценка позы.
Инструменты для конвертации
Для преобразования моделей из других фреймворков в формат Core ML используется библиотека coremltools, написанная на Python. Она поддерживает импорт из:
- TensorFlow (включая TensorFlow Lite)
- PyTorch
- scikit-learn
- Keras
- ONNX (Open Neural Network Exchange)
- MXNet
Процесс конвертации включает оптимизацию модели: квантование весов (например, до Float16 или Int8), обрезку (pruning) и слияние слоёв для уменьшения размера и ускорения вычислений. После конвертации модель можно протестировать на точность и, при необходимости, доработать.
Применение
Core ML используется в различных категориях приложений для iOS, macOS, watchOS и tvOS. Основные области применения включают:
- Компьютерное зрение — распознавание объектов, лиц, текста (OCR), анализ эмоций, дополненная реальность (AR). Для этого часто используется интеграция с фреймворком Vision.
- Обработка естественного языка — анализ тональности, распознавание речи, машинный перевод, классификация текстов. Взаимодействие с фреймворком Natural Language.
- Звук и аудио — распознавание звуков, классификация музыки, шумоподавление. Используется совместно с фреймворком SoundAnalysis.
- Рекомендательные системы — персонализация контента, прогнозирование предпочтений пользователей.
- Здравоохранение и фитнес — анализ данных с датчиков, прогнозирование физической активности, мониторинг здоровья.
Преимущества и ограничения
Преимущества
- Конфиденциальность — все вычисления выполняются на устройстве, данные не передаются на сервер.
- Скорость — отсутствие задержек на передачу данных по сети; использование аппаратных ускорителей (Neural Engine) обеспечивает высокую производительность.
- Автономность — приложение может работать без интернет-соединения.
- Простота интеграции — автоматическая генерация кода в Xcode, минимальное количество ручной настройки.
- Оптимизация — модели автоматически адаптируются под конкретное устройство и его вычислительные возможности.
Ограничения
- Размер модели — большие модели (сотни мегабайт и более) могут негативно влиять на размер приложения и время загрузки.
- Ограниченная поддержка архитектур — не все современные архитектуры нейронных сетей могут быть конвертированы в Core ML без потери точности или производительности.
- Обучение на устройстве — возможности для обучения моделей непосредственно на устройстве ограничены по сравнению с серверными решениями.
- Зависимость от экосистемы Apple — модели Core ML не могут быть напрямую использованы на платформах Android или Windows.
Интересные факты
- Core ML является частью более широкой экосистемы машинного обучения Apple, включающей также фреймворки Create ML (для обучения моделей без написания кода), Turi Create (для создания моделей на Python) и ML Compute (для низкоуровневых вычислений).
- Neural Engine, впервые представленный в процессоре A11 Bionic (2017 год), изначально был разработан для ускорения работы Face ID, но впоследствии стал ключевым компонентом для выполнения моделей Core ML.
- В 2020 году Apple представила технологию Core ML 3, которая позволила выполнять несколько моделей одновременно на одном устройстве, что открыло возможности для более сложных сценариев, таких как анализ видео в реальном времени.
Источники
- Документация Apple Developer: Core ML Framework
- WWDC 2017: Introducing Core ML
- WWDC 2019: Core ML 3 Framework
- WWDC 2020: Core ML 4 and Model Deployment
- Apple Machine Learning Research: On-Device Machine Learning
- coremltools — официальная документация библиотеки
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →