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パイプラインにしっかりと適合します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト