Получи случайную криптовалюту за регистрацию!

DeepSchool

Логотип телеграм канала @deep_school — DeepSchool D
Логотип телеграм канала @deep_school — DeepSchool
Адрес канала: @deep_school
Категории: Технологии
Язык: Русский
Количество подписчиков: 5.13K
Описание канала:

Это канал школы deepschool.ru. Здесь мы будем:
- напоминать вам теорию ML/DL в виде коротких постов,
- задавать вопросы с собеседований,
- рассказывать про полезные фреймворки
- и делиться советами, которые помогут вам в работе.
Админ: @TimurFatykhov

Рейтинги и Отзывы

4.33

3 отзыва

Оценить канал deep_school и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

2

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения 3

2022-06-25 17:10:02 ​​Стандартной схемой использования батч нормализации является Conv -> BN -> ReLU. Заметим, что на момент инференса слой батч нормализации является линейным. Таким образом, если этот слой используется в паре с другим линейным слоем, например свёрткой, то эти слои можно сплавить (fusion) в один, что сохранит параметры сети и ускорит её (3). Прочесть с выводом можно здесь.

Батчнормы очень чувствительны к сдвигам в данных. Все будет грустно даже если вы просто забыли перемешать данные между классами. Потому что вместо оценки для среднего всего датасета, батчнорм будет выдавать среднее по какому-то классу. Можно держать в голове простой пример (4): пусть при обучении сети будут идти подряд 100к жёлтых картинок, а затем 100к красных. Что будет, когда на инференсе придет жёлтая картинка? Кажется, что ничего хорошего Если сменили домен, попробуйте прогнать его через сеть для вычисления новых статистик. Это может значительно поднять качество.
1.2K views14:10
Открыть/Комментировать
2022-06-25 17:10:01 Какие плюсы даёт слой батч нормализации:
Ускорение обучения. За счёт сохранения распределения фичей между слоями, нейронная сеть обучается быстрее. Например, в исходной статье авторам удалось добиться ускорения обучения в 14 раз.
Можно использовать больший learning rate. Батч нормализация сглаживает ландшафт функции ошибки, тем самым позволяя использовать бо́льший lr без опаски проскочить локальный минимум.
Регуляризация. Статистики считаются на батче и экспоненциального сглаживаются — появляется эффект регуляризации.
Ёмкость сети не тратится понапрасну. Так как для основных слоёв сети распределение фичей практически не меняется, им не нужно тратить ману на заучивание распределений, а можно сконцентрироваться на поиске новых важных фичей.
1.0K views14:10
Открыть/Комментировать
2022-06-25 17:10:00 ​​Не забываем корни, напоминаем про батчнорм

Батч нормализация — неотъемлимая часть CNN. Основная цель этого слоя — корректировать распределение фичей во время обучения нейронной сети. Главная формула в этом слое — (1). Она применяется к каждому каналу в батче. То есть для фичей размерности [B, H, W, C] считается C средних E(X) и C выборочных дисперсий Var(X).
Получается, в слое батч нормализации есть два статистических параметра — среднее и выборочная дисперсия и два обучаемых — γ и β. Если статистические параметры неудачно нормализуют фичи, то обучаемые параметры позволят сети самой подкорректировать интенсивность и сдвиг фичей на выходе. При необходимости, сеть выучит параметры γ и β таким образом, чтобы на выходе получались исходные фичи без нормализации. Также важно запомнить: во время инференса среднее и выборочная дисперсия не рассчитываются, используются их экспоненциально сглаженные оценки (2), которые считаются во время тренировки.
1.0K viewsedited  14:10
Открыть/Комментировать
2022-06-20 19:32:14
при редактировании поста картинка ушла, ижвинити
1.2K views16:32
Открыть/Комментировать
2022-06-20 19:19:35 Ответ на вопрос с собеседования

У изначального решения большой минус: картинки предсказываются синхронно по одной. Думаю, всем известно, что предсказать 64 картинки по одной выйдет гораздо дольше, чем предсказать один батч из 64 картинок. Но как организовать батчинг, когда картинки приходят к нам с клиента по одной?
Добавим немного асинхронщины. Введем промежуточную очередь! (рис.3). Также введем два параметра:
1) batch_size — размер батча, с которым хотим предсказывать;
2) interval — допустимое время "простоя".
Раньше мы сразу отправляли картинку в нейросеть. А сейчас позволим себе немного подождать, пока накопится батч.

После того, как картинка пришла в API, она сразу сбрасывается в очередь (это быстро!). Каждые interval ms мы "выгребаем" N картинок из очереди. N = min(len(queue), batch_size). (рис. 4)

Можно поступать умнее: если в очереди >= batch_size картинок, то после предикта будем сразу брать новую пачку.

Теперь должно стать понятнее, откуда берутся параметры у TorchServe.

Но в реальных задачах лучше не заниматься написанием собственного батчинга, а использовать готовые inference-сервера. Например, TorchServe или Triton от Nvidia.

Паттерн с введением промежуточной очереди, в которую можно что-то по-быстрому скинуть и которую мы разгребаем в удобном для нас темпе, появился конечно же не из мира DL Это очень популярный паттерн для highload-задач. Он позволяет бороться со всплесками и легко скейлиться под изменчивую нагрузку. Прочесть про него можно здесь.
1.2K viewsedited  16:19
Открыть/Комментировать
2022-06-20 15:11:16
Рубрика «Вопрос с собеседования»

Вы натренировали гениальную нейросеть, которая умеет отличать котов от собак. У вас даже есть прод!
Люди с телефона посылают картинки в ваше API, которое под капотом дергает нейросеть (рис. 1). Сначала всё было хорошо, но ваше приложение стало очень популярным, и теперь ваше API иногда рвётся от нагрузки (рис. 2). Какие минусы есть у изначального решения? Как выдержать бо́льшую нагрузку, не разоряясь на покупку новых карточек? (предполагаем, что бутылочное горлышко системы — инференс нейросети)

По традиции перед публикацией ответа даём несколько часов на подумать
1.0K views12:11
Открыть/Комментировать