highload на gpu, опыт vinci / Олег Илларионов (ВКонтакте)
TRANSCRIPT
![Page 1: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/1.jpg)
Highload на GPU, опыт Vinci Олег Илларионов HL 2016
![Page 2: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/2.jpg)
24часа2недели
Первая версия
Релиз
![Page 3: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/3.jpg)
3 000 0001 000 000
Фотографий обработано в день запуска
Уникальных пользователей за месяц
![Page 4: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/4.jpg)
Machine learning is like highschool sex. Everyone says they do it, nobody really does, and no one knows what it actually is.
![Page 5: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/5.jpg)
Artistic style
![Page 6: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/6.jpg)
Artistic style
![Page 7: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/7.jpg)
Artistic style
![Page 8: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/8.jpg)
Artistic style
![Page 9: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/9.jpg)
NodeJS / GO
TorchLua / Turbo
Стек технологий
![Page 10: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/10.jpg)
Кастомный супервизор
Ubuntu / DebianCUDA + CUDNN
Стек технологий
![Page 11: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/11.jpg)
Железо
CPU VS GPU
![Page 12: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/12.jpg)
Железо
Оптимизация под железоУзкие и более длинные нейросети
CPU:
Доступно значительно больше памятиПроще разработка / ОтладкаПортируемость
![Page 13: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/13.jpg)
Железо
ПроизодительностьCuda / OpenCL
GPU:
Гигантское преимущество для обученияСильно ниже отказоустойчивость
![Page 14: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/14.jpg)
Железо
Аренда сервера:
Amazon, NVIDIA K80 ~ $670 в месяцAmazon, NVIDIA GRID ~ $484 в месяцDedicated, NVIDIA 1080 $250-$500 в месяц
![Page 15: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/15.jpg)
Железо
NVIDIA GTX 1080
VS
NVIDIA TITAN X
NVIDIA TESLA M40 NVIDIA TESLA K80
![Page 16: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/16.jpg)
Железо
NVIDIA GTX 1080
VS
NVIDIA TITAN X
NVIDIA TESLA M40 NVIDIA TESLA K807 TF 8.74TF
9 TF 11TF
![Page 17: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/17.jpg)
Железо
NVIDIA GTX 1080VS
NVIDIA TITAN X
NVIDIA TESLA M40 NVIDIA TESLA K807 TF 8.74TF
9 TF 11TF
5000$ 5000$
1200$700$
![Page 18: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/18.jpg)
Железо
NVIDIA GTX 1080
GFLOPSper $
NVIDIA TITAN X
NVIDIA TESLA M40 NVIDIA TESLA K80
1.4 1.7
13 9
![Page 19: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/19.jpg)
Железо
* Single precision
Memory Bandwidth
Memory Size
![Page 20: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/20.jpg)
Архитектура
Фронты GPU сервера
![Page 21: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/21.jpg)
Архитектура
Фронты
GPU сервера
![Page 22: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/22.jpg)
Архитектура
Проще искать баги связанные с балансировкой моделей
Можно тестировать разные конфигурации
Кэширование изображений на GPU-серверах
Менее оптимальное распределение моделей
+
+
+
-
![Page 23: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/23.jpg)
Распределение нагрузкиСмена модели 500-1000 msРаспределение нагрузки постоянно меняетсяБолее 10 сек неприемлемо
![Page 24: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/24.jpg)
Распределение нагрузки
Style1 Style2 Style3 Style4 Style5
Style1 Style1 Style1 Style2 Style2 Style3 Style3 Style4 Style5
Supervisor
![Page 25: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/25.jpg)
БоттлнекиGPUПамятьСеть
Диск
Алгоритм супервизера
![Page 26: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/26.jpg)
Организация обученияРучное обучение
FGlab, перебор всех возможных параметров
Редактирование исходного стиля
Для каждого стиля свой выбор слоев, и настроек обучения
![Page 27: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/27.jpg)
Что дальше?Среднее время обработки изображения в приложении
< 200ms* Исключая время на скачивание результата
![Page 28: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/28.jpg)
Offline
2 Гб оперативной памяти на одно изображение~30мб одна модель на диске~20сек на мобильном CPU
![Page 29: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/29.jpg)
Сравнение скорости слоевВходной блок (downsampling) 42%
Промежуточные блоки (каждый) 10%
Выходной блок (upsampling) 28%
![Page 30: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/30.jpg)
Сравнение скорости слоевВходной блок (downsampling) 42%
Промежуточные блоки (каждый) 10%
Выходной блок (upsampling) 28%
* iPhone 5s
1.4 сек
0.3 сек x3
0.9 сек
![Page 31: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/31.jpg)
128 vs 32 канала
128 каналов 9x9
32 канала 9x9 в resnet-слояхускорение 60%
CPU
![Page 32: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/32.jpg)
128 vs 32 канала
![Page 33: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/33.jpg)
3x3 vs 9x9
128 каналов 9x9
32 канала 9x9 в resnet-слояхускорение 60%
32 канала 3x3 в spatialfullconvolutionускорение 20%
+
CPU
![Page 34: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/34.jpg)
9x9 vs 3x3
![Page 35: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/35.jpg)
3x3 vs 9x9
Not so much :(
GPU
![Page 36: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/36.jpg)
Уменьшение веса модели
Оригинальная сеть 9x9 6.7 MB* Только веса
![Page 37: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/37.jpg)
Уменьшение веса модели
Оригинальная сеть 9x9 6.7 MB* Только веса, 128 фильтров
Бинаризация весов 800 KB
![Page 38: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/38.jpg)
Уменьшение веса модели
Оригинальная сеть 9x9 6.7 MB* Только веса, 128 фильтров
Бинаризация весов 800 KB
Уменьшенная сеть 3x3 152 KB32 фильтра
![Page 39: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/39.jpg)
Уменьшение веса модели
44 раза
![Page 40: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/40.jpg)
Подводные камни
* Недостаточно сделать git clone
* Зависание видеокарт
* Много сюрпризов в процессе нагрузочного тестирования
* Debian only
* Экосистема lua отличается нестабильностью
* VGG-19 сильно лучше VGG-16
![Page 41: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/41.jpg)
Взгляд в будущее
Сетевой интерфейсМасштабируемостьПортируемость
Базы данных Нейросеть
Надежность
Language specificManualManual:(
![Page 42: Highload на GPU, опыт Vinci / Олег Илларионов (ВКонтакте)](https://reader033.vdocuments.us/reader033/viewer/2022051101/586f902f1a28ab54768b789d/html5/thumbnails/42.jpg)
Взгляд в будущее
Сбор данныхОбработка нейросетьюВыгрузка данных для использования
Было:
Realtime использование и обучение нейросетиКуда движется: