実行時コンパイラを用いたデータフレーム高速化技術
2023/06/22
石坂一久© NEC Corporation 2023

概要

実行時コンパイラ技術を使ってPandasの高速化版を作りました# import pandas as pd
import ducks.pandas as pd※ Pandas: Pythonのデータフレームライブラリ

2© NEC Corporation 2023

テーブルデータ◆ 顧客データ，統計データ，センサーデータなどのテーブル形式のデータ◆ 画像や音声などの生データではない

bitcoinの1分ごとの価格情報

https://www.kaggle.com/datasets/mczielinski/bitcoin-historical-data

3© NEC Corporation 2023

データフレーム（Pandas）◆ テーブルデータ用のデータ構造と操作◆ PythonのPandasが有名
ワイルドなデータの扱いに向く◼ 欠損値を扱える◼ 列の追加や削除が柔軟に行える
データサイエンティストに好まれる◼ Pythonによる開発生産性◼ 機械学習アルゴリズムとの連携

4© NEC Corporation 2023

欠損値（NaN）

Pandas
月間一億回ダウンロードされるデータ分析の標準ツール
050
０.5億回

100
1億回

150
1.5億回

分析に活用しているデータ

numpy
pandasscipy
scikit-learn
matplotlib
pyspark
networkx
tensorflow
nltk
seabornpytorchpypiの月間ダウンロード数(データ分析関係のライブラリ)
5© NEC Corporation 2023

総務省「デジタルデータの経済的価値の計測と活用の現状に関する調査研究」(2020)機械学習により重要度を増すデータフレーム
分析

収集

データ
レイク

データ
整備

学習用
データ

学習

モデル

活用

データサイエンティストの時間の40%以上

データ整備⚫ 探索的データ解析，学習用データの作成などの前処理⚫ 単純な整形だけでなく，複雑なアルゴリズムも登場⚫ データ規模の増大とともに分析のボトルネック• データ分析の時間の8割を占めるとも言われる
https://xtech.nikkei.com/atcl/learning/
lecture/19/00110/00001/

6© NEC Corporation 2023

Anaconda
The State of Data Science 2020

Pandasプログラムの例
Open列の一日ごとの平均を求める例

csvファイル読み込み
ベクトルデータ演算→列の追加
グループ平均

列名変更
テーブル結合入力
データ(再掲)
7© NEC Corporation 2023

出力
データ

日毎の平均

Pandasの速度課題
扱うデータ量や処理の複雑化に伴い速度課題が顕在化
クラウドサーバーのメモリ容量

Pandasの速度課題の要因◆ 多くの処理はシングルスレッド実行◆ アクセラレータ非対応◆ Eager実行モデル◆ 「遅い」書き方ができてしまう
新しいデータフレームライブライも登場[5] Ogleari, M. et al.: String figure: A scalable and elastic memory
network architecture, 2019 IEEE International Symposium on High
Performance Computer Architecture (HPCA), IEEE, pp. 647–660 (2019)8© NEC Corporation 2023

提案: 実行時コンパイラ技術を使ったデータフレーム高速化
従来型のライブラリ

実行時コンパイラ入りライブラリ

ユーザープログラム

ユーザープログラムライブラリ

ライブラリ

ライブラリ
関数
ユーザーが呼び出した順にライブラリ関数が実行される

ライブラリ
関数

実行時
コンパイラ

ライブラリに埋め込まれた実行時コンパイラが最適化してから実行

実行時コンパイラを活用しAPI互換での高速化を目指す
9© NEC Corporation 2023

Pandasの速度課題へのアプローチ
コンパイラを用いてAPIを中間言語に変換してから実行
Pandasの速度課題◆ 多くの処理はシングルスレッド実行◆ アクセラレータ非対応◆ Eager実行モデル◆ 「遅い」書き方ができてしまう

アプローチ
APIとその実装を分離し，高速な実装を利用可能に遅延実行およびデータフレーム固有の最適化

本手法に基づくデータフレームライブラリDucksを開発中
10© NEC Corporation 2023

Ducks: Architecture
中間言語(IR)を中心としたモジュール構造• フロントエンド• 最適化パス• バックエンド

Python Frontend

コンパイラフレームワーク
LLVM/MLIRを利用(Pandas API)IR Builder

Ducks IR

Optimization
PassesIR Executor
Backends

11© NEC Corporation 2023

DFKLfrovedis

cudf(1) フロントエンド
Python Frontend

実行時にAPI呼び出し毎に中間言語を生成(Define-by-run)(Pandas API)IR Builder

Ducks IR

Optimization
PassesIR Executor

IR（中間言語）

中間言語の例

Pythonプログラム
import pandas as pdBackends

pandasdf = pd.read_csv(“1.csv”)
g = groupby(“a”).sum()
12© NEC Corporation 2023

