AI开发者最怕什么?硬件不统一,带来的开发碎片化问题。
现在用于AI开发的硬件,不仅有CPU、GPU,还有FPGA、AI专用计算芯片。不同的硬件需要不同的API,甚至是不同的编程语言。将原来开发的AI程序移植到另外一种架构上,是一件极为困难的事情。
本周,英特尔在北京的一场技术沟通会上,分享了“oneAPI”项目,致力于用软件解决AI开发中硬件不统一的问题。
其实,早在去年12月,英特尔就推出了“oneAPI”,并宣布将于2019年第四季度发布开发者测试版本。
顾名思义,“oneAPI”的目的就是提供统一的编程模型,简化在不同硬件架构上的AI程序开发工作,让开发者用一套源代码创建适用于不同硬件的AI应用程序。
四种硬件,一个API
当今AI运算主要用到的硬件包括4种:CPU、GPU、FPGA、和AI加速器。英特尔的优势在于,他们是少数全面涉及这4种芯片的半导体厂商。
英特尔不仅拥有CPU、集成显卡,还通过收购Altera、Nervana两家公司获得了大量在FPGA、AI芯片上的设计开发经验。
另外,数据为中心的多元化计算覆盖了标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)4种运算,即SVMS架构,它需要一个高效的软件编程工具来充分释放其性能。
在硬件和运算方式如此多种多样的背景下,英特尔顺势推出了oneAPI。
oneAPI支持直接编程和API编程,并将提供统一的语言和库,可以在包括CPU、GPU、FPGA、和AI加速器等不同硬件上,提供完整的本地代码性能。
△ 英特尔架构、图形与软件部副总裁Bill Savage介绍oneAPI
在分享会上,英特尔架构、图形与软件部副总裁 Bill Savage表示,英特尔的历史产品以及将来发布的产品都会支持oneAPI,英特尔在上周Hot Chip上最新发布两款专门用于AI运算的芯片NNP-T和NNP-I也都会支持oneAPI。
oneAPI也是一个向所有硬件厂商开放的标准,英特尔希望所有厂商都能加入进来,为开发AI程序的简化工作做出贡献。
英特尔oneAPI中包含几个重要的运算函数库:英特尔数学核心函数库(MKL)、数据分析加速库(DAAL)、面向深度神经网络的英特尔数学核心函数库(MKL-DNN),它们为开发者实习深度学习提供了便利。用户无需再考虑硬件的细节,所有的库都针对英特尔的硬件进行了优化。
△ 英特尔架构、图形与软件部首席工程师Eric Lin介绍统一API的优势
新的编程语言
有了oneAPI还不够。英特尔认为,多元化架构需要全新的并行、公开编程语言,现有的C++、MATLAB以及英伟达硬件专有的CUDA,都无法满足需求。
因此,英特尔还为oneAPI加入了一个配套的直接编程语言Data Parallel C++ (简称DPC++),这是一种基于标准的开放式跨行业语言,可替代单一架构专有语言,能够提供并行编程的效率和性能。
△ 英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan介绍DPC++
但是一门新的编程语言往往会遇到推广困难的问题。英特尔编译器与语言部门总经理Alice Chan表示,英特尔在设计DPC++的时候,在语法上和CUDA非常接近,如果程序员对于CUDA非常熟悉的话,那么使用DPC++进行编程应该没有任何问题。
DPC++的学习曲线非常平滑,适合其他编程语言的开发者快速上手,从而更容易将原来的项目迁移到oneAPI上。
合作与对手
据英特尔透露,目前oneAPI已经和很多厂商展开了合作。其中就包括了百度的在Paddle Paddle。
Facebook首席科学家、2019年图灵奖得主LeCun也发了一条推特,表示PyTorch获得了oneAPI的优化。
一家美国公司Taboola在使用英特尔至强oneAPI经过优化之后,性能达到了2.5倍的提升。
作为AI领域最重要的的硬件供应商,英伟达是一个绕不开的话题。
对于这个尖锐的话题,Bill说:
英特尔和竞争对手不同,我们的竞争对手只对一到两个专用架构感兴趣。我们要所有架构被支持,并且他们能够很好地一起协作。
oneAPI是向所有硬件厂商开放的,也会对英伟达开放。我预期oneAPI将会被得到实施和广泛部署,这是我对未来的期待。
不知道黄仁勋怎么看。
“