Peter,德资知名汽车零部件制造企业大中华区CIO,手下员工几十人。
以德企人特有的严谨细腻,坚持对所有技术细节的追求。
技术宅
小D,技术宅一枚,好研究,喜欢跟客户聊最热、最火的前沿技术。
作为小D 的客户,Peter的“完美主义”,常常让他哭笑不得。
这不,Peter的电话又来了……
今天,Peter来电的目的是就公司最近准备上马的AI项目,跟小D咨询基础架构方面的解决方案。
谈话一如既往的简单直接,Peter一上来就表明了来意——
Peter的公司计划实施图像识别项目,对产线上高速摄影机拍摄下来的海量产品图片进行分析。期望基于先进的AI技术实现自动识别残次品,并提高良品率,甚至针对突发产品质量问题进行智能的应急反应,从而实现智能的产品质量管理。
Peter是项目组成员之一,负责其中的基础架构部分。所以,他直截了当地抛出了一串的问题……
>>> The First <<<
问
关于AI图像识别项目基础架构方面,有什么好的建议吗?
答
一个AI项目一般包括三个关键部分——算法、算力和足够的数据。基础架构可解决算力方面的问题,在算法和数据方面贵公司是否已经做好了充分的准备?
>>> The Second <<<
问
我们产线上安装了多个高速摄影机,每天都有成千上万张采集图片,这些会作为我们深度学习训练、推理的主要数据来源。算法方面由项目组其他同事负责,我今天主要想了解的是,在算力方面我们能做哪些方面的优化。听说采用GPU加速可以大幅提高深度学习计算能力?
答
是的,深度学习技术飞速发展很大程度上受益于GPU加速的应用。之前采用多个CPU计算一个结果,经常要数天甚至数周,而GPU辅助加速可以把这个计算周期缩短到数小时。
CPU和GPU各有所长。如果把CPU比作一个高深的数学系老教授——可以做复杂的算术运算,GPU就相当于一大群(数千个)小学生——做加减乘除。如果让他们分别完成1万道小学算术题,速度上老教授肯定干不过数千个小学生。在深度学习场景中,通常需要计算的都是海量的小学算术题。
图片点击放大查看
>>> The Third <<<
问
有道理,这个GPU怎么配比较好呢?我听说有可以配置8GPU的服务器?
答
GPU是好东西,不过单个节点内部GPU数量是不是越多越好呢?
在GPU服务器市场,当前主流设备形态包括双卡服务器、3卡服务器、4卡服务器、8卡服务器……到底怎么选比较好呢?要想回答这个问题其实也不难,无非从两个方面入手:
1、硬件架构设计层面考虑;
2、软件设计层面需求考虑。
从硬件架构层面来说,首先得考虑异构的CPU/GPU以及多个GPU/GPU之间如何互联。当前CPU/GPU主要通过PCIe/NVLINK两种方式连接。而业界主流X86体系则采用的是GPU/GPU间通过NVLINK互联,CPU/GPU之间仍然通过PCIe接口交互。当前最新的Intel Xeon Skylake CPU微架构中,每个CPU内置48个PCIe Lane。假如不考虑其它系统总线开销的话,能够提供用于连接GPU的带宽是3*X16 Lane(每个GPU卡需要X16 Lane),考虑CPU/GPU之间做无阻塞通讯,最多也只能支持1:3的配比(1:2才能真正支持无阻塞)。另外从NVLINK互联框架看,超过4个GPU之间做互联的话,也无法保证所有GPU节点全连接交互。
图片点击放大查看
目前主流的深度学习框架均利用GPU性能上的优势,把大量计算任务卸载到GPU上做处理。但是,计算中涉及大量的矩阵参数交换,仍然需要CPU来协调处理,对CPU性能压力并不小。如果CPU/GPU配比太高,很可能CPU的计算性能以及通路带宽将成为下一个瓶颈。
从软件架构层面来讲,目前主流的深度学习训练很多采用单机训练的方式做。但是,单机Scale Up空间总是有限的。无论单台服务器支持GPU的数目是多少,毕竟是有限的,随着训练数据量的增长、分类模型的复杂度,神经网络训练需要的计算性能不断提高,最终还是会走上多机多卡的Scale Out扩展集群训练方式。计算技术不断革新、闪存推动、RDMA技术/低延迟网络等等,也为集群训练扫清了各种障碍。包括Google、Facebook、Nvidia、Mellanox、Dell等众多公司,都已经投入到集群GPU训练方案的研究之中。目前,Facebook已经完成64*GPU集群加速测试,Google已经完成16/32/50/100*GPU集群加速测试。Facebook 64卡GPU集群训练,性能加速57倍;Google在32卡GPU集群训练,性能极速30.6倍。越来越多的主流深度学习框架,已提供对多机多卡分布式训练的支持包括TensorFlow、Caffe2、CNTK、MXNet、DL4j、PaddlePaddle(主流框架,目前大概只有Caffe.不支持)。
图片点击放大查看
上图是Dell EMC US HPC Lab基于8台C4140服务器(支持1:1~1:4的CPU/GPU配比),每台配置4块V100,32卡集群做图像分类深度学习加速训练。节点间互联基于Mellanox EDR交换网络。在MXNet框架下实测,随着节点数的增加,性能得到准线性的提升(基本媲美单机ScaleUp)。
>>> The Fourth <<<
问
听起来挺有道理的,贵司支持的GPU服务器型号都有哪些呢?
答
先秀张图给您看下▼
图片点击放大查看
针对AI深度学习领域,我们有一整套的参考架构体系,您可以根据项目阶段、规模选择所需的配置。初始阶段,可以选择单节点的R740/T640做技术验证。中后期大规模应用阶段,可考虑用专为GPU加速设计的C4140组建高性能群集。一个IT基础架构是否合理,无非考虑两点,其一是满足当前应用需求,其二是能否顺应技术发展趋势,做到未来扩展方面的前瞻性。选择单机多卡,多机多卡方式都不是绝对的。还要结合企业自身实际情况,综合考虑各个因素。满足当前需求很容易做到,而企业IT决策者通常会更关注于未来发展方向把握上,以及为未来可能的变化预留足够的灵活空间。
>>> The Last <<<
最后,小D还不忘借机调侃了一下严谨的Peter,随即接下去和Peter一起研究那些成千上万张图片如何存放的问题……