Авторы Ник Беккер, Данте Гама Дессавр и Джон Зедлевски

TPOT, одна из самых популярных библиотек автоматизированного машинного обучения Python, теперь ускоряется с помощью RAPIDS cuML и DMLC XGBoost. Пользователи TPOT, имеющие доступ к графическому процессору NVIDIA, могут ускорить свои конвейеры AutoML с помощью новой, изначально поддерживаемой конфигурации TPOT cuML, изменив только один параметр в своем коде в недавно выпущенной версии 0.11.6.

Да, AutoML на базе графического процессора работает быстрее. Так что никаких сюрпризов. Но он также более точен и дешевле. Моделирование с ускорением на графическом процессоре позволяет библиотекам AutoML, таким как TPOT, находить конвейер моделей с более высокой точностью в рамках заданного временного ограничения.

В этом посте мы рассмотрим пример использования TPOT с графическими процессорами для значительного ускорения конвейеров классификации AutoML для двух общедоступных наборов данных. В наших экспериментах TPOT с ускорением на GPU был:

  • Более точный поиск конвейеров, точность которых на 2% и 1,3% выше, соответственно, через восемь часов
  • Быстрее, обнаруживая конвейер с большей точностью через один час, чем конвейер ЦП через восемь часов.
  • Менее затратно из-за необходимости запускать TPOT только часть времени, чтобы получить более высокую точность

Чтобы увеличить точность на 2%, представьте, что модели обнаружения мошенничества вашей кредитной карты оставляют 2% точности (или отзыв) на столе. Это потенциально миллионы долларов мошенничества, головной боли и стресса в год, которых можно было бы избежать.

Это потрясающие результаты. Прежде чем мы углубимся, давайте поговорим об AutoML и TPOT.

AutoML

Автоматизированное машинное обучение - это подход к прогнозному моделированию, основанный на алгоритмических методах поиска наиболее мощного сочетания моделей проектирования функций и машинного обучения для данной проблемы. С AutoML, чем больше комбинаций функций и моделей вы протестируете, тем лучше будут ваши результаты. Однако это означает, что мы обучаем гораздо больше, чем просто одну модель, это более ресурсоемкая задача, чем базовые сценарии использования машинного обучения. К сожалению, это может занять много времени и сделать это дорого.

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

TPOT

TPOT - одна из самых эффективных библиотек AutoML в мире вычислений. TPOT является идеальным помощником в области науки о данных. Он обеспечивает удобный интерфейс, интеграцию с scikit-learn и Dask, а также использует генетические алгоритмы для эффективного устранения неэффективных конвейеров моделирования. Но он по-прежнему сталкивается с фундаментальным узким местом в виде дорогостоящих в вычислительном отношении конвейеров моделирования.

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

Пример использования: влияние ускорения графического процессора

Чтобы проверить влияние ускорения графического процессора, мы провели серию ограниченных по времени экспериментов с использованием выборок из 500 000 строк из двух канонических общедоступных наборов данных классификации машинного обучения (бозон Хиггса и задержки авиакомпаний) [1]. TPOT обеспечивает временную привязку экспериментов с помощью переменной max_time_mins, которая прекращает установку дополнительных конвейеров по истечении указанного срока. Обратите внимание, что фактическое истекшее время варьируется, так как TPOT на ЦП может занять много времени, чтобы завершить обучение существующих конвейеров, если они велики.

Настраивать

Чтобы приблизить пример реальных ограничений по времени, целевое время эксперимента варьировалось от 1 часа до 8 часов. Мы настроили TPOT для использования пятикратной перекрестной проверки и установили размер популяции 30 (достаточно большой, чтобы почти полностью заполнить все доступные ресурсы ЦП, но не настолько большой, чтобы мы могли ждать несколько дней, чтобы получить информативные результаты). Мы провели эти эксперименты на системе с двумя процессорами Intel Xeon Platinum 8168 и одним графическим процессором NVIDIA V100.

Полученные результаты

Ускоренная TPOT обнаружила трубопроводы с 2% большей точностью в наборе данных о бозоне Хиггса и на 1,3% более высокой точностью в наборе данных Airlines. Это огромное увеличение точности при том же бюджете времени. Для обоих образцов наборов данных конфигурация с ускорением на графическом процессоре достигла более высокой точности за один час, чем значение по умолчанию, достигаемое за восемь часов. Вместо того, чтобы тратить день на ожидание результатов, специалисты по данным могут приступить к следующему эксперименту.

