Как ускорить машинное обучение на GPU — представлена новая open source платформа

Nvidia представили open source платформу Rapids, задача которой ускорить работу алгоритмов машинного обучения на GPU. Рассказываем об особенностях инструмента и его аналогах.

vjekoggamdf_vnvi7chb5kdrj44.jpeg
/ фото Martin Brigden CC

Проблема обучения нейросетей


В списке технологий компании Nvidia есть архитектура параллельных вычислений CUDA. Её цель — ускорить проведение вычислений за счет передачи части задач GPU вместо CPU. В некоторых случаях это позволяет ускорить работу приложений и алгоритмов в 18 раз.

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

Для разработки алгоритмов МО используется большое количество различных библиотек. Многие из них написаны на языке Python. Но не все они поддерживают работу с CUDA. В качестве примера таких инструментов можно привести Python-библиотеки для машинного обучения scikit-learn и pandas. Чтобы запустить Python-код в архитектуре CUDA, исследователи используют отдельные библиотеки Numba или PyCUDA. При этом код некоторых компонентов приходится переписывать вручную, что бывает сложно, так как нужно знать особенности программирования для GPU.

Решение от Nvidia


С целью автоматизировать перенос кода, компания Nvidia представила новую открытую платформу Rapids. Разработчикам не нужно прибегать к разным библиотекам: они просто пишут код на Python, а Rapids автоматически оптимизирует его для запуска на GPU.

Для сопоставления процессов Rapids использует общую базу данных, которая лежит в памяти GPU. Данные хранятся в формате Apache Arrow, едином для всех инструментов платформы. Это решение помогает ускорить процесс машинного обучения в 50 раз по сравнению с системами, в которых используются и графические, и центральные процессоры.

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

Количество решений в репозитории GitHub Rapids активно пополняется. Например, там есть библиотека cuDF для подготовки данных и тренировки нейронной сети, и библиотека cuML позволяет разрабатывать алгоритмы машинного обучения, не вдаваясь в подробности программирования для CUDA.

Nvidia продолжит развивать платформу. Создатели проекта планируют добавить в Rapids инструменты для визуализации данных, анализа графов и глубокого обучения. Также в программу интегрируют фреймворк Apache Spark.

Что думают о платформе


В технологическом сообществе поддержали релиз Rapids, но её дальнейшее развитие вызвало несколько вопросов у экспертов и пользователей.

Например, в поддержку нового решения высказались менеджеры Cisco, Dell, NetApp, Lenovo и других компаний. Генеральный директор Anaconda Скотт Коллисон (Scott Collison) сказал, что Rapids упростит сбор и подготовку данных для обучения сложных систем ИИ. С ним согласен создатель Apache Arrow и pandas Уэс Маккинни (Wes McKinney). По его словам, Rapids приведет к росту производительности в задачах, связанных с созданием признаков (feature engineering).

pdxxmc0u7qqeinlavjtvkc6glls.jpeg
/ фото Sander van der Wel CC

Однако в сообществе также есть мнение, что Rapids нельзя считать действительно open source проектом. Система работает только с картами Nvidia, и выпуск платформы может быть маркетинговым ходом, чтобы привлечь новых клиентов. Компания пока не уточняла, будет ли платформа работать с устройствами других производителей.

Кто уже использует Rapids


IBM планирует внедрить платформу в сервисы для работы с системами искусственного интеллекта: PowerAI, Watson и в IBM Cloud. О поддержке Rapids объявила и Oracle — платформа доступна на инфраструктуре Oracle Cloud.

Новый продукт Nvidia также протестировали Walmart и Uber. Первой Rapids помог усовершенствовать алгоритмы системы, отвечающей за управление товарными запасами. По словам представителей ритейлера, Rapids ускорил развертку алгоритмов машинного обучения. Что касается Uber, то компания использует Rapids в разработке систем беспилотных автомобилей.

Альтернативное решение


Не только Nvidia разрабатывает платформу для ускорения МО. Например, компания AMD занимается проектом ROCm (Radeon Open Compute). Это открытая платформа для высокопроизводительных вычислений на GPU.

Особенность ROCm состоит в том, что она не зависит от языка программирования и способна работать практически с любой видеокартой. В том числе c картами Nvidia. Для этого используется специальный диалект C++, который называется HIP. Он упрощает преобразование приложений CUDA в портируемый код на С++. Код конвертируется автоматически специальной системой Hipify.

При этом ROCm поддерживает большое количество библиотек Math Acceleration Libraries. Среди них можно выделить BLAS, FFT и свертку тензора.

Эксперты ИТ-индустрии отмечают, что решения с открытым исходным кодом для акселерации гетерогенных и GPU-вычислений, подобные ROCm и Rapids, дают разработчикам возможность эффективнее использовать вычислительные ресурсы и получать большую производительность от имеющегося в распоряжении железа.


P.S. Несколько материалов из Первого блога о корпоративном IaaS:

P.P. S. Кратко об IaaS-технологиях — в нашем Telegram-канале:

© Habrahabr.ru