第843章 花錢掛個名,很合理吧?

投票推薦 加入書籤 小說報錯

  四月中旬的北京,中關村理想國際大廈十七層。

  顧嶼靠在辦公椅上,手裡端著一杯已經涼透的美式咖啡。

  牆上的巨大液晶屏幕正顯示著加密視頻會議的畫面。

  畫面那頭是遠在四川雅安的九天AI實驗室會議室。

  屏幕里的幾個人看起來狀態相當慘烈。

  安德烈的金色捲髮已經成了雞窩,眼眶底下掛著兩個巨大的黑眼圈。

  他正用俄語和英語夾雜著小聲嘟囔什麼。

  旁邊的樓天城把臉貼在桌面上,整個人活脫脫是個被抽乾了靈魂的空殼。

  只有任少卿還算精神,手裡捏著一罐紅牛,正對著屏幕這頭的顧嶼做本周的項目匯報。

  「顧總,我們在傳統的機器翻譯任務里加入了您之前提過的注意力機制。實驗數據出來了,BLEU分數確實有顯著提升。模型終於不再像以前那樣,把長句子硬塞進一個固定長度的向量里了。」

  顧嶼點了點頭,這都在他的預料之中。這證明了注意力機制這個東西在理論上是走得通的。

  「但現在我們卡在了一個更底層的架構問題上。」任少卿放下紅牛,臉上的表情有些無奈。

  樓天城聽到這裡,從桌面上抬起頭,頂著亂糟糟的頭髮開始大倒苦水。

  「簡直沒法忍受了。我們現在用的底層架構還是RNN循環神經網絡。這破玩意兒的計算邏輯是串行的。這就好比食堂打飯,後面的人必須等前面的人打完才能往前走一步。」

  樓天城越說越氣憤,直接拍了拍面前的桌子。

  「咱們雅安基地現在配了最頂級的顯卡。GPU這種東西天生就是為了做大規模並行矩陣運算的。結果RNN非要讓它們排隊買票。這簡直是對算力的極大侮辱。硬體的性能連十分之一都沒榨出來。」

  顧嶼喝了一口咖啡,沒急著插話。他知道這幫人已經摸到了歷史的邊界。

  這時候,全世界的頂尖AI研究員都被困在這個死胡同里。

  大家都知道RNN效率低,但所有人都覺得處理語言這種有先後順序的東西,必須得用串行的RNN或者LSTM。

  「所以你們的想法呢?」顧嶼靠在椅背上,看著屏幕那頭的三大金剛。

  任少卿嘆了口氣:「我們在嘗試優化RNN的內部結構,看看能不能勉強實現部分並行。安德烈最近算矩陣算得快吐了。」

  「既然RNN是個阻礙並行的毒瘤,為什麼不直接把它整個切掉?」

  顧嶼拋出了這個在當時看來極其離經叛道的理論。

  任少卿愣住了。安德烈直接站了起來,連連搖頭。

  「這不可能的顧。沒有RNN的循環結構,模型怎麼知道這句話里哪個詞在前面,哪個詞在後面?語言是有順序的,直接切掉它,輸入進去的東西就變成了一盤散沙。」

  顧嶼笑了笑。這就是他作為「穿越者」帶來的認知差距。

  他不需要自己去推導那些複雜的數學公式,他只需要在這些絕頂天才走上岔路口的時候,伸手把他們推上那條名為未來的高速公路。

  「誰規定注意力只能用來讓輸出端去看輸入端?」顧嶼敲了敲桌面,拋出了那個價值千金的靈魂拷問。

  「一個句子裡面的每個詞,為什麼不能對這句話里的其他所有詞施加注意力?讓序列內部自己看自己。」

  會議室里安靜得落針可聞。

  安德烈的眼睛瞪大,此刻只覺像遭了高壓電擊。

  顧嶼提出的這個概念,就是後世大模型時代的基石。

  自注意力機制。

  為了讓這幾個天才徹底打通任督二脈,顧嶼開始用最通俗的語言描繪那個恐怖的數學模型。

  「你們把每一個詞想像成帶著三個不同身份去參加相親大會。我們管這三個身份叫Q、K和V。」

  顧嶼豎起三根手指。

  這其實是一個非常直白的查詢匹配邏輯。

  Q代表Query,也就是查詢。相當於你帶著一個問題去圖書館找書。

  K代表Key,也就是鍵值。相當於書架上每一本書的標籤和簡介。

  V代表Value,也就是內容。相當於那本書里真正寫著的知識。


  「當一個詞想要理解自己在句子中的含義時,它就拿著自己的Q,去和句子裡所有其他詞的K進行匹配打分。誰的分數高,就說明誰跟它關係最緊密。然後把高分對應的V提取出來,融合到自己身上。」

  顧嶼看著屏幕那頭目瞪口呆的三人,做出了最終的總結陳詞。

  「不需要排隊。所有的詞在同一時間,拿著自己的Q去和別人的K進行矩陣相乘。這完全是一個可以用GPU暴力加速的並行矩陣運算。」

  安德烈根本沒等顧嶼把話說完。他直接抄起一支紅色的馬克筆,轉身撲向了背後的白板。

  筆尖在白板上瘋狂摩擦,發出一連串刺耳的吱吱聲。一串串極其複雜的矩陣變換公式被他寫了出來。

  「對。對。矩陣乘法。Q的轉置乘以K。太優美了。這就解決了並行的計算瓶頸。」

  安德烈一邊寫一邊用俄語大聲感嘆。

  但他寫著寫著,動作突然停住了。

  「等等,有個數學上的漏洞。」安德烈盯著白板上的一個點積運算式,

  「如果序列變長,維度變大。Q和K的點積結果會變得極其龐大。這丟進Softmax函數裡,會導致梯度直接消失。模型根本無法訓練。」

  任少卿也看出了這個問題,臉色變得有些凝重。

  這就是新架構在理論推導時最容易死掉的環節。

  顧嶼坐在北京的辦公室里,極其隨意地撣了撣袖口。

  「那就給它套個韁繩。」顧嶼語氣平緩,循循善誘,

  「安德烈,既然是向量維度變大導致點積結果的方差變大,作為一個數學家,你通常用什麼工具把它的分布重新拉回標準差為1的平滑狀態?」

  白板前的安德烈猛地一僵。

  他腦子裡靈光乍現,幾乎是咆哮著用俄語喊了出來:

  「除以方差的平方根!對!除以維度的平方根!」

  他趕緊用袖子擦掉一半的算式,重新把那個代表縮放因子的分母加了進去。

  他快速心算了幾十秒,然後扔掉馬克筆,轉頭看著屏幕里的顧嶼,眼神里全是難以置信的震撼。

  「平滑了!數據分布完美平滑了!」安德烈雙眼通紅地盯著屏幕,

  「顧,你簡直是個魔鬼。」

  顧嶼當然不會說這是前世無數個禿頭算法工程師在論文裡寫明的現成答案。

  他只是聳了聳肩,保持著那份高深莫測。

  「所以,RNN可以扔進歷史的垃圾堆了嗎?」顧嶼看向樓天城。

  樓天城這時候已經完全從剛才的萎靡中復活了。

  「絕對可以。但這套玩意的計算複雜度是跟著序列長度的平方增長的。序列越長,顯存占用越恐怖。」

  樓天城摸了摸下巴,「要是處理超長文本,一樣會爆顯存。」

  「算力從來不是你要操心的問題,樓教主。」顧嶼非常財大氣粗地打斷了他,

  「不夠用我就讓採購部繼續去英偉達拿貨。五百張不夠就買一千張,做成大規模數據並行。」

  說到這裡,顧嶼語氣轉為平淡,拋出了一個後世極其經典的工程黑科技:

  「至於單卡顯存被打爆的問題,樓教主,你聽說過梯度檢查點(Gradient Checkpointing)這種用計算時間換顯存空間的底層框架優化思路嗎?」

  樓天城愣住了,隨後雙眼爆發出狂熱的光芒。

  原本萎靡的神經被這句話徹底點燃,他腦子裡已經開始飛速構思底層的CUDA加速代碼和內存管理邏輯了。

  任少卿看著屏幕里的年輕老闆,心裡湧起難以名狀的敬畏。

  從組建九天實驗室到現在,他們的研發人員一直在被這個大學生牽著鼻子走。

  最可怕的是,顧嶼從來不寫一行代碼,也不參與具體的公式推導。

  但他就像一個開了全圖外掛的先知。每當團隊在無數條技術分支前迷茫時,他總能精準地指出那條唯一正確的死胡同避險路線。

  「顧總,那順序問題怎麼解決?不要RNN了,詞的先後位置信息用什麼填補?」

  任少卿問出了最後一個關鍵漏洞。


  顧嶼知道他們有能力自己解決這個問題,於是乾脆把皮球踢了回去。

  「這就是我要留給你們的課後作業了。把位置信息變成一個絕對的數學坐標,用正弦或者餘弦函數強行注入到詞向量里。這個工作量不大,安德烈搞得定。」

  顧嶼停頓了一下,繼續拋出誘餌。

  「另外,剛才的QKV計算只看了一個維度。一個人的相親條件可不止一面。你們可以試試加入多頭機制。把QKV拆分成多個更小的空間,讓不同的頭去捕捉不同的語義關係。最後再拼接起來。」

  多頭自注意力機制。這已經是最終架構的核心拼圖了。

  安德烈趕緊把顧嶼的話全部記在白板的角落裡。

  「顧總,如果您剛才的這些構想全部能在工程上驗證通過。」任少卿調勻了呼吸,試圖壓抑住聲音里的興奮,

  「這就徹底掀翻桌子重塑深度學習的底層框架。」

  「距離把這套龐大的東西組合成一個完整的端到端模型,就只差最後一步的工程代碼實現了。」

  任少卿非常清楚手裡正在做的東西到底有多可怕。

  眼裡滿是對未知寶藏的狂熱。

  顧嶼悠哉地端起咖啡杯,把剩下的冷咖啡一口氣喝完。

  他看著屏幕那頭幹勁十足的頂尖大腦,臉上露出一副精明的資本家笑容。

  「既然距離完工只差最後一步了,那咱們就提前聊聊最實際的問題。」

  顧嶼十指交叉墊在下巴下面,語氣理直氣壯。

  「我砸了這麼多錢,又死了這麼多腦細胞陪你們想方向排雷。」

  「等到這套架構定型,去發國際頂會論文的時候。」

  顧嶼笑得人畜無害。

  「你們三個,去爭你們的共同一作。」

  「最後通訊作者的位置,留給我。這應該很合理吧?」

章節目錄