Skip to main content
QUICK REVIEW

[論文レビュー] Accelerating Genetic Programming using GPUs

Vimarsh Sathia, Venkataramana Ganesh|arXiv (Cornell University)|Oct 15, 2021
Evolutionary Algorithms and Applications参考文献 12被引用数 4
ひとこと要約

本稿では、NVIDIA GPU上で効率的な評価が可能なスタックベースの遺伝的プログラミング(GP)モデルとプレフィックスリスト表現を用いた、GPUアクセラレート型の記号的回帰および分類フレームワークを提案する。CUDAを用いた選択と適応度評価の並列化、およびベクトル化された損失計算を活用することで、合成データではgplearn比で最大119倍の高速化を達成し、大規模データセットでは40倍の高速化を実現した。同時に、同等の精度および損失性能を維持した。

ABSTRACT

Genetic Programming (GP), an evolutionary learning technique, has multiple applications in machine learning such as curve fitting, data modelling, feature selection, classification etc. GP has several inherent parallel steps, making it an ideal candidate for GPU based parallelization. This paper describes a GPU accelerated stack-based variant of the generational GP algorithm which can be used for symbolic regression and binary classification. The selection and evaluation steps of the generational GP algorithm are parallelized using CUDA. We introduce representing candidate solution expressions as prefix lists, which enables evaluation using a fixed-length stack in GPU memory. CUDA based matrix vector operations are also used for computation of the fitness of population programs. We evaluate our algorithm on synthetic datasets for the Pagie Polynomial (ranging in size from $4096$ to $16$ million points), profiling training times of our algorithm with other standard symbolic regression libraries viz. gplearn, TensorGP and KarooGP. In addition, using $6$ large-scale regression and classification datasets usually used for comparing gradient boosting algorithms, we run performance benchmarks on our algorithm and gplearn, profiling the training time, test accuracy, and loss. On an NVIDIA DGX-A100 GPU, our algorithm outperforms all the previously listed frameworks, and in particular, achieves average speedups of $119 imes$ and $40 imes$ against gplearn on the synthetic and large scale datasets respectively.

研究の動機と目的

  • 遺伝的プログラミングにおけるGPU並列処理を活用し、記号的回帰と二値分類を高速化すること。
  • GPにおける適応度評価のボトル neck を解消し、GPU上で効率的かつ大規模並列評価を可能にする。
  • 高速なスタックベース評価とベクトル化された適応度計算をサポートするGPUフレンドリーなプログラム表現を設計すること。
  • 合成および実世界のデータセットにおいて、既存のCPUおよびGPUベースのGPフレームワークと性能を比較すること。
  • 学習時間を著しく短縮しつつ、同等のモデル品質(精度および損失)を保証すること。

提案手法

  • GPUメモリ上での固定長スタック評価を可能にするために、GPプログラムをプレフィックスリストとして表現し、メモリコalescingとキャッシュ効率を向上させる。
  • CUDAカーネルを用いて選択および変異ステップを並列化し、世代的GPアルゴリズムにおける大規模並列処理を活用する。
  • 標準的な損失関数(例:MSE、RMSE)の完全なベクトル化されたCUDAカーネルを実装し、集団全体の適応度評価を高速化する。
  • 1命令複数データ(SIMD)実行を活用して、各プログラム式を並列に処理するスタックベース評価エンジンを採用する。
  • 入力データを列優先順序で保存することで、GPU上のコalescedメモリアクセスを最適化する。
  • scikit-learnに似たAPIを備えたGPUアクセラレート型機械学習ライブラリcuMLに統合し、使いやすさを確保する。

実験結果

リサーチクエスチョン

  • RQ1スタックベースのGP表現とプレフィックスリスト符号化により、記号的回帰における効率的かつスケーラブルなGPU並列処理が可能になるか?
  • RQ2合成および実世界のデータセットにおいて、gplearnのようなCPU並列フレームワークと比較して、GPUアクセラレート型GPの学習速度はどの程度向上するか?
  • RQ3ベクトル化された損失計算と最適化されたメモリアクセスが、GPU上での適応度評価性能をどの程度向上させるか?
  • RQ4GPUアクセラレート型GPフレームワークは、既存のライブラリと比較して、予測精度および損失において競争力を持つか?
  • RQ5データセットサイズおよび集団サイズが、GPUアクセラレート型GP実装の性能スケーリングに与える影響は何か?

主な発見

  • 4096~1600万点の合成Pagie Polynomialデータセットでは、GPUアクセラレート実装がgplearn比で平均119倍の高速化を達成した。
  • 6つの大規模回帰および分類データセットでは、平均40倍の高速化を達成し、Epsilonデータセットでは最大713倍の高速化を記録した。
  • Epsilonデータセットでは、GPUメモリ内の入力データを列優先順に保存したことにより、コalescedメモリアクセスが実現され、顕著な高速化が達成された。
  • 1億行を超えるAirlineおよびAirline Regressionデータセットでは、gplearn(8CPUジョブ使用)と比較して、それぞれ平均42倍および32倍の高速化を達成した。
  • すべてのデータセットにおいて、提案フレームワークとgplearnとの間でテスト精度およびRMS誤差がほぼ同一であり、同等のモデル品質を示した。
  • 提案手法は、すべての世代における進化したプログラムの全集団を返すことができ、進化の進行状況の分析が可能になった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。