что такое neural drive

Для чего в процессорах Apple нужны нейроядра Neural Engine. Третья сила магии iPhone

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Начиная с iPhone X, ко всем своим чипам серии A Apple добавляет приставку Bionic. Природная натура этого слова подкрепляется особенным модулем внутри процессора, который называется Neural Engine.

Он состоит из вычислительных блоков, которые помогают iPhone решать задачи, связанные с контекстом.

Перед Neural Engine не стоит задача решить уравнение или отобразить изображение. Это гораздо более тонкая технология, без которой наши смартфоны оставались бы скучными и не умели узнавать нас в лицо.

Ниже расскажу, почему Apple хвалится развитием этого элемента в своих чипах с такой же частотой, как с CPU и GPU. Объясню, зачем именно нужен Neural Engine в том числе в MacBook. А ещё проследим, как нейроядра внутри iPhone стали третьей необходимой силой после вычисления и графики.

Как устроены чипы. CPU и GPU на ПК отдельно, у мобильных вместе

В большинстве ПК, особенно домашних, установлены два главных чипа: CPU и GPU. Они физически находятся в разных частях системного блока и в большинстве случаев созданы разными производителями.

CPU расшифровывается как Central Processing Unit и переводится «центральное вычислительное устройство».

Отвечает за сложные и параллельные вычисления инструкций. Без него компьютер не заработает.

GPU расшифровывается как Graphic Processing Unit и переводится «графическое вычислительное устройство».

Формирует и выводит на монитор визуальную информацию, красиво отображает вычисления процессора и его ОС (операционной системы).

Иногда GPU встраивают прямо в CPU, такой элемент слабее и чаще всего служит временной заменой, чтобы вы видели происходящие внутри компьютера размышления, пока ищете замену дискретной видеокарте. Такие поставляются отдельными модулями.

В компактных устройствах железо работает не только на выдачу мощного результата, но и на сохранение энергии. Важно, чтобы устройство не перегрелось из-за избытка тепла от большой вычислительной нагрузки.

Тут встроенная в CPU графика уже главная, дополнительные процессоры, как правило, либо обрезаны в мощности, либо полноценно работают только при подключении к сети. В смартфонах и планшетах дискретного модуля GPU в принципе не бывает.

Единственный управляющий чип становится чем-то больше обычного CPU. Он превращается в комплексную систему.

И Apple уже добилась в этом лидирующей позиции, поэтому стала интегрировать в процессоры новый тип вычислительных транзисторов.

Есть CPU, есть GPU, а есть Neural Engine

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

История началась с процессоров для iPhone, в которые постепенно интегрировались новые элементы. Например, Neural Engine. Он ускоряет умные фишки камеры, помогает лучше анализировать голос для Siri и быстрее распознавать людей на ваших фотографиях.

Чуть позже тем же подходом Apple сделала комплексный чип M1 для своих Mac. Внутри него этих ядер ещё больше, и они ежедневно помогают решать те же задачи, что и в iPhone.

В потребительских устройствах для этих целей отдельный чип не ставили, но за ним постепенно закрепляется похожее название.

NPU расшифровывается как Neural Processing Unit и пока никак общепринято не переводится на русский.

Термин постепенно входит в употребление, но каждый производитель называет его по-своему. Будем опираться на формировку Apple, которая звучит как Neural Engine или «Нейронный процессор».

Должно соблюдаться условие: система, которую будут запускать на таком типе процессора, должна быть сначала натренирована на других примерах.

Первый Neural Engine использовали исключительно для Face ID

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Apple полностью контролирует производство своих процессоров начиная с iPhone 4 и чипа внутри него A4, которые вышли в 2010 году.

Компания среди первых начала внедрять новые технологии в чипы на мобильных устройствах. Например, переход на 64-битную разрядную систему, интеграцию сопроцессора движения и фотографии, использование минимальных техпроцессов (7 нм, 5 нм).

