利用高性能计算技术优化卷积神经网络:加速大规模模型训练的探索

picture.image

Abstract

由于其广泛的应用范围,包括物体识别、图像分类和模式识别,卷积神经网络(CNN)算法在计算机视觉领域带来了范式转变。然而,训练大规模的CNN模型需要大量的计算能力,这可以通过使用高性能计算(HPC)技术有效地处理。本文中,通过利用HPC技术来优化CNN方法,以提高其有效性。所提出的方法利用多核处理器、图形处理单元(GPUs)以及像OpenMPI和CUDA这样的并行计算框架,使用分布式计算和并行处理技术来加速CNN模型的训练。使用基准数据集,对优化策略进行了彻底的评估,显示出CNN算法性能和训练时间的显著改进。此外,将所建议的方法与其他优化策略进行了比较,证明了在训练时间和性能方面其优越性。总的来说,本研究有力地证明了如何使用HPC技术来细化CNN方法,从而更快、更准确地进行大规模CNN模型的训练。所提出的方法有可能被更广泛地应用于各种深度学习算法,这是重要的,因为它将发展有效且高效的机器学习模型。

I Introduction

许多计算机视觉应用,包括图像分类、目标识别和分割,现在都采用卷积神经网络(CNNs)作为最先进的技术。这些深度学习模型是自动处理图像的有效工具,并在各种应用中展现了卓越的性能。然而,训练大规模的CNN模型在计算上可能是需求很高的,并且需要大量的时间和资源。

卷积神经网络(CNN)方法通过使用高性能计算(HPC)工具来解决这个问题已经得到了改进。利用如多核处理器、图形处理单元(GPUs)和平行计算框架等HPC工具,可以加速深度学习模型的训练。因此,通过有效地利用HPC技术,可以大大减少CNN模型的训练时间,并提升模型性能。

在本文中,作者提出了一种利用高性能计算(HPC)工具优化卷积神经网络(CNN)算法的方法。该方法采用并行处理和分布式计算技术来加速大规模CNN模型的训练。作者利用多核处理器和图形处理器(GPUs)来并行化计算。

作者利用卷积神经网络(CNNs)并优化算法的性能。同时,作者还使用如OpenMPI和CUDA等并行计算框架,在计算集群中的多个节点之间高效地分配计算任务。

使用基准数据集,作者对提出的方法进行了评估,结果发现相较于CNN算法,在训练时间和准确度上都有了显著的提升。此外,当作者把作者的方法与其他优化策略进行比较时,大多数方法在准确度和训练时间上都表现得不如作者的方法。

本文的其余部分结构如下:在第1节,作者简要解释了卷积神经网络(CNN)算法及其训练方法。在第2节,作者回顾了利用高性能计算(HPC)技术优化CNN方法以及其训练的相关工作。作者在第3节提出所建议的优化策略,随后在第4节介绍实验方法和结果分析。在第5节,即本文的结论部分,作者对该工作进行全面的总结,并提供未来研究潜在途径的概览。

picture.image

II Related Works

不同于其他图像研究领域,由于涉及大量计算需求和复杂性,使用高性能计算(HPC)的工作较少。然而,近年来,人们越来越认识到在图像研究中利用高性能计算(HPC)的潜在益处。

并行编程、线程协作、常量内存和事件、纹理内存、图形互操作性、原子操作、流、在多个GPU上的CUDA C、高级原子操作以及额外的CUDA资源在名为“CUDA范例:通用GPU编程入门”的书中已有讨论。这本书由CUDA软件平台团队的两位高级成员编写,向程序员展示了如何使用这项新技术。[1]。

近期,Kahira等人(2021年)提出了一种方法,该方法结合了模型并行性和数据并行性来优化卷积神经网络(CNN)算法。作者以模型驱动分析为基础,构建了一个Oracle工具,帮助在大规模应用中准确识别不同并行策略的缺陷和瓶颈。在评估Oracle的有效性时,考虑了六种并行化技术,四种CNN模型以及多个数据集(2D和3D),使用多达1024个GPU。与实证结果相比,该结果显示Oracle平均准确率约为86.74%,对于数据并行性,准确率高达97.57%。[2]

随后,一些研究探讨了使用GPU和其他高性能计算(HPC)工具来优化卷积神经网络(CNN)算法。例如,Jia等人(2014年)提出了Caffe深度学习框架[3],该框架同时利用CPU和GPU进行CNN模型的高效训练。作者展示了他们的框架在各种基准数据集上可以实现高性能。

在另一项研究中,张等(2016年)利用高性能计算(HPC)工具优化了用于遥感图像分类的卷积神经网络(CNN)算法。[4] 作者们使用基于GPU的计算集群和并行计算框架来加速他们模型的训练过程。结果表明,与传统的基于CPU的方法相比,他们的方法实现了显著的加速。

