GPU經(jīng)常與人工智能同時(shí)提及,其中一個(gè)重要原因在于AI與3D圖形處理本質(zhì)上屬于同一類問題——它們都適用極易并行計(jì)算。
什么是極易并行計(jì)算?
極易并行計(jì)算指的是符合以下特征的計(jì)算任務(wù):
任務(wù)獨(dú)立性:
子任務(wù)不依賴于其他任務(wù)的中間結(jié)果。
數(shù)據(jù)耦合需求低:
并行任務(wù)在執(zhí)行過程中幾乎不需要數(shù)據(jù)交換。
可分解性:
處理過程可以拆分為一組許多相同的任務(wù)。
或者…
包含多層任務(wù)結(jié)構(gòu),每個(gè)任務(wù)又包含許多子任務(wù)。
這些計(jì)算任務(wù)通過利用多個(gè)處理器能夠獲得顯著的性能提升,因此非常適合部署在高度并行或分布式計(jì)算平臺(tái)上,如GPU。常見的例子包括:
3D?渲染:每一幀或每個(gè)像素都可以獨(dú)立處理,GPU實(shí)現(xiàn)高效渲染。
蒙特卡羅模擬:用于統(tǒng)計(jì)建模和風(fēng)險(xiǎn)分析。
密碼學(xué):暴力破解和密碼破解。
圖像處理:對大規(guī)模圖像數(shù)據(jù)集應(yīng)用濾鏡或調(diào)整大小。
機(jī)器學(xué)習(xí):例如隨機(jī)森林樹的增長步驟或在 GPU上進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)(CNN)推理。
極易并行計(jì)算面臨的挑戰(zhàn)
盡管本質(zhì)上較為簡單,極易并行計(jì)算在實(shí)際應(yīng)用中仍面臨諸多挑戰(zhàn):
過度并行化:線程創(chuàng)建過多會(huì)帶來額外開銷,導(dǎo)致收益遞減;
資源管理:對內(nèi)存等資源的競爭可能降低整體效率;
負(fù)載均衡:任務(wù)在處理器間分配不均容易造成性能瓶頸;
硬件限制:若忽視平臺(tái)特有的約束條件(如可用核心數(shù)或內(nèi)存帶寬),可能無法充分發(fā)揮硬件潛力;
同步開銷:盡管通常較小,不當(dāng)?shù)耐綑C(jī)制仍可能引入額外延遲。
在應(yīng)對這類問題時(shí),一個(gè)重要挑戰(zhàn)是保持性能一致性,這對于確保工作負(fù)載能夠高效運(yùn)行在不同硬件架構(gòu)上而不需大量修改至關(guān)重要。過度優(yōu)化可能會(huì)犧牲性能一致性,導(dǎo)致對某一特定GPU廠商的依賴。在如NPU這類面向特定領(lǐng)域的加速器時(shí),這一問題尤為突出。
在CUDA、OpenCL和Vulkan等主流API上的實(shí)現(xiàn)提供了一定程度的軟件可移植性,但通常仍需針對特定平臺(tái)進(jìn)行高度優(yōu)化。由于各類API及其實(shí)現(xiàn)之間在內(nèi)存模型、同步原語和執(zhí)行范式上的差異,在優(yōu)化極易并行的應(yīng)用時(shí)常常會(huì)引入低效問題。因此,急需一個(gè)更高層次的、統(tǒng)一的、與硬件無關(guān)的抽象層,以避免開發(fā)者不得不為不同平臺(tái)編寫多套代碼路徑。此外,SYCL等框架正在逐步彌合這一差距。
極易并行計(jì)算的邊緣處理解決方案
對設(shè)備端圖形性能和高性能邊緣?AI?推理的需求,催生了對高效、可擴(kuò)展的并行處理解決方案的需求。
常見的挑戰(zhàn)來自于邊緣設(shè)備典型的資源限制。有限的功率預(yù)算、有限的內(nèi)存以及對實(shí)時(shí)性能的需求,都要求進(jìn)行精心優(yōu)化。算法必須簡化以適應(yīng)邊緣處理系統(tǒng)較低的計(jì)算和較少的內(nèi)存空間。同時(shí),為了支持跨多種硬件的不同推理任務(wù)的增長陣列,可擴(kuò)展性和靈活性仍然至關(guān)重要。
深度學(xué)習(xí)的進(jìn)展,特別是Transformer架構(gòu)的引入,以及計(jì)算機(jī)視覺技術(shù)的突破,包括零樣本學(xué)習(xí)和自監(jiān)督模型,顯著提升了計(jì)算復(fù)雜性,并推動(dòng)了硬件需求的轉(zhuǎn)變。極易并行的工作負(fù)載算法正快速演進(jìn),在邊緣側(cè)展現(xiàn)出卓越性能,但同時(shí)也為硬件投資帶來了獨(dú)特挑戰(zhàn)。這凸顯了對具備自適應(yīng)性和多樣化能力的硬件的迫切需求,以跟上算法快速迭代的發(fā)展步伐。
新模型和新方法的出現(xiàn)速度往往快于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)處理單元(NPU)的適應(yīng)能力,使得對這類硬件的投資天然存在較高風(fēng)險(xiǎn)。NPUs通常針對特定任務(wù)進(jìn)行了優(yōu)化,在當(dāng)前的推理工作負(fù)載中效率極高,但在面對計(jì)算需求發(fā)生重大轉(zhuǎn)變(如Transformer模型的興起或新型計(jì)算機(jī)視覺技術(shù)的應(yīng)用)時(shí),其通用性和靈活性則相對不足。
這種不匹配凸顯了在硬件系統(tǒng)中實(shí)現(xiàn)專用性與通用性平衡的重要性。在此背景下,通用性指的是可編程能力、更廣泛的工作負(fù)載支持能力,以及對快速演進(jìn)的算法需求的適應(yīng)能力。能夠支持多樣化推理任務(wù)的硬件不僅有助于延長其生命周期,還能在計(jì)算需求變化時(shí)降低被淘汰的風(fēng)險(xiǎn)。以GPU為例,其具備更高的可編程性,使其能夠靈活應(yīng)對快速變化的算法發(fā)展。
Imagination在GPU設(shè)計(jì)方面擁有深厚的技術(shù)積累,并在面向極易并行工作負(fù)載的高效、可擴(kuò)展硬件解決方案開發(fā)上具備成熟的實(shí)踐經(jīng)驗(yàn)。我們專注于在效率優(yōu)化、開放生態(tài)系統(tǒng)、先進(jìn)工具鏈,以及極易并行處理方面的持續(xù)創(chuàng)新,不僅使我們的產(chǎn)品具備差異化優(yōu)勢,也賦能開發(fā)者在性能與易用性之間實(shí)現(xiàn)最優(yōu)平衡。
我們的核心技術(shù)包括:面向邊緣和嵌入式設(shè)備的高性能計(jì)算架構(gòu)
采用更合適顆粒度SIMD執(zhí)行以及高效內(nèi)存層次結(jié)構(gòu),實(shí)現(xiàn)低功耗的并行計(jì)算;
處理器單元間的數(shù)據(jù)傳輸最小化;
針對不同工作負(fù)載提供高效的專用硬件加速路徑,包括支持混合精度算術(shù)。
開放且跨平臺(tái)的API和軟件生態(tài)系統(tǒng)
對Vulkan和SYCL的優(yōu)先支持
通過優(yōu)化后端支持主流AI框架
低延遲、實(shí)時(shí)計(jì)算API支持
先進(jìn)的編譯和優(yōu)化工具
跨平臺(tái)編譯器工具鏈
開發(fā)者友好的調(diào)試和分析工具
我們的GPU歷經(jīng)多代發(fā)展,始終致力于高效處理極易并行的工作負(fù)載,并在應(yīng)對AI實(shí)現(xiàn)中的各類挑戰(zhàn)方面積累了豐富的機(jī)制和經(jīng)驗(yàn)。例如,在應(yīng)對線程分歧(Thread Divergence)時(shí),我們采用了多種優(yōu)化策略:
控制流簡化:Imagination的GPU在可行的情況下用算子替代條件語句以簡化執(zhí)行流。對于短序列,我們使用預(yù)測指令執(zhí)行而非分支。
協(xié)調(diào)執(zhí)行:利用增強(qiáng)同步和執(zhí)行線程之間集體決策的原語或API,確保更好的資源利用率。
Warp級(jí)原語:我們在GPU Warp中使用等效的subgtoup功能來高效地做出集體決策。這些原語增強(qiáng)了同步性,允許執(zhí)行組協(xié)調(diào)任務(wù),確保更好的資源利用并減少低效情況。
結(jié)語
在現(xiàn)代計(jì)算中,特別是在邊緣推理領(lǐng)域,極易并行計(jì)算凸顯了可擴(kuò)展性和資源效率的重要性。通過深入理解這類任務(wù)的獨(dú)特特性,并利用適當(dāng)?shù)挠布軜?gòu),開發(fā)者可以充分釋放這些任務(wù)的潛力。然而,隨著硬件創(chuàng)新因物理限制而放緩,軟件和算法的改進(jìn)將成為突破現(xiàn)有瓶頸、挖掘并行計(jì)算新機(jī)遇的關(guān)鍵。