Ключевым стал 2017 год, когда вышел iPhone X. На его презентации впервые пошла речь о небольшом нейросетевом модуле внутри чипа A11, который Apple впервые и до сих пор называет с приставкой Bionic.

Тогда этому маленькому блоку внутри чипа уделили каплю внимания, чтобы рассказать, как он юрко отличает настоящее лицо от искусственной копии в виде театральной маски. Мы узнали о Neural Engine только то, что он способен обучаться по внешнему виду пользователя, и на этом всё.

С каждым новым поколением NPU значительно развивали и обучали новым возможностям.

В 2021 году он помогает искать определённых людей и создавать воспоминания в приложении Фото, анализировать 40 мимических лиц в реальном времени и создавать Киноэффект в iPhone 13.

Эволюция оказалась впечатляющей.

Как развивался Neural Engine в iPhone

Каждая презентация Apple не обходится без упоминания сопроцессора и без указания, насколько выросла его производительность.

Ниже будет полный список iPhone начиная с 2017 года, с описанием возможностей, которые добавляла компания вместе с улучшением Neural Engine и его ядер.

iPhone X

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В чипе A11 внутри iPhone X технология появилась первые.

Два ядра, которые служили исключительно для того, чтобы корректно распознавать лица.

Производительность: 600 миллиардов операций в секунду.

iPhone XS и iPhone XR

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В A12 внутри iPhone XS и iPhone XR поставили 8 нейроядер, к которым добавили машинное обучение в других приложениях кроме Face ID и «умную вычислительную систему».

Эта система распознаёт тип задачи, поступающей в процессор, и решает, на каких блоках её обрабатывать: в Neural Engine, CPU или GPU.

Машинное обучение улучшило:
• Предложения слов в клавиатуре
• Подборку фотографий в Воспоминаниях
• Вывод полезных мест в Картах
• Адаптацию экрана True Tone
• Поиск снимков в Фото.

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Это было нужно для портретного режима с одной камерой на iPhone XR и для AR-эффектов камеры. Например, чтобы накладывать сценический свет или отслеживать движение 50-ти мышц лица во время звонка по Face Time.

Именно благодаря обучению «на ходу» режим портрета из iOS 15 в Face Time доступен на смартфонах с процессором A12 Bionic и новее.

Производительность: 5 триллионов операций в секунду.

iPhone 11 и iPhone 11 Pro

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В A13 внутри iPhone 11 установлен Neural Engine снова из 8 ядер.

Тогда блоку повысили мощность на 20% и снизили потребление на 15% за счёт выборочной подачи энергии на разные области A13.

Вместе с машинным обучением NPU улучшил распознавание речи и стал быстрее справляться с трекингом лицевой мимики в реальном времени.

В этот раз в CPU добавили блоки для ускорения машинного обучения, которые стали в 8 раз быстрее проводить матричные вычисления. Вероятно, именно они дали ускорение нейроядрам.

Производительность: 6 триллионов операций в секунду.

iPhone 12 и iPhone 12 Pro

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В A14 из iPhone 12 Neural Engine стал в два раза больше и состоял из 16 ядер.

NPU стал на 80% быстрее того, который был установлен в A13.

Эти улучшения помогли внедрить Deep Fusion во все камеры iPhone, включая фронтальную и сверхширокоугольную. Последняя, несмотря на то, что физически была идентична прошлому поколению, стала снимать более чёткие фотографии.

Этот же NPU установлен во все чипы серии M1 от Apple для Mac.

Производительность: 11 триллионов операций в секунду.

iPhone 13 и iPhone 13 Pro

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В A15 из iPhone 13 Neural Engine остался с теми же 16 ядрами. Но они стали заметно мощнее. Даже в новых M1 Pro и M1 Max такого нет.

На этой презентации Apple напомнила, что установленные в Neural Engine элементы для машинного обучения работают эффективно за счёт блоков их ускорения в разделе CPU.

