- О технологии Neural Engine в процессорах Apple A-серии
- Для чего нужен Neural Engine
- Первое поколение
- Второе поколение
- Третье поколение
- Четвертое поколение
- Новые поколения iPhone и iPad могут получить Apple Neural Engine
- Новая тенденция
- Конкуренты
- Вывод
- Реализуем машинное обучение на iOS-устройстве с использованием Core ML, Swift и Neural Engine
- Введение
- Обзор чипа A11 Bionic
- Ладно. Что мы будем создавать?
- Необходимый минимум:
- Сбор данных
- Создание модели
- Шаги связанные с доступом к модели Core ML в iOS приложении
- Листинг ViewController.Swift
- Все готово!
О технологии Neural Engine в процессорах Apple A-серии
Было опубликовано 20 января 2020 года
Обновлено 2 декабря 2020 года
Приставка «Bionic» к названию процессоров появилось не просто так. На кристалле стал размещаться еще один процессор, который маркетинг Apple назвала «нейронным движком» (Neural Engine).
Он основан на нейронных сетях, которым еще лет 20 назад пророчили лидирующую роль в вычислительной технике.
Позже на помощь Neural Engine пришли блоки AMX, но об этом ниже.
Для чего нужен Neural Engine
Отдельный процессор NPU значительно ускоряет работу таких ресурсоёмких задач как: дополненная реальность (поддерживаемая фреймворком Apple ARKit), машинное обучение и построение нейронных сетей (поддерживаемые фреймворком Apple Core ML).
Neural engine
Технология позволяет Apple реализовать нейронную сеть и машинное обучение более энергоэффективным способом, чем использование основного или графического процессора. CPU и GPU не предназначены для работы с ИИ.
- Используется в камерах iPhone для обработки изображений в самом высоком разрешении и с максимальной плавностью;
- При подборке воспоминаний в приложении Фото;
- При распознавании лиц, как и для Face ID, так и в приложениях;
- В дополненной реальности, Apple ARKit;
- В предиктивной клавиатуре устройства;
- При использовании Siri;
- Распознавая речь или музыку.
Первое поколение
Впервые нейронный процессор появился в Apple A11 Bionic. Предыдущий чип Apple A10 имел приставку Fusion.
Презентация процессора Apple A11
- Apple A11 Bionic.
Это первое поколение Neural Engine, которое было встроено чип Apple. В него установлено 2 ядра и оно может выполнять до 600 миллиардов операций в секунду.
Сторонние приложения не могут использовать нейронный движок этого поколения, что приводит к аналогичной производительности нейронной сети для старых iPhone.
Второе поколение
Следующее поколение сделало достаточно большой рывок по сравнению с предыдущим.
Процессор Apple A12
Процессор Apple A12X
Процессор Apple A12Z Bionic
- Apple A12 Bionic;
- Apple A12X Bionic;
- Apple A12Z Bionic.
Вторая версия включает в себя “нейронный движок» следующего поколения, который установлен сразу в трех чипах компании Apple. Это поколение имеет целых 8 ядер и может выполнять до 5 триллионов операций в секунду, что до 9 раз быстрее по сравнению с Apple A11.
В отличие от Neural Engine 1-го поколения, 2-ое поколение предоставляет доступ для сторонних приложений.
Третье поколение
Третье поколение не сильно продвинулось по сравнению со вторым, но улучшения есть.
Презентация Apple A13 Bionic
- Apple A13 Bionic.
Следующий процессор Apple A-серии также включает в себя Neural Engine нового поколения. Имеет 8 ядер, как и ранее, которые стали на 20% быстрее и на 15% меньше потребляют энергию, а также работают до 6 раз производительнее.
Apple добавила в 3 – е поколении специальный ускоритель — блоки AMX. Они ориентированы на выполнение ключевых задач машинного обучения.
Четвертое поколение
Это поколение стало первым для Mac. Neural Engine этого поколения стал сильно лучше в задачах с использованием ИИ.
О Apple A14 Bionic
- Apple A14 Bionic;
- Apple M1.
Четвертая версия содержит в себе нейронный процессор более нового поколения. В нем установлено 16 ядер, больше чем ранее в целых два раза. Они выполняют до 11 триллионов операций за 1 секунду, что по утверждениям Apple на 80% быстрее.
В чипах использующих это поколение, как и в A13, установлен специальный ускоритель — блоки AMX. Они ориентированы на выполнение ключевых задач машинного обучения.
Источник
Новые поколения iPhone и iPad могут получить Apple Neural Engine
Apple, по сообщениям, работает над новым типом чипа Apple Neural Engine для будущих iOS-устройств, – которые будут использоваться только для обработки AI, сообщает Bloomberg.
Новая тенденция
По данным Bloomberg, этот чип называется Apple Neural Engine. Этот чип может использоваться для «разгрузки распознавания лиц в приложениях для фотографий, некоторых частях распознавания речи и предиктивной клавиатуры iPhone».
Перемещая обработку AI на выделенную микросхему, время автономной работы в устройствах также может увеличиться, поскольку основной процессор и графический процессор будут нагружать меньше и поглощать меньше энергии.
В докладе говорится, что Apple планирует интегрировать чип в свои устройства, но пока неясно, когда это произойдет, и если на любых устройствах iOS, запускаемых в этом году, это будет.
Конкуренты
Работа Apple над чипом AI не удивит конкурентов. Практически каждая техническая компания работает над улучшением обработки AI на мобильных устройствах.
В последнем чипе Snapdragon 835 от Qualcomm. Данный чип уже находится в таких устройствах, как Samsung Galaxy S8, есть специальный модуль, предназначенный для обработки задач AI.
Несколько лет назад Apple приступила к разработке собственных мобильных процессоров для повышения производительности и снижения энергопотребления, и это действительно окупилось.
Несмотря на меньшее количество ядер, iPhone 7 по-прежнему опережает Galaxy S8, когда дело доходит до чистой производительности.
В устройствах iPhones и iPads также имеется разработанный Apple «M» сопроцессор для сбора данных от различных датчиков (акселерометр, гироскоп, компас и т. д.). Именно эта микросхема помогает отслеживать данные о здоровье и физическом состоянии.
Кроме того, в дополнение к основным процессорам Intel в новых MacBook Pro, есть также небольшой чип Apple «T1» для обработки Touch Bar. У AirPods от Apple также есть специальный чип W1, который помогает соединить их с устройствами iOS.
Вывод
Очевидно, что Apple любит делать специальные чипы, особенно если это дает более длительное время автономной работы.
Источник
Реализуем машинное обучение на iOS-устройстве с использованием Core ML, Swift и Neural Engine
Привет, хабр! В преддверии старта продвинутого курса «Разработчик iOS», мы традиционно подготовили для вас перевод полезного материала.
Введение
Core ML — это библиотека машинного обучения, выпущенная в свет Apple на WWDC 2017.
Она позволяет iOS разработчикам добавлять в свои приложения персонализированный опыт в режиме реального времени с использованием передовых локальных моделей машинного обучения с помощью Neural Engine.
Обзор чипа A11 Bionic
Количество транзисторов: 4.3 миллиарда
Количество ядер: 6 ядер ARM (64 бита) – 2 высокочастотных (2.4 ГГц) — 4 с низким энергопотреблением
Количество графических процессоров: 3
Neural Engine – 600 базовых операций в секунду
12 сентября 2017 Apple представила миру чип A11 Bionic с Neural Engine. Это нейросетевое аппаратное обеспечение может выполнять до 600 базовых операций в секунду (BOPS) и используется для FaceID, Animoji и других задач машинного обучения. Разработчики могут использовать Neural Engine с помощью Core ML API.
Core ML оптимизирует производительность на устройстве за счет использования ресурсов центрального процессора, графического процессора и Neural Engine, минимизируя объем памяти и энергопотребление.
Запуск модели локально на устройстве пользователя устраняет необходимость в сетевом подключении, что помогает сохранять конфиденциальность данных пользователя и улучшает отклик вашего приложения.
Core ML является основой для фреймворков и функционала данной предметной области. Core ML поддерживает Vision для анализа изображений, Natural Language для обработки текста, Speech для преобразования звука в текст и Sound Analysis для идентификации звуков в аудио.
Core ML API
Мы можем легко автоматизировать задачу построения моделей машинного обучения, что включают в себя обучение и тестирование модели, используя Playground, и интегрировать полученный файл модели в наш iOS проект.
Совет для новичков: Выделяйте отдельные метки для задач классификации.
Общая блок-схема Core ML
Ладно. Что мы будем создавать?
В этом уроке я покажу вам, как построить модель классификатора изображений с использованием Core ML, который может классифицировать изображения апельсинов (Orange) и клубники (Strawberry), и добавить эту модель в наше iOS приложение.
Модель классификатора изображений.
Подсказка для новичков: Классификация изображений относится к задачам обучения с учителем, в которых мы используем помеченные данные (в нашем случае метка (label) — название изображения).
Необходимый минимум:
- Знание языка Swift
- Основы iOS разработки
- Понимание концепций объектно-ориентированного программирования
- X-code 10 или более поздняя версия
- iOS SDK 11.0+
- macOS 10.13+
Сбор данных
При сборе данных для классификации изображений следуйте следующим рекомендациям Apple.
- Используйте минимум 10 изображений на категорию — чем больше, тем лучше.
- Избегайте сильно несбалансированных наборов данных, подготовив примерно равное количество изображений на каждую категорию.
- Сделайте вашу модель более надежной, включив параметры Create ML UI’s Augmentation: Crop, Rotate, Blur, Expose, Noise и Flip.
- Не брезгуйте избыточностью для своих тренировочных наборов: снимайте много изображений под разными углами, с разным фоном и в разных условиях освещения. Имитируйте реальные условия съемки, включая шум и размытость изображения.
- Сфотографируйте образцы объектов в ваших руках, чтобы имитировать реальных пользователей, которые пытаются классифицировать объекты в своих руках.
- Исключайте из поля зрения другие объекты, особенно те, которые вы хотите классифицировать по-другому.
После того как вы собрали ваш набор данных (Data Set), разделите его на обучающий (Train) и проверочный (Test) наборы и поместите их в соответствующие папки
ВАЖНОЕ ПРИМЕЧАНИЕ : Убедитесь что вы распределили изображения по соответствующим папкам внутри папки test. Потому что имя папки служит меткой для наших изображений.
В нашем случае у нас есть две папки, в каждой из которых лежат соответствующие изображения.
Создание модели
Не паникуйте! Apple значительно упростила эту задачу, автоматизировав основные этапы.
С Core ML вы можете использовать уже обученную модель для классификации входных данных или создать свою собственную. Для применения моделей классификации к изображениям и предварительной обработки этих изображений, и чтобы сделать задачи машинного обучения более простыми и надежными, с Core ML уже работает фреймворк Vision.
Просто следуйте этим шагам.
ШАГ 1: Откройте ваш X-code.
ШАГ 2: Создайте чистую Swift Playground.
ШАГ 3: Удалите код сгенерированный по умолчанию, добавьте следующую программу и запустите playground .
Описание:
Здесь мы открываем интерфейс билдера модели по умолчанию предоставленного XCode.
ШАГ 4: Перетащите папку с обучающей выборкой в область обучения.
Поместите папку с обучающей выборкой в область обучения, обозначенную пунктирными линиями.
Совет для новичков : Мы также можем указать произвольное имя для нашей модели, щелкнув стрелку вниз в области обучения.
Шаг 5: Xcode автоматически обработает изображение и начнет процесс обучения. По умолчанию на обучение модели уходит 10 итераций, в зависимости от характеристик вашего Mac и размера набора данных. Вы можете наблюдать за ходом обучения в окне терминала Playground.
Жду пока происходит обучение модели.
ШАГ 6: После завершения обучения вы можете проверить свою модель, перетащив папку Test в область тестирования. Xcode автоматически протестирует вашу модель и отобразит результат.
Как вы можете заметить, наша модель точно классифицировала изображения .
ШАГ 7: Сохраните вашу модель.
Интеграция в iOS приложение:
ШАГ 1: Откройте ваш X-code.
ШАГ 2: Создайте Single Page iOS приложение.
ШАГ 3: Откройте навигатор проекта.
ШАГ 4: Перетащите обученную модель в навигатор проекта.
Поместите вашу модель в навигатор проекта.
ШАГ 5: Откройте Main.storyboard и создайте простой интерфейс, как показано ниже, добавьте IBOutlets и IBActions для соответствующих представлений.
Добавьте UIImageView, UIButtons и UILabels.
ШАГ 6: Откройте файл ViewController.swift и добавьте следующий код в качестве расширения.
Описание: Здесь мы создаем расширение для нашего класса ViewController и реализуем UINavigationControllerDelegate и UIImagePickerControllerDelegate, чтобы отобразить UIImagePickerView когда пользователь нажимает PickImage UIButton. Убедитесь, что вы установили контекст делегата.
Шаги связанные с доступом к модели Core ML в iOS приложении
ШАГ 1: Убедитесь, что вы импортировали следующие библиотеки.
ШАГ 2: Создайте экземпляр нашего класса Core ML модели.
ШАГ 3: Чтобы заставить Core ML произвести классификацию, мы должны сначала сформировать запрос типа VNCoreMLRequest (VN обозначает Vision)
ШАГ 4: Убедитесь, что вы обрезали изображение так, чтобы оно было совместимо с моделью Core ML.
myrequest!.imageCropAndScaleOption = .centerCrop
ШАГ 5: Поместите вышеуказанный код в пользовательскую функцию, которая возвращает объект запроса.
ШАГ 6: Теперь мы должны преобразовать наш UIImage в CIImage (CI:CoreImage), чтобы его можно было использовать в качестве входных данных для нашей Core ML модели. Это можно легко сделать, создав экземпляр CIImage, передав UIImage в конструкторе.
ШАГ 7: Теперь мы можем обработать наш VNCoreMLRequest , создав обработчик запроса и передав ciImage .
ШАГ 8: Запрос может быть выполнен с помощью вызова метода perform() и передачи в качестве параметра VNCoreMLRequest .
Описание: DispatchQueue — это объект, который управляет выполнением задач последовательно (или одновременно) в основном (или фоновом) потоке вашего приложения.
ШАГ 10: Поместите вышеуказанный код в пользовательскую функцию, как показано ниже.
ШАГ 11: Создайте пользовательскую функцию с именем handleResult() , которая принимает объект VNRequest и объект ошибки в качестве параметров. Эта функция будет вызываться после завершения VNCoreMLRequest .
Примечание: DispatchQueue.main.async используется для обновления объектов UIKit (в нашем случае это UILabel) с использованием UI Thread или Main Thread, поскольку все задачи классификации выполняются в фоновом потоке (background thread).
Листинг ViewController.Swift
Все готово!
Теперь запустите ваш Simulator и протестируйте приложение.
Примечание: Убедитесь что в библиотеке фотографий вашего Simulator у вас есть фото апельсинов и клубники.
Нажмите кнопку Pick Image
Выберите любое изображение
Нажмите кнопку Classify
Выберите другую картинку и нажмите Classify
Вы создали свое первое IOS приложение с использованием Core ML.
Источник