簡述機器學習加速器的五種類型
譯文譯者 | 布加迪
審校 | 孫淑娟
過去十年是深度學習的時代。我們為從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?