На данный момент это самый мощный NPU среди продуктов Apple. Главной его возможностью стала запись видео с глубоким размытием. Режим в приложении Камера в любом из iPhone 13 называется Киноэффект.

Ещё он помогает Siri распознавать диктовку и корректировать навигатор внутри Apple Maps, делать трекинг предметов в реальном времени, распознавать виды растений и ускорять перевод текста с фотографии в письменный.

Производительность: 15,8 триллионов операций в секунду.

В чём ещё помогает Neural Engine в смартфонах

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural driveчто такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural driveчто такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural driveчто такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural driveчто такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural driveчто такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Многие считают Siri отстающей в развитии по сравнению с другими ассистентами, но на самом деле за этой технологией стоят сложные процессы.

Раньше, когда вы задавали вопрос «Скажи курс доллара к рублю», смартфон записывал данные и отправлял их на сервер с сопроводительными данными вроде обладателя голоса, местоположения, времени суток, чтобы было проще сформулировать ответ. Позже ответ обрабатывался и отправлялся обратно.

Сейчас нейросетевой чип в смартфоне берёт обработку натуральной голосовой модели на себя. Он в реальном времени превращает речь в запрос сам, и в некоторых ситуациях берёт на себя его полную обработку. Он сам понимает, что пользователь хочет узнать и сам же формирует сценарий, по которому будет отвечать.

Например, если вы попросите смартфон сделать сложные расчёты, он справится с ними намного быстрее, чем раньше, потому что сделает это без отправки на сервера. А расчёт начнёт до того, как вы закончите говорить.

Зачем Neural Engine в Mac

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive
Огромный кусок главных функций M1 занимает Neural Engine в правом верхнем углу

Apple постепенно переводит компьютеры Mac на свои процессоры. Год назад, в ноябре 2020-го представили чип M1, в октябре 2021-го к ним добавились M1 Pro и M1 Max.

Несмотря на разницу в производительности CPU и GPU, в каждом из них установлен один и тот же NPU из 16 ядер с мощностью 11 триллионов операций в секунду. То есть он дублирует таковой из A14 внутри iPhone 12.

Выделенные нейроядра в Mac ускоряют процессы в работе профессионалов, завязанные на машинном обучении.

Фотографы могут применить их в Pixelmator Pro, который увеличивает разрешение изображения с помощью процессов машинного обучения, которые активирует Neural Engine.

Видеографы могут использовать функцию умного отслеживания объектов в Final Cut Pro X, чтобы быстрее обрезать видео.

Для разработчиков, учёных и инженеров в их специализированных расчётах и преобразованиях данных, постановки виртуальных экспериментов он тоже будет полезен.

Например, на базе машинного обучения работает платформа TensorFlow. Она помогает внедрять в приложения такие технологии, как распознавание жестов, понимание контекста в естественных вопросах, перенос стиля одного изображения на другое. Чем быстрее будет железо, сделанное для него, тем лучше заработают эти функции.

Часть iPhone, которая делает его iPhone

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Apple не устаёт повторять, что её сильная сторона кроется в трепетной связке ПО и железа.

Компания внедряет в свои смартфоны всё больше функций, которые полагаются на заточенные под них ядра. Среди них процессор обработки фото, управления дисплеем, портами и Neural Engine.

«Нейронный движок» помогает смартфону на лету понимать речь, подбирать трогательные Фото в виджете на рабочем столе и выдавать релевантные Воспоминания, отслеживать объекты в кадре Smart HDR, режима портрета и Киноэффекта.

Neural Engine формирует быструю и корректную выдачу данных в Spotlight, распознаёт текст из Камеры, может различать разные виде растений и породы собак.

И в целом он превращает смартфон в устройство, которое с каждым поколением всё лучше распознаёт контекст запроса без подключения к интернету.

Это одна из самых сильных вычислительных сторон iPhone помимо CPU и GPU. И она развивается сумасшедшими темпами из года в год.

