Быстрые вычисления XGBoost, LightGBM и CatBoost на процессоре

Ускорите ваши рабочие задачи по выводу XGBoost, LightGBM и CatBoost с помощью библиотеки Intel® oneAPI Data Analytics Library (oneDAL)

Несмотря на недавнюю популярность генеративного искусственного интеллекта, применение градиентного бустинга на решающих деревьях остается лучшим методом для работы с табличными данными. Он обеспечивает более высокую точность по сравнению с многими другими техниками, даже с нейронными сетями. Многие люди используют градиентный бустинг XGBoost*, LightGBM и CatBoost для решения различных задач реального мира, проведения исследований и участия в соревнованиях Kaggle. Хотя эти фреймворки демонстрируют хорошую производительность “из коробки”, скорость предсказания все еще можно улучшить. Учитывая, что предсказание возможно самый важный этап рабочего процесса машинного обучения, улучшение производительности может оказаться довольно полезным.

В следующем примере показано, как преобразовать ваши модели, чтобы получить существенно более быстрые предсказания без потери качества (Таблица 1).

import daal4py as d4p d4p_model = d4p.mb.convert_model(xgb_model) d4p_prediction = d4p_model.predict(test_data) 

Изображение 1

Обновления oneDAL

Прошло несколько лет с момента нашей последней статьи об ускоренном выводе (Улучшение производительности вывода XGBoost и LightGBM), поэтому мы решили дать обзор изменений и улучшений, произошедших с тех пор:

  1. Упрощенный API и согласованность с фреймворками градиентного бустинга
  2. Поддержка моделей CatBoost
  3. Поддержка отсутствующих значений
  4. Улучшение производительности

Упрощенный API и согласованность с фреймворками градиентного бустинга

Теперь у вас есть только методы convert_model() и predict(). Вы можете легко интегрировать это в существующий код с минимальными изменениями:

Вы также можете преобразовать обученную модель в daal4py:

XGBoost:

d4p_model = d4p.mb.convert_model(xgb_model)

LightGBM:

d4p_model = d4p.mb.convert_model(lgb_model)

CatBoost:

d4p_model = d4p.mb.convert_model(cb_model)

Также поддерживаются оценщики в стиле scikit-learn*:

from daal4py.sklearn.ensemble import GBTDAALRegressor reg = xgb.XGBRegressor() reg.fit(X, y) d4p_predt = GBTDAALRegressor.convert_model(reg).predict(X)

Обновленный API позволяет использовать модели XGBoost, LightGBM и CatBoost всех в одном месте. Вы можете также использовать один и тот же метод predict() как для классификации, так и для предсказания, также как и в основных фреймворках. Подробнее читайте в документации.

Поддержка моделей CatBoost

Добавление поддержки моделей CatBoost в daal4py значительно расширяет гибкость и эффективность библиотеки при работе с задачами градиентного бустинга. CatBoost, сокращение от категориального бустинга, известен своей исключительной скоростью и производительностью, и с ускорением daal4py вы можете стать еще быстрее. (Примечание: Категориальные признаки не поддерживаются для вывода.) С этим дополнением daal4py охватывает три наиболее популярных фреймворка градиентного бустинга.

Поддержка отсутствующих значений

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

Поддержка отсутствующих значений теперь внедрена в версии 2023.2 daal4py. Вы можете использовать модели, обученные на данных, содержащих отсутствующие значения, и использовать данные с отсутствующими значениями для вывода. Это приводит к более точным и надежным предсказаниям, упрощает процесс подготовки данных для ученых-исследователей и инженеров данных.

Улучшение производительности

В oneDAL добавлено множество дополнительных оптимизаций с момента наших последних сравнений производительности (Таблица 2).

Все тесты проводились с использованием scikit-learn_bench на экземпляре AWS* EC2 c6i.12xlarge (с процессором Intel® Xeon® Platinum 8375C с 24 ядрами) со следующим программным обеспечением: Python* 3.11, XGBoost 1.7.4, LightGBM 3.3.5, CatBoost 1.2 и daal4py 2023.2.1.

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

Как получить daal4py

daal4py является интерфейсом Python для библиотеки oneDAL и доступен на PyPi, conda-forge и главных каналах conda. Это полностью открытый проект, и мы приветствуем любые проблемы, запросы или вклады, которые можно сделать через GitHub репозиторий. Чтобы установить библиотеку из PyPi, просто запустите:

pip install daal4py

Или вариант conda-forge:

conda install -c conda-forge daal4py --override-channels

Эти результаты показывают, что, внеся простые изменения в свой код, вы можете значительно ускорить задачи анализа данных с градиентным бустингом на вашем текущем оборудовании Intel®. Эти улучшения в производительности могут снизить затраты на вычисления и помочь вам получать результаты быстрее – все это без потери качества.


Leave a Reply

Your email address will not be published. Required fields are marked *