簡述機(jī)器學(xué)習(xí)加速器的五種類型
譯文譯者 | 布加迪
審校 | 孫淑娟
過去十年是深度學(xué)習(xí)的時代。我們?yōu)閺腁lphaGo到DELL-E 2的一系列重大事件而激動不已。日常生活中出現(xiàn)了不計其數(shù)的由人工智能(AI)驅(qū)動的產(chǎn)品或服務(wù),包括Alexa設(shè)備、廣告推薦、倉庫機(jī)器人和自動駕駛汽車等。
近年來,深度學(xué)習(xí)模型的規(guī)模呈指數(shù)級增長。這不是什么新聞了:Wu Dao 2.0模型含有1.75萬億參數(shù),在SageMaker訓(xùn)練平臺的240個ml.p4d.24xlarge實例上訓(xùn)練GPT-3大約只需25天。
但隨著深度學(xué)習(xí)訓(xùn)練和部署的發(fā)展,它變得越來越具有挑戰(zhàn)性。由于深度學(xué)習(xí)模型的發(fā)展,可擴(kuò)展性和效率是訓(xùn)練和部署面臨的兩大挑戰(zhàn)。
本文將總結(jié)機(jī)器學(xué)習(xí)(ML)加速器的五大類型。
了解AI工程中的ML生命周期
在全面介紹ML加速器之前,不妨先看看ML生命周期。
ML生命周期是數(shù)據(jù)和模型的生命周期。數(shù)據(jù)可謂是ML的根源,決定著模型的質(zhì)量。生命周期中的每個方面都有機(jī)會加速。
MLOps可以使ML模型部署的過程實現(xiàn)自動化。但由于操作性質(zhì),它局限于AI工作流的橫向過程,無法從根本上改善訓(xùn)練和部署。
AI工程遠(yuǎn)超MLOps的范疇,它可以整體(橫向和縱向)設(shè)計機(jī)器學(xué)習(xí)工作流的過程以及訓(xùn)練和部署的架構(gòu)。此外,它可以通過整個ML生命周期的有效編排來加速部署和訓(xùn)練。
基于整體式ML生命周期和AI工程,有五種主要類型的ML加速器(或加速方面):硬件加速器、AI計算平臺、AI框架、ML編譯器和云服務(wù)。先看下面的關(guān)系圖。
圖1. 訓(xùn)練與部署加速器的關(guān)系
我們可以看到,硬件加速器和AI框架是加速的主流。但最近,ML編譯器、AI計算平臺和ML云服務(wù)已變得越來越重要。
下面逐一介紹。
1. AI框架
在談到加速ML訓(xùn)練和部署時,選擇合適的AI框架無法回避。遺憾的是,不存在一應(yīng)俱全的完美或最佳AI框架。廣泛用于研究和生產(chǎn)的三種AI框架是TensorFlow、PyTorch和JAX。它們在不同的方面各有千秋,比如易用性、產(chǎn)品成熟度和可擴(kuò)展性。
TensorFlow:TensorFlow是旗艦AI框架。TensorFlow一開始就主導(dǎo)深度學(xué)習(xí)開源社區(qū)。TensorFlow Serving是一個定義完備的成熟平臺。對于互聯(lián)網(wǎng)和物聯(lián)網(wǎng)來說,TensorFlow.js和TensorFlow Lite也已成熟。
但由于深度學(xué)習(xí)早期探索的局限性,TensorFlow 1.x旨在以一種非Python的方式構(gòu)建靜態(tài)圖。這成為使用“eager”模式進(jìn)行即時評估的障礙,這種模式讓PyTorch可以在研究領(lǐng)域迅速提升。TensorFlow 2.x試圖迎頭趕上,但遺憾的是,從TensorFlow 1.x升級到2.x很麻煩。
TensorFlow還引入了Keras,以便總體上更易使用,另引入了優(yōu)化編譯器的XLA(加速線性代數(shù)),以加快底層速度。
PyTorch:憑借其eager模式和類似Python的方法,PyTorch是如今深度學(xué)習(xí)界的主力軍,用于從研究到生產(chǎn)的各個領(lǐng)域。除了TorchServe外,PyTorch還與跟框架無關(guān)的平臺(比如Kubeflow)集成。此外,PyTorch的人氣與Hugging Face的Transformers庫大獲成功密不可分。
JAX:谷歌推出了JAX,基于設(shè)備加速的NumPy和JIT。正如PyTorch幾年前所做的那樣,它是一種更原生的深度學(xué)習(xí)框架,在研究領(lǐng)域迅速受到追捧。但它還不是谷歌聲稱的“官方”谷歌產(chǎn)品。
2. 硬件加速器
毫無疑問,英偉達(dá)的GPU 可以加速深度學(xué)習(xí)訓(xùn)練,不過它最初是為視頻卡設(shè)計的。
通用GPU出現(xiàn)后,用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的圖形卡人氣爆棚。這些通用GPU可以執(zhí)行任意代碼,不僅僅是渲染子例程。英偉達(dá)的CUDA編程語言提供了一種用類似C的語言編寫任意代碼的方法。通用GPU有相對方便的編程模型、大規(guī)模并行機(jī)制和高內(nèi)存帶寬,現(xiàn)在為神經(jīng)網(wǎng)絡(luò)編程提供了一種理想的平臺。
如今,英偉達(dá)支持從桌面到移動、工作站、移動工作站、游戲機(jī)和數(shù)據(jù)中心的一系列GPU。
隨著英偉達(dá)GPU大獲成功,一路走來不乏后繼者,比如AMD的GPU和谷歌的TPU ASIC等。
3. AI計算平臺
如前所述,ML訓(xùn)練和部署的速度很大程度上依賴硬件(比如GPU和TPU)。這些驅(qū)動平臺(即AI計算平臺)對性能至關(guān)重要。有兩個眾所周知的AI計算平臺:CUDA和OpenCL。
CUDA:CUDA(計算統(tǒng)一設(shè)備架構(gòu))是英偉達(dá)于2007年發(fā)布的并行編程范式。它是為圖形處理器和GPU的眾多通用應(yīng)用設(shè)計的。CUDA是專有API,僅支持英偉達(dá)的Tesla架構(gòu)GPU。CUDA支持的顯卡包括GeForce 8系列、Tesla和Quadro。
OpenCL:OpenCL(開放計算語言)最初由蘋果公司開發(fā),現(xiàn)由Khronos團(tuán)隊維護(hù),用于異構(gòu)計算,包括CPU、GPU、DSP及其他類型的處理器。這種可移植語言的適應(yīng)性足夠強(qiáng),可以讓每個硬件平臺實現(xiàn)高性能,包括英偉達(dá)的GPU。
英偉達(dá)現(xiàn)在符合OpenCL 3.0,可用于R465及更高版本的驅(qū)動程序。使用OpenCL API,人們可以在GPU上啟動使用C編程語言的有限子集編寫的計算內(nèi)核。
4. ML編譯器
ML編譯器在加速訓(xùn)練和部署方面起著至關(guān)重要的作用。ML編譯器可顯著提高大規(guī)模模型部署的效率。有很多流行的編譯器,比如Apache TVM、LLVM、谷歌MLIR、TensorFlow XLA、Meta Glow、PyTorch nvFuser和Intel PlaidML。
5. ML云服務(wù)
ML云平臺和服務(wù)在云端管理ML平臺。它們可以通過幾種方式來優(yōu)化,以提高效率。
以Amazon SageMaker為例。這是一種領(lǐng)先的ML云平臺服務(wù)。SageMaker為ML生命周期提供了廣泛的功能特性:從準(zhǔn)備、構(gòu)建、訓(xùn)練/調(diào)優(yōu)到部署/管理,不一而足。
它優(yōu)化了許多方面以提高訓(xùn)練和部署效率,比如GPU上的多模型端點、使用異構(gòu)集群的經(jīng)濟(jì)高效的訓(xùn)練,以及適合基于CPU的ML推理的專有Graviton處理器。
結(jié)語
隨著深度學(xué)習(xí)訓(xùn)練和部署規(guī)模不斷擴(kuò)大,挑戰(zhàn)性也越來越大。提高深度學(xué)習(xí)訓(xùn)練和部署的效率很復(fù)雜?;贛L生命周期,有五個方面可以加速ML訓(xùn)練和部署:AI框架、硬件加速器、計算平臺、ML編譯器和云服務(wù)。AI工程可以將所有這些協(xié)調(diào)起來,利用工程原理全面提高效率。
原文標(biāo)題:??5 Types of ML Accelerators???,作者:Luhui Hu?