Пакет RAPIDS XGBoost4J-Spark уже доступен
Авторы: Энди Фенг, Томас Грейвс, Роберт Эванс, Джейсон Лоу, Гэри Шен
Хотя RAPIDS начинался с фокусировки на Python API, многие хотят ощутить такое же ускорение NVIDIA GPU в Apache Spark; на самом деле, у нас их много в NVIDIA. Когда RAPIDS впервые был запущен, у нас был план по ускорению Apache Spark, а также Dask, и мы хотим поделиться некоторыми основными достижениями, которых мы добились за последние пару месяцев. Apache Spark - ведущая платформа для работы с большими данными, и наша цель - сделать графические процессоры NVIDIA первоклассными. Кроме того, мы хотим дать сообществу возможность беспрепятственно выбирать ускоритель для обработки данных и машинного обучения на разных языках. С помощью графических процессоров пользователи могут использовать параллелизм данных за счет обработки столбцов вместо традиционного чтения на основе строк, изначально разработанного для процессоров.
Четыре достижения
Работая с лидерами отрасли в сообществе открытого исходного кода, чтобы заложить основу для нашего видения, мы имеем:
- представил предложение (СПАРК-24615) и работал с лидерами отрасли над планированием с учетом GPU. Это позволит пользователям изначально планировать задания Apache Spark на графических процессорах и доступно в Apache Spark 3.0.
- запущено поэтапное планирование ресурсов (СПАРК-27495).
- внесло предложение по обработке столбцов (SPARK-27396), которое было одобрено, и мы работаем над внесением изменений в код, чтобы сделать эту функцию доступной в Apache Spark 3.0.
- выпустила пакет RAPIDS XGBoost4J-Spark для сквозных конвейеров XGBoost с ускорением на GPU на Apache Spark. За прогрессом можно следить здесь. Это позволит:
- Пользователи XGBoost должны иметь встроенную поддержку RAPIDS cuDF. Вы можете следить за прогрессом в этой работе здесь.
- Изоляция и назначение графических процессоров в мультитенантном кластере графических процессоров. Это было отправлено в библиотеку DMLC XGBoost здесь
- Поддержка внешней памяти в будущем для обучения XGBoost на графических процессорах. Следите за нашим прогрессом здесь.
Как всегда, наша цель - разместить эти модификации в соответствующих библиотеках. Наша цель - навести больше мостов и внести свой вклад в стандарты в экосистеме больших данных.
Почему мы начали с XGBoost?
XGBoost - это популярная библиотека повышения градиента, которая быстро и точно решает многие проблемы науки о данных. XGBoost4J-Spark - это ведущий механизм, позволяющий предприятиям проводить обучение и делать выводы распределенному машинному обучению. XGBoost4J-Spark позволяет XGBoost обучать и выводить данные на Apache Spark между узлами.
Что в выпуске?
Мы рады выпустить RAPIDS XGBoost4J-Spark для ускорения сквозных конвейеров XGBoost на Apache Spark. С помощью изменения кода в одну строку существующее приложение Spark XGBoost сможет использовать графические процессоры для загрузки данных Spark, преобразования данных XGBoost, а также обучения и вывода модели.
Созданный на основе новейшего кода DMLC XGBoost, RAPIDS XGBoost4J-Spark внесет в проект следующие улучшения производительности:
- Включите кластеры Apache Spark 2.x (YARN, Kubernetes, Standalone) для выполнения сквозных задач XGBoost на графических процессорах. Это ранний доступ к нашему планировщику с поддержкой графического процессора. Вы можете следить за нашим прогрессом здесь.
- Загружайте наборы данных из различных источников (HDFS, облачное хранилище) в RAPIDS cuDF DataFrame с помощью нашего API-интерфейса чтения Apache Spark с ускорением на GPU. Это краткий обзор нашей колоночной обработки SPIP.
- Преобразуйте RAPIDS cuDF DataFrame непосредственно в собственный DMatrix XGBoost для обучения и вывода на основе графического процессора.
Этот выпуск RAPIDS Spark XGBoost обеспечивает ранний доступ ученых и инженеров по данным и позволяет нам собирать ценные отзывы сообщества. Со временем все эти улучшения будут объединены в проекты Apache Spark и DMLC XGBoost. Мы рады, что усовершенствование планировщика с поддержкой графического процессора было принято и объединено с репозиторием Apache Spark для выпуска Apache Spark 3.0. Поддержка фреймов данных GPU добавляется через предложение Spark здесь.
Тестирование RAPIDS XGBoost4J-Spark:
XGBoost имеет встроенную поддержку для работы с несколькими графическими процессорами, что может обеспечить еще более значительные улучшения. Мы видим 8-кратное улучшение производительности при тестировании XGBoost на графических процессорах, сравнивая 2 графических процессора NVIDIA T4 с 50 виртуальными ЦП с 300 ГБ ОЗУ в кластере Yarn. Мы используем программу чтения cuDF RAPIDS для загрузки данных CSV в каталог памяти GPU. Затем мы выполняем преобразование с нулевым копированием в памяти графического процессора из кадра данных cuDF в формат D-матрицы. Это исключает передачу памяти хоста в память графического процессора. Наконец, мы обучаем модель XGBoost на GPU.
Как загрузить и использовать распределенный XGBoost4J?
Прежде чем начать, ознакомьтесь с нашим списком предварительных условий для использования пакета XGBoost4J-Spark в графическом процессоре.
Требования к оборудованию
- Архитектура графического процессора NVIDIA Pascal ™ или лучше
- Многоузловые кластеры с однородной конфигурацией графического процессора
Требования к программному обеспечению
- Ubuntu 16.04 / Ubuntu 18.04 / CentOS 7
- Драйвер NVIDIA 410.48+
- CUDA 9.2 / 10.0
- NCCL 2.4.7
- Spark 2.3.x / 2.4.x
Начните использовать распределенное обучение в памяти между несколькими узлами и несколькими графическими процессорами с использованием популярных фреймворков кластерных менеджеров на Spark, таких как YARN, Kubernetes и Standalone; инструкции см. В ссылках на документацию ниже.
- Руководство по началу работы с Apache Hadoop YARN
- Руководство по началу работы с Kubernetes
- Автономное руководство по началу работы
Мы сделали артефакты XGBoost с ускорением на GPU доступными в публичном репозитории maven. Вам просто нужно добавить следующую зависимость в свой pom.xml. Классификатор позволяет вам выбрать JAR в зависимости от вашей ОС и версии NVIDIA CUDA.
<dependency> <groupId>ai.rapids</groupId> <artifactId>xgboost4j-spark</artifactId> <version>${xgboost.version}</version> <classifier>${xgbClassifier}</classifier> </dependency>
Чтобы увидеть, как XGBoost интегрируется с cuDF и Apache Spark, ознакомьтесь с этими примерами приложений и записными книжками. Пример ипотеки применяет данные Fannie Mae для прогнозирования просрочек по ипотеке (проблема классификации). Следуйте нашим инструкциям readme, чтобы создать образцы приложений Spark XGBoost с помощью spark-submit или интерактивных записных книжек.
Оставьте нам свой отзыв:
Учитывая, что это бета-версия, пожалуйста, помогите нам, предоставив отзывы о том, что вам нравится и что вы хотите видеть в будущих выпусках, чтобы мы могли соответствующим образом скорректировать нашу дорожную карту. Отправляйте вопросы и присоединяйтесь к разговору!