审校 | 孙淑娟
过去十年是深度学习的时代。我们为从alphago到dell-e 2的一系列重大事件而激动不已。日常生活中出现了不计其数的由人工智能(ai)驱动的产品或服务,包括alexa设备、广告推荐、仓库机器人和自动驾驶汽车等。
近年来,深度学习模型的规模呈指数级增长。这不是什么新闻了:wu dao 2.0模型含有1.75万亿参数,在sagemaker训练平台的240个ml.p4d.24xlarge实例上训练gpt-3大约只需25天。
但随着深度学习训练和部署的发展,它变得越来越具有挑战性。由于深度学习模型的发展,可扩展性和效率是训练和部署面临的两大挑战。
本文将总结机器学习(ml)加速器的五大类型。
了解ai工程中的ml生命周期在全面介绍ml加速器之前,不妨先看看ml生命周期。
ml生命周期是数据和模型的生命周期。数据可谓是ml的根源,决定着模型的质量。生命周期中的每个方面都有机会加速。
mlops可以使ml模型部署的过程实现自动化。但由于操作性质,它局限于ai工作流的横向过程,无法从根本上改善训练和部署。
ai工程远超mlops的范畴,它可以整体(横向和纵向)设计机器学习工作流的过程以及训练和部署的架构。此外,它可以通过整个ml生命周期的有效编排来加速部署和训练。
基于整体式ml生命周期和ai工程,有五种主要类型的ml加速器(或加速方面):硬件加速器、ai计算平台、ai框架、ml编译器和云服务。先看下面的关系图。
图1. 训练与部署加速器的关系
我们可以看到,硬件加速器和ai框架是加速的主流。但最近,ml编译器、ai计算平台和ml云服务已变得越来越重要。
下面逐一介绍。
1. ai框架在谈到加速ml训练和部署时,选择合适的ai框架无法回避。遗憾的是,不存在一应俱全的完美或最佳ai框架。广泛用于研究和生产的三种ai框架是tensorflow、pytorch和jax。它们在不同的方面各有千秋,比如易用性、产品成熟度和可扩展性。
tensorflow:tensorflow是旗舰ai框架。tensorflow一开始就主导深度学习开源社区。tensorflow serving是一个定义完备的成熟平台。对于互联网和物联网来说,tensorflow.js和tensorflow lite也已成熟。
但由于深度学习早期探索的局限性,tensorflow 1.x旨在以一种非python的方式构建静态图。这成为使用“eager”模式进行即时评估的障碍,这种模式让pytorch可以在研究领域迅速提升。tensorflow 2.x试图迎头赶上,但遗憾的是,从tensorflow 1.x升级到2.x很麻烦。
tensorflow还引入了keras,以便总体上更易使用,另引入了优化编译器的xla(加速线性代数),以加快底层速度。
pytorch:凭借其eager模式和类似python的方法,pytorch是如今深度学习界的主力军,用于从研究到生产的各个领域。除了torchserve外,pytorch还与跟框架无关的平台(比如kubeflow)集成。此外,pytorch的人气与hugging face的transformers库大获成功密不可分。
jax:谷歌推出了jax,基于设备加速的numpy和jit。正如pytorch几年前所做的那样,它是一种更原生的深度学习框架,在研究领域迅速受到追捧。但它还不是谷歌声称的“官方”谷歌产品。
2. 硬件加速器毫无疑问,英伟达的gpu 可以加速深度学习训练,不过它最初是为视频卡设计的。
通用gpu出现后,用于神经网络训练的图形卡人气爆棚。这些通用gpu可以执行任意代码,不仅仅是渲染子例程。英伟达的cuda编程语言提供了一种用类似c的语言编写任意代码的方法。通用gpu有相对方便的编程模型、大规模并行机制和高内存带宽,现在为神经网络编程提供了一种理想的平台。
如今,英伟达支持从桌面到移动、工作站、移动工作站、游戏机和数据中心的一系列gpu。
随着英伟达gpu大获成功,一路走来不乏后继者,比如amd的gpu和谷歌的tpu asic等。
3. ai计算平台如前所述,ml训练和部署的速度很大程度上依赖硬件(比如gpu和tpu)。这些驱动平台(即ai计算平台)对性能至关重要。有两个众所周知的ai计算平台:cuda和opencl。
cuda:cuda(计算统一设备架构)是英伟达于2007年发布的并行编程范式。它是为图形处理器和gpu的众多通用应用设计的。cuda是专有api,仅支持英伟达的tesla架构gpu。cuda支持的显卡包括geforce 8系列、tesla和quadro。
opencl:opencl(开放计算语言)最初由苹果公司开发,现由khronos团队维护,用于异构计算,包括cpu、gpu、dsp及其他类型的处理器。这种可移植语言的适应性足够强,可以让每个硬件平台实现高性能,包括英伟达的gpu。
英伟达现在符合opencl 3.0,可用于r465及更高版本的驱动程序。使用opencl api,人们可以在gpu上启动使用c编程语言的有限子集编写的计算内核。
4. ml编译器ml编译器在加速训练和部署方面起着至关重要的作用。ml编译器可显著提高大规模模型部署的效率。有很多流行的编译器,比如apache tvm、llvm、谷歌mlir、tensorflow xla、meta glow、pytorch nvfuser和intel plaidml。
5. ml云服务ml云平台和服务在云端管理ml平台。它们可以通过几种方式来优化,以提高效率。
以amazon sagemaker为例。这是一种领先的ml云平台服务。sagemaker为ml生命周期提供了广泛的功能特性:从准备、构建、训练/调优到部署/管理,不一而足。
它优化了许多方面以提高训练和部署效率,比如gpu上的多模型端点、使用异构集群的经济高效的训练,以及适合基于cpu的ml推理的专有graviton处理器。
结语随着深度学习训练和部署规模不断扩大,挑战性也越来越大。提高深度学习训练和部署的效率很复杂。基于ml生命周期,有五个方面可以加速ml训练和部署:ai框架、硬件加速器、计算平台、ml编译器和云服务。ai工程可以将所有这些协调起来,利用工程原理全面提高效率。
原文标题:5 types of ml accelerators,作者:luhui hu
以上就是简述机器学习加速器的五种类型的详细内容。