在另一篇题为“用于GPU性能分析与优化的CNN推理微基准测试(mDNet)”的研究中,提供了一个CNN推理的微基准测试,用于性能分析和优化。该研究还建议了一个简单但有效的性能模型,用于自适应 Kernel 选择,以缩短CNN推理每一层所需的时间[5]。卷积层被确定为CNN的关键组成部分,并采用了两种主流的卷积策略:基于展开的卷积(UNROLL)和直接卷积(DIRECT),这些策略被实现、比较并从每层卷积时间方面进行分析。通过从mbNet基准测试中获得的数据,研究行人构建了一个精确且可解释的基于树的性能模型。这项工作为减少CNN中每层推理时间提供了全面的分析和方法。该研究专注于优化资源受限的边缘AI设备和嵌入式系统中卷积神经网络(CNNs)的推理时间,同时不牺牲准确性。这些发现有助于提高受限资源的嵌入式和边缘AI系统上的CNN推理性能。

picture.image

III Research Methodology

数据预处理、数据编码和嵌入,以及深度学习架构是这项工作的研究方法的三个阶段。以下是对这些部分的简要描述:

Dataset and preprocessing:

CIFAR-10 数据集包含每个类别6000张图片,共10个类别,总计60000张32x32大小的彩色图像。其中可供使用的是10000张测试照片和50000张训练图像。数据集由五个训练批次和一个测试批次组成,每个批次都有10000张照片。测试批次中,每类精确地选取了1000张随机照片。其余的图像以随机顺序分布在训练批次中;然而,某些训练批次可能从特定类别中不成比例地包含图像。训练批次中,每个类别的照片总数精确为5000张。[6]。

已在下方附上了考虑样本数量和类别数的类分布图。

为数据预处理指定了两套转换操作:用于训练集的transform_train和用于测试集的transform_test。transform_train中的步骤如下:

随机裁剪提供的照片至32x32的大小,并添加2像素的边框填充。

水平随机翻转照片。

将图片转换成张量。

利用给定的均值和标准差数据,对张量值进行标准化。

transform_test的各个阶段如下:

将图片转换成张量。

利用给定的均值和标准差数据,对张量值进行归一化。

最后,这些修改通过使用PyTorch的transforms模块被应用到了CIFAR-10数据集上。下面展示了来自CIFAR-10数据集中不同类别的样本图像的网格图。

picture.image

Data Encoding and Embedding

数据编码和嵌入技术被应用于CIFAR-10数据集,以便在训练前准备数据。CIFAR-10数据集包含了来自十个不同类别的图像,包括汽车、鸟类、猫和飞机等。

这些类别名称用0到9范围的整数数值表示。数据集通过Torchvision库加载,它有一个参数transform,用于对输入图像应用数据转换。作为转换的示例,定义了transform_train和transform_test。Compose功能可以实现多个数据转换的链式操作。在这个例子中,转换包括将图像转换为张量。使用为CIFAR10数据集提供的均值和标准差信息,通过ToTensor来标准化像素值。

在这个数据集上没有使用明确的嵌入技术。然而,数据是以适合训练卷积神经网络(CNN)模型的格式准备的。通过它们的卷积层,CNN模型可以自动学习特征表示。从输入照片中,这些层提取相关的空间特征。通过torch hub 'load加载的ResNet-18模型的预定义卷积层,旨在学习图片输入的分层表示。

picture.image

Deep learning architecture

流行的深度学习架构ResNet-18主要是为图像分类任务而设计的。该架构中,卷积层之后是一系列的残差块。该算法由18层组成,包括卷积层、批量归一化层、ReLU激活函数以及全局平均池化层。通过加入改进梯度传播的跳跃连接,该架构旨在解决深度神经网络中的梯度消失问题。在此工作中,使用torch.hub.load加载的ResNet-18模型设置了预训练=False,表示该模型没有预训练。将模型使用到(device)后,模型随后被转移到指定的设备(如果有的话,可能是GPU)。

IV Results

本部分被划分为三个小节,分别名为评估矩阵、实验设置和评估与模型比较,以下是相关描述:

Evaluation matrix

在作者的方法中包含了常用的准确性、精确性、召回率和F1分数的评价指标。此外,还考虑了执行所需的时间。指标的计算公式如下所示。

Experimental Setup

使用了Kaggle下载CIFAR10数据集。该数据集包含10个类别,每个类别有6000张照片,总计60000张32x32的色彩图像。其中可供使用的是10000张测试照片和50000张训练图像。数据集由五个训练批次和一个测试批次组成,每个批次包含10000张照片。测试批次中准确地包含从每个类别随机选择的1000张照片。其余的图像随机分布到训练批次中;然而,某些训练批次可能包含某一类别的图像数量不成比例。训练批次中准确地结合了每个类别的5000张照片。为了帮助处理重大的计算复杂性,最后的模型保留了所有10个类别。在数据输入训练阶段之前,物品被随机打乱以消除任何潜在的数据模式。代码将CIFAR-10数据集划分为训练集和测试集。模型使用训练集进行训练,并通过测试集评估其性能。在训练和测试阶段,分别利用数据加载器(trainloader和testloader)高效地批量加载数据。在开始训练循环之前,设置了两个选项:“torch.set_num_threads(4)”和“cudnn.benchmark True”。

picture.image

Evaluation and model comparison

在这个评估中,作者比较了不同配置和模型在CIFAR-10数据集上的表现。作者使用这个[7]笔记修改了最终的代码。作者检查了各种指标,如测试准确度、精确性、召回率、F1分数以及训练时间,以评估每个模型的有效性。

首先,作者评估了没有高性能计算(HPC)工具的ResNet-18模型的性能。在349个周期的配置中,该模型实现了85.980%的高测试准确率,精确度为85.92%,召回率为85.98%,F1分数为85.95%。这个配置的训练时间为12,957.48秒。同样,在159个周期的配置中,该模型达到了85.450%的测试准确率,精确度为85.48%,召回率为85.45%,F1分数为85.46%。这个配置的训练时间为5,992.87秒。

接下来,作者探讨了使用高性能计算(HPC)工具的ResNet-18模型的性能。在配置为349个周期的条件下,模型获得了86.210%的测试准确率,精确度为86.22%,召回率为86.21%,F1分数为86.22%。此配置的训练时间为9,624.68秒。同样,在配置为159个周期的条件下,该模型实现了85.980%的测试准确率,精确度为86.00%,召回率为85.98%,F1分数为85.99%。此配置的训练时间为4,266.93秒。

另外,作者评估了使用高性能计算(HPC)工具以及不使用HPC工具的AlexNet模型。配置了HPC工具且迭代25个周期的模型,在测试中达到了87.430%的准确率,88.115%的精确度,87.82%的召回率以及86.98%的F1分数。此配置的训练时间为2,859.31秒。另一方面,没有配置HPC工具且迭代25个周期的模型,在测试中达到了86.02%的准确率,85.045%的精确度,85.76%的召回率以及84.13%的F1分数。此配置的训练时间为3,994.93秒。

最后,作者评估了使用高性能计算(HPC)工具与不使用HPC工具的ResNet-50模型的性能。配置了HPC工具且迭代20个周期的模型在测试中达到了74.89%的准确率,精确度为73.28%,召回率为73.01%,F1分数为72.79%。此配置的训练时间为8,571.21秒。相比之下,没有配置HPC工具且迭代20个周期的模型实现了较低的测试准确率,为72.78%,精确度为71.07%,召回率为70.84%,F1分数为71.97%。该配置的训练时间为1,091.33秒。这里附上了一个比较表。

picture.image

V Conclusion

在本文中,强调了使用高性能计算(HPC)技术来提高卷积神经网络(CNN)性能的成功应用。主要观点是在概括其主要发现和结果后得出的。由于使用了HPC工具,训练CNN的有效性得到了显著提高。通过使用分布式训练方法和并行计算,训练周期显著缩短,从而实现了更快的收敛性、更好的解决时间以及准确度。在这项研究中,对卷积神经网络(CNN)及其并行化技术进行了彻底的分析。

picture.image

在未来工作中,利用高性能计算(HPC)技术优化卷积神经网络(CNN)的领域可能包括以下内容:研究混合并行方法:通过结合模型并行和数据并行,混合并行可能进一步展现出提升CNN可扩展性和性能的潜力。未来的研究可以探讨混合并行如何改进在HPC系统上的CNN训练。其中一些研究可能包括-

大规模数据集优化: 本研究主要使用CIFAR-10数据集来优化卷积神经网络(CNNs)。未来的研究可以扩展到更大的数据集,如ImageNet,以评估高性能计算(HPC)工具处理大规模数据以及训练更复杂CNN模型的能力。

与高级高性能计算技术的整合: 高性能计算是一个总是发展新方法和工具的领域。为了进一步提高卷积神经网络(CNN)训练的性能和有效性,未来的研究可以探索将最先进的高性能计算技术如GPU加速、定制硬件设计和优化的深度学习框架进行整合。

总的来说,利用高性能计算(HPC)工具对卷积神经网络(CNN)进行优化的研究显示了利用HPC能力提高CNN训练的巨大潜力。这些结果扩展了大规模CNN模型训练,并解决了包括计算机视觉、自然语言处理和生物医学研究在内的多个领域的实际问题。它们也为深度学习和高性能计算更广泛的领域做出了贡献。

参考

[1].Optimizing CNN Using HPC Tools.

0
0
0
0
评论
未登录
暂无评论