Представленный сегодня инструмент, запущенный NVIDIA, предназначен для записи параметров настройки глубокого обучения (lian) (dan),runx
.
https://github.com/NVIDIA/runx
runx очень новый, он был официально открыт около пяти дней назад. Я случайно увидел это на Github, и это было очень интересно, поэтому я присмотрелся. Эта статья также должна стать первым знакомством с этим инструментом во всей китайской сети.
Проще говоря, runx был создан, чтобы помочь глубинным алхимикам записывать различные экспериментальные данные.
Потому что в глубоком обучении большая модель может работать всего от нескольких часов до нескольких дней или недель, Если проведенные эксперименты не будут хорошо записаны, это будет очень неэффективно и раздражает.
Я также представил некоторые небольшие методы записи экспериментальных данных в своих предыдущих статьях, такие как:
Как записывать различные настройки гиперпараметров для эксперимента.
А runx больше похож на набор различных часто используемых инструментов, который можно понимать как «швейцарский армейский нож» в алхимии глубокого обучения. Инструмент небольшой и сам по себе очень простой и лаконичный, но во многих случаях он может дать вам много удобства.
В настоящее время документация по runx все еще очень неполная.Позвольте мне представить одно из его применений:记录实验输出及方便的Tensorboard记录
В основном используйте подмодули под runx,runx.logx
.
logx.initialize
Перед началом эксперимента выполните необходимые настройки.
logx.initialize(logdir=args.logdir, coolname=True, tensorboard=True, hparams=vars(args))
Выше приведено определение:
logdir
Где хранить все сохраненные результаты. Если указанная папка не существует, она будет создана автоматически, нет необходимости вручнуюos.makedirs(logroot, exist_ok=True)
Ой. удобно~
tensorboard
Включить ли запись тензорной доски. Это тоже очень удобно, не нужно вручнуюwriter = SummaryWriter()
Ой. удобно~
global_rank
Во время распределенного обучения, чтобы предотвратить множественные выходные данные, автоматически выполняется только логарифмический ранг=0, поэтому вам не нужно писать собственное суждение. удобно~
coolname
Вы вlogdir
Затем создайте новую папку со случайным именем для использования ведения журнала (чтобы вы моглиlogdir
Ниже приведены некоторые вещи, кроме логирования, которые удобны для классификации). Папки со случайными именами выглядят такindustrious-chicken
, arrogant-buffalo
, ахахахаха.
hparams
Сохраните все гиперпараметры, функция в основном такая же, как в статье, которую я рекомендовал выше, хотя я сломал «работу» статьи выше, но я должен сказать, что это удобно ~
eager_flush
Если tensorboard каждый раз пишет много чего, включите это, на случай, если оно не записывается из-за слишком быстрого ввода-вывода. (На некоторых серверах включены ограничения ввода-вывода, и часто возникают ситуации, которые на самом деле не написаны, рекомендуется открывать их почаще)
logx.msg()
прежде чем ставить свою программуpirnt
Просто замените его на это, он автоматически сохранит для вас весь вывод на печать, чтобы вы могли проверить его позже. удобно~
logx.metrics
Используется для записи различных переменных, таких как
# capture metricsmetrics = {'loss': loss.item()}iteration = epoch * len(train_loader) + batch_idxlogx.metric('train', metrics, iteration)
phase
Укажите поезд или тест
metrics
Словарь, содержащий все значения, которые вы собираетесь записать на этом шаге.
global_step
Это результат первого шага.
На самом деле этоСохраняйте тренировочные переменные + TensorBoard автоматически записываетустройство.
save_model
использование
logx.save_model( save_dict, metric=accuracy, epoch=epoch, higher_better=True)
epoch
будет использовать это, чтобы назвать сохраненную модель
metric
По какому критерию решить, является ли текущая модель лучшей моделью, а затем решить, сохранять ее или нет. Если ваша метрика — точность, тоhigher_better
быть настроенным наTrue
.
delete_old
Сохранять ли новую каждую эпоху или просто лучшую навсегда. Вам не нужно писать свой собственный код суждения. удобно~