Сложно предсказать, на что нейроядра будут способны через 10 лет. Но пока они выполняют свою работу бесшовно и незаметно для пользователя, Apple всё ещё может называть эту технологию магией.

Источник

Ваша первая нейронная сеть на графическом процессоре (GPU). Руководство для начинающих

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

В этой статье я расскажу как за 30 минут настроить среду для машинного обучения, создать нейронную сеть для распознавания изображений a потом запустить ту же сеть на графическом процессоре (GPU).

Для начала определим что такое нейронная сеть.

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

Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение.

С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и прочих методов.

Оборудование

Сначала разберемся с оборудованием. Нам необходим сервер с установленной на нем операционной системой Linux. Оборудование для работы систем машинного обучения требуется достаточно мощное и как следствие дорогое. Тем, у кого нет под рукой хорошей машины, рекомендую обратить внимание на предложение облачных провайдеров. Необходимый сервер можно получить в аренду быстро и платить только за время использования.

В проектах, где необходимо создание нейронных сетей я использую сервера одного из российских облачных провайдеров. Компания предлагает в аренду облачные серверы специально для машинного обучения с мощными графическими процессорами (GPU) Tesla V100 от компании NVIDIA. Если коротко: использование сервера с GPU может быть в десятки раз быть более эффективным (быстрым) по сравнению с аналогичным по стоимости сервером где для вычислений используется CPU (всем хорошо знакомый центральный процессор). Это достигается за счет особенностей архитектуры GPU, которая быстрее справляется с расчетами.

Для выполнения примеров описанных далее, мы приобрели на несколько дней такой сервер:

Устанавливаем окружение

Теперь установим на сервер все необходимое для работы. Поскольку наша статья в первую очередь для начинающих, буду рассказывать в ней о некоторых моментах, которые пригодятся именно им.

Очень много работы при настройке среды выполняется через командную строку. Большинство из пользователей в качестве рабочей ОС используют Windows. Стандартная консоль в этой ОС оставляет желать лучшего. Поэтому мы будем использовать удобный инструмент Cmder/. Скачиваем mini версию и запускаем Cmder.exe. Далее необходимо подключится к серверу по протоколу SSH:

Вместо server-ip-or-hostname указываете IP адрес или DNS имя вашего сервера. Далее вводим пароль и при успешном подключении мы должны получить примерно такое сообщение.

Основным языком для разработки ML моделей является Python. А наиболее популярной платформой для его использование по Linux является Anaconda.

Установим ее на наш сервер.

Начинаем с обновления локального менеджера пакетов:

Устанавливаем curl (служебная программа командной строки):

Скачиваем последнюю версию Anaconda Distribution:

В процессе установки необходимо будет подтвердить лицензионное соглашение. При успешной установке вы должны будете увидеть это:

Для разработки ML моделей сейчас создано множество фреймворков, мы работаем с наиболее популярными: PyTorch и Tensorflow.

Использование фреймворка позволяет увеличить скорость разработки и использовать уже готовые инструменты для стандартных задач.

В этом примере будем работать с PyTorch. Установим его:

Теперь нам необходимо запустить Jupyter Notebook — популярный у ML специалистов инструмент разработки. Он позволяет писать код и сразу видеть результаты его выполнения. Jupyter Notebook входит в состав Anaconda и уже установлен на нашем сервере. Необходимо подключится к нему из нашей настольной системе.

Для этого мы сначала запустим Jupyter на сервере указав порт 8080:

Далее открыв в нашей консоли Cmder еще одну вкладку (верхнее меню — New console dialog) подключимся по порту 8080 к серверу через SSH:

При вводе первой команды нам будет предложены ссылки для открытия Jupyter в нашем браузере:

Воспользуемся ссылкой для localhost:8080. Скопируйте полный путь и вставьте в адресную строку локального браузера вашего ПК. Откроется Jupyter Notebook.

Создадим новый ноутбук: New — Notebook — Python 3.

