Graphcore主推的IPU在业界被称为继CPU、GPU以外的第三类AI芯片。今年2月,EE Times评选出“十大AI芯片创企”,其中来自英国的Graphcore凭借其为AI计算而生研发的IPU获选。7月,Graphcore在布里斯托和北京同步推出了两款硬件产品:第二代IPU芯片Colossus MK2 GC200 IPU(简称MK2 IPU),以及包含四颗MK2 IPU,可用于大规模集群系统的IPU-Machine:M2000 (IPU-M2000)。最近,Graphcore公开了IPU-M2000的应用性能测试。这次Benchmark显示,相比A100,在IPU-M2000上,ResNet的吞吐量提升了4倍,ResNeXt的吞吐量提升了5.4倍,EfficientNet的吞吐量达到了18倍,Deep Voice 3达到了13倍。
IPU-M2000是继英伟达的GPU和谷歌的TPU之后,世界上第三个公开发布的能够训练BERT-Large模型的AI处理器产品。最近公布的应用性能测试中表现优异。
这次发布的基于MK2 IPU的IPU-M2000的Benchmark覆盖了很多模型的训练结果,包括典型的CV模型ResNet、基于分组卷积的ResNeXt、EfficientNet、语音模型、BERT-Large等自然语言处理模型,MCMC等传统机器学习模型。其中BERT-Large这样的大型模型或是MCMC这样的传统模型,在一台IPU-POD64这样的系统级产品中训练,相比在2台DGX-A100上训练,也能够实现一定的性能收益。
上图展示了BERT-Large端到端的训练时间性能,最上方的是DGX-A100的性能,端到端的训练时间是69.5小时,训练的数据集是维基百科的英文语料,其他训练的参数,基本上是摘录了英伟达的数据。下方是对2个DGX-A100和3个DGX-A100做的一个线性扩展的估计。众所周知,从一个系统到两个系统到三个系统,基本是无法达到完全线性扩展的,所以这边也显示不出A100最佳和最高的性能可能性。最下方可以看到,在IPU-POD64上,PopART BERT-Large的端到端的训练时间只要13.2小时。如此看来,相比1个DGX-A100,BERT-Large能在IPU-POD64上实现5.3倍的提升,相比3个DGX-A100,则能够实现1.8倍的提升。上图右侧有一个价格/功率指示性的比对关系。1个IPU-POD64和3个DGX-A100的功率和价格基本相同,但却能够实现接近两倍的性能提升,这就是非常显著的性能优势。
此前,EETC曾发表过《AI的训练与推理,会往哪个方向发展?》,文中提到:Graphcore联合创始人兼CEO Nigel Toon先生数度谈到AI“训练(training)和推理(inference)技术本质上没有什么区别”。Nigel Toon表示:训练和推理不应做过分严格的区分,未来部署机器智能才可能是正确的方向。
下面我们看看第二代IPU-M2000在推理方面的优势。
EfficientNet是2019年谷歌开发的一个模型。EfficientNet的模型尺寸有8个等级,B0是一个模型尺寸比较小的模型、模型尺寸最大的是B7,大概是60兆-70兆,B0是5兆的参数量级。
上图横坐标表示吞吐量、纵坐标表示时延。在PyTorch和TensorFlow两种不同的框架下,EfficientNet-B0在1台IPU-M2000上的吞吐量大概可以达到以“万”为单位的级别,时延远远小于5毫秒。而在最新的GPU上,即使在时延最大化的情况下,它的吞吐量也远远小于以“万”为单位的吞吐量级,充分凸显了IPU所具备的时延优势。
图中左上角展示了Deep Voice 3的训练性能,该模型训练在IPU上的吞吐量能够达到GPU的13.6倍。右上角展示的是BERT-Large推理上的性能,在双方都处于最低时延的情况下,在IPU上,与A100相比,BERT-Large能够实现3.4倍吞吐量的提升。大家可能会疑惑batch-size比较小的时候A100没有打满,我们把batch-size打大的时候、A100在batch-size可能是等于8的情况之下,它的吞吐量其实是有显著提升的。图中最上面红点,展示的是该模型在IPU-M2000上的最高的吞吐量和时延的性能,图中可以看到该模型在IPU-M2000上的吞吐量能够达到三千多。
左下角是LSTM推理的性能展示显示,IPU在时延和吞吐上这两方面都是有相当优势的。右下角展示的是MCMC概率模型训练的性能,MCMC模型是用来估计股票价格的一个评估工具。评估一个股票是不是能够超出大盘的基本股价时,一般都是用一个Alpha因子来表示。如图所示,该模型的训练在IPU-M2000上,比在最新GPU上快大概17倍。
计算机视觉方面,左边是ResNet和EfficientNet的训练性能展示,右边是两个模型的推理性能展示。ResNet-50是一个中等规模的模型、拥有大概20兆的训练参数。EfficientNet-B4也拥有大概20兆的训练参数。两者参数量差不多,但是它们的性能表现有所不同。训练方面,ResNet-50相比A100,大概能实现2.6倍的性能提升,而EfficientNet相比A100能够实现10倍左右的性能提升。这是因为ResNet-50基本上是由卷积组成的,而EfficientNet是由可分离深度卷积组成的,它的卷积核比较小,在调度上的开销和算子的利用率在IPU上可能会有更好的体现。如果算子小、算子比较多,在GPU上的调度开销也会引入跟HDM内存上数据交互的开销,可能会导致了它们的性能大大的折损。这也说明了,在新一代的模型上IPU其实更具普适性。
推理方面,ResNet-50和EfficientNet-B0在PyTorch和TensorFlow的性能表现是不相上下的。这也说明了Poplar SDK 1.4中引入的对于PyTorch的支持,在模型运行中没有性能上的损耗。
IPU-POD64是16台IPU-M2000组成的一个解决方案。Graphcore已经在全球范围之内实现了该方案的交付。该方案实现了x86和IPU计算的解耦。
IPU-POD64是目前市场上非常少见的,可以同时将纵向扩展和横向扩展都做得非常好的AI计算平台产品。
纵向扩展是指IPU-POD64可以实现从一台IPU-M2000到一个IPU-POD16(4台IPU-M2000),再到一个IPU-POD64(16台IPU-M2000)进行软件透明扩展。也就是说,编译好的软件在一个IPU-M2000里能用,如果您希望获得16倍的性能,扩展到IPU-POD64,同样的软件也能够运行使用。与之相比,如果使用DGX-A100这样的机器,想要从1个DGX-A100扩展到4个DGX-A100,需要做大量的软件改造。有一个概念叫“分布式的机器学习”,就是要用一个分布式的机器学习框架,对您的算法模型进行相应的改造之后才能够从1个DGX-A100扩展到4个DGX-A100。
据沟通,很多头部互联网公司认为当前绝大部分单一工作负载最大不会超过IPU-POD64。也就是说,对于当前最主流的工作负载来说,1个IPU-POD64就能够让绝大多数工程师不需要担心分布式的机器学习、分布式的机器学习框架、分布式的通信,只需一个IPU-POD64就可以进行软件透明扩展。
纵向扩展不代表不能做横向扩展。从横向扩展的角度来看,多个IPU-POD64最多可以支持64000个IPU组成的AI计算集群。所以,以最小的IPU-M2000作为一个计算单元,Graphcore可以在横向扩展、纵向扩展两个维度,获得非常好的超级AI计算集群。
据EETC了解,Graphcore最近有一系列的动作,包括Graphcore与阿里云HALO的合作,发布Poplar SDK 1.4,加入MLPerf管理机构MLCommons等等。
阿里云在GitHub上开源了HALO。Graphcore是阿里云HALO/ODLA的共建合作伙伴之一,目前在阿里云HALO的GitHub里已经有IPU的完整支持代码库odla_PopArt。这意味着在GitHub下载HALO开源代码就已经可以在IPU上使用了。目前,Graphcore和阿里云也在基于HALO做一些共同的客户落地的事情。
Graphcore与阿里云HALO展开了非常紧密的合作。HALO的初衷和NNFusion一样,想做一个整体的框架,向上跨AI框架,向下通过ODLA这样一个通用的硬件接口对接不同的硬件厂商的芯片。他们的初衷多是希望处理不同模型,比如TensorFlow模型、ONNX的模型、或是PyTorch的模型时,能够将它一键式地在系统上或者是集群上运行起来。
此外,Graphcore最近发布了Poplar SDK 1.4,并同时发布了面向IPU的PyTorch产品级版本。
同时Graphcore于近期宣布,加入MLPerf管理机构MLCommons。
Graphcore将在2021年上半年正式参与MLPerf性能测试,其IPU-POD64也已经在全球范围内发货,包括中国、北美、欧洲以及其它区域。