背景:
字級:小標準大特大 行距:緊湊標準寬鬆超寬

第976章 效率就是一切

  中期評審定在周三下午。

  會議室不大,長條桌圍了十幾個人。

   看書首選天天看小說,𝚝𝚝𝚔𝚊𝚑.𝚝𝚠超給力

  牆上掛著投影幕布,幕布上打著各組的進度表。

  李副研究員坐在長桌一端,面前攤著評審表。

  他旁邊坐了一個生面孔。

  三十多歲,穿深色襯衫,袖口卷到小臂。

  沒打領帶,但坐姿很直。

  頭髮梳得利落,手上戴一塊素麵的金屬表。

  他聽匯報的時候不翻材料,也不記筆記,就盯著螢幕看,偶爾點一下頭。

  李副研究員介紹了一句:「這位是趙博士。剛從矽谷回來,負責下一階段的架構評審。」

  趙博士沒起身,只朝大家點了點頭。

  各組輪流匯報。

  第三組的小趙先講,內容是關於多模態對齊的最佳化方案。

  趙博士聽完,問了一個問題。

  「對齊模組現在跑一輪要多久。」

  小趙說:「完整訓練一輪十二小時。推理一次大概零點八秒。」

  「太慢。」

  小趙愣了一下,沒接上話。

  趙博士把目光移向長桌末尾。

  陸遠坐在那裡,面前放著一台筆記本。

  「你是跨模態對齊模組的實際開發者?」

  「嗯。」

  「程式碼是你寫的?」

  「一部分。」

  「訓練十二小時,推理零點八秒。你能壓到多少。」

  陸遠想了想。

  「訓練六小時。推理零點三秒。」

  會議室里有人抬頭看他,趙博士看了他兩秒。

  「怎麼壓。」

  「重構資料載入管線。把I/O瓶頸消掉。再把模型推理路徑上的冗餘計算合併。尤其是特徵融合那一段,現在重複算了三遍。」

  趙博士沒再問,他轉向李副研究員。

  「評審繼續。」

  匯報全部結束後,趙博士站起來。

  他走到投影幕布前,把陸遠剛才那段匯報調出來,重新翻了一遍。

  看完了,他轉過身,看著會議室里的所有人。

  「跨模態對齊模組,從今天起併入核心組。負責人不變。實際執行人,陸遠。」

  會議室里安靜了一下。

  核心組原來的一個成員,姓周,三十出頭,資歷不淺。他舉起手。

  「趙博士,陸遠是本科生。核心組的工作強度和要求,他可能跟不上。」

  趙博士看了他一眼。

  「你那個語言模型模組,上一輪訓練精度多少。」

  「百分之八十九點七。」

  「陸遠的跨模態模組,精度多少。」

  周沒說話。

  趙博士說:「有本事你也把那個模組做到他的精度。做得到,你也能進。做不到,就按這個定。」

  沒人再吭聲。

  散會之後,陸遠把工位搬到了核心組那邊。

  核心組在走廊另一頭,獨立隔間,六台最新型號的工作站,一台共享儲存伺服器。

  他分到靠牆那台機器,開機的時候,風扇聲音比舊機器輕很多。

  他坐下之後,先把整個專案的架構圖調出來。

  從資料輸入到特徵提取,從模態對齊到決策輸出。

  一整套流程,十幾萬行程式碼。

  他一行一行過,過了三天。

  越看越清楚。

  這個時代沒有現成的深度學習框架,很多底層運算都是手寫的。

  矩陣乘法靠迴圈堆,卷積靠滑動視窗,效率低得驚人。

  可沒有人覺得有問題,因為大家都這麼寫。

  他決定重構。

  先從資料載入開始。

  原來的程式碼把整批資料一次性讀進記憶體,再一塊一塊處理。

  批次一大,記憶體就爆。

  他把載入改成流式,每次只讀當前批次需要的部分,記憶體占用降了七成。

  然後是計算圖。

  原來的實現里,特徵融合那一段反覆呼叫了三次相同的矩陣運算,結果每次都重新算一遍。

  他把中間結果快取起來,只算一次,後面直接查表,推理時間從零點八秒降到零點三秒。

  最後是訓練迴圈。

  原來的程式碼每疊代一步就更新一次權重,梯度波動大,收斂慢。

  他把梯度累積加進去,每四步更新一次權重,等效批次增大四倍,收斂速度直接上去了。

  整個重構花了他將近一個月。

  白天調程式碼,晚上看文獻。

  周末也不休息,把測試集反覆跑。

  跑完一輪,記錄資料。

  再改,再跑。

  第二個月初,他把重構後的版本提交到核心組的共享倉庫。

  跑了一整輪完整訓練,訓練時間從十二小時降到六小時四十分鐘。

  推理延遲從零點八秒降到零點二九秒,精度還漲了零點三個百分點。

  核心組的人看到結果時,沒人說話。

  周盯著螢幕上的對比表,看了很久。

  然後他站起來,走到陸遠工位旁邊。

  「你那個流式資料載入,能不能給我也用一下。」

  「可以。在共享倉庫里,你自己拷。」

  周點頭,走回自己工位,開啟倉庫開始看程式碼。

  看了一會兒,他回頭又看了陸遠一眼。

  什麼也沒說,轉回去了。

  第二周,趙博士來核心組開內部會。

  他看了重構前後的對比資料,把表從頭翻到尾。

  「訓練效率提升將近一倍。推理延遲降到原來的三分之一。精度還有提升。」他合上表,看著陸遠,「你重構的時候,按什麼原則走的。」

  陸遠說:「先找瓶頸。哪一個環節最慢,就改哪一個。改完了再看下一個。」

  「你怎麼知道瓶頸在哪。」

  「看日誌。跑一輪下來,每個模組的耗時都有記錄。排在前面的那幾個,就是瓶頸。」

  趙博士點頭。

  他站起來,走到白板前,畫了一個圖,是模型訓練的時間分配。

  資料載入、前向傳播、反向傳播、權重更新。

  每一塊的耗時都被標了出來。

  「這個圖,核心組所有人都要看。以後每周報進度的時候,先報這個。」他把筆放下,轉身看著所有人,「效率就是一切。你精度再高,跑得慢,等於沒跑。」

  散會之後,林薇來找陸遠拷資料。

  她在門口站了一會兒,等核心組的人走得差不多了才進來。

  「聽說趙博士在會上誇你了。」

  「沒夸。」

  「他說你是他見過的最像工程師的工程師。從骨子裡懂這東西。」

  陸遠正盯著螢幕調引數。

  他聽完,沒接話。

  只是把右手從鍵盤上抬起來,看了看自己的手。

  掌心有繭。

  修電器時留下的,後來考大學,繭退了大半。

  但手指根部還有幾塊硬皮,是常年握螺絲刀和扳手磨出來的。

  他把手翻過來,指腹上還有幾道淺痕。

  當年在礦道里敲鍵盤,鍵盤是舊式的機械鍵盤,鍵帽硬,敲久了指尖會留下印子。

  後來用靈械鍵盤,光感應的,不留痕。

  可那些舊繭一直沒全消。

  「還在。」林薇說。

  「什麼。」

  「你手上的繭。」

  陸遠把手放下。

  「在。退不掉了。」

  林薇沒再問。

  她拷完資料,抱著硬碟走了,走到門口回頭看了他一眼。

  陸遠低下頭,繼續調程式碼。

  螢幕上的訓練曲線在跑,比一個月前快了一倍。

  可他知道,這才剛開始。

  模型還在長大。

  他得讓它長得慢一點,再慢一點。