Добавление дополнительных точек интеграции, расширение функциональности и повышение производительности.

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

Ниже мы выделяем некоторые изменения, внесенные в 22.02, в том числе:

  • Расширенная поддержка объяснимости модели с помощью значений SHAP.
  • Новая функциональность, включая дополнительные методы группировки данных в RAPIDS cuDF.
  • Больше интеграции с другими платформами, включая поддержку RAPIDS cuXfilter в Google Colab.

Новые возможности

Следующие обновления были сделаны для расширения функциональных возможностей RAPIDS и предоставления пользователям дополнительных возможностей использования RAPIDS в их повседневной работе.

Дальнейшее расширение модуля объяснения cuML

Возможность объяснить решения, принимаемые моделями машинного обучения, становится все более важным требованием для многих реальных сценариев использования. Основываясь на экспериментальных функциях, представленных в предыдущем выпуске, мы рады добавить дополнительную поддержку объяснимости моделей с возможностью вычисления значений SHAP для более широкого диапазона моделей. Теперь вы можете использовать значения SHAP для моделей из XGBoost, моделей LightGBM и случайных лесов с категориальными переменными как из scikit-learn, так и из cuML.

Библиотека кадров данных RAPIDS (cuDF)

Два дополнительных метода groupby были добавлены в библиотеку CUDF RAPIDS в версии 22.02. Теперь вы можете вычислить коэффициент корреляции Пирсона между столбцами фрейма данных, используя функцию .corr(), и использовать .transform() для применения агрегирования к группам и передачи результатов по размеру группы.

Преобразование:

import cudf
df = cudf.DataFrame({‘a’: [2, 1, 1, 2, 2], ‘b’: [1, 2, 3, 4, 5]})
df.groupby(‘a’).transform(‘max’)
b
0 5
1 3
2 3
3 5
4 5

Коэффициент корреляции Пирсона:

import cudf
gdf = cudf.DataFrame({
    "id": ["a", "a", "a", "b", "b", "b", "c", "c", "c"],
    "val1": [5, 4, 6, 4, 8, 7, 4, 5, 2],
    "val2": [4, 5, 6, 1, 2, 9, 8, 5, 1],
    "val3": [4, 5, 6, 1, 2, 9, 8, 5, 1]})
gdf
id  val1  val2  val3
0  a     5     4     4
1  a     4     5     5
2  a     6     6     6
3  b     4     1     1
4  b     8     2     2
5  b     7     9     9
6  c     4     8     8
7  c     5     5     5
8  c     2     1     1
gdf.groupby("id").corr(method="pearson")
     val1      val2      val3
id
a   val1  1.000000  0.500000  0.500000
    val2  0.500000  1.000000  1.000000
    val3  0.500000  1.000000  1.000000
b   val1  1.000000  0.385727  0.385727
    val2  0.385727  1.000000  1.000000
    val3  0.385727  1.000000  1.000000
c   val1  1.000000  0.714575  0.714575
    val2  0.714575  1.000000  1.000000
    val3  0.714575  1.000000  1.000000

Десятичный тип 128 в cuDF

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

s = cudf.Series([1, 2, 3, 4], dtype=cudf.Decimal128Dtype(scale=5, precision=6))
s
0 1.00000
1 2.00000
2 3.00000
3 4.00000
dtype: decimal128
s+s
0 2.00000
1 4.00000
2 6.00000
3 8.00000
dtype: decimal32

Dask-SQL [экспериментальный]

Основываясь на экспериментальной поддержке GPU для Dask-SQL через RAPIDS, которая была представлена ​​в RAPIDS 21.12, в этом последнем выпуске добавлена ​​поддержка обучения с несколькими GPU и логических выводов для моделей cuML и XGBoost непосредственно в операторах SQL. В этом выпуске мы также представили базовую поддержку фильтрации чтения Dask в операторах CREATE TABLE WITH, о которой вы можете узнать больше в этом блоге. Мы продолжаем расширять грамматику Dask-SQL и улучшать производительность и эффективность за кулисами.

Интеграция с GPUDirect Storage

Одной из основных потерь времени при выполнении рабочих нагрузок на графических процессорах являются операции ввода-вывода. В версии 22.02 RAPIDS функция GPUDirect Storage (GDS) включена по умолчанию, что обеспечивает прямой доступ к памяти между памятью графического процессора и хранилищем, позволяет избежать дребезга буфера через ЦП и обеспечивает оптимизацию операций ввода-вывода.

поддержка cuxfilter в SageMaker Studio Lab и Google CoLab

Cuxfilter — это платформа RAPIDS, которая позволяет подключать визуализации к перекрестной фильтрации с ускорением на GPU, что дает вам возможность быстро и легко исследовать большие наборы данных. За последние несколько месяцев была проделана обширная работа по рефакторингу бэкенда cuxfilter для использования Holoviews. В результате мы рады сообщить, что cuxfilter теперь поддерживается в SageMaker Studio Lab и Google CoLab, что упрощает опробование в облаке.

Повышение производительности

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

Улучшения масштабирования cuGraph

Библиотека RAPIDS cuGraph позволяет создавать и выполнять графические алгоритмы с ускорением на графическом процессоре. В версии 22.02 мы улучшили использование памяти, что позволило загружать большие графики. Мы также усовершенствовали графовые примитивы, что повысило производительность BFS, а также усердно работали над улучшением и проверкой масштабируемости cuGraph. Недавние изменения были протестированы на графическом процессоре 512, и большие тесты находятся в разработке. Следите за предстоящим блогом, чтобы узнать больше о масштабируемости и производительности cuGraph.

Включены правила Apache Calcite CBO в Dask-SQL.

Мы продолжаем расширять функциональность экспериментальной поддержки Dask-SQL графическим процессором через RAPIDS в этом выпуске 22.02. Оптимизация на основе затрат (CBO) использует табличную статистику для определения наиболее эффективного плана выполнения данного запроса. Интерфейс Apache Calcite SQL теперь использует правила оптимизации на основе затрат для запроса Dask DataFrame. Вы можете изменить параметр `statistics` запроса, чтобы определить статистику, используемую во время оптимизации.

Улучшена производительность операций соединения и сканирования в cuDF.

Во время рутинного тестирования cuDF мы обнаружили, что операции соединения с высоким коэффициентом совпадения при условиях равенства приводят к низкой производительности. Чтобы улучшить поддержку этих случаев, мы реализовали новое ядро ​​смешанного соединения, работающее как на условиях равенства, так и на условиях неравенства. Новое ядро ​​также использует абстрактные синтаксические деревья (AST) и новые шаблоны копирования столбцов. Благодаря этим улучшениям мы наблюдали двукратное ускорение операций соединения при распределенных рабочих нагрузках объемом 3 ТБ.

Кроме того, мы обнаружили, что операции с использованием groupby::scan можно сделать более эффективными за счет использования предварительно отсортированных данных. Внедрив новые шаблоны в функторы групповой сортировки, мы добились 1,6-кратного ускорения предварительно отсортированных операций сканирования.

Заключение

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

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

NVIDIA GTC проходит онлайн с 21 по 24 марта и является отличным форумом, на котором можно услышать мнение как пользователей, так и разработчиков RAPIDS. Обязательно ознакомьтесь с этими сессиями, чтобы узнать, как RAPIDS используется в различных отраслях, и первыми узнать о наших планах на будущее.

Как всегда, найдите нас на GitHub, подпишитесь на нас в Twitter и ознакомьтесь с нашей документацией и ресурсами для начала работы.