Подача торта, пипса и окон на нашу четвертую вечеринку по случаю дня рождения!
Пришло время отпраздновать еще один год, когда RAPIDS ускоряет науку о данных и продвигает достижения повсюду. Когда-то небольшая команда, создававшая увлеченный проект, превратилась в сообщество, охватывающее весь земной шар. И в этом выпуске у нас есть несколько интересных объявлений, которые упрощают использование RAPIDS, где бы вы ни работали!
В пятый год мы расширяем наши усилия по ускорению обработки данных для всех, начиная с нескольких масштабных обновлений, которые делают RAPIDS доступным еще большему количеству разработчиков!
Делаем RAPIDS более доступным
Пакеты пунктов RAPIDS
Мы услышали запросы сообщества и рады сообщить, что теперь у RAPIDS есть экспериментальные пакеты, доступные через pip, самый популярный менеджер пакетов Python! Это упрощает установку RAPIDS в вашей среде. Для получения дополнительной информации о RAPIDS и пипсах посетите нашу специальную веб-страницу пипсов.
RAPIDS работает в Windows через WSL!
Поскольку 58% разработчиков Python используют Windows (Jetbrains), поддержка этого сообщества была нашей целью. И в этом выпуске мы рады сообщить, что RAPIDS поддерживается в Windows 11 через подсистему Windows для Linux 2! Подробнее о том, как начать работу, читайте в инструкции.
Мы не только делаем RAPIDS более доступным, но и продолжаем расширять функциональность и производительность библиотек RAPIDS! Ознакомьтесь с некоторыми ключевыми обновлениями из выпуска 22.10 ниже!
Улучшения ввода-вывода и сериализации по всем направлениям
Чтение и запись данных и моделей стали еще лучше!
Экспериментальная версия: новая вложенная программа чтения JSON.
Функция cuDF read_json
теперь принимает на вход данные JSON с произвольной вложенностью. Эта новая экспериментальная функция позволяет считывать более сложные файлы JSON, сохраняя важную структурную информацию, при этом используя производительность графических процессоров. Вот пара примеров в действии:
json_str = '[{"list": [0,1,2], "struct": {"k":"v1"}}, {"list": [3,4,5], "struct": {"k":"v2"}}]' cudf.read_json(json_str, engine='cudf_experimental') list struct 0 [0, 1, 2] {'k': 'v1'} 1 [3, 4, 5] {'k': 'v2'} json_str = '{"a": [{"k1": "v1"}]}\n{"a": [{"k2":"v2"}]}' cudf.read_json(json_str, engine='cudf_experimental', lines=True) a 0 [{'k1': 'v1', 'k2': None}] 1 [{'k1': None, 'k2': 'v2'}]
Поддержка сжатия Zstandard
При работе с данными Parquet или ORC вы можете читать и записывать в файл с помощью cuDF, используя сжатие Zstandard, установив флаг compression='ZSTD'
. (Вам нужно будет установить NVCOMP_POLICY
на ALWAYS
):
df.to_parquet(‘f.pq’, compression=’ZSTD’)
Чтение текста с помощью cuDF теперь в 40 раз быстрее!
За последние несколько выпусков cuDF работал над ускорением существующей функции read_text
. Вы должны увидеть ускорение по всем направлениям с этой функцией, с самыми большими выигрышами на односимвольных разделителях.
Treelite обновлен до версии 3.0
Мы обновили поддержку Treelite в cuML до версии 3.0. Это означает, что вы можете сохранить любое дерево решений с градиентным усилением или модель случайного леса в Treelite и гарантировать, что они будут доступны для чтения в любой будущей версии Treelite 3.x.
Усовершенствования алгоритма ближайших соседей
Прогнозирование вне выборки и мягкая кластеризация в HDBSCAN
Реализация cuML HDBSCAN теперь содержит метод approximate_predict()
, который позволяет прогнозировать кластеры для невидимых точек данных, и метод all_points_membership_vectors
, выполняющий мягкую кластеризацию. Мягкая кластеризация обеспечивает вероятность того, что точки данных могут принадлежать одному, многим или вообще не принадлежать кластерам. Производительность этих новых функций продемонстрировала более чем 100-кратное ускорение на наборах данных среднего размера. Оставайтесь с нами для более подробной информации в следующих блогах!
Обновления библиотеки RAFT для вычислительных примитивов
Этот выпуск также включает новую современную реализацию алгоритма приближенных ближайших соседей IVF-PQ. Эта реализация выиграла недавний конкурс Big-ANN Benchmarks, и мы находимся в процессе ее интеграции в библиотеку FAISS, что также позволит интегрировать ее с популярными библиотеками, такими как Milvus.
С выпуском 22.10 команда RAFT начала развертывать более чистый, простой в использовании и более стабильный общедоступный API на основе C++ mdspan (многомерный диапазон), C++ аналог ndarray numpy в Python. Большинство плотных API-интерфейсов RAFT были преобразованы для приема mdspan.
Новые показатели расстояния для DBSCAN, UMAP и t-SNE
DBSCAN теперь поддерживает косинусное расстояние, а алгоритмы t-SNE и UMAP поддерживают значительно расширенный набор показателей расстояния, включая (но не ограничиваясь) косинус, корреляцию, Манхэттен и Хеллингера.
Привет строковым пользовательским функциям!
Строковые входные данные для пользовательских функций
Для тех случаев, когда вы не можете легко выразить желаемое преобразование DataFrame с точки зрения операций со столбцами, вам помогут пользовательские функции (UDF)! Вы уже можете использовать пользовательские функции для ряда числовых входных данных, но с cuDF 22.10 мы рады объявить об экспериментальной поддержке строковых входных данных для пользовательских функций. На данный момент вам нужно установить пакет strings_udf
следующим образом:
conda install -c rapidsai strings_udf -y
Установив пакет, вы можете использовать строки во входных данных UDF. Взгляните на пример ниже в качестве отправной точки.
df = cudf.DataFrame({'word': ['apple', 'banana', 'carrot'], 'letter': ['a', 'n', 'e']}) df.apply(lambda x: x['word'].count(x['letter'])) 0 1 1 2 2 0 dtype: int32
Таким образом, используете ли вы сложные конвейеры NLP или просто анализируете текстовые данные, вы сможете определить свои собственные пользовательские функции, которые сопоставляются со строками и возвращают числовые типы.
Обновления обработки данных с несколькими графическими процессорами
Dask-SQL теперь на графических процессорах
Dask-SQL на графических процессорах теперь общедоступен. Благодаря возможности работать как на графическом, так и на центральном процессоре без необходимости модификации, теперь вы можете разрабатывать рабочие процессы Dask-SQL локально, а затем беспрепятственно развертывать их на графических процессорах, когда вам нужно дополнительное ускорение.
На основе cuGraph теперь доступен DGL RGCN в 1,7 раза быстрее
Команда cuGraph работала над улучшенной версией модели сверточной сети реляционного графа (RGCN), выпущенной DGL. Эта версия обеспечивает ускорение сквозного обучения в 1,7 раза.
Новые алгоритмы для нескольких GPU в cuGraph
Команда cuGraph продолжает расширять набор алгоритмов, поддерживаемых архитектурами с несколькими графическими процессорами. Версия 22.10 включает реализации Jaccard, Overlap, Sorensen и Random блуждания, все для невзвешенных графов.
Общие обновления обработки данных!
Новые методы предварительной обработки для разработки признаков в cuML
Этот выпуск cuML включает три новых метода предварительной обработки — теперь вы можете использовать PowerTransformer
, QuantileTransformer
и KernelCenterer
как часть ваших конвейеров машинного обучения с ускорением на GPU. Кроме того, препроцессор TargetEncoder()
был обновлен, так что теперь вы можете выбирать между кодированием с медианой или средним значением.
Новые функции, улучшенная совместимость и документация в cuSpatial
Команда cuSpatial была очень занята — следите за новостями, чтобы не пропустить полную запись в блоге, в которой будут подробно описаны обширные обновления тайского релиза. Вот некоторые основные моменты:
Новые функции расстояния:
В этом выпуске представлен pairwis_point_linestring_distance
, который принимает в качестве входных данных пару GeoSeries, любой из которых может быть мультигеометрическим рядом:
from shapely.geometry import LineString, Point, MultiPoint points = cuspatial.GeoSeries([Point(0.0, 0.5)]) bounds = cuspatial.GeoSeries( [LineString([(-1, 0), (1, 0), (0, 1)])]) cuspatial.pairwise_point_linestring_distance(points, bounds) 0 0.353553 dtype: float64
В этом выпуске также добавлена функция для ускорения вычисления ближайших точек между парами точек и цепочками линий (аналог shapely.ops.nearest_points) и возвращается индексная информация о том, где находится ближайшая точка на цепочке линий.
from shapely.geometry import LineString, Point, MultiPoint, MultiLineString points = cuspatial.GeoSeries([Point(5.0, 4.0)]) lines = cuspatial.GeoSeries([MultiLineString([ (1.0, 0.5), (2.0, 2.4), (3.8, 3.6)], [(6.0, 4.8), (3.7, 3.8)]])]) cuspatial.pairwise_point_linestring_nearest_points(points, lines) point_geometry_id linestring_geometry_id segment_id geometry 0 0 1 0 POINT (4.86645 4.30715)
Улучшенная совместимость:
Команда cuSpatial продолжает улучшать совместимость библиотеки с другими инструментами и платформами: новая функция cuspatial.read_polygon_shapefile
позволяет считывать шейп-файлы непосредственно в GPU; Пользователи могут вызывать cuspatial.from_geopandas
для преобразования данных из GeoPandas и использовать GeoSeries.to_geopandas
для обратного преобразования данных; и теперь вы можете инициализировать GeoDataFrame
, используя нотацию словаря GeoDataFrame({'name':Series})
, улучшая совместимость с GeoPandas и cuDF.
Обновления документации:
Наконец, использование и понимание cuSpatial никогда не было проще. Документация Python была существенно переработана и теперь включает Руководство пользователя Python, в котором приведены примеры использования всех функций cuSpatial. В новом Руководстве разработчика Python подробно рассказывается о дизайне библиотек, о том, как настроить среду разработки и как внести свой вклад в cuSpatial. Существует также новое Руководство разработчика C++, в котором представлены рекомендации по проектированию и разработчикам для уровня cuSpatial C++ и CUDA.
Подведение итогов
Команда RAPIDS стремится использовать мощь графического процессора для обработки данных в разных средах, сценариях использования и новых потребностях по мере их появления. В этом выпуске приоритет отдается расширению сообщества и улучшению наших существующих библиотек. Спасибо, что присоединились к нам в нашем путешествии.
Мы говорили об этом выпуске и многом другом во время наших переговоров о RAPIDS на конференции GTC в сентябре 2022 года. Если вы только начинаете работать с RAPIDS или являетесь опытным участником сообщества, вы не захотите пропустить Глубокое погружение Джона Зедлевски. в RAPIDS» для ускоренной обработки данных и инженерии данных.
Как всегда, мы с нетерпением ждем ваших отзывов о том, как вы используете новые возможности RAPIDS. Вы можете связаться с нами на GitHub, подписаться на нас в Twitter и ознакомиться с нашей документацией и ресурсами для начала работы.