大規模データを扱う際にSQLインターフェースを使ってGPUによる高速処理を扱えるライブラリだぞ
SQLでよく使用する joining, aggregating, filteringが高速に動作するってことですか
そうだ
blazingSQL
blazingSQLは下記のようなイメージになります。RAPIDsはGPU Data Frameに対して複数のインターフェースを用意しているようです。
blazingSQLはSQLインターフェースを使って大規模データにアクセスできます。

上記の画像は下記から取得しました。
https://docs.blazingdb.com/docs
下記のサイトで簡単に試すことができます。
Try nowでアクセスできます。

Google Accountがあればアクセスできます。

blazingSQLのコード
Jupyter Notebookが起動します。

welcome.ipynbを試してみます。
SQLエンジンのセッションのように機能するBlazingContextから始めます。
from blazingsql import BlazingContext
bc = BlazingContext()
csvファイルを読み込んでテーブルを作成します。
bc.create_table('taxi', 'data/sample_taxi.csv', header=0)
作成したテーブルからデータを取得します。
bc.sql('SELECT * FROM taxi')
上位10件のみ取得する方法は下記になります。
bc.sql('select * from taxi limit 10')
`trip_distance`が10以下のデータのみを取得してcudf形式で取得します。
df = bc.sql('select * from taxi where trip_distance < 10')
取得したデータは下記のように見れます。

取得したデータの平均、標準偏差などの統計情報を取得します。
df.describe()

pandasと同様の操作で扱えます。”passenger_count”が1以外かつtrip_distanceが10以下のデータを取得します。
df.loc[(df['passenger_count'] != 1) & (df['trip_distance'] < 10)]
データの可視化
データをSQLで取得してpandasのデータフォーマットに変換、データの可視化を1行のコードで動作します。
bc.sql('SELECT passenger_count, tip_amount FROM taxi').to_pandas().plot(kind='scatter', x='passenger_count', y='tip_amount')

Data shaderを使うと地図上でのアクション数を把握できます。
https://github.com/holoviz/datashader
下記のコードはどの場所でタクシーを降りた人が多いかを把握できます。タクシーを降りた位置座標(x, y)を取得して可視化しています。
from datashader import Canvas, transfer_functions
from colorcet import fire
nyc = Canvas().points(bc.sql('SELECT dropoff_x, dropoff_y FROM taxi'), 'dropoff_x', 'dropoff_y')
transfer_functions.set_background(transfer_functions.shade(nyc, cmap=fire), "black")

データを取得して機械学習
cumlを使用してGPUで機械学習をします。
https://github.com/rapidsai/cuml
必要なライブラリを取得します。
%%time
from cuml import LinearRegression
from cuml.preprocessing.model_selection import train_test_split
SQLを使用してデータを取得します。
予測したい金額をyとしてtrip_distance, tolls_amount, pickup_x, pickup_y, dropoff_x, dropoff_yを特徴量xとして取得します。
X = bc.sql('SELECT trip_distance, tolls_amount, pickup_x, pickup_y, dropoff_x, dropoff_y FROM taxi')
y = bc.sql('SELECT fare_amount FROM taxi')['fare_amount']
学習と検証にデータを分けます。
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8)
モデルを設定して、学習、予測を行います。
%%time
# call Linear Regression model
lr = LinearRegression()
# train the model
lr.fit(X_train, y_train)
# make predictions for test X values
y_pred = lr.predict(X_test)
寄与率を計算します。標本値から求めたモデルのあてはまりの良さの尺度として利用されます。
https://ja.wikipedia.org/wiki/%E6%B1%BA%E5%AE%9A%E4%BF%82%E6%95%B0
from sklearn.metrics import r2_score
r2_score(y_true=y_test.to_pandas(), y_pred=y_pred.to_pandas())
数値は約0.3なので、改善の余地があります。
blazingSQLを使用してみたぞ
簡単に使用できましたね。SQLインターフェースになれていると着手しやすいですね。