Closed5

cuDF が Google Colab に統合されたので試す

chimuichimuchimuichimu

前提知識

Google Colab とは

  • Google が提供するクラウドのノートブックの実行環境
  • 無料で GPU が使えたりする

cuDF とは

  • NVIDIA RAPIDSが提供するデータフレーム処理用のライブラリ
  • GPU により Pandas と比較して高速に処理を実行できる
chimuichimuchimuichimu

試してみる

GPU の有効化

Google Colab でランタイム > ランタイムのタイプを変更 > ハードウェアアクセラレータから GPU のランタイムに接続

cuDF.pandas のロード

以下をノートブックで実行する

%load_ext cudf.pandas

pandas の実行

あとは普段通りに

import pandas as pd

をして、pandas の処理を書くだけ

chimuichimuchimuichimu

処理時間の比較

せっかくなので処理時間を比較してみる
以下のそこそこでかいテーブル同士の結合にかかる時間を比較する

import pandas as pd
import numpy as np

# データフレームのサイズ
n_rows = 10**5  # 10万行
n_cols = 10     # 10列

# ランダムなデータを持つデータフレームを生成
df1 = pd.DataFrame(np.random.rand(n_rows, n_cols), columns=[f'col{i}' for i in range(n_cols)])
df2 = pd.DataFrame(np.random.rand(n_rows, n_cols), columns=[f'col{i}' for i in range(n_cols)])
df1['key'] = np.random.randint(0, 1000, size=n_rows)
df2['key'] = np.random.randint(0, 1000, size=n_rows)

pandas

2.23 s ± 153 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

cuDF

91.6 ms ± 11.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

20倍程度速くなった

chimuichimuchimuichimu

感想

  • めちゃくちゃ簡単
  • %load_ext cudf.pandasを加えるだけで pandas のコードは変える必要ないので、既存のコードを高速に動かしたいときにかなり便利そう
このスクラップは2024/05/15にクローズされました