前年Aspencore的双峰会上,我们采访Graphcore CEO Nigel Toon之时就曾谈到过Graphcore的IPU处理器尚未参与AI业界比较知名的MLPerf基准测试。当时Nigel Toon和Graphcore高级副总裁兼中国区总经理卢涛都表示,Graphcore的资源还比较有限,这一阶段“仍需聚焦开发核心软件特性,以及和客户一同进行一些应用场景的落地”。
Graphcore高级副总裁兼中国区总经理 卢涛
其实6月初MLCommons(MLPerf基准测试的发起主体)发布的Board Members名单中,就能看到有三名新成员加入。其中一位就是Graphcore的战略与业务开发执行副总裁Jon Khazam——这位也是业内名人。所以这次Graphcore参与到MLPerf基准测试中,也是意料之中的。
来看看IPU的测试成绩
此前我们针对IPU虽多有解读,而且也提到它在某些特定工作中(比如此前和微软Azure合作中,在BERT语言模型training和inference;与百度合作,在Deep Voice 3模型training等)的性能、效率表现远超GPU。不过这是一家之言,用卢涛的话来说,MLPerf更像是把大家“拉到同一个维度里对话”,“对于业界具备较大的参考意义”。
藉由Poplar生成的ResNet-50和BERT的graph图——此前我们还解读过这种专属于Graphcore的可视化呈现,这种可视化在我们看来也是Graphcore的形象代表
MLPerf基准测试有Training(训练)和Inference(推理)两部分,面向图像分类、对象检测、翻译、NLP、推荐系统、强化学习等都有对应的测试。这次Graphcore参与的是MLPerf Training v1.0中的ResNet-50和BERT两项——分别是CV(计算机视觉)和NLP(自然语言处理)应用中比较具有代表性的模型。
而Graphcore用于基准测试的硬件设备,分别是IPU-POD16和IPU-POD64,此前我们也撰文提到过IPU-M2000的算力扩展。测试中,IPU-POD16是4个1U的IPU-M2000,加1台双路服务器(dual-CPU x86 server),算力标称为4 PetaFLOPS;IPU-POD64则是由16个IPU-M2000组成,4台双路服务器,算力16 PetaFLOPS。卢涛表示,BERT模型training配1台x86服务器,而ResNet-50模型training则配4台。卢涛还说,未来有做更大规模集群的性能提交计划。
测试结果如上图。这里BERT模型training成绩中,Closed和Open的区别在于,Closed是完全按照MLPerf规定的网络架构优化方式和硬件配置测得的成绩;而Open则是Graphcore“提交中稍微改动了一下网络架构”后的成绩。这张图可以体现,IPU做算力扩展时的效率,尤其在BERT模型training中,IPU-POD64可以达成相比IPU-POD16大约3.5倍的性能优势,性能折损较小。
和英伟达这次参与测试所用的DGX A100 80GB比较(总共8张卡,也就是640GB总的HBM显存容量),ResNet-50和BERT模型training任务下,5U的IPU-POD16虽然相比6U的DGX A100 640GB的training时间会更久,但从Performance/TCO也就是性价比的角度来看,IPU-POD16还是有优势的;具体优势如上图所示。
毕竟DGX A100 640GB价格接近30万美元,这里IPU-POD16的价格,据说是合作伙伴给出的目录价。这个对比实际上没有给出另一个功耗维度的考量,在TCO总拥有成本中,散热、电力等开支都是其中的组成部分。从理论上来说,IPU应该会比GPU有着更高的效率,所以在特定任务下的性价比优势可能会更大。不过更具体的开发项目可能还需要考虑开发成本。这就涉及到厂商的生态构建能力了,这一点英伟达大概会更占优。从总体上,可能需要具体问题具体分析。
在性能测试结果这部分,卢涛还特别提到ResNet-50存在已经有5年时间,“5年对人工智能发展来说不短了。而一些新的CV模型如EfficientNet,就不在MLPerf的任务列表中。这种新型的CV模型在IPU上的性能表现更好。”所以Graphcore也对比了EfficientNet-B4模型training性能。这项测试里,IPU-POD16的吞吐就有比较大的优势,所以单纯以设备性能除以设备价格,性价比优势也顺势扩大到了3.8倍。“这从某种意义上佐证了IPU的巨大潜力,尤其是面向一些新型的算法模型的时候。”卢涛说。不过这可能也和Graphcore当前的努力方向有关,比如下文将提到Graphcore在EfficientNet模型上有对应的研究成果。
值得一提的是,这里并没有给出IPU-POD64的比较,或许是因为在算力扩展的效率折损中,带来的性价比优势会相对收窄。
持续走向完善的AI芯片
Graphcore能够参与到MLPerf测试中,其实也很大程度表明了Graphcore这家公司正全面走向发展正轨;另一方面则是像Graphcore这种在AI芯片领域颇具行业代表性的新兴力量,更多地加入MLPerf测试,也是AI行业在飞速发展的佐证。
可类比的是,当年GPU从专用的图形处理器,发展到后来可实现CUDA编程和应用于AI之时,就是英伟达公司规模持续扩大,公司内部将更多注意力转向软件、工具,完善开发生态的过程。像IPU这样的AI处理器也必然经历这样的过程。
比较有趣的是,这次Graphcore中国工程总负责人、AI算法科学家金琛公布了Graphcore在SDK优化方面进步的一些数字。下面这张图中,对比的是Poplar SDK 1.4、2.0和2.1版本在不同模型training吞吐方面的性能提升(基于相同的IPU-POD16硬件)。SDK 1.4其实是Graphcore去年底才发布的,而今年一季度2.0就问世了,2.1则在6月份发布——版本递进速度的确相当快,不同模型下的性能提升也很显著。
“对于Graphcore这样一个500人左右的公司来说,能在半年内取得这样的提升,可以说是相当显著的成果了。”金琛说。这一点的确相当值得肯定。英伟达现如今在GTC上普遍都会谈通过软件、工具、库等的优化,实现同等硬件之下的性能提升。所以英伟达现在也总说自己不是一家芯片公司。这好像也是众多AI芯片厂商普遍在摸索和发展的方向,是生态建设能力的体现。
Graphcore中国工程总负责人 AI算法科学家 金琛
“BERT-Large模型的整体性能提升了1.5倍以上。对于BERT-Large第一阶段预训练(SL128)吞吐量的来说,其SDK 1.4的吞吐量是大概2700,SDK 2.0是大概3700,SDK 2.1是4000多。”“CV图像分类方面,EfficientNet在SDK 2.1上的性能和SDK 1.4相比提升了1.5倍。”金琛表示。
这其中能看出提升最为显著的是ResNet-50模型,SDK 2.1相比1.4性能提升了2.1倍。“这是发挥了我们SDK中的比较显著的两个feature的作用:一是post I/O的overlap,即在CPU和IPU间进行任务处理时,在图像传输的过程中会与计算发生重叠,这样可以更好地利用IPU的计算资源。另外,我们在算子库和Tile Memory Layout方面也取得了一些进步,使得我们在算子方面有所提升。”
针对2.1倍的提升,金琛给我们作了更多的解释:“训练ResNet时,配置四个机头(4台x86 CPU服务器),四个机头中每一个Host都起了四个Instance,基本有16个process去处理图像pre-process的过程。这样带来的好处是数据的pre-load部分就不会再成为计算瓶颈。这样的‘多进程’可以大大缩短pre-process在整个训练过程中的占比。”
这些都能很大程度表明Graphcore在快速发展,甚至和1年前我们认识的Graphcore相比都大不一样。我们倒是认为,随Graphcore在AI研究中的愈发驾轻就熟,这次公布的成绩并不能完全体现IPU硬件层面的真正实力,将来的提升空间可能还会很大。
卢涛说:“参加MLPerf Benchmark需要较大的投入。我们有十几个团队成员直接、间接地参与了这个项目,投入了至少半年以上的时间。”过去Graphcore作为初创公司的资源比较有限,而现在“Graphcore整体软硬件,尤其是软件和生态更加成熟完善,公司整体实力和之前相比也更加雄厚。所以我们参加了MLPerf Training v1.0的Benchmark,后续也有持续投入的计划。”
金琛提到,在参与MLPerf基准测试的过程中,还诞生了几篇颇具意义的research paper,分别是Graphcore针对EfficientNet所作的一些工作(Making EfficientNet More Efficient: Exploring Batch-Independent Normalization, Group Convolutions and Reduced Resolution Training)和“使用pretraining BERT,使得BERT性能得到两倍的提升”。这些都是IPU生态完善中的佐证。
责编:Luffy Liu