Всё чаще DL-инженерам приходится ускорять нейросети, чтобы уместить их на процессоре смартфона, микрокомпьютере или просто снизить нагрузку на сервер.
Чтобы помочь вам погрузиться в тему ускорения, мы кратко познакомим вас с основными методами для CNN.
Рассмотрим четыре подхода к ускорению и для каждого расскажем:

В первом подходе предлагается не ускорять имеющуюся сеть, а изначально подобрать оптимальную архитектуру.
Нейросетевой архитектурный поиск (Neural Architecture Search или NAS) — семейство методов, позволяющих выбрать оптимальную комбинацию слоёв и их параметров под конкретную задачу.
Под задачей понимаются не только данные, но и ограничения на ресурсы: конкретная модель процессора, время инференса или количество потребляемой памяти.
Главное, что надо понимать: выбор слоёв при поиске ограничен! Ибо перебрать все возможные варианты слоев и их параметров — невозможно.
В начале поиска в NAS алгоритмах требуется указать:
Например, в MNasNet, на котором стоит MobileNetV3, пространство поиска состоит из DWS блоков или обычных сверток, ядра выбирали размером 3 или 5, а для skip connection выбрали сложение, pooling или вообще их исключение. В качестве алгоритма поиска использовали RL, а оптимизировали время работы на смартфоне и точность.
<aside> 💡 Но не спешите применять эту технологию! Можно потерять много времени, а результаты получить не лучше уже доступных.
Нужно быстро запускать на телефоне — можете выбрать MobileNetV3. На сервере — подойдет EfficientNet. Эти модели уже подобрали архитектурным поиском.
Беритесь за NAS только случаях, когда другие способы уже себя исчерпали.
</aside>