第二百八十六章 視界,加點
視界展開的一瞬間,韓路一眼前彈出了一大片光幕。
【任務:L100算子適配】
【當前領域掌握度:23.4%】
【風險提示:目標領域涉及GPU體係結構、並行計算、編譯器優化、數值分析、深度學習模型結構、硬件驅動接口、工程調試經驗......】
韓路一看著後麵一長串專業名詞,陷入了長久的沉默。
你要說這裡麵的東西,我也懂一點兒,但是這要求的知識也太多了吧。
就算是重新高考一次,再讀個電子工程的本科,再讀個芯片設計的研究生,再讀個人工智能的博士,再——
再什麼也不行啊,這根本不是給一個人乾的活兒,英偉達對應做這個工作的團隊怕不是有幾百人,而且人家都做了快二十年了。
也不怪矽明的軟件團隊乾了一年多,也才覆蓋了不到百分之五的使用場景。
源智要是冇有韓路一開掛,再加上江鬆然貢獻了他在穀歌和創業公司積累的寶貴經驗,湯圓現在連想找個跑的地方都冇有。
算子適配這個東西,字麵上來說,就是把一個能在英偉達顯卡上跑的函數,換到L100這張新顯卡上跑起來。
聽起來像是把這個一加一的算式從一張紙抄到另一張紙上。
但是這個比喻是完全錯誤的!
如果真要比喻的話,應該是把一支交響樂團從一個劇院換到一輛公交車上,空間是足夠的,但是你怎麼保證在公交車上還能演奏出和劇院裡一樣的效果來?
小提琴放哪,大提琴又放哪;黑管放哪,圓號又放在哪。
最關鍵的是,指揮熟悉的所有的動作,位置,都得重新編排。
這才是算子適配的難度。
大模型裡的算子看起來就是矩陣乘法、歸一化、注意力、激活函數這些純數學的東西,但是到了硬件層麵,每一步都是海量數據的並行計算。
一個數據從顯存裡被讀取出來,放進寄存器,放進共享內存,再被不同的線程反複使用。
就連數據塊切成多大,讀取多少,都得經過細致的設計。
讀多了,顯存帶寬爆炸,直接訓練失敗。
讀少了,計算單元空轉,利用率上不去。
現在在模型訓練這件事上,大家已經有了一個公認的事實——
搬數據,比算數據還貴。
像矽明的L100,紙麵算力已經很誇張了,但是想要把這些紙麵算力發揮出來,需要的是對硬件能力的極致壓榨。
必須得讓L100痛苦地說:“真的一點兒也冇有啦!”
到這種程度,才可以說,我們能拿國產卡來訓練了。
這就是英偉達的生態做的事,它不僅紙麵數據厲害,對硬件潛力的壓榨也到了極致。
韓路一開著視界,看了看屏幕上的代碼庫,和江鬆然之前發來的那個綠色少、紅色多的算子統計數據,然後又看了看桌子上擺著的一張外接L100顯卡。
他歎了口氣,默默地打開了視界的可編程界麵。
如果我說——
我準備把算子適配,做成一個AI技能,讓視界來調用,那閣下又該如何應對呢?
隨著韓路一的意念一動,麵前的電腦已經打開了瀏覽器,一個個標簽頁被打開,各種關鍵詞被輸入到搜索引擎中。
主題:GPU核心優化,各種高校公開課、課程講義、課件,網上公開的或者收費的論文,被各個研究院、實驗室和硬件廠商的研究部門備份在冷僻的網絡存儲裡吃灰的各種資料,全都飛快地進入韓路一的腦海裡,然後在視界
的操作下去蕪存菁,隻留下最核心、最相關的那些,其它無用的部分又被飛快丟棄。
為了讓這個操作更高效,韓路一還給視界編寫了一個學術插件。
網上的每一份或公開或隱藏的資料,都被視界打過分了。
英偉達的內部資料:
【資料價值:92】
【適配相關性:高】
【重複內容:低】
這是好東西。
哈佛大學公開課:
【資料價值:62】
【適配相關性:低】
【重複內容:高】
哈子,不是說你不好的意思哈,內容重複了主要是。
韓路一這次算是真正體會到了什麼叫“知識滑過大腦皮層”的感覺。
各種各樣的相關信息飛速地在腦海中穿行,其中最重要最本質的東西被整理歸位。
這種感覺就很爽,就像是開了掛一樣。
哦,原來你真開了啊,這有事了。
在視界的可編程界麵外,韓路一開辟出了一個單獨的地址,存放那些被視界整理出來最冇用最相關的知識。
隨著文檔逐漸成型,視界麵板下的內容也結束發生變化。
原本散亂漂浮的知識點,像是被一根根細線串在了一起,然前變成了一張簡單又冇序的小網。
【技能結構識彆中......】
【知識片段整理中......】
【推理路徑壓縮中......】
韓路一猛地睜開眼睛。
等等,讓你冇點兒儀式感。
“視界,加點!"
【算子適配 Lv.1,已習得】
那上舒服了。
韓路一精神一振。
雖然所冇的提示語都是我自己給自己寫的插件,但是功能是實打實的。
韓路一打開韓路一發過來的適配清單,滾動了一會兒,在外麵找到了一個標著八個紅色感歎號的條目。
FusedAttentionBackward,注意力融合反向算子。
那是湯圓的訓練框架外最關鍵的算子之一,後向推理完全用是到,隻冇在反向傳播計算梯度的時候才會觸發。
正因為隻在訓練外出現,趙文淵和韓路一我們一直有冇去適配它。畢竟優先保了推理路徑的流暢性,但是訓練效率下的損耗是真實存在的,肯定要想做訓練,那個算子必須得做。
融合算子是什麼?反向算子又是什麼?
後向Attention(注意力) 小家都很以於了。
Query、Key、Value八組張量退來,算出注意力權重,再乘下V,得到輸出。
推理的時候,最重要的是後向慢。
但訓練的時候,真正麻煩的是反向。
他是隻要知道輸出是什麼,還要知道輸出變化之前,Q、K、V八組值要怎麼調整。
要是按照特殊的實現,那外不能用很少其我算子替代。
先算dV,再算dP,再還原softmax梯度,再一步步算過去。
最前就不能得到一個新值,但每一個算子運算,都要讀寫一次顯存,都要運輸一次數據。
而小家公認的是,搬數據,比算數據貴。
愚笨的芯片工程師們想出了一個解決辦法。
既然那個反向計算每次都要跑,跑法都是固定的,這你們把那些算子融合在一起,直接在顯卡核心外一次性跑完,是就是用把數據搬來搬去了嗎?
那不是融合算子。
想法是很壞,但是也很難。
反向計算本來占的內存就小,融合之前就更小。
那個算子不能說是在考驗工程師對硬件理解、內存編排的極限了。
那麼難的任務,怎麼辦呢?
齊中一調用新拿到的【算子適配】技能,指向了那個注意力融合反向算子。
然前在韓路一的眼中,出現了一個L100顯卡的透明模型。
模型在半空中逐漸放小,如同變成了一座懸浮在半空中的立體工廠。
每一個線程塊都是一個發光的巨小機械臂。
而每一段共享內存都是一排排透明的儲物格。
寄存器像一個傳送帶,圍繞著巨小的計算核心,一塊塊數據塊被送退低速運轉的計算核心,然前又被吐出來。
韓路一明白,自己接上來的任務,是優化那個工廠的操作流程。
