TensorBoard

Тема дорожной карты · Глубокое обучение

TensorBoard — это стандартный дашборд для визуализации обучения, используемый в глубоком обучении. Он позволяет отслеживать различные метрики, такие как скалярные кривые (loss, accuracy, learning rate), гистограммы весов и градиентов, графы вычислений, проекции эмбеддингов, изображения и трассы профайлера. TensorBoard поддерживает как TensorFlow, так и PyTorch через torch.utils.tensorboard.SummaryWriter. Запустив tensorboard --logdir runs/, вы сможете открыть дашборд по адресу http://localhost:6006. Для командного трекинга экспериментов можно использовать Weights & Biases или MLflow, но TensorBoard остается основным инструментом для локального отладчика.

Как это работает

TensorBoard читает event-файлы, которые пишет ваш обучающий код. В PyTorch вы создаёте SummaryWriter из torch.utils.tensorboard и вызываете writer.add_scalar('loss/train', loss, step) (а также add_histogram, add_image, add_embedding) — каждая запись попадает в лог-каталог runs/. В Keras то же самое делает колбэк tf.keras.callbacks.TensorBoard, передаваемый в model.fit(). Запущенный дашборд периодически перечитывает каталог и обновляет панели: Scalars (кривые метрик), Histograms (распределения весов и градиентов), Graphs (граф вычислений), Projector (проекции эмбеддингов) и Profiler (трассы производительности).

Ключевой приём — сравнение нескольких запусков: раскладывайте логи по подкаталогам (runs/exp1-lr3e-4, runs/exp2-lr1e-3), и TensorBoard наложит кривые экспериментов друг на друга. Это удобно при подборе гиперпараметров: расхождение train/val loss видно за минуты, а не после разбора текстовых логов. Трассы torch.profiler тоже открываются в TensorBoard — так находят узкие места вроде медленной загрузки данных или простаивающего GPU.

Когда применять

TensorBoard — правильный выбор для локальной отладки обучения: один разработчик, один компьютер, нужно быстро видеть кривые loss и профилировать код без внешних сервисов и регистраций. Он бесплатный, работает офлайн и одинаково хорошо подключается к PyTorch и TensorFlow/Keras. Когда экспериментов становится много и над ними работает команда, переходите на трекеры уровня MLflow или Weights & Biases — с централизованным хранилищем запусков, сравнением по таблице и шарингом отчётов; TensorBoard при этом остаётся инструментом «посмотреть, что происходит прямо сейчас».

Для упрощения процесса обучения и уменьшения времени разработки можно использовать фреймворки, такие как Lightning или HuggingFace Trainer, которые автоматизируют многие аспекты обучения. Всегда следует использовать профайлеры, такие как torch.profiler и nvidia-smi, чтобы оптимизировать использование GPU и выявить возможные бутылочные горлышки в процессе обучения.

Типичные ошибки

Частая ошибка — логировать всё и на каждом шаге: запись гистограмм и изображений каждый батч заметно тормозит обучение и раздувает event-файлы до гигабайт. Скаляры пишите раз в N шагов, тяжёлые сущности (гистограммы, картинки) — раз в эпоху. Вторая ловушка — неправильный global_step: если передавать в add_scalar номер батча вместо сквозного счётчика, кривые «съезжают» при сравнении запусков.

Забытый writer.flush()/writer.close() в конце скрипта оставляет дашборд пустым или с обрубленными кривыми — данные так и не доезжают до диска. Наконец, не пишите разные эксперименты в один и тот же каталог: TensorBoard склеит их в одну кривую, и график превратится в пилу; каждый запуск должен получать свой подкаталог с осмысленным именем.

Связанные понятия

Полезные ресурсы

Проверить знания (2)

Загрузка вопросов…