介绍
现如今在谈论数据的价值的时候,经常提到的概念之一就是深度学习,或者更广泛的说是人工智能。深度学习系统通常通过大规模的数据集和神经网络算法来训练和完善应用模型,这就需要强大的计算集群,高性能可扩展的存储系统来实现。
深度学习的基本概念
人工智能(AI,Artificial Intelligence)指由人制造出来的机器所表现出来的智能,通常AI尝试创造类人的用于通用目的的智能设备。
机器学习(ML,Machine Learning)是AI的一个分支,通常通过训练的方式来解决特定的问题,例如图片识别,语音识别等。
深度学习(DL,Deep Learning)是机器学习的一个分支,通常指机器学习中使用的神经网络算法超过一层,就称为深度学习。其中最经常使用的是卷积神经网络(CNN,Convolutional Neural Networks),通常包括输入层,隐层(多层),输出层组成的多层网络,并且只有响铃的层之间有连接,同一层及跨层之间无连接,是一种接近人类大脑的层次结构的分层结构。
三者的关系如下图所示:
深度学习在最近几年得到了飞速的发展,许多深度学习的框架涌现了出来。这些框架都依赖于计算图的概念,计算图定义了需要执行的计算顺序,并且计算图可以并行地在GPU中优化和运行。目前比较流行的深度学习框架有TensorFlow,Caffee,Torch等,同时一些新的框架也不断涌现出来。
深度学习数据处理流程
深度学习通常包括以下数据处理流程:
数据采集:
根据业务需要,采业务需要的的数据。同时,也有专门的数据公司,提供数据,可以直接购买。
清洗标注:
采集后的原始数据可能会存在有缺失值、重复值、无效数据等问题,在使用之前需要进行处理。处理的过程,通常针对不同的任务和数据集属性的不同而不同。例如,汽车驾驶中等待红绿灯的时间采集的数据是要删除的。
模型训练:
构建适当的算法和模型,用准备好的训练集训练和修正模型。这通常需要GPU的训练集群来进行训练。
以上步骤完成后,会将训练完的模型部署到实际的应用环境中,实际使用模型来进行验证。部署完成后,我们可以在实际的应用场景中检验模型的好坏,同时用实际环境中的场景来验证和完善模型。
以上各个步骤的工作负载特征如下:
从上面的表里,可以看出,AI各个流程中,工作负载表现出了很大的差别,这对存储系统提出了很高的要求。不仅要支撑顺序读写的大块工作负载,也要支撑随机读写的小块IO的工作负载。
深度学习对计算力的需求
深度学习近年来取得突破性的进展,离不开三个方面:大数据,深度学习模型,计算能力的提升(尤其是GPU在训练场景中的大量应用)。随着问题规模的不断增大,数据量的不断增加,以及训练用的神经网络深度的深度的不断增加,对计算能力的需求也越来越大。
例如,Nvidia新发布的NVIDIA DGX-2服务器,包含了16个GPU单元,单个机器已经可以提供2Peta flops的计算能力。
谷歌的高级研究员、Google Brain 项目的负责人 Jeff Dean 曾说道,事实证明,我们真正需要的是超过现在 100 万倍的计算能力,而不只是区区几十倍的增长。
深度学习对存储系统的需求
共享需求
现在的深度学习通常是由规模庞大的高性能计算集群来完成的,多个节点并行的读取数据,协同的来处理一个任务。因此,在深度学习的场景中,需要一个共享的存储空间来收集和存储数据。将数据共享的好处包括,深度学习模型准备好后,立马可以开始运行,另外也省去了来回拷贝搬运数据的麻烦。
高性能需求
另外,深度学习需要大量的数据来训练模型,因此存储系统要提供高带宽来保证数据的流动足够快,以满足需求。另外,在训练的过程中,算法通常需要随机读取训练集中的训练样本进行训练,因此在训练过程中,随机读的负载占大多数,并且多数图片的训练场景中,图片文件的大小多数在1MB以下,这就对存储系统的IOPS提出了很高的要求。
生命周期管理需求
深度学习的场景中,还要有完善的数据生命周期的管理功能。数据从采集到清洗,标注,到训练,然后到归档,一直处于一个流动的状态,存储系统要提供完善的数据流动机制和管理机制,管理起数据的全生命周期。
传统的NFS存储,虽然提供了共享的命名空间,但是存在以下问题,单服务器节点是冥想的瓶颈,NFS协议本身带来的overhead,无法提供足够的带宽,无法满足数据访问低延迟的需求。另外,也无法提供一个生命周期管理的功能。
因此,深度学习的存储系统,一方面需要提供一个统一的命名空间来共享数据给前端的高性能计算集群,另一方面为了保证训练业务的流畅性,要提供高带宽高IOPS以满足需求,最后还需要提供完善的生命周期管理功能。
阿里云文件存储NAS
阿里云文件存储NAS是一个弹性扩展,高可靠,高可用,高性能的分布式文件系统。它基于 POSIX 文件接口,天然适配原生操作系统,共享访问,同时保证一致性和锁互斥,并且性能随容量线性扩展。
阿里云文件存储NAS架构:
第一层是计算层,使用标准文件协议NFS/SMB或兼容posix的定制化客户端来访问文件存储。第二层是阿里云网络负载均衡ALB,把客户端请求轮转发送到前端机。第三层是负责协议处理的前端机,协议尽量做到无状态,涉及状态部分下沉到元数据管理层。第四层是元数据管理,把目录树结构转变成key-value对,通过基于log structure merge tree的分布式key-value来实现。第五层是元数据和数据持久化在盘古,使用盘古的分布式存储量提供高达10PB,和99.999999999%的数据可靠性,容量可弹性扩展,按需使用。
元数据和数据分离,NAS Protocol前端机IO直连盘古,把数据位置信息和元数据一起更新,前端机通过元数据更新盘古文件的信息。盘古文件是会散在整个集群的,所以前端机读写可充分利用整个集群的IO能力。
安全隔离,基于VPC安全组提供网络隔离和ACL访问控制,保证海量容器使用共享存储时的数据安全隔离。同时提供容器到文件存储的传输加密,保障数据传输过程在不被窃取和篡改。
数据备份,阿里云文件存储提供文件系统级的数据备份功能,可以基于灵活的备份策略提供多副本的数据保护,在发生数据误删除,错误修改的情景时,可以使用历史副本恢复数据。
关于文件存储NAS的详情,请参考:https://www.aliyun.com/product/nas
阿里云CPFS并行文件系统
随着高性能并行计算大规模商业化时代的到来,传统并行文件系统面临诸多挑战,存储资源的急剧增长、成本高、运维管理复杂度大、大规模存储系统的稳定性、性能随规模无法完全线性扩展等一系列问题困扰广大客户,CPFS应运而生。
CPFS(Cloud Parallel File System)是基于定制版Lustre的并行文件系统,,提供大型并行数据处理能力,数据存储到群集中的多个数据节点,多个客户端可以同时访问这些数据,为大型高性能计算机集群提供高IOPS、高吞吐、低时延的数据存储服务。
CPFS架构:
CPFS架构在盘古之上,利用Pangu的block接口为Lustre提供块设备。网络支持Infiniband和以太网。CPFS有以下特点:
超高的数据可靠性
基于飞天盘古分布式存储系统构架的Lustre持久化存储,多份数据拷贝,99.99999999%数据可靠性,远高于传统存储厂商提供的磁盘阵列raid的可靠性。
深度优化可用性
基于paxos ring的仲裁调度,自动检测异常服务节点,并在分钟级别重新提供服务,远高于传统存储厂商提供的手动配置HA的可用性。
符合标准的POSIX/MPI接口,无需对应用做任何修改
高性能,高并发,容量、性能水平扩展
关于并行文件存储CPFS的详情,请参考:https://help.aliyun.com/document_detail/66278.html
CPFS目前处于公测阶段,要申请CPFS的测试请到如下链接:
https://www.aliyun.com/product/nas
定位到并行文件系统CPFS的板块,点击申请公测。
阿里云深度学习解决方案
解决方案架构
数据上传:
阿里云提供两种数据上传的方式:
闪电立方
闪电立方Lightning Cube是阿里云为TB乃至PB级数据迁移提供的服务。它使用定制设备,安全,高效,低成本的帮助您把海量数据从本地机房迁移到云端或者是从云端迁移会本地机房。
关于闪电立方的详情,请参考:https://www.aliyun.com/product/mgw
高速通道
阿里云高速通道(Express Connect)服务,帮助您在VPC间、VPC与本地数据中心间搭建私网通信通道,提高网络拓扑的灵活性和跨网络通信的质量和安全性。使用高速通道可以使您避免绕行公网带来的网络质量不稳定问题,同时可以免去数据在传输过程中被窃取的风险。
关于高速通道的详情,请参考:https://www.aliyun.com/product/expressconnect
计算集群:
计算集群方面,阿里云提供GPU云服务器,为AI深度学习优化,提供强大高效的计算能力;还提供了一站式的弹性高性能计算(E-HPC)的公共云服务,便于管理和使用集群;在应用层,还提供了阿里云容器服务,一键生成AI容器集群。
GPU云服务器/弹性裸金属服务器(神龙):
GPU云服务器是基于GPU应用的计算服务,多适用于AI深度学习,视频处理,科学计算,图形可视化,等应用场景,型号有AMD S7150, Nvidia M40, Nvidia P100,Nvidia P4,Nvidia V100阿里云成为中国首家与NGC GPU加速容器合作的云厂商。
关于GPU云服务器的详情,请参考:https://www.aliyun.com/product/ecs/gpu
弹性裸金属服务器(ECS Bare Metal Instance)是一种弹性可水平伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点,分钟级的交付周期助你的企业获得实时的业务响应能力,助力核心业务飞速成长。
关于GPU云服务器的详情,请参考:https://www.aliyun.com/product/ebm
调度方式可以选择E-HPC或者容器服务:
弹性高性能计算(E-hpc):
弹性高性能计算(E-HPC)基于阿里云基础设施,为用户提供一站式公共云HPC服务,面向教育科研,企事业单位和个人,提供快捷,弹性,安全和与阿里云产品互通的技术计算云平台。
关于容器服务的详情,请参考:https://www.aliyun.com/product/ehpc
容器服务:
容器服务提供高性能可伸缩的容器应用管理服务,支持用Docker和Kubernetes进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器运行环境。
关于容器服务的详情,请参考:https://www.aliyun.com/product/containerservice
存储系统
文件存储NAS容量弹性扩展,按需使用,对于集群规模小于20台的集群,满足其深度学习工作负载对文件系统的带宽和IOPS需求。对于大规模的并发极高的集群,推荐使用并行文件系统CPFS。
同时,对于冷数据,阿里云提供了OSS对象存储系统,并且提供了Filesync的迁移服务,可以方便的将冷数据归档。
阿里云深度学习解决方案设计关注点
提供强大计算能力的同时,还保证了弹性和易用性:
神龙服务器,既具有裸服务器的性能,又有虚拟机的弹性,并且使用E-HPC提供了简单高效的集群管理和调度系统。
一键部署容器集群,快速建立训练环境。
文件共享方面,文件存储NAS和CPFS并行文件系统按需使用,灵活扩展。
保证稳定性的同时,提供了全生命周期的数据管理和灵活高效的数据流动机制:
文件存储NAS和CPFS高可靠,高稳定,保证业务的连续性。
数据从采集到训练,归档,使用高效的数据传输工具,压缩数据流动时间。
从采集到归档,完全的数据生命周期管理。
保证高可靠性的同时,提供了高性能:
高效可靠的容器管理,支持海量容器秒级启动,并经过阿里超大规模验证。
文件存储NAS和CPFS并行文件系统基于盘古架构,提供了11个9个高可靠性的同时,提供了高带宽和高IOPS。
阿里云深度学习解决方案部署配置
利用E-HPC部署计算集群
建立集群
登录管理控制台,定位到 弹性高性能计算 > 集群,选择地域(如华东1),单击 创建集群。
选择硬件配置,网络配置等参数,配置共享存储(文件存储NAS)!
共享存储在这里配置过后,计算集群节点系统起来后,会自动挂载文件系统NAS。
注意:目前CPFS处于公测阶段,如果要使用CPFS并行文件系统,需要手动在服务器节点的终端里执行挂载命令。
选择软件配置,基础配置等参数,最后点击确认创建集群。确认配置清单,配置拓扑图,大约经过20分钟,您可以回到E-HPC集群列表页面,查看新集群状态。若新集群所有节点皆处于正常状态,则集群已创建完毕。
详细步骤及参数,请参考:https://help.aliyun.com/document_detail/57937.html?spm=a2c4g.11186623.2.11.32767c13pITowJ
使用集群:
登录集群,并使用作业调度系统提交作业。目前E-HPC支持两种作业调度软件PBS pro和
SLURM。详细步骤请参考:https://help.aliyun.com/document_detail/58269.html?spm=a2c4g.11186623.2.18.4de045d6BXuXRW
利用Kubernetes构建集群
Kubernetes集群部署
- 创建Kubernets集群
- 确认集群配置
- 集群创建成功
阿里云NAS文件存储部署
1.创建NAS文件系统
2.添加挂载点
3.成功添加挂载点,挂载地址用于后续对接容器使用
Kubernetes集群对接NAS存储
1.为集群创建存储卷
2.成功创建NAS存储卷