[论文解读] Accelerating Genetic Programming using GPUs
本文提出了一种基于堆栈的遗传编程(GP)模型,并采用前缀列表表示法,实现高效的NVIDIA GPU上的符号回归与分类框架。通过使用CUDA并行化选择与适应度评估,并利用向量化损失计算,该方法在合成数据上相比gplearn实现了最高119倍的加速,在大规模数据集上实现了40倍的加速,同时保持了相当的准确率和损失性能。
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并行性,加速符号回归与二分类任务。
- 通过实现GPU上的高效大规模并行评估,解决GP中适应度评估的性能瓶颈。
- 设计一种GPU友好的程序表示方法,支持快速的堆栈式评估与向量化适应度计算。
- 在合成与真实世界数据集上,对现有CPU与GPU加速GP框架的性能进行评估。
- 在大幅减少训练时间的同时,确保模型质量(准确率与损失)保持相当。
提出的方法
- 将GP程序表示为前缀列表,以支持GPU内存中的固定长度堆栈评估,提升内存聚合与缓存效率。
- 使用CUDA内核并行化选择与变异步骤,以充分利用生成式GP算法中的大规模并行性。
- 实现完全向量化的CUDA内核,用于标准损失函数(如MSE、RMSE),以加速群体中的适应度评估。
- 采用基于堆栈的评估引擎,通过单指令多数据(SIMD)执行并行处理每个程序表达式。
- 通过将输入数据以列主序存储,优化内存访问模式,以在GPU上实现聚合内存事务。
- 将实现集成到cuML中,该库是具有scikit-learn风格API的GPU加速机器学习库,以提升可用性。
实验结果
研究问题
- RQ1基于堆栈的GP表示法结合前缀列表编码,能否实现高效且可扩展的GPU并行化符号回归?
- RQ2在合成与真实世界数据集上,GPU加速GP相较于gplearn等CPU并行框架在训练速度上表现如何?
- RQ3向量化损失计算与优化的内存访问在多大程度上能提升GPU上的适应度评估性能?
- RQ4GPU加速GP框架在预测准确率与损失方面是否与现有库保持竞争力?
- RQ5数据集大小与种群规模对GPU加速GP实现性能扩展的影响如何?
主要发现
- 在合成Pagie Polynomial数据集(4096至1600万个点)上,GPU加速实现相比gplearn平均实现了119倍的加速。
- 在六个大规模回归与分类数据集上,该框架相比gplearn实现了平均40倍的加速,其中在Epsilon数据集上峰值加速达到713倍。
- Epsilon数据集表现出极高的加速比(713倍),这是由于输入数据在GPU内存中以列主序存储,实现了内存聚合访问。
- 对于Airline与Airline Regression数据集(超过1亿行),该框架相比gplearn(使用8个CPU作业)分别实现了平均42倍与32倍的加速。
- 在所有数据集上,该框架与gplearn的测试准确率与RMS误差几乎完全一致,表明模型质量相当。
- 该方法返回了所有代际中进化出的完整种群,支持对进化过程的分析。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。