Определите количество шагов для каждого тренировочного забега.

Существует два типа тренировочных нагрузок:

  • привязанный к вычислениям
  • не привязан к вычислениям

Обучение с привязкой к вычислениям ограничено тем, сколько времени вы можете потратить на обучение, а не количеством имеющихся у вас обучающих данных или каким-либо другим фактором. Другими словами, «оптимальное» время тренировки всегда «настолько, насколько вы можете себе позволить». Если вы каким-то образом сможете тренироваться дольше и эффективнее, потери на тренировках должны сократиться. (При правильной настройке потери при проверке также должны снизиться.)

Ускорение обучения, связанного с вычислениями, эквивалентно улучшению обучения. Тем не менее, тот факт, что рабочая нагрузка ограничена вычислительными ресурсами, не означает, что тренировка дольше или быстрее — единственный способ улучшить результаты.

Когда обучение не привязано к вычислительным ресурсам, вы можете позволить себе тренироваться столько, сколько захотите. Однако более длительное обучение модели может не сильно помочь или даже вызвать переобучение . Когда обучение не связано с вычислениями:

  • Вы можете тренироваться с очень низкими потерями при обучении, до такой степени, что дополнительное обучение может немного уменьшить потери при обучении, но не уменьшит существенно потери при проверке.
  • Вы можете легче выполнять настройку, особенно при настройке графиков снижения скорости обучения, поскольку они особенно сильно взаимодействуют с бюджетом обучения. Напротив, получение низких потерь при обучении с привязкой к вычислениям может потребовать идеального графика снижения скорости обучения.

Независимо от того, привязана ли данная рабочая нагрузка к вычислениям или нет, методы, которые увеличивают дисперсию градиентов (между пакетами), обычно замедляют прогресс обучения и, таким образом, могут увеличить количество шагов обучения, необходимых для достижения определенной потери при проверке. Любое из следующих событий может вызвать высокую дисперсию градиента:

  • Использование меньшего размера партии.
  • Добавление увеличения данных.
  • Добавление некоторых типов регуляризации (например, регуляризация отсева).

Решите, как долго тренироваться, если обучение не привязано к вычислительным ресурсам.

Ваша цель: тренируйтесь достаточно долго, чтобы модель достигла наилучшего результата, не тратя впустую тренировочные этапы.

Ваша главная цель — обеспечить, чтобы вы тренировались достаточно долго, чтобы модель достигла наилучшего результата, не тратя ненужных шагов обучения. Если сомневаетесь, выберите более длительную тренировку. Ваши показатели оценки (например, точность, полнота, AUC или F 1 ) никогда не должны ухудшаться при длительной тренировке, при условии, что вы правильно используете ретроспективный выбор контрольных точек и проверяете их достаточно часто.

Никогда не настраивайте число max_train_steps в исследовании. Вместо этого выберите значение и используйте его для всех испытаний. Из этих испытаний постройте шаг обучения, который находит ретроспективный выбор контрольной точки, чтобы уточнить выбор max_train_steps .

Например, если лучший шаг всегда приходится на первые 10% тренировки, то максимальное количество шагов слишком велико. Альтернативно, если лучший шаг — это постоянные последние 25% тренировки, вам может быть полезно тренироваться дольше и перенастроить график затухания. Идеальное количество шагов обучения может измениться при изменении архитектуры или данных (например, при добавлении дополнения данных). В следующем разделе описывается, как выбрать начальное значение-кандидат для max_train_steps на основе количества шагов, необходимых для «идеального соответствия» обучающему набору с использованием постоянной скорости обучения.

Возможно, можно будет уменьшить max_train_steps , если процесс обучения каким-то образом улучшится; например, с лучше настроенным оптимизатором или лучше настроенным графиком скорости обучения.

Алгоритм выбора первоначального кандидата для max_train_steps с использованием анализа скорости обучения

Вы можете выбрать первоначального кандидата для max_train_steps с помощью алгоритма развертки скорости обучения. Следующий алгоритм предполагает, что можно не только «идеально» подобрать обучающий набор, но и сделать это, используя график постоянной скорости обучения.

  1. Если возможно идеально подогнать весь обучающий набор, то должна существовать конфигурация (с некоторым значением max_train_steps ), которая идеально подходит ко всему обучающему набору. Найдите любую такую ​​конфигурацию и используйте ее значение max_train_steps в качестве отправной точки N
  2. Запустите проверку постоянной скорости обучения (то есть поиск скорости обучения по сетке) без увеличения данных и без регуляризации, где каждое испытание обучается на N шагов. Первоначальное предположение для max_train_steps должно заключаться в количестве шагов, необходимых для самого быстрого испытания скорости обучения для достижения идеальных результатов обучения.

ПРИМЕЧАНИЕ. Плохое пространство поиска может привести к самообману. Например, если все скорости обучения в исследовании слишком малы, вы можете ошибочно прийти к выводу, что необходимо очень большое значение max_train_steps . Как минимум, убедитесь, что оптимальная скорость обучения в исследовании не находится на границе пространства поиска.

Решите, как долго тренироваться, если обучение ограничено вычислительными ресурсами.

