Изучите трюк за одну минуту: runx создан для записи глубокой алхимии[1]

машинное обучение


Представленный сегодня инструмент, запущенный NVIDIA, предназначен для записи параметров настройки глубокого обучения (lian) (dan),runx.

https://github.com/NVIDIA/runx

runx очень новый, он был официально открыт около пяти дней назад. Я случайно увидел это на Github, и это было очень интересно, поэтому я присмотрелся. Эта статья также должна стать первым знакомством с этим инструментом во всей китайской сети.

Проще говоря, runx был создан, чтобы помочь глубинным алхимикам записывать различные экспериментальные данные.

Потому что в глубоком обучении большая модель может работать всего от нескольких часов до нескольких дней или недель, Если проведенные эксперименты не будут хорошо записаны, это будет очень неэффективно и раздражает.

Я также представил некоторые небольшие методы записи экспериментальных данных в своих предыдущих статьях, такие как:

Как записывать различные настройки гиперпараметров для эксперимента.

А runx больше похож на набор различных часто используемых инструментов, который можно понимать как «швейцарский армейский нож» в алхимии глубокого обучения. Инструмент небольшой и сам по себе очень простой и лаконичный, но во многих случаях он может дать вам много удобства.

В настоящее время документация по runx все еще очень неполная.Позвольте мне представить одно из его применений:记录实验输出及方便的Tensorboard记录

В основном используйте подмодули под runx,runx.logx.

  1. 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 каждый раз пишет много чего, включите это, на случай, если оно не записывается из-за слишком быстрого ввода-вывода. (На некоторых серверах включены ограничения ввода-вывода, и часто возникают ситуации, которые на самом деле не написаны, рекомендуется открывать их почаще)

  1. logx.msg()

прежде чем ставить свою программуpirntПросто замените его на это, он автоматически сохранит для вас весь вывод на печать, чтобы вы могли проверить его позже. удобно~

  1. logx.metrics

Используется для записи различных переменных, таких как

# capture metricsmetrics = {'loss': loss.item()}iteration = epoch * len(train_loader) + batch_idxlogx.metric('train', metrics, iteration)

phaseУкажите поезд или тест

metricsСловарь, содержащий все значения, которые вы собираетесь записать на этом шаге.

global_stepЭто результат первого шага.

На самом деле этоСохраняйте тренировочные переменные + TensorBoard автоматически записываетустройство.

  1. save_model

использование

logx.save_model(        save_dict,        metric=accuracy,        epoch=epoch,        higher_better=True)

epochбудет использовать это, чтобы назвать сохраненную модель

metricПо какому критерию решить, является ли текущая модель лучшей моделью, а затем решить, сохранять ее или нет. Если ваша метрика — точность, тоhigher_betterбыть настроенным наTrue.

delete_oldСохранять ли новую каждую эпоху или просто лучшую навсегда. Вам не нужно писать свой собственный код суждения. удобно~

Это первая статья из серии runx. Если вы хотите узнать больше, не забудьте поставить лайк и подписаться на меня~