Какая технология стоит за DeepScale?

Последнее приобретение Tesla предлагает лучшие технологии для разработки DNN.

Проблема

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

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

Для получения лучших результатов было разработано несколько методов для получения лучших результатов с меньшими сетями. Некоторые из них описаны в сообщении блога Hugging Face, где они описали, как они дистиллировали последние версии Bert, самой производительной нейронной сети для задач НЛП.

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

Решения

  • Проблема определяется как поиск сетей, которые являются лучшим компромиссом между вычислительными возможностями и точностью в некотором пространстве поиска.
  • Вы можете изменять количество слоев, каналов, размер ядра, соединений и т. Д.

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

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

  • Случайный поиск
  • Генетический поиск
  • Обучение с подкреплением
  • Дифференциальный поиск (на основе градиента)

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

Обучение с подкреплением

Одной из первых работ, положивших начало этой области, была статья от Google Brain под названием Neural Architectural Search with Reinforcement Learning. Это можно найти здесь".

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

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

Используя эту технику, команда Google достигла немного лучших результатов, чем современная (SOTA) в то время, но использованные ею вычисления были огромными. Он использовал 800 графических процессоров Nvidia K40 в течение 28 дней или полмиллиона часов графического процессора. Поиск проводился по небольшому набору данных, поэтому трудно понять, как он будет работать с большим набором данных.

Ограничение поиска

Вместо того, чтобы выполнять поиск по всем возможным сетям, та же группа решила ограничить поиск по каждой ячейке, то есть они зафиксировали топологию сети и выполнили поиск для каждой ячейки. Результаты были намного лучше. Полученная сеть имела на 20% лучшую точность и на 28% быстрее на ImageNet1000.

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

Дифференциальный поиск

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

Группа использовала стохастическую SuperNet на основе градиента, которая дважды оптимизирует сверточные веса сети, а также параметры выбора отдельных единиц. Он использует Gumbel-Softmax для выборки из категориального распределения, взвешенного по изученным параметрам архитектурных параметров. Уловка Gumbel-Softmax - это способ найти параметры нейронной сети, в которой у нас есть дискретный набор значений, и вы хотите выполнить обратное распространение. Чтобы узнать, как это работает, рекомендую прочитать следующие



Команда Facebook обучилась на суперсети, чтобы определить веса сети, и обучила ее на 10% подмножестве ImageNet или ImageNet1000.

Результаты были впечатляющими. Они достигли точности MobileNetV2 по классификации ImageNet, имея при этом меньшую задержку в 1,5 раза. Стоимость поиска составила всего 216 GPU (P100) часов.

Решение DeepScale

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

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

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

Вот подробности реализации DeepScale.

Подробная информация о реализации SqueezeNAS:

  • 13 кандидатов на единицу для 22 слоев (10² возможных сетей)
  • Произвольно инициализируйте SuperNetwork и обучите только веса свертки, затем переключитесь на чередующийся шаблон.

После схождения SuperNetwork:

  • Примеры сетей-кандидатов с помощью трюка Gumbel-Softmax
  • Запустите каждую выбранную сеть кандидатов на проверочном наборе Cityscapes.
  • Проведите лучших кандидатов через полный режим обучения

После всего этого DeepScale выбрала лучшую сеть с учетом ее точности и вычислительных ресурсов. DeepScale обнаружила сети, которые имеют лучшую производительность и требуют меньше вычислительных ресурсов для достижения этих результатов. Например, их сеть SqueezeNAS-MAC-Large показала более чем на 2,5% более высокий абсолютный mIOU по сравнению с сетью сегментации MobileNetV2 [40], которая имеет более чем удвоенную MAC-адреса своей сети.

Поиск DeepScale для каждой сети был найден менее чем за 15 дней на GPU, что более чем в 100 раз меньше, чем некоторые методы обучения с подкреплением и генетического поиска.

Вывод

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