基于分布式缓存加速容器化深度学习的优化方法

本文提出了基于分布式缓存加速容器化深度学习的优化方法,通过TDCS(task and data co-located scheduling)实现训练任务与缓存数据的协同调度,有效提升了深度学习训练性能。在128块NVIDIA V100 GPU上,相较于直接从远程存储读取数据,TDCS能实现2~3倍的加速。文章详细讨论了访问训练数据的典型方法、Alluxio系统参数优化以及TDCS的策略设计与实现,实验结果显示TDCS增强了分布式缓存加速训练的可扩展性。
摘要由CSDN通过智能技术生成

a1362b5646641f2b43474ef580599b73.png

点击上方蓝字关注我们

4d18a922ed4ff1bec82bef295afcf098.png


基于分布式缓存加速容器化深度学习的优化方法

张凯, 车漾

阿里巴巴科技(北京)有限公司,北京 100102

 摘要使用GPU运行容器化深度学习模型训练任务,性能往往受限于数据加载和预处理效率。很多GPU计算资源浪费在等待从远程存储服务读取数据的过程中。首先介绍了基于容器和分布式缓存技术加速深度学习训练的方法,以及使用Alluxio和Kubernetes实现的系统架构和初步优化手段;然后阐述了TDCS及其训练任务与缓存数据互感知的协同调度策略;接着在Kubernetes容器集群中实现了TDCS,增强了分布式缓存加速大规模深度学习训练的可扩展性;最后用ResNet50图像分类模型训练任务进行性能验证。实验结果表明,相较于直接从远程存储服务中读取数据,TDCS可对运行在128块NVIDIA V100 GPU设备上的分布式训练任务实现2~3倍加速。

关键词深度学习 ; 分布式缓存 ; 协同调度 ; Alluxio ; 容器

2a0ddd8c84da7d020860ecd472775ea6.png

论文引用格式:

张凯, 车漾. 基于分布式缓存加速容器化深度学习的优化方法. 大数据[J], 2021, 7(5): 150-163.

ZHANG K, CHE Y. Method of accelerating deep learning with optimized distributed cache in containers.Bigdataresearch[J],2021,7(5):150-163.35e6246e2c65f0f708aff12dabb34921.png

1 引言

最近10年,深度学习技术和应用发展风起云涌,百花齐放。尤其在机器视觉、自然语言理解、语音识别等领域,一大批成熟的人工智能模型和服务正落地应用于各行各业。越来越多的行业发掘出大量需求,需要利用企业日积月累的海量业务数据,高效便捷地训练深度学习和机器学习模型。

与此同时,云计算在IaaS、PaaS和SaaS等层次已经发展得相当成熟,并逐步进入云原生时代。在云原生技术体系中,以Docker为代表的Linux容器技术和以Kubernetes为代表的容器编排管理技术在应用开发、交付、运维的生命周期中逐渐成为业界的事实标准。同时,应用微服务架构的自动化部署,运行时动态弹性伸缩,完善的日志、监控、告警等运维体系等,都成为现代软件开发运维的基础需求。

深度学习和人工智能应用往往需要使用大量GPU、张量处理器(tensor processing unit,TPU),甚至神经元处理器(neural processing unit,NPU)这类定制的高性能异构计算设备来迭代处理海量的训练数据,最终得到满足准确率和性能要求的模型。由于数据规模较大、模型复杂度较高,训练过程一般较漫长。因此,优化GPU等异构计算设备的利用效率、加快训练数据处理速度,成为提升深度学习和人工智能应用生产率和成本优化的关键因素。

Kubernetes容器编排管理技术对于GPU、TPU、NPU等高性能异构计算设备资源的支持日趋成熟。考虑到云计算在成本优化、资源规模和弹性伸缩方面的优势,配合Docker容器技术擅长的轻量级和标准化应用交付能力,业界主流的生产人工智能模型和应用的技术方案会采用容器集群结合云计算平台的GPU资源的架构,进行分布式深度学习模型训练。

在“云上”执行训练任务,通常会在带有GPU设备的计算服务节点上进行。训练数据会被存放在各种异构的云存储服务中,如对象存储服务、远程文件系统服务等。这种典型的计算和存储分离的分布式计算架构有利于增强计算和存储的弹性扩展能力,但同时也会带来数据访问时延增大的问题。如果考虑数据敏感性、隐私保护和安全合规的要求,训练数据通常也会被存放在私有数据中心中。这样势必要求深度学习模型训练平台采用混合云的架构,统一使用“云上”计算资源来访问“云下”数据。而这种“本地存储+云上计算”的训练模式进一步增大了计算和存储分离架构带来的远程数据访问时延,进而导致深度学习模型训练整体性能的显著下降。

本文首先概述深度学习训练系统中典型的数据访问方法;然后提出基于容器和分布式缓存技术的深度学习训练系统架构,以及训练任务与缓存数据互感知的协同调度方法TDCS(task and data co-located scheduling);之后介绍使用Alluxio加速训练的实验结果和性能瓶颈,并针对Alluxio进行参数调优,获得了初步性能提升;笔者还提出TDCS任务与数据协同调度方法,并给出TDCS的具体策略设计和实现细节;最后提供多组实验数据验证TDCS的效果,实验表明TDCS有效增强了容器环境下分布式缓存系统的可扩展性,可以显著加速深度学习训练。

2 访问训练数据的典型方法

为了规避计算和存储分离架构带来的数据访问时延,典型做法是在开始模型训练之前,将训练数据复制到GPU计算节点本地的磁盘存储中,如普通机械硬盘或者NVMe SSD等高速存储设备;或者将数据提前复制到部署在计算节点上的分布式存储系统中,如Ceph、GlusterFS。随后计算任务就相当于从本地读取训练数据,有效缓解了数据访问时延对GPU计算性能的影响。然而,这种额外的数据迁移过程会面临如下问题。

● 把训练数据复制到GPU节点的方式低效且难以管理。如果是手动复制,非常容易出错。

● 深度学习训练数量很大,且可能持续增加。“云上”GPU计算节点配置的磁盘容量有限,经常出现无法存放全量训练数据的情况。

● 将训练数据存放在多个GPU计算节点上的分布式存储系统内,可以解决数据容量问题,但分布式存储系统自身的运维成本和难度都很大;并且,存储系统与计算节点耦合,本身也会产生计算、网络、I/O等本地资源的争抢和干扰问题。

3 基于分布式缓存的容器化深度学习模型训练系统

业界已经有一些工作通过基于缓存机制的方法来解决上述复制训练数据到计算节点方案存在的问题。与这些工作不同,本文设计并实现了一种Kubernetes容器编排技术和分布式缓存技术相结合的深度学习模型训练系统。该系统架构可以满足云计算环境下大规模容器化深度学习系统对训练任务的加速要求。该系统的基础架构如图1所示。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值