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

Одним из наиболее эффективных алгоритмов машинного обучения, широко используемых в последние несколько лет, является XGboost. XGBoost — это программная библиотека с открытым исходным кодом, которая предоставляет платформу для повышения градиента.

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

Недавно крупные облачные и высокопроизводительные провайдеры, такие как Amazon AWS, Alibaba, Huawei и Nimbix, начали развертывание FPGA в своих центрах обработки данных. Однако в настоящее время случаи широкого использования FPGA в области машинного обучения ограничены.

С этой целью InAccel сегодня выпустила IP-ядро FPGA с открытым исходным кодом для обучения XGboost.

Ускоренное FPGA решение для алгоритма XGBoost основано на точном (жадном) алгоритме создания дерева. Он может обеспечить ускорение до 26-кратного по сравнению с однопоточным выполнением и до 5-кратного по сравнению с 8-поточным выполнением ЦП соответственно. Ускорение достигается за счет раскрытия параллелизма и повторного использования данных в измерении признаков набора данных.

Акселератор накапливает градиенты для каждой функции, вычисляет возможные разбиения и сохраняет наилучшее разбиение для каждого узла. Чтобы избежать частых обращений к оперативной памяти FPGA DDR, мы загружаем до 65536 записей в BRAM внутри ускорителя. Кроме того, чтобы сохранить накопление и лучше всего рассчитанное разделение каждого узла, мы храним до 2048 узлов в BRAM внутри ускорителя. Чтобы иметь возможность накапливать значения с плавающей запятой с минимальным интервалом, мы конвертируем их в арифметику с фиксированной запятой с незначительным изменением результатов.

Также предоставляется необходимое программное обеспечение, интегрирующее ускоритель с библиотекой XGBoost. Добавлен новый метод дерева под названием fpga_exact, который использует наш модуль обновления и инструмент обрезки.

IP-ядро для XGboost использует вычислительную мощность Xilinx FPGA. IP-ядро оптимизировано для ПЛИС Xilinx, таких как карты Alveo U200 и U250, а также для ПЛИС, доступных в виде экземпляров у облачных провайдеров (f1 в AWS и f3 в облаке Alibaba).

Выпуск IP-ядра XGboost поможет продемонстрировать преимущества FPGA в области машинного обучения и предоставит сообществу специалистов по данным возможность экспериментировать, развертывать и использовать FPGA для ускорения своих приложений машинного обучения.

InAccel предлагает все необходимые API для бесшовной интеграции с Python, Java и Scala. Это означает, что специалистам по данным и инженерам данных вообще не нужно менять свой код. Кроме того, благодаря уникальному Менеджеру ресурсов FPGA он обеспечивает мгновенное масштабирование до нескольких плат FPGA.

IP-ядро доступно на: https://github.com/InAccel/xgboost

InAccel специализируется на разработке высокопроизводительных ускорителей для машинного обучения, анализа данных, обработки данных (сжатие, шифрование) и финансовых приложений. Ускорители от InAccel совместимы с высокоуровневой распределенной инфраструктурой, такой как Apache Spark. InAccel предоставляет уникальный менеджер ресурсов FPGA, который позволяет мгновенно масштабировать IP-ядра для множества FPGA, а также обеспечивает виртуализацию и беспроблемное совместное использование ресурсов FPGA многими приложениями.