化新范式:預(yù)算感知的智能體搜索與性能調(diào)優(yōu)實(shí)戰(zhàn))
1. 項(xiàng)目緣起當(dāng)“煉丹”遇上“算力焦慮”作為一名長(zhǎng)期在AI模型訓(xùn)練和推理一線摸爬滾打的工程師我?guī)缀趺刻於荚诤虶PU打交道。從早期的單卡跑小模型到如今動(dòng)輒數(shù)百?gòu)埧ú⑿杏?xùn)練千億參數(shù)大模型一個(gè)核心的痛點(diǎn)始終揮之不去GPU的算力利用率。我們常常戲稱自己是“煉丹師”但很多時(shí)候我們花大價(jià)錢購(gòu)置的頂級(jí)GPU其實(shí)際有效算力可能遠(yuǎn)低于紙面峰值。一個(gè)典型的場(chǎng)景是當(dāng)你寫了一個(gè)自認(rèn)為高效的CUDA內(nèi)核Kernel用nvprof或Nsight Systems一分析卻發(fā)現(xiàn)它的SM流多處理器占用率低得可憐或者內(nèi)存訪問模式一塌糊涂大量時(shí)間浪費(fèi)在了訪存延遲上。傳統(tǒng)的優(yōu)化路徑是什么要么是手動(dòng)調(diào)優(yōu)依靠經(jīng)驗(yàn)反復(fù)嘗試各種參數(shù)如線程塊大小、共享內(nèi)存配置、循環(huán)展開因子等這個(gè)過程極其耗時(shí)且高度依賴專家經(jīng)驗(yàn)要么是使用一些自動(dòng)調(diào)優(yōu)框架比如TVM的AutoTVM、Ansor或者更底層的Triton。但這些方案要么搜索空間巨大調(diào)優(yōu)時(shí)間長(zhǎng)得無法接受要么就是“黑盒”感太強(qiáng)難以理解其優(yōu)化決策并且往往忽略了預(yù)算約束——在真實(shí)的研發(fā)或生產(chǎn)環(huán)境中我們不可能為了將某個(gè)Kernel的性能提升5%就允許調(diào)優(yōu)過程消耗掉價(jià)值數(shù)千美元的GPU小時(shí)。這就是“KernelBrain”這個(gè)項(xiàng)目標(biāo)題讓我眼前一亮的原因。它精準(zhǔn)地戳中了當(dāng)前GPU Kernel優(yōu)化的核心困境并提出了一個(gè)聽起來非常務(wù)實(shí)的解決方案框架從粗到細(xì)Coarse-to-Fine、預(yù)算感知Budget-Aware的智能體搜索優(yōu)化。雖然項(xiàng)目正文是空的但這個(gè)標(biāo)題本身已經(jīng)蘊(yùn)含了足夠多的信息量讓我可以基于多年的實(shí)戰(zhàn)經(jīng)驗(yàn)來拆解和構(gòu)想這樣一個(gè)系統(tǒng)應(yīng)該如何設(shè)計(jì)、實(shí)現(xiàn)以及它能解決哪些具體問題。今天我就來和大家深入聊聊如何構(gòu)建一個(gè)我們自己的“KernelBrain”。2. 核心困境拆解為什么現(xiàn)有的自動(dòng)調(diào)優(yōu)還不夠“聰明”在深入設(shè)計(jì)之前我們必須先理解現(xiàn)有方案的短板。標(biāo)題中的“Coarse-to-Fine”和“Budget-Aware”是兩個(gè)非常關(guān)鍵的修飾詞它們直接對(duì)應(yīng)了現(xiàn)有方法的兩個(gè)主要缺陷。2.1 “細(xì)粒度”搜索的維度爆炸問題大多數(shù)自動(dòng)調(diào)優(yōu)框架以TVM Ansor為例的搜索空間是極其龐大的。對(duì)于一個(gè)中等復(fù)雜度的算子其可調(diào)參數(shù)可能包括線程塊配置blockDim.x,blockDim.y,blockDim.z每個(gè)維度都有數(shù)十種可能。網(wǎng)格配置gridDim的計(jì)算方式。內(nèi)存相關(guān)共享內(nèi)存大小、是否使用常量?jī)?nèi)存、全局內(nèi)存的訪問模式合并訪問與否。指令級(jí)循環(huán)展開因子、向量化寬度、流水線深度。編譯器指令#pragma unroll__launch_bounds__等。這些參數(shù)組合起來搜索空間輕松達(dá)到百萬(wàn)甚至上億級(jí)別。一個(gè)“蠻力”的或簡(jiǎn)單的啟發(fā)式搜索如網(wǎng)格搜索、隨機(jī)搜索在這個(gè)空間里無異于大海撈針。即使使用更高級(jí)的貝葉斯優(yōu)化如GPyOpt或強(qiáng)化學(xué)習(xí)也需要海量的采樣點(diǎn)即Kernel的編譯與運(yùn)行才能收斂。每一個(gè)采樣點(diǎn)都意味著一次完整的“編譯-上傳到GPU-執(zhí)行-測(cè)量性能”的循環(huán)其時(shí)間成本尤其是編譯時(shí)間和計(jì)算成本GPU占用都非常高昂。2.2 “預(yù)算盲”搜索的資源浪費(fèi)問題這是工程實(shí)踐中更現(xiàn)實(shí)的問題。很多研究性的調(diào)優(yōu)工作只關(guān)注“最終能找到多好的性能”卻對(duì)“找到這個(gè)性能花了多少代價(jià)”避而不談。在實(shí)際項(xiàng)目中我們通常有明確的預(yù)算時(shí)間預(yù)算例如這個(gè)Kernel的調(diào)優(yōu)必須在2小時(shí)內(nèi)完成因?yàn)槊魈炀鸵暇€。計(jì)算資源預(yù)算例如最多只能使用10個(gè)GPU小時(shí)進(jìn)行調(diào)優(yōu)。開發(fā)成本工程師手動(dòng)干預(yù)的時(shí)間成本。一個(gè)不考慮預(yù)算的優(yōu)化器可能會(huì)在性能提升的“平原區(qū)”花費(fèi)90%的預(yù)算只為換取最后1%的性能提升這在經(jīng)濟(jì)學(xué)上是極不劃算的。我們需要的是一個(gè)能在給定預(yù)算內(nèi)做出“性價(jià)比”最高決策的優(yōu)化器。2.3 “智能體Agentic”的引入意味著什么標(biāo)題中的“Agentic”這個(gè)詞很妙。它暗示這個(gè)系統(tǒng)不是一個(gè)靜態(tài)的優(yōu)化算法而是一個(gè)具備一定自主決策能力的“智能體”。我的理解是它應(yīng)該能夠感知環(huán)境實(shí)時(shí)監(jiān)控調(diào)優(yōu)過程的開銷已用時(shí)間/GPU時(shí)、當(dāng)前找到的最佳性能、搜索空間的探索情況。動(dòng)態(tài)決策根據(jù)當(dāng)前狀態(tài)和剩余預(yù)算動(dòng)態(tài)調(diào)整搜索策略。例如初期采用粗粒度、探索性強(qiáng)的策略快速定位潛力區(qū)域后期在潛力區(qū)域內(nèi)采用細(xì)粒度、利用性強(qiáng)的策略進(jìn)行精調(diào)。學(xué)習(xí)與適應(yīng)可能具備跨Kernel、甚至跨硬件架構(gòu)的經(jīng)驗(yàn)遷移能力越用越“聰明”。3. 架構(gòu)藍(lán)圖構(gòu)建一個(gè)“從粗到細(xì)預(yù)算感知”的優(yōu)化系統(tǒng)基于以上分析我們可以勾勒出KernelBrain的核心架構(gòu)。它應(yīng)該是一個(gè)多階段的、閉環(huán)的決策系統(tǒng)。3.1 第一階段粗粒度空間探索與潛力區(qū)域定位這個(gè)階段的目標(biāo)是“快”和“廣”用最小的代價(jià)掃描整個(gè)龐大的參數(shù)空間找到幾個(gè)最有潛力的“子空間”即參數(shù)組合的局部區(qū)域。關(guān)鍵技術(shù)點(diǎn)降維與抽象不是直接搜索所有原始參數(shù)。我們可以定義更高級(jí)的、粗粒度的“優(yōu)化策略模板”。例如策略A“追求高占用率”傾向于選擇大的線程塊最大化SM占用。策略B“追求內(nèi)存友好”優(yōu)先優(yōu)化全局內(nèi)存的合并訪問即使?fàn)奚恍┱加寐省2呗訡“計(jì)算密集型優(yōu)化”專注于循環(huán)展開和指令級(jí)并行。 系統(tǒng)首先生成若干這樣的策略模板每個(gè)模板對(duì)應(yīng)一組相關(guān)聯(lián)的參數(shù)取值范圍而非具體值。低成本性能預(yù)測(cè)模型在這個(gè)階段編譯和運(yùn)行每一個(gè)具體配置仍然是昂貴的。我們可以引入一個(gè)輕量級(jí)的性能預(yù)測(cè)器。這個(gè)預(yù)測(cè)器可以基于靜態(tài)分析特征從Kernel的IR中間表示或PTX代碼中提取的特征如計(jì)算與內(nèi)存訪問的比率、分支復(fù)雜度、預(yù)估的寄存器壓力等。歷史數(shù)據(jù)過去優(yōu)化類似Kernel的經(jīng)驗(yàn)數(shù)據(jù)。近似執(zhí)行在CPU上用模擬器或簡(jiǎn)化模型進(jìn)行極快速的近似性能評(píng)估雖然不精確但趨勢(shì)可能正確。 利用這個(gè)預(yù)測(cè)器我們可以快速評(píng)估成千上萬(wàn)個(gè)粗粒度策略的“潛力分?jǐn)?shù)”從而篩選出Top-K個(gè)最有希望的區(qū)域。注意這個(gè)預(yù)測(cè)模型的準(zhǔn)確性不是關(guān)鍵關(guān)鍵是它的排序能力——能把真正差的策略篩掉把有潛力的排到前面。即使有誤判只要不遺漏真正的潛力股后續(xù)階段還能糾正。3.2 第二階段細(xì)粒度空間精調(diào)與預(yù)算感知調(diào)度在第一階段篩選出的幾個(gè)潛力區(qū)域內(nèi)我們進(jìn)入精細(xì)搜索階段。此時(shí)搜索空間已經(jīng)大大縮小但每個(gè)評(píng)估點(diǎn)的成本依然不變一次完整的編譯-運(yùn)行。預(yù)算感知的核心邏輯就在這一階段體現(xiàn)。關(guān)鍵技術(shù)點(diǎn)剩余預(yù)算感知的采樣策略系統(tǒng)需要維護(hù)一個(gè)“預(yù)算池”如剩余GPU秒數(shù)。每次決定評(píng)估下一個(gè)參數(shù)點(diǎn)時(shí)決策邏輯即“智能體”需要綜合考慮期望提升Exploitation選擇當(dāng)前模型預(yù)測(cè)性能最好的鄰近點(diǎn)。不確定性探索Exploration選擇模型預(yù)測(cè)不確定性的區(qū)域以獲取新知識(shí)修正模型。評(píng)估成本不同參數(shù)點(diǎn)可能導(dǎo)致編譯時(shí)間有微小差異雖然主要成本在運(yùn)行。 智能體需要在這三者之間進(jìn)行動(dòng)態(tài)權(quán)衡。當(dāng)剩余預(yù)算充足時(shí)可以更偏向探索當(dāng)預(yù)算緊張時(shí)必須極度偏向利用爭(zhēng)取在耗盡前找到可用的最優(yōu)解。自適應(yīng)保底機(jī)制系統(tǒng)應(yīng)始終維護(hù)一個(gè)“當(dāng)前最佳實(shí)測(cè)配置”。當(dāng)預(yù)算即將耗盡例如剩余時(shí)間只夠進(jìn)行1-2次評(píng)估時(shí)智能體應(yīng)停止探索直接在這個(gè)最佳配置的鄰域內(nèi)進(jìn)行最后一次局部微調(diào)然后輸出結(jié)果。這確保了即使在最壞情況下系統(tǒng)也能輸出一個(gè)“經(jīng)過優(yōu)化且優(yōu)于初始配置”的結(jié)果而不是中途失敗。3.3 第三階段智能體決策核心與經(jīng)驗(yàn)庫(kù)這是系統(tǒng)的大腦。我們可以采用一個(gè)強(qiáng)化學(xué)習(xí)RL智能體其設(shè)計(jì)如下狀態(tài)State當(dāng)前最佳性能、已消耗預(yù)算/總預(yù)算比、各潛力區(qū)域的探索程度、性能預(yù)測(cè)模型的不確定性分布等。動(dòng)作Action在細(xì)粒度階段選擇下一個(gè)要評(píng)估的具體參數(shù)配置也可以包括宏觀動(dòng)作如“切換到一個(gè)新的潛力區(qū)域進(jìn)行探索”。獎(jiǎng)勵(lì)Reward這是一個(gè)關(guān)鍵設(shè)計(jì)。獎(jiǎng)勵(lì)不能僅僅是最終發(fā)現(xiàn)的Kernel的絕對(duì)性能。它必須是折扣的、與預(yù)算相關(guān)的。例如每評(píng)估一個(gè)點(diǎn)就有一個(gè)小的負(fù)獎(jiǎng)勵(lì)代表成本。每當(dāng)發(fā)現(xiàn)一個(gè)比當(dāng)前最佳性能提升Δ的新配置時(shí)獲得一個(gè)正獎(jiǎng)勵(lì)但這個(gè)正獎(jiǎng)勵(lì)的大小可以隨著預(yù)算的消耗而衰減例如乘以一個(gè)剩余預(yù)算/總預(yù)算的因子。最終獎(jiǎng)勵(lì)是輸出配置的性能值但同樣可能根據(jù)總耗時(shí)進(jìn)行折扣。 這樣的獎(jiǎng)勵(lì)函數(shù)迫使智能體學(xué)會(huì)在“探索”、“利用”和“成本控制”之間尋找最優(yōu)平衡。經(jīng)驗(yàn)回放與遷移學(xué)習(xí)系統(tǒng)可以將每個(gè)Kernel的優(yōu)化過程狀態(tài)、動(dòng)作、獎(jiǎng)勵(lì)序列以及最終找到的最優(yōu)配置存入經(jīng)驗(yàn)庫(kù)。當(dāng)優(yōu)化一個(gè)新的、但結(jié)構(gòu)相似的Kernel時(shí)例如都是矩陣乘法的變體智能體可以從經(jīng)驗(yàn)庫(kù)中加載相關(guān)經(jīng)驗(yàn)進(jìn)行暖啟動(dòng)。它可以初始化性能預(yù)測(cè)模型或者直接給出幾個(gè)粗粒度的潛力區(qū)域建議從而大幅減少“冷啟動(dòng)”階段的搜索成本。4. 實(shí)戰(zhàn)模擬以優(yōu)化一個(gè)矩陣乘法Kernel為例讓我們通過一個(gè)具體的例子把上述架構(gòu)串起來。假設(shè)我們要優(yōu)化一個(gè)用于LLM中GeLU激活函數(shù)后接的MatMulKernel這是一個(gè)非常常見的負(fù)載。初始配置一個(gè)從開源庫(kù)拿來的基礎(chǔ)實(shí)現(xiàn)性能為 50 TFLOPS在A100上??傤A(yù)算20個(gè)GPU分鐘約1200秒。其中每次Kernel編譯一次運(yùn)行取中位數(shù)需要約5秒。步驟1粗粒度探索預(yù)算分配10%約2分鐘24次評(píng)估KernelBrain加載矩陣乘法的歷史經(jīng)驗(yàn)庫(kù)。系統(tǒng)生成5個(gè)粗粒度策略模板T1: 大線程塊高占用率導(dǎo)向 (blockDim(256, 1, 1)附近)。T2: 方形線程塊平衡導(dǎo)向 (blockDim(16, 16, 1)附近)。T3: 小線程塊高并發(fā)導(dǎo)向 (blockDim(64, 1, 1)附近)專注于內(nèi)存訪問優(yōu)化。T4: 使用向量化加載float4。T5: 激進(jìn)循環(huán)展開展開因子8。對(duì)每個(gè)模板在其參數(shù)范圍內(nèi)隨機(jī)采樣4-5個(gè)具體點(diǎn)用輕量級(jí)預(yù)測(cè)器評(píng)分。預(yù)測(cè)器基于IR分析發(fā)現(xiàn)該Kernel是計(jì)算受限型因此給T1和T5較高分給過度關(guān)注內(nèi)存的T3較低分。根據(jù)預(yù)測(cè)分?jǐn)?shù)選擇T1高占用和T5指令級(jí)并行作為潛力區(qū)域進(jìn)入下一階段。步驟2細(xì)粒度精調(diào)與預(yù)算感知調(diào)度預(yù)算分配85%約17分鐘智能體初始化。狀態(tài)最佳性能50 TFLOPS剩余預(yù)算1020秒?yún)^(qū)域T1和T5的探索度均為0。前幾次動(dòng)作智能體傾向于探索。它在T1區(qū)域選了一個(gè)點(diǎn)性能55 TFLOPS不錯(cuò)在T5區(qū)域選了一個(gè)點(diǎn)性能只有48 TFLOPS可能因?yàn)榧拇嫫饕绯鰧?dǎo)致性能下降。智能體更新了它對(duì)T5區(qū)域的認(rèn)知不確定性降低期望值調(diào)低。隨著時(shí)間推移智能體在T1區(qū)域找到了一個(gè)58 TFLOPS的穩(wěn)定點(diǎn)。此時(shí)它對(duì)T1區(qū)域的模型預(yù)測(cè)已經(jīng)比較準(zhǔn)確不確定性低。而對(duì)T5區(qū)域雖然期望值不高但仍有部分參數(shù)空間不確定性高。預(yù)算消耗過半決策點(diǎn)剩余預(yù)算還剩500秒。智能體根據(jù)內(nèi)部策略計(jì)算如果繼續(xù)探索高不確定性的T5區(qū)域期望收益找到比58 TFLOPS更好配置的概率 * 性能提升幅度已經(jīng)低于其機(jī)會(huì)成本消耗的預(yù)算。于是它決定收縮搜索專注于在58 TFLOPS配置的鄰域T1區(qū)域內(nèi)部進(jìn)行局部微調(diào)。在最后階段智能體嘗試微調(diào)blockDim為(256, 2, 1)并配合調(diào)整了循環(huán)展開因子最終找到了一個(gè)59.5 TFLOPS的穩(wěn)定配置。步驟3輸出與學(xué)習(xí)預(yù)算分配5%最后1分鐘在剩余最后30秒時(shí)智能體停止搜索輸出59.5 TFLOPS的配置及相關(guān)參數(shù)。整個(gè)優(yōu)化過程耗時(shí)約19分鐘評(píng)估了約230個(gè)配置點(diǎn)性能提升19%。系統(tǒng)將本次優(yōu)化的完整軌跡、最終配置、Kernel特征IR哈希存入經(jīng)驗(yàn)庫(kù)。下次遇到特征相似的Kernel時(shí)可以直接從T1區(qū)域附近開始細(xì)調(diào)可能只用5分鐘就能達(dá)到類似效果。5. 工程實(shí)現(xiàn)的關(guān)鍵細(xì)節(jié)與避坑指南構(gòu)想很美好但實(shí)現(xiàn)起來坑很多。這里分享幾個(gè)我認(rèn)為最關(guān)鍵的實(shí)施細(xì)節(jié)。5.1 性能評(píng)估的穩(wěn)定性與成本控制坑點(diǎn)GPU性能存在波動(dòng)。單次運(yùn)行時(shí)間受系統(tǒng)負(fù)載、GPU Boost頻率、緩存狀態(tài)影響。如果測(cè)量不準(zhǔn)整個(gè)優(yōu)化過程的方向就錯(cuò)了。解決方案多次測(cè)量與統(tǒng)計(jì)每個(gè)配置點(diǎn)不能只跑一次。我的經(jīng)驗(yàn)是在固定輸入大小下至少運(yùn)行100次迭代去掉頭尾的離群值取中位數(shù)或平均值。但這會(huì)增加成本。智能預(yù)熱第一個(gè)評(píng)估點(diǎn)進(jìn)行充分預(yù)熱如運(yùn)行1000次讓GPU達(dá)到穩(wěn)定狀態(tài)。后續(xù)評(píng)估點(diǎn)可以復(fù)用這個(gè)“熱”狀態(tài)適當(dāng)減少運(yùn)行次數(shù)。但需要小心不同Kernel對(duì)緩存的影響可能不同。成本估算模型在預(yù)算分配時(shí)不能簡(jiǎn)單用“次數(shù)*固定時(shí)間”。需要建立一個(gè)簡(jiǎn)單的模型根據(jù)Kernel的編譯復(fù)雜度代碼行數(shù)、模板參數(shù)多少和預(yù)計(jì)運(yùn)行時(shí)間與數(shù)據(jù)規(guī)模相關(guān)來動(dòng)態(tài)預(yù)估每次評(píng)估的成本并以此作為智能體決策的依據(jù)。5.2 搜索空間的設(shè)計(jì)與編碼坑點(diǎn)搜索空間設(shè)計(jì)不合理要么太大導(dǎo)致搜索無效要么太小漏掉了最優(yōu)解。解決方案參數(shù)耦合與約束很多參數(shù)不是獨(dú)立的。例如blockDim.x * blockDim.y * blockDim.z即線程塊大小不能超過GPU硬件限制如1024。gridDim的計(jì)算必須覆蓋整個(gè)問題規(guī)模。這些約束必須在空間定義中顯式編碼否則會(huì)產(chǎn)生大量無效配置浪費(fèi)預(yù)算。分層離散化對(duì)于連續(xù)或大范圍離散參數(shù)如循環(huán)展開因子采用分層離散化。在粗粒度階段用大的步長(zhǎng)如1, 4, 16, 64在細(xì)粒度階段在選定值附近用小步長(zhǎng)如-2, -1, 1, 2微調(diào)。利用領(lǐng)域知識(shí)剪枝直接告訴系統(tǒng)某些區(qū)域是“死胡同”。例如對(duì)于矩陣乘法經(jīng)驗(yàn)表明blockDim為(32, 8)或(16, 16)這樣的方形/近方形配置通常比極端細(xì)長(zhǎng)的配置更好??梢詫⑦@些先驗(yàn)知識(shí)作為搜索空間的軟約束或初始偏向。5.3 智能體訓(xùn)練與泛化難題坑點(diǎn)從頭訓(xùn)練一個(gè)強(qiáng)化學(xué)習(xí)智能體成本極高且可能過擬合到少數(shù)幾種Kernel類型上。解決方案基于模型的RL與元學(xué)習(xí)不直接使用慢速的在線RL。我們可以使用一個(gè)離線訓(xùn)練的“元智能體”。在離線階段使用大量歷史Kernel優(yōu)化數(shù)據(jù)可以是模擬生成的或?qū)σ慌湫蚄ernel如各種尺寸的MatMul、Conv1D/2D、Element-wise進(jìn)行充分優(yōu)化來訓(xùn)練這個(gè)智能體。訓(xùn)練目標(biāo)是讓它在面對(duì)新Kernel時(shí)能快速適應(yīng)。這類似于元學(xué)習(xí)Meta-Learning的思路。特征工程是關(guān)鍵智能體的狀態(tài)輸入、以及用于遷移學(xué)習(xí)的Kernel特征必須精心設(shè)計(jì)。好的特征應(yīng)該能捕捉Kernel的計(jì)算模式、內(nèi)存訪問模式、并行度特性等??梢越梃b編譯器領(lǐng)域從IR提取的特征也可以設(shè)計(jì)一些神經(jīng)網(wǎng)絡(luò)來自動(dòng)學(xué)習(xí)Kernel的表示?;旌喜呗圆槐赝耆蕾囈粋€(gè)復(fù)雜的RL智能體??梢栽O(shè)計(jì)一個(gè)策略集合包括基于規(guī)則的策略如剩余預(yù)算少于10%時(shí)只做局部搜索、基于模型的優(yōu)化如貝葉斯優(yōu)化以及RL策略。智能體的工作可能是選擇策略而不是直接選擇參數(shù)點(diǎn)。這降低了學(xué)習(xí)難度。6. 超越Kernel系統(tǒng)級(jí)協(xié)同優(yōu)化展望KernelBrain的思路不僅可以用于單個(gè)Kernel。在真實(shí)的AI工作負(fù)載中比如一個(gè)Transformer層的計(jì)算是由多個(gè)Kernel如LayerNorm, QKV Gemm, Softmax, Attention, Output Gemm組成的流水線。一個(gè)更宏大的設(shè)想是系統(tǒng)級(jí)的預(yù)算感知優(yōu)化預(yù)算分配給定一個(gè)模型層或整個(gè)模型推理的總優(yōu)化預(yù)算如50個(gè)GPU小時(shí)。瓶頸分析系統(tǒng)先進(jìn)行一輪性能剖析找出整個(gè)計(jì)算圖中最耗時(shí)的幾個(gè)“熱點(diǎn)Kernel”。預(yù)算調(diào)度KernelBrain作為子模塊被系統(tǒng)調(diào)用。系統(tǒng)根據(jù)瓶頸分析的“性價(jià)比”評(píng)估動(dòng)態(tài)地將總預(yù)算分配給不同的熱點(diǎn)Kernel。例如可能將40%的預(yù)算分配給最耗時(shí)的MatMul Kernel30%分配給第二個(gè)剩下的分配給其他有潛力的Kernel。協(xié)同優(yōu)化優(yōu)化一個(gè)Kernel可能會(huì)改變整個(gè)計(jì)算圖的數(shù)據(jù)流和資源占用從而影響其他Kernel的性能。理想的系統(tǒng)還需要考慮這種協(xié)同效應(yīng)但這無疑是一個(gè)更大的挑戰(zhàn)。實(shí)現(xiàn)這樣一個(gè)系統(tǒng)是困難的但它的價(jià)值也是巨大的。它意味著我們可以從“手工微調(diào)單個(gè)Kernel”的工匠時(shí)代邁向“給定預(yù)算自動(dòng)優(yōu)化整個(gè)計(jì)算負(fù)載”的智能化時(shí)代。這不僅能解放工程師的生產(chǎn)力更能讓有限的算力資源發(fā)揮出最大的效能。雖然“KernelBrain”目前可能只是一個(gè)研究構(gòu)想或項(xiàng)目標(biāo)題但它所指明的方向無疑是GPU高性能計(jì)算領(lǐng)域一個(gè)非常值得深耕的痛點(diǎn)。