В некоторых случаях потери при обучении продолжают увеличиваться бесконечно, поэтому ограничивающими факторами становятся ваше терпение и вычислительные ресурсы. Но стоит ли тренироваться столько, сколько вы можете себе позволить? Не обязательно. Учтите следующее:

  • Возможно, вам удастся провести более эффективную настройку, проведя большее количество более коротких экспериментов, зарезервировав самые длинные «производственные циклы» для моделей, которые вы надеетесь запустить.
  • По мере того, как время обучения испытаниям приближается к пределу вашего терпения, эксперименты по настройке становятся более актуальными для ваших потенциальных кандидатов на запуск, но вы можете выполнить меньшее их количество.
  • Вероятно, вы сможете ответить на многие вопросы, тренируясь только примерно на 10% от продолжительности производства. Однако ваши выводы на данный момент могут быть неприменимы к экспериментам на 20% продолжительности производства, не говоря уже о 100%.

Разумным подходом является настройка в течение нескольких раундов с увеличением пределов количества шагов тренировки для каждого испытания. Вы можете провести столько раундов, сколько захотите, но обычно наиболее практичными являются 1-3 раунда. По сути, постарайтесь получить как можно больше понимания проблемы, используя испытания с очень быстрым сроком выполнения, сочетая следующее:

  • Тщательность настройки.
  • Актуальность для финальных, самых длинных пробежек.

Как только заданный лимит времени на одно испытание принесет полезную информацию, увеличьте время обучения и продолжайте настройку, при необходимости перепроверяя свои выводы на основе более коротких прогонов. В качестве отправной точки мы рекомендуем два этапа настройки:

  • Раунд 1: более короткие прогоны для поиска хорошей модели и гиперпараметров оптимизатора.
  • Раунд 2: Очень мало длительных прогонов с хорошими точками гиперпараметров для получения окончательной модели.

Самый большой вопрос при переходе от раунда 1 ко второму:

Как настроить графики снижения скорости обучения?

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

Раунд 1: много коротких тренировочных забегов

К сожалению, нет никакой гарантии, что хорошие гиперпараметры, обнаруженные при коротком неполном обучении, по-прежнему будут хорошим выбором, когда вы значительно увеличите продолжительность обучения. Однако для некоторых гиперпараметров хороший выбор часто достаточно коррелирует, чтобы первый раунд был полезен. Какие значения гиперпараметров, обнаруженные в более коротких прогонах, успешно переносятся в более длительные тренировочные прогоны? Мы не знаем; нам нужны дополнительные исследования. Но, основываясь на том, что нам известно на данный момент, вот наши подозрения в уменьшении вероятности передачи:

  • Очень вероятно, что переведут. Раннюю нестабильность обучения можно устранить в первом раунде настройки, используя меньшее количество шагов обучения. Следующие гиперпараметры могут быть перенесены с наибольшей вероятностью:
    • Продолжительность разминки
    • Инициализация
  • Вероятно, переведут. Драматическая победа в архитектуре модели обычно передается, но вероятны многие контрпримеры.
  • Может перенесу. Следующие гиперпараметры могут быть перенесены:
    • Алгоритм оптимизации и гиперпараметры будут передаваться «свободно».
    • Увеличение данных.
    • Регуляризация. Если невозможно идеально подогнать обучающий набор, модель может находиться в режиме, в котором регуляризация вряд ли поможет.
  • Вряд ли переведут. График скорости обучения вряд ли удастся перенести идеально. Обучение оптимальных для вычислений моделей большого языка предполагает, что даже график затухания переносится, но мы не считаем, что это верно в целом. Например, настройка затухания sqrt на небольшом количестве шагов обучения с последующим расширением до большого числа приводит к тому, что большая часть обучения происходит на слишком маленьких шагах. Скорее всего, вы сможете добиться «достаточно хороших результатов» с большинством графиков в пределах экстремального бюджета тренировок, но, скорее всего, вы увидите заметное улучшение производительности, если его настроить. Понимание смещения короткого горизонта в стохастической метаоптимизации описывает опасности близоруких попыток выбора скорости обучения.

Раунд 2: меньше пробежек, но более продолжительный.

Запустите лучшую конфигурацию гиперпараметров из раунда 1.

Предположение : 🤖 Используйте дополнительные шаги, чтобы продлить период обучения при высокой скорости обучения. Например, если вы используете линейный график, оставьте длину затухания фиксированной, начиная с раунда 1, и увеличьте период постоянного lr в начале. Для косинусного затухания сохраните базовый lr из раунда 1 и расширьте max_train_steps , как описано в разделе «Обучение оптимальных для вычислений моделей большого языка» .

Дополнительные тренировочные раунды могут иметь смысл для команд, обладающих всеми следующими характеристиками:

  • Очень зрелое моделирование
  • Тюнинг конвейеров
  • Очень длительные и дорогостоящие тренинги по производству

Однако дополнительные тренировочные прогоны часто оказываются непродуктивными.

Мы уже описали, как перейти от раунда 1 к раунду 2. Если вас не волнует время анализа и если эффективное использование вычислительных ресурсов является вашей первоочередной задачей, то мы рекомендуем экспоненциально увеличивать продолжительность обучающих прогонов (и, таким образом, время завершения исследования) на протяжении многих этапов настройки:

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