Инструменты26 июля 2026 г., 00:16 МСК🤖 Auto

Ускорение подготовки данных на GPU: cuDF против cudf.pandas

NVIDIA RAPIDS позволяет ускорить обработку табличных данных в 10–100 раз без переписывания кода. Разбираем benchmarks на датасете NYC Taxi с 10 млн строк.

Баннер новости 4400

Проблема CPU-бутылочного горлышка

Традиционные пайплайны Data Science, построенные на CPU, часто становятся узким местом при работе с большими объемами табличных данных. Хотя GPU ассоциируются с обучением нейросетей, библиотека RAPIDS от NVIDIA предлагает инструменты для ускорения именно этапа подготовки данных (Data Preparation). Автор статьи Parul Pandey протестировала ускорение на реальном датасете NYC Yellow Taxi Trip Records (CCO License), содержащем ~9–10 миллионов поездок за первые три месяца 2023 года.

Два пути миграции: Native cuDF и cudf.pandas

Существует два основных способа перенести воркфлоу на GPU:

  • Native cuDF API: Использование нативной библиотеки, синтаксически похожей на pandas, но выполняющей операции на GPU. Требует замены функций чтения данных (cudf.read_parquet) и адаптации некоторых методов.
  • cudf.pandas: Режим ускорителя, позволяющий запускать существующий код на pandas без изменений. Активация происходит через %load_ext cudf.pandas перед импортом библиотеки.

Результаты бенчмарков: Агрегация и GroupBy

Ключевые операции, такие как groupby и агрегация, наиболее выигрышно используют параллелизм GPU. В тесте на датасете из 10 млн строк были сравнены следующие сценарии:

Операция Инструмент Результат / Эффект
Суммарная статистика (Sum, Mean, Count) pandas (CPU) Базовое время (1x)
Суммарная статистика (Sum, Mean, Count) cuDF (GPU) Значительное ускорение (в десятки раз)
Цепочка операций: GroupBy + ValueCounts + Head pandas (CPU) Базовое время (1x)
Цепочка операций: GroupBy + ValueCounts + Head cuDF (GPU) Существенное сокращение времени выполнения
Любой код на pandas cudf.pandas Ускорение без изменения строк кода

Практические выводы

Для новых проектов, где важна максимальная производительность, рекомендуется использовать нативный cuDF. Однако для существующих пайплайнов cudf.pandas предлагает идеальный баланс: вы получаете прирост скорости за счет GPU-вычислений, не тратя время на рефакторинг кода. Конвертация между CPU и GPU DataFrames (to_pandas() и from_pandas()) позволяет гибко интегрировать GPU-этапы в гибридные рабочие процессы.

Источник: Towards Data Science ↗