NVIDIA/cudf

cuDF - GPU DataFrame Library

NVIDIA cuDF – GPU加速データフレーム

概要 – cuDFは、NVIDIA GPU上でテーブルデータ(CSV、Parquetなど)を扱うためのライブラリ群です。pandas APIをミラーリングしているため、pandasコードをそのまま置き換えて、同じ操作(読み込み、フィルタ、グループ化、結合など)をCPUではなくGPUで実行できます。コアはArrow互換のカラム構造を持つC++ライブラリ(libcudf)で、Pythonバインディングはpylibcudfと高レベルなcudfパッケージで提供されます。さらに、cuDFはPolars(cudf-polars)やDask(dask-cudf)を利用するためのアダプターも提供します。

AI/MLにとって重要な理由 – ほとんどのデータサイエンスパイプラインは、モデルに供給する前にクリーニング、再形成、集計が必要な大規模なテーブルから始まります。cuDFはこれらのステップを高速化し、前処理時間を数分から数秒に短縮することが多く、モデルの反復を高速化し、より大規模なデータセットを処理できるようにします。

主要コンポーネント

  • libcudf – Arrow互換のカラムコンテナと低レベルのアルゴリズムを持つCUDA C++コア。
  • pylibcudf – コアをPythonに公開するCythonバインディング。
  • cudf – pandas互換のDataFrameライブラリ。既存のpandasスクリプトをコード変更なしで高速化するcudf.pandasも提供。
  • cudf-polars – Polars DataFrameライブラリ用のGPUエンジン。
  • dask-cudf – 分散ワークロード用のGPUバックエンドを持つDask DataFrames。

インストール(いずれかを選択)

# pipの場合 – CUDAバージョンに合うサフィックスを選択
pip install cudf-cu13   # CUDA 13の場合
pip install dask-cudf-cu13
# …またはCUDA 12の場合
pip install cudf-cu12
# condaの場合 – RAPIDSチャネルを使用
conda install -c rapidsai cudf dask-cudf

開発ビルドの場合は、ナイトリーチャネル(-c rapidsai-nightly)を追加します。

クイック例 – pandasと同じコードで、GPU上で実行されます:

import cudf

# Parquetファイルを直接GPUメモリに読み込む
df = cudf.read_parquet('data.parquet')

# nullを含む行を削除し、2つの列でグループ化して平均を計算
result = df.dropna().groupby(['A', 'B']).mean()
print(result)

既存のpandasスクリプトをそのまま実行することもできます:

python -m cudf.pandas my_script.py

またはJupyterノートブックで:

%load_ext cudf.pandas
import pandas as pd   # これでGPU上で動作

Polarsユーザー向け:

import polars as pl
lf = pl.scan_parquet('data.parquet')
out = lf.drop_nulls().group_by(['A', 'B']).mean().collect(engine='gpu')

コミュニティと貢献 – バグや機能リクエストはGitHubのイシュートラッカーで受け付けています。ディスカッションはRAPIDS Slackワークスペースで行われます。貢献は標準のNVIDIA RAPIDS貢献ガイドに従って歓迎します。


cuDFは本番環境で使用可能な本格的なGPUデータ処理ライブラリであり、現代のAI/MLパイプラインにしっかりと適合します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト