五种机器学习加速器简介我们对从AlphaGo到DELL-E2的一系列重大事件感到无比兴奋。无数人工智能(AI)驱动的产品或服务出现在日常生活中,包括Alexa设备、广告推荐、仓库机器人和自动驾驶汽车等。近年来,深度学习模型的规模呈指数级增长。这不是新闻:吴道2.0模型包含1.75万亿个参数,在SageMaker训练平台的240ml.p4d.24xlarge实例上训练GPT-3只需要大约25天。但随着深度学习训练和部署的进行,它变得越来越具有挑战性。由于深度学习模型的发展,可扩展性和效率是训练和部署的两大挑战。本文将总结五种主要类型的机器学习(ML)加速器。了解AI工程中的ML生命周期在全面介绍ML加速器之前,让我们看一下ML生命周期。ML生命周期是数据和模型的生命周期。数据可以说是ML的根源,决定了模型的好坏。生命周期的每个方面都有机会加速。MLOps自动执行部署ML模型的过程。但由于操作性,仅限于AI工作流的横向过程,无法从根本上改善训练和部署。人工智能工程远远超出了MLOps的范围。它可以设计机器学习工作流的过程以及训练和部署的整体架构(横向和纵向)。此外,它可以通过整个ML生命周期的高效编排来加速部署和培训。基于整体机器学习生命周期和人工智能工程,机器学习加速器(或加速方面)主要有五种类型:硬件加速器、人工智能计算平台、人工智能框架、机器学习编译器和云服务。看看下面的关系图。图1.训练加速器和部署加速器的关系我们可以看到,硬件加速器和AI框架是加速的主流。但最近,ML编译器、AI计算平台和ML云服务变得越来越重要。下面一一介绍。1.AIFramework在加速ML训练和部署时,选择合适的AI框架是不可避免的。不幸的是,没有万能的完美或最佳AI框架。在研究和生产中广泛使用的三个AI框架是TensorFlow、PyTorch和JAX。它们在易用性、产品成熟度和可扩展性等不同方面各有优势。TensorFlow:TensorFlow是旗舰AI框架。TensorFlow从一开始就主导着深度学习开源社区。TensorFlowServing是一个定义明确的成熟平台。TensorFlow.js和TensorFlowLite也适用于互联网和物联网。但由于深度学习早期探索的局限性,TensorFlow1.x旨在以非Pythonic方式构建静态图。这成为使用“eager”模式进行即时评估的障碍,这使得PyTorch在研究领域得到快速改进。TensorFlow2.x正在努力追赶,但不幸的是,从TensorFlow1.x升级到2.x很麻烦。TensorFlow还引入了Keras以便于一般使用,以及优化编译器XLA(加速线性代数)以获得更快的低级速度。PyTorch:凭借其eager模式和类似Python的方法,PyTorch是当今深度学习社区的主力军,用于从研究到生产的方方面面。除了TorchServe之外,PyTorch还集成了与框架无关的平台,例如Kubeflow。另外,PyTorch的火爆离不开HuggingFace的Transformers库的成功。JAX:谷歌推出了基于设备加速的NumPy和JIT的JAX。正如PyTorch几年前所做的那样,它是一个更原生的深度学习框架,正在迅速获得研究界的关注。但它还不是谷歌声称的“官方”谷歌产品。2.硬件加速器毫无疑问,Nvidia的GPU可以加速深度学习训练,但它最初是为显卡设计的。通用GPU出现后,用于神经网络训练的显卡大受欢迎。这些通用GPU可以执行任意代码,而不仅仅是渲染子程序。Nvidia的CUDA编程语言提供了一种用类C语言编写任意代码的方法。通用GPU凭借其相对方便的编程模型、大规模并行机制和高内存带宽,现在为神经网络编程提供了理想的平台。如今,Nvidia支持从桌面到移动、工作站、移动工作站、游戏机和数据中心的一系列GPU。随着NvidiaGPU的巨大成功,一路走来接班人不断,比如AMD的GPU,谷歌的TPUASIC。3.AI计算平台如前所述,ML训练和部署的速度在很大程度上取决于硬件(如GPU和TPU)。这些驱动平台(即AI计算平台)对性能至关重要。有两个著名的AI计算平台:CUDA和OpenCL。CUDA:CUDA(ComputingUnifiedDeviceArchitecture)是NVIDIA于2007年发布的并行编程范式,专为图形处理器和GPU的许多通用应用而设计。CUDA是专有API,仅支持Nvidia的Tesla架构GPU。CUDA支持的显卡包括GeForce8系列、Tesla和Quadro。OpenCL:OpenCL(Op??enComputingLanguage),最初由Apple开发,现由Khronos团队维护,用于异构计算,包括CPU、GPU、DSP和其他类型的处理器。这种可移植语言具有足够的适应性,可以在每个硬件平台上实现高性能,包括Nvidia的GPU。Nvidia现在兼容OpenCL3.0,可用于R465和更高版本的驱动程序。使用OpenCLAPI,可以在GPU上启动以C编程语言的有限子集编写的计算内核。4.MLCompilerMLCompiler在加速训练和部署方面起着至关重要的作用。MLCompiler可以显着提高大规模模型部署的效率。有许多流行的编译器,例如ApacheTVM、LLVM、GoogleMLIR、TensorFlowXLA、MetaGlow、PyTorchnvFuser和IntelPlaidML。5.机器学习云服务机器学习云平台和服务在云端管理机器学习平台。可以通过多种方式优化它们的效率。以AmazonSageMaker为例。这是领先的ML云平台服务。SageMaker为ML生命周期提供广泛的功能:从配置、构建、训练/调整到部署/管理。它优化了许多方面以实现高效的训练和部署,例如GPU上的多模型端点、使用异构集群的经济高效的训练,以及适用于基于CPU的ML推理的专有Graviton处理器。结论随着深度学习训练和部署规模的不断扩大,挑战也越来越大。提高深度学习训练和部署的效率很复杂。基于机器学习生命周期,有五个方面可以加速机器学习训练和部署:人工智能框架、硬件加速器、计算平台、机器学习编译器和云服务。人工智能工程可以协调所有这些,使用工程原理来全面提高效率。原标题:5TypesofMLAccelerators,作者:胡路辉
