Удобный контроль над обучением вашей нейросетки (Weights&Bias)
Всем привет!
Это моя первая статья на Хабре, так что не судите строго :)
Комментарии, поправки и советы приветствуются!
Предупреждение: я computer vision инженер, так что все, о чем я буду здесь говорить касается только области CV. Часть из этого касается и NLP, но так как это не моя сфера, то я не обозреваю ее. Предлагаю любопытному читателю самому узнать возможности W&B для других задач.
Сейчас я участвую в одном соревновании Kaggle и столкнулся с одной библиотекой, которая очень заинтриговала меня. Я говорю про Weights&Bias.
Данная библиотека привлекла меня обилием инструментов, которые позволяют следить за процессом обучения вашей нейронки. На самом деле это очень полезно, если у вас она обучается хотя бы больше часа. Времени и сил позволяет сэкономить - уйму, да и в код встраивается очень легко: достаточно добавить 4-5 строчек простенького кода, который и так находится у W&B на сайте.
Итак, к функционалу и особым фишкам:
Данная библиотека интегрирована в самые популярные библиотеки и модельки. Такие как: Pytorch, Keras, TensorFlow, YOLOv5, Scikit-Learn и еще много других.
Возможность составлять быстрые отчеты с командой, так как там есть возможность быстро шарить свои отчеты и графики.
Основная фишка - визуализация. Визуализировать можно абсолютно любые процессы: начиная от визуализации изменения весов вашей нейронки, кончая нагрузкой ваших CPU и GPU. Это позволит сильно сэкономить время на подборе модельки, гиперпараметров и просто на написании кода, ведь встраивание этой библиотеки происходит в 4-5 строчек. (см фотки взятые с сайты и одну мою :) )

Вся обработка проходит у них на сервере, поэтому переживать за нагрузку на свою локалку/свой сервер не стоит.
Если вдруг кому-то не из CV понадобится подключиться к данной библиотеке или вы хотите встроить свое приложение, то есть довольно понятный и удобный способ: API.
Весь процесс обработки у них происходит ongoing, так что можно удобно отслеживать во время обучения ваши веса и гипермарапетры.


Очень часто вся ваша работа сведется к:
import wandb
for x in range(10):
run = wandb.init(reinit=True)
for y in range (100):
wandb.log({"metric": x+y})
run.finish()
И все!
Если подвести итог, то библиотека крутая и часто может сэкономить уйму времени на отлаживание вашей нейронки.