Статьи

Параллельный поиск по сетке в H2O

По своей сути H 2 O является платформой для распределенных вычислений в памяти. На вершине платформы распределенных вычислений реализованы алгоритмы машинного обучения. В H2O мы разрабатываем каждую операцию, будь то преобразование данных, обучение моделям машинного обучения или даже анализ для использования модели распределенных вычислений. Для быстрой работы с большими данными это необходимо.

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

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


Вы также можете прочитать: 
Машинное обучение с H2O — практическое руководство для ученых-данных

Одной из областей, где строится множество моделей, является поиск по сетке . Grid Search «проходит» через пространство гиперпараметров и строит соответствующие модели. Стратегия ходьбы может отличаться, но все они имеют одну и ту же проблему — нужно построить много моделей. Как правило, процесс сборки ограничен временем. И чем больше моделей построено, тем лучше.

До сих пор H2O, как и другие платформы машинного обучения, обучала одну модель за раз. Начиная с версии H2O 3.28.0.1, мы предоставили нашим пользователям способ построения моделей с использованием параллельного поиска по сетке. Это фактически означает, что n > 1в кластере могут обучаться модели. В то время как одна модель ожидает или выполняет менее оптимизируемые вычисления, другие модели могут использовать ресурсы кластера. Это приводит к большему количеству моделей, построенных за меньшее время .

Как использовать параллельный поиск по сетке

По умолчанию параллельное построение модели для поиска по сетке отключено. Это может измениться в ближайшем будущем. Мы ввели новый параметр, названный parallelismдля поиска по сетке. Такой параметр, доступный в Flow, Python и R, установлен parallelism = 1по умолчанию. Это означает, что модели строятся последовательно при выполнении поиска по сетке. Чтобы строить модели параллельно, используя поиск по сетке, у пользователей есть два варианта:

  1. Установите parallelism = nгде n > 1,
  2.  

  3. Set parallelism = 0.

Установка parallelismаргумента на любое число, большее, чем 1предписывает H2O сохранять ровно столько моделей, которые строятся одновременно, до тех пор, пока не будут достигнуты другие ограничения (время, максимальное количество моделей и т. Д.). Тем не менее, если задать для него значение 0H2O, можно свободно использовать внутреннюю эвристику, чтобы определить наилучшее количество моделей для обучения за один раз. Мы называем это адаптивным режимом .

В настоящее время адаптивный режим не имеет строгого контракта, и внутренняя эвристика может измениться. Адаптивный режим предполагает, что весь кластер состоит из машин с равными доступными ресурсами и просто обучает вдвое больше моделей, чем число процессоров, доступных на узел. Учитывая кластер nузлов, где каждый узел имеет cколичество процессоров, количество моделей будет 2 * c. Количество узлов или общее количество доступных процессоров не играет никакой роли.

питон

Параллельный поиск Сетки может быть включен путем простого добавления parallelism = nв H2OGridSearchаргументы конструктора, где n = 0для адаптивного режима или n > 1для точного контроля параллельности. Указание n = 1означает секвенциальный режим.


Джава