阿里云CPFS在人工智能/深度学习领域的实践
摘要: AI/DL在迅速发展 随着数据量的爆发式增长和计算能力的不断提升,以及在算法上的不断突破,人工智能(AI,Artificial Intelligence )和其支持的深度学习(DL,Deep Learning)计算模型取得了突飞猛进的发展。
AI/DL在迅速发展
随着数据量的爆发式增长和计算能力的不断提升,以及在算法上的不断突破,人工智能(AI,Artificial Intelligence )和其支持的深度学习(DL,Deep Learning)计算模型取得了突飞猛进的发展。
去年,中国制定了《新一代人工智能发展规划》立志要在AI总体技术和应用2020年与世界前沿同步,2025年AI成为产业升级和经济转型的主要动力,2030年,中国要成为世界主要AI创新中心。AI已经上升为国家策略,针对AI的投资也在不断迅速增长。
AI加持的自动驾驶汽车,自然语言处理,人脸识别等等行业已经逐渐变成现实,这些将深刻改变人类的生活和生产方式。
AI/DL的数据处理流程
采集数据:
根据业务需要,实际采集相应的数据,或者从专门的数据采集公司购买现成的原始数据。
数据预处理:
这些原始数据可能会存在有缺失值、重复值等,在使用之前需要进行数据预处理。数据预处理没有标准的流程,通常针对不同的任务和数据集属性的不同而不同。例如,调整照片的亮度、对比度等等。
特征工程:
将数据中的特征标注出来,比如标记自动驾驶采集的道路信息,道路两旁的汽车信息等等,再比如人脸识别的场景中,将人脸照片根据不同的特征进行分类等。
模型训练:
构建适当的算法,从训练集中计算出准确的预测值。比如,在自动驾驶汽车的场景中,机器学习算法的主要任务之一是持续感应周围环境,并预测可能出现的变化。
模型评估:
将训练好的模型放到实际的应用环境中,评估模型的好坏。在这个过程中,可以根据我们设定的评价指标和结果,反过来不断的修正我们的模型,使得模型的准确度不断提高。
从整个流程来看,AI需要强大的计算能力和大量的数据为基础,这也是为什么很多科技巨头宣布自己是数据驱动的公司,同时很多行业在不断推动将业务数据化。数据化之后,借力AI,就能让数据产生巨大的价值。有了数据之后,还要有高效的算法和匹配的模型,这是AI的核心竞争力。
AI/DL对存储系统的需求
目前AI/DL最常用的三大编程框架分别是 TensorFlow,Caffe,MXnet,并且GPU(Graphical Processing Units)在这一技术腾飞的过程中发挥了巨大的推动作用,逐渐奠定了GPU在AI/DL解决方案中的主导地位,几乎所有的AI/DL解决方案都采用了GPU的集群解决方案。
GPU比CPU有更多的计算核心,更容易扩展。数量众多的计算核心可以大量并行的运行更多的AI训练/推理线程,使得AI训练/推理在更短的时间内完成更多的计算任务。简单的说,GPU让AI更快,更准。
这种变化使得服务器的形态发生了很大的变化,用于AI/DL的服务器通常配置2个CPU+四个GPU,甚至有的厂商推出了一机8卡,一机16卡的服务器。 随着单机GPU数量的不断增加,前端计算系统的计算能力和计算密度得到了极大的提升,这也给后端的存储系统带来极大的挑战。
AI/DL对计算能力的不断苛求,正在创造着当今计算领域最复杂最苛刻的工作负载,这种变化正给数据中心解决方案的计算,存储,网络系统带来了越来越大的挑战。之前针对传统工作负载设计的存储系统,已经不能满足AI/DL工作负载的需求。
最开始,AI很多训练任务,都是在单机进行的,使用本地磁盘来创建RAID,然后格式化成本地的文件系统来存储数据。并且如果使用机械硬盘不能满足AI对IOPS的需求,很多用户使用了SATA的SSD硬盘,甚至使用了NVME的SSD硬盘来支持AI的工作负载。虽然这很好的满足了单机训练的需求,但是也带来了一定的问题,例如需要将训练样本拷贝到多个服务器进行训练,这样同一份数据不仅要拷贝多份占用存储空间,也给网络管理和数据管理带来了复杂性;并且由于数据无法共享,无法支持整个GPU集群同时运行任务,降低了整个IT系统的使用效率。
为了便于数据管理和共享,传统文件存储在AI系统中得到一定程度的使用。但是传统文件存储无法横向扩展,并且单个服务器很容易成为性能瓶颈,因此传统文件存储能提供的容量,带宽和IOPS都有限,无法满足AI对存储系统的苛刻需求。稳定性方面,随着磁盘容量的不断扩大,基于RAID的数据保护机制也越来越遭遇挑战,例如当RAID中某块磁盘坏掉,重建的时间越来越长。高可用方面,存储系统双节点的高可用配置在某些情况下,已经无法满足需求。
AI场景需要后端存储提供高带宽,高IOPS和高度的并行性,并且能够方便的扩展和管理。例如,在某些的训练场景中,训练集都是几十KB的小图片,并且训练集可以达到上百个TB。在训练开始的时候,GPU集群从后端存储系统中,读取这些小文件的训练集进行训练,这要求存储延迟要低,否则IO会成为整个工作流的瓶颈。
CPFS应用于AI/DL
CPFS(Cloud Parallel File System)并行文件系统是阿里云文件存储团队推出的并行文件系统。CPFS采用基于对象的设计思路,将数据和元数据分离,将多台服务器的存储空间聚合成一个统一的命名空间,原生支持POSIX和MPI接口,上层应用不需要修改可以直接访问CPFS上的数据。
CPFS的架构先进性
• 超高吞吐和IOPS
CPFS将数据条带化后均匀分布在存储集群上,实现计算节点并行访问,因此吞吐和IOPS可随存储节点的数量线性增长。同时,支持高带宽低延时的Infiniband网络用于数据交互,整个存储集群可提供超高的聚合带宽和IOPS。
• 盘古2.0
CPFS持久化存储基于飞天盘古2.0分布式存储系统,通过极致的性能优化,实现磁盘读写的超高性能。支持多份数据拷贝,可以提供11个9的数据可靠性,并完美通过了阿里双十一超高压力的考验。
• 深度优化的高可用性
所有节点均为高可用设计。实现集群内秒级别的故障检测,并由CPFS集群调度器自动将服务切换到其他节点,同时兼顾负载均衡。整个切换过程用户不感知,提供远高于传统两节点HA的高可用性。
• 弹性可扩展
支持在线的扩容,由于所有数据均以条带化的方式存储并且支持扩容以后的自动负载平衡,可满足性能的线性增长并且即时利用扩容节点的吞吐和存储能力,满足业务增长需要的更多容量与性能的诉求。
• 低成本
数据以EC方式持久化存储,在保证数据可靠性的同时,最大限度发掘存储集群的可用空间,提升存储性价比。
CPFS充分利用Infiniband高速网络的高带宽,低延迟的特性,同时支持在线横向扩展,可以为AI提供超高的聚合带宽和高IOPS,满足AI训练场景的苛刻要求,如图所示。同时,针对AI中应用容器的场景,CPFS可以支持在容器中直接挂载,容器直接访问数据,加速IO。
另外,CPFS提供了统一的命令空间,方便了数据在整个AI数据处理流程中的共享和流动,避免了不必要的数据拷贝,简化了数据管理的流程,方便了数据生命周期的管理。
案例分析
我们最近在跟某深度学习领域客户的合作中,在训练场景中使用了CPFS,得到了客户的认可。客户的训练场景中,训练集中的文件都是jpg格式的小图片,每个图片大概20KB~100KB,每个训练集容量不一定,在几个TB到几十个TB之间。训练机采用的是一机四卡的GPU服务器,总共四台。
训练开始之前,需要先将这些训练集拷贝到CPFS中,通常是拷贝训练集的压缩文件,然后再在CPFS来解压。解压过程中,会将数量众多的小文件直接保存到CPFS目录下。这时相当于在CPFS上写入海量的小文件,对文件系统的写入的IOPS要求比较高。训练过程中,训练机会从CPFS上读取数量众多的小文件,进行模型的训练和修正。训练过程中,主要要求保证读的IOPS。
客户希望在CPFS上,达到单个节点3W的File creation的IOPS才能满足需求。我们通过以下优化方法,最终在公有云CPFS上达到了用户的要求:
1.系统架构优化:
• 合理配置CPFS节点的CPU,内存配置,网络,磁盘,确保性能匹配;
• 合理分配CPFS中的元数据节点和数据节点,以及数据存储和元数据存储的容量;
2.调整CPFS的优化参数,针对小文件进行参数调优
经过上述优化方法,最终达到了单客户端File creation 3.5W的最高性能,获得客户认可。
总结
CPFS以其超高的稳定性,良好的扩展性,为AI/DL提供了高带宽,高IOPS的统一的命名空间的文件服务,满足其需求。
CPFS不仅支持公有云版本的弹性使用,支持存储包的付费模式,无缝对接阿里云AI生态;同时支持以专有云的形式输出,满足不同客户的需求。
阿里云CPFS并行文件系统,在高稳定性的前提下,为AI提供高带宽,高IOPS的文件存储服务,简化了整个AI的数据处理流程,为AI行业提供了一种高效稳定的文件存储解决方案。
作者:nas-hz