Как это возможно? Теперь TPOT может оценивать намного больше отдельных конвейеров за эксперимент, что помогает ему намного быстрее находить конвейер с более высокой точностью. Дело не в том, что TPOT полностью на ЦП в конечном итоге не добрался бы до этой цели, но связанные с этим вычислительные и временные затраты делают его непрактичным даже с 500 000 строк.

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

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

Последний конвейер для TPOT по умолчанию достиг точности перекрестной проверки 87,2%. Последний конвейер для GPU TPOT достиг точности 88,5%, что на 1,3% больше. В соответствии с ожиданиями, получившийся конвейер с ускорением на GPU является более сложным, что подчеркивает влияние оценки большего количества конвейеров.

Конечный конвейер TPOT по умолчанию с точностью 87,2%:

Pipeline(steps=[(‘extratreesclassifier’,
     ExtraTreesClassifier(bootstrap=True,
     max_features=0.9500000000000001,
     min_samples_split=11, 
random_state=12))])

Конечный конвейер TPOT GPU с точностью 88,5%:

Pipeline(steps=[(‘zerocount-1’, ZeroCount()),
      (‘variancethreshold’, 
VarianceThreshold(threshold=0.01)),
      (‘selectpercentile’, SelectPercentile(percentile=43)),
      (‘pca’, PCA(iterated_power=5, random_state=12,      
      svd_solver=’randomized’)),
      (‘zerocount-2’, ZeroCount()),
      (‘xgbclassifier’, XGBClassifier(alpha=1, base_score=0.5, booster=’gbtree’, colsample_bylevel=1, colsampl…
      importance_type=’gain’, interaction_constraints=’’, 
learning_rate=0.5, max_delta_step=0, max_depth=9,
      min_child_weight=3, missing=nan,
monotone_constraints=’(0,0,0,0,0,0,0,0)’,
     n_estimators=100, n_jobs=1, nthread=1,
     num_parallel_tree=1, random_state=12, reg_alpha=1,
     reg_lambda=1, 
scale_pos_weight=1, subsample=1.0,
     tree_method=’gpu_hist’, validate_parameters=1, 
verbosity=None))])

Снижение цены

В этих экспериментах мы получили лучшие результаты за один час с ускоренным TPOT по сравнению с девятью часами (фактическое время) с TPOT Default. Что касается ценовых эквивалентов облачных инстансов AWS, мы хотели бы сравнить один час на инстансе p3.2xlarge (3,06 доллара в час) с девятью часами на инстансе m5.16xlarge (3,072 доллара в час). В этих двух экспериментах TPOT с ускорением на GPU может быть примерно в 9 раз дешевле по общей стоимости и вернуть лучшую модель.

Начиная

Начать легко. Все, что вам нужно сделать, это передать «TPOT cuML» в config_dict аргумент вашего TPOTClassifier или TPOTRegressor вместо того, чтобы оставлять его как None. Не забудьте оставить n_jobs=1 (по умолчанию).

tpot = TPOTClassifier(
   generations=5,
   population_size=20,
   config_dict=”TPOT cuML”,
   cv=5,
   verbosity=2,
)
tpot.fit(X, y)

Репозиторий TPOT на Github также включает краткие примеры, демонстрирующие классификацию и регрессию. Если в вашей среде установлен cuML и вы имеете доступ к графическому процессору, все остальное позаботится само. Мы также рекомендуем установить XGBoost.

Ах да, и он масштабируется с Dask для работы с несколькими GPU и даже с несколькими узлами, если вам нужны еще более быстрые результаты или вы хотите протестировать еще больше конвейеров за эксперимент. Просто разверните кластер Dask-CUDA, установите dask-ml через conda или pip и передайте use_dask=True вашему TPOTClassifier или TPOTRegressor.

Заключение

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

TPOT уже является одним из самых эффективных инструментов AutoML в мире, и мы рады представить ускорение на GPU ученым и инженерам, использующим TPOT, и тем, кто слышит об этом впервые. С лучшим, более быстрым и менее дорогим AutoML вы можете быть уверены, что строите лучшую модель из своего набора данных.

Мы только начали. Присоединяйтесь к движению. Отправьте запрос функции или отправьте запрос на перенос на Github для cuML, XGBoost или TPOT. Хотите начать работу с ускоренным AutoML? Посетите веб-страницу RAPIDS Начало работы со ссылками, которые помогут вам загрузить готовые контейнеры Docker или установить их напрямую через Conda. Тогда просто pip install tpot и вперед на скачки.

— — — — — — — — — — — — — -

[1]
tpot-benchmark.py
tpot-benchmark-config.yml