fallback

DFKL%v0 = ducks.read_csv(“1.csv”)
frovediscudf%v1 = ducks.groupby_agg(%v0, “a”, “sum”)

(2) 最適化パス
最適化パスがIRをより良いIRに変換

Python Frontend

色々な最適化アルゴリズムを実装することで性能を強化

IR Builder(Pandas API)

Ducks IR

最適化例

Optimization
PassesIR Executor

入力IR
pandasBackends

DFKL%v1 = ducks.filter(%v0, %cond)%v2 = ducks.project(%v1, “a”)

frovediscudf%v1 = ducks.project(%v0, “a”)
%v2 = ducks.filter(%v1, %cond)filter(行の抽出)とproject(列の抽出)の入れ替え
13© NEC Corporation 2023

出力IR(3) バックエンド
ターゲットプロセッサに最適化されたバックエンドがIR上の各命令を実行

Python Frontend(Pandas API)IR Builder

Ducks IR

Optimization
PassesIR Executor
Backends

DFKL

frovedis

cudf

ターゲットプロセッサに最適化されたバックエンド
現在はCPU用，ベクトルプ
ロセッサ用，GPU用

14© NEC Corporation 2023

TPCベンチマークでの評価結果（CPU）
DFKLバックエンドを用いたCPU上での評価
1) import 文の変更のみで，
2) Pandas に対して最大17 倍，平均5.8 倍（45クエリ）

Relative Performance(pandas=1.0)
15pandas
(1.3.3)better

最大12倍
平均5倍

ducks
(0.0.6)1050

q01 q02 q03 q04 q05 q06 q07 q08 q09 q11 q12 q13 q14 q15 q16 q17 q19 q21 q22 q23 q24 q29 q30

Relative Performance(pandas=1.0)

TPCx-BBベンチマーク

15181614
12
10864
20

TPC-Hベンチマーク
最大17倍
平均6倍

利用サーバー
Xeon Gold 6226
(12コア), 192GB

betterpandas(1.3.3)
ducks(0.0.6)

q01 q02 q03 q04 q05 q06 q07 q08 q09 q10 q11 q12 q13 q14 q15 q16 q17 q18 q19 q20 q21 q22

Queries

Queries

現実世界のETL(抽出、変換、ロード)および機械学習のワークフローを対象としたベンチマーク

BIやデータウェアハウス分野の検索や抽出などのワークロードを対象としたベンチマーク© NEC Corporation 2023

ドメイン特化自動最適化の例
Projection最適化
列の抽出(project)を可能な限り，前に出して演算量を削減する最適化%v1 = ducks.filter(%v0, %cond)%v2 = ducks.project(%v1, “a”)

→ プログラマが遅い書き方をしても高速に実行最適化パスを充実させることで，プログラマの書き方によらない高速性を実現
Projection最適化による性能向上（TPC-Hベンチマーク）
16© NEC Corporation 2023

まとめ◆高速データフレームライブラリDucks◼実行時コンパイラ技術を活用して，PandasとAPI互換で高速化を実現◆ご興味がありましたら，ぜひお声がけください17© NEC Corporation 2023

NECのHPCプラットフォーム
ベクトルシステム/クラスタで、長い経験と豊富な実績を持ち、蓄積された技術とノウハウで、 HPCのトータルソリューションをご提供いたします
多様なアプリケーションに対応し、最新のオープンアーキテクチャを採用した
HPCクラスタ

LXシリーズ18© NEC Corporation 2023

NECの独自技を採用し「超高性能」と「使いやすさ」を両立する
ベクトルシステム

SX-Aurora TSUBASAシリーズ

NEC HPCクラスタソリューション LXシリーズ必要とされる様々なコンポーネントを組み合わせて、お客様の利用環境やアプリケーションに合わせた最適なシステム／ソリューションをご提供します◆ 最新プロセッサ搭載◼ Intel Xeon Scalable Processor◆ 省電力・省スペース設計◼ 高密度実装、高効率電源採用◆ InfiniBand対応

2U 2Nサーバ

2U 4Nサーバ

2U 1Nサーバ◼ 最新のInfiniBand NDRに対応◆ GPUサポート◼ NVIDIA H100に対応◆ 安心の全国オンサイト保守

InfiniBandスイッチ
4U-8GPUサーバ◼ 全国約400カ所の保守拠点による迅速な対応

空力設計
19

© NEC Corporation 2023

ビッグデータ解析

素材開発

構造設計

AI

物流

NECのHPCプラットフォームに対する情報・お問合せ◆最新事例、アプリ一覧、スペックなどは製品WEBサイトをご覧ください。
https://jpn.nec.com/hpc/◆お問い合わせ先
E-mail: info@hpc.jp.nec.com
20© NEC Corporation 2023