Проверим корректную работу всех компонентов которые мы установили. Введем в Jupyter пример кода PyTorch и запустим выполнение (кнопка Run):

Результат должен быть примерно таким:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Если у вас аналогичный результат — значит мы все настроили правильно и можем приступать к разработке нейронной сети!

Создаем нейронную сеть

Будем создавать нейронную сеть для распознавания изображений. За основу возьмем данное руководство.

Для тренировки сети мы будем использовать общедоступный набор данных CIFAR10. У него есть классы: «самолет», «автомобиль», «птица», «кошка», «олень», «собака», «лягушка», «лошадь», «корабль», «грузовик». Изображения в CIFAR10 имеют размер 3x32x32, то есть 3-канальные цветные изображения размером 32×32 пикселей.

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Для работы мы будем использовать созданный PyTorch пакет для работы с изображениями — torchvision.

Мы сделаем следующие шаги по порядку:

Загрузка и нормализация CIFAR10

Скопируйте и выполните в Jupyter следующий код:

Ответ должен быть такой:

Выведем несколько тренировочных образов для проверки:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Определение нейронной сети

Рассмотрим сначала как работает нейронная сеть по распознаванию изображений. Это простая сеть прямой связи. Он принимает входные данные, пропускает их через несколько слоев один за другим, а затем, наконец, выдает выходные данные.

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Создадим подобную сеть в нашей среде:

Определим так же функцию потерь и оптимизатор

Тренировка сети на тренировочных данных

Начинаем тренировку нашей нейронной сети. Обращаю внимание что после этого как вы запустите на выполнение этот код, нужно будет подождать некоторое время до завершения работы. У меня это заняло 5 мин. Для обучение сети нужно время.

Получим такой результат:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Сохраняем нашу обученную модель:

Тестирование сети на тестовых данных

Мы обучили сеть использую набор обучающих данных. Но нам нужно проверить, научилась ли сеть вообще чему-либо.

Мы проверим это, предсказав метку класса, которую выводит нейронная сеть, и проверив ее на предмет истинности. Если прогноз верен, мы добавляем образец в список правильных прогнозов.
Давайте покажем изображение из тестового набора:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Теперь попросим нейронную сеть сообщить нам что на этих картинках:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Результаты кажутся довольно хорошими: сеть определила правильно три картинки из четырех.

Давайте посмотрим, как сеть работает во всем наборе данных.

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Похоже сеть что-то знает и работает. Если бы он определяла классы наугад, то точность бы была 10%.

Теперь посмотрим какие классы сеть определяет лучше:

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Похоже что лучше всего сеть определяет автомобили и корабли: 71% точности.

Итак сеть работает. Теперь попробуем перенести ее работу на графический процессор (GPU) и посмотри что поменяется.

Тренировка нейронной сети на GPU

Сначала объясню коротко что такое CUDA. CUDA (Compute Unified Device Architecture) — платформа параллельных вычислений, разработанная NVIDIA, для общих вычислений на графических процессорах (GPU). С помощью CUDA разработчики могут значительно ускорить вычислительные приложения, используя возможности графических процессоров. На нашем сервере, который мы приобрели, данная платформа уже установлена.

Давайте сначала определим наше GPU как первое видимое устройство cuda.

что такое neural drive. Смотреть фото что такое neural drive. Смотреть картинку что такое neural drive. Картинка про что такое neural drive. Фото что такое neural drive

Отправляем сеть на GPU:

Так же нам придется отправлять входы и цели на каждом шаге и в GPU:

Запустим повторное обучение сети уже на GPU:

В этот раз обучение сети продолжалось по времени около 3 минут. Напомним что тот же этап на обычном процессоре длился 5 минут. Разница не существенная, это происходит потому что наша сеть не такая большая. При использовании больших массивов для обучения разница между скоростью работы GPU и традиционного процессора буде возрастать.

На этом кажется все. Что нам удалось сделать:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *