深度学习中的内存管理问题研究综述

本文综述了深度学习中的内存管理问题,探讨了DNN结构、训练过程中的内存管理挑战,并介绍了内存交换、重计算、内存共享和压缩等关键技术。深度学习的内存管理已成为当前研究的重点,这些技术通过优化内存使用,以应对深度模型训练和部署时的内存需求。尽管现有工作取得进展,但如何在内存占用和计算性能之间找到平衡仍是一大挑战。
摘要由CSDN通过智能技术生成

点击上方蓝字关注我们

深度学习中的内存管理问题研究综述

马玮良1,2, 彭轩1,2, 熊倩1,2, 石宣化1,2, 金海1,2

1 华中科技大学计算机科学与技术学院,湖北 武汉 430074

2 华中科技大学大数据技术与系统国家地方联合工程研究中心,服务计算技术与系统教育部重点实验室,湖北武汉 430074

论文引用格式:

马玮良, 彭轩, 等.深度学习中的内存管理问题研究综述[J].大数据, 2020, 6(4):56-68.

MA W L, PENG X, et al.Memory management in deep learning:a survey[J].Big Data Research, 2020, 6(4):56-68.


1 引言

互联网规模的迅速扩张促使全球数据呈现爆炸式增长、海量聚集的特点,社交媒体、物联网等技术的迅速发展导致了大量非结构化数据的出现,从海量数据中提取有价值的信息的难度越来越大。在大数据时代,深度神经网络(deep neural network, DNN)借助大规模数据的训练取得了极高的准确率,深度学习得以快速发展,并逐渐应用于人们生活的方方面面。

近年来,人们见证了深度神经网络在许多领域取得的成功,如计算机视觉、语音识别、自然语言处理等。这些成功是由深度神经网络新架构的创新带来的。卷积神经网络(convolutional neural network,CNN)对空间模式进行建模,在计算机视觉任务中能够达到当前最优的预测结果;循环神经网络(recurrent neural network, RNN)在序列建模和结构预测方面也取得了令人备受鼓舞的结果。深度和宽度是构建深度神经网络最重要和有效的两个因素。神经网络的深度越深、功能层越多,越能有效地降低超参数选择的复杂性,提高模型的鲁棒性。与深度相比,宽度是构建网络的另一个重要因素,它通过不同大小的卷积积累了更多的特征图。

深度学习应用是一种计算密集型和内存密集型的任务。图形处理器(graphic processing unit,GPU)、专用集成电路(application specific integrated circuit, ASIC)、可编程逻辑门阵列(fieldprogrammable gate array,FPGA)、张量处理器(tensor processing unit,TPU)等各种专用加速设备为深度神经网络的发展提供了强大的算力支撑。设计更深层次的深度神经网络可以达到更高的精度,但是这也给各种加速设备带来了极大的挑战。例如,谷歌公司提出的基于转换器的双向编码表征(bidirectional encoder representations from transformers, BERT)模型在训练中使用了768个隐藏层,占用了73 GB的内存(批处理大小为64)。然而,高带宽的GPU内存是一种稀缺资源,目前比较强大的NVIDIA GPU V100内存最多只有32 GB,而主流商用云计算GPU类型(如P100)只有16 GB内存。这一限制阻碍了深度学习研究者去探索更先进的模型架构。目前,有一些工作探讨了大数据环境下新型存储系统的相关内容,从存储系统的角度来解决大数据时代的内存瓶颈问题。王孝远等人从体系结构、系统软件等多方面对当前面向大数据的异构内存系统进行了分析研究,提出了一系列异构内存系统的优化方法;陈游旻等人详细阐述了构建大数据环境下的存储系统所面临的挑战、当前的研究方向以及未来的发展趋势;李鑫等人则从大数据应用的角度对混合存储架构进行了深入的探讨。本文从深度学习应用的角度,侧重于探讨深度学习系统中的内存管理问题,与之前的工作有本质的不同。

内存管理是大规模深度学习发展的一个重要挑战。深度学习中的内存管理已经成为当前深度学习系统研究的重要问题。本文将介绍深度神经网络的基本特征以及训练过程,分析深度学习中内存管理的问题,从技术的角度对一些代表性工作进行分类阐述,对比它们的优缺点,并对深度学习中内存管理的未来发展趋势进行展望。

2 背景介绍

2.1 DNN的结构及训练过程

DNN是由多种不同类型的层组成的层次结构模型,例如,用于计算机视觉任务的卷积神经网络、用于自然语言处理的循环神经网络都可以被称为深度神经网络。

笔者将通过一个典型的卷积神经网络对DNN的模型结构进行具体说明, 如图1所示。神经网络需要经过训练才能用于推理或分类任务。训练通过执行正向传播(forward propagation)算法和反向传播(backward propagation)算法,学习和更新神经网络各层的权值。

对于正向传播和反向传播来说,遍历的方向以及必须执行的操作是不同的。正向传播从第一层执行到最后一层,而反向传播从相反的方向执行(从最后一层到第一层)。正向传播遍历了整个神经网络层,并针对给定的输入执行特征提取和分类任务,从而完成图像分类。在正向传播过程中,每一层的数学操作应用于其输入特征图X,将计算结果进行保存,并作为输出特征图Y。对于线性神经网络来说,第N−1层的输出结果Y直接用作第N层的输入X,如图1所示。因此正向传播的计算是一个序列化的过程,第N层只有在第N−1层完成计算并将其输出结果Y传递到第N层的输入X时,才能开始相应的操作。

对于未经充分训练的DNN来说,推断的图像类别可能是不准确的。因此,笔者使用一个损失函数来推导正向传播结束时推理误差的大小。具体来说,损失函数的梯度是根据最后一层的输出值推导出来的:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值