Поделиться через


Рекомендации по работе и устранению неполадок в Hyperopt

Примечание.

Версия Hyperopt с открытым исходным кодом больше не поддерживается.

Hyperopt будет удален в следующей основной версии DBR ML. Azure Databricks рекомендует использовать Optuna для однопоточной оптимизации или RayTune для аналогичного опыта, как в случае с устаревшей функцией распределенной настройки гиперпараметров в Hyperopt. Дополнительные сведения об использовании RayTune в Azure Databricks.

Рекомендации

  • Байесовские подходы могут быть намного более эффективными, чем поиск по сетке и случайный поиск. Таким образом, с помощью алгоритма Hyperopt Tree of Parzen Estimators (TPE) можно исследовать больше гиперпараметров и более широкие диапазоны. Использование базы знаний домена для ограничения домена поиска позволяет оптимизировать настройку и добиться лучших результатов.
  • При использовании hp.choice() Hyperopt возвращает индекс списка значений. Поэтому параметр, зарегистрированный в MLflow, также является индексом. Используйте hyperopt.space_eval() для получения значений параметров.
  • Для моделей с длительным временем обучения начните экспериментировать с небольшим набором данных и многими гиперпараметрами. Используйте MLflow, чтобы определить наиболее производительные модели и определить, какие гиперпараметры можно исправить. Таким образом, можно уменьшить пространство параметров при подготовке к настройке в масштабе.
  • Воспользуйтесь преимуществами поддержки Hyperopt для условных измерений и гиперпараметров. Например, при вычислении нескольких разновидностей спуска градиента вместо того, чтобы ограничивать пространство гиперпараметров как обычные гиперпараметры, можно включить в Hyperopt условные гиперпараметры, которые подходят только для подмножества разновидностей. Для получения дополнительной информации об использовании условных параметров см. Определение области поиска.
  • При использовании SparkTrials настройте параллелизм для кластеров, поддерживающих только ЦП, и кластеров с поддержкой GPU. В Azure Databricks кластеры ЦП и GPU используют разное количество потоков исполнителя на каждый рабочий узел. Кластеры ЦП используют несколько потоков исполнителя для каждого узла. Кластеры GPU используют только один поток исполнителя на каждом узле, чтобы избежать конфликтов между несколькими задачами Spark, пытающимися использовать один GPU. Хотя это оптимально подходит для библиотек, написанных для GPU, это означает, что максимальный параллелизм уменьшается на кластерах GPU, поэтому следует учитывать, сколько GPU каждая пробная версия может использовать при выборе типов экземпляров GPU. Для получения дополнительной информации см. Кластеры с поддержкой GPU.
  • Не используйте SparkTrials в кластерах с автомасштабированием. Hyperopt выбирает значение параллелизма в начале выполнения. Если впоследствии кластер автоматически масштабируется, Hyperopt не сможет воспользоваться преимуществами нового размера кластера.

Устранение неполадок

  • Передаваемое значение NaN (не число) обычно означает, что функция цели, передаваемая в fmin(), возвращает значение NaN. Это не влияет на другие запуски, и его можно спокойно проигнорировать. Чтобы предотвратить этот результат, попробуйте настроить пространство гиперпараметров или изменить целевую функцию.
  • Поскольку Hyperopt использует алгоритмы стохастического поиска, потери обычно не уменьшаются монотонно с каждым запуском. Однако эти методы часто наиболее быстро находят лучшие параметры, чем другие методы.
  • Как Hyperopt, так и Spark несут дополнительную нагрузку, которая может доминировать в продолжительности пробной версии для коротких пробных запусков (несколько десятков секунд). Наблюдаемое ускорение может быть небольшим или даже нулевым.

Пример записной книжки: рекомендации по наборам данных различных размеров

SparkTrials запускает пробные версии рабочих узлов Spark. Эта записная книжка содержит рекомендации по перемещению наборов данных различных порядков величины на рабочие узлы при использовании SparkTrials.

Работа с наборами данных различных порядков величины чисел в записной книжке

Получить записную книжку