第976章 效率就是一切
中期評審定在周三下午。
會議室不大,長條桌圍了十幾個人。
牆上掛著投影幕布,幕布上打著各組的進度表。
李副研究員坐在長桌一端,面前攤著評審表。
他旁邊坐了一個生面孔。
三十多歲,穿深色襯衫,袖口卷到小臂。
沒打領帶,但坐姿很直。
頭髮梳得利落,手上戴一塊素麵的金屬表。
他聽匯報的時候不翻材料,也不記筆記,就盯著螢幕看,偶爾點一下頭。
李副研究員介紹了一句:「這位是趙博士。剛從矽谷回來,負責下一階段的架構評審。」
趙博士沒起身,只朝大家點了點頭。
各組輪流匯報。
第三組的小趙先講,內容是關於多模態對齊的最佳化方案。
趙博士聽完,問了一個問題。
「對齊模組現在跑一輪要多久。」
小趙說:「完整訓練一輪十二小時。推理一次大概零點八秒。」
「太慢。」
小趙愣了一下,沒接上話。
趙博士把目光移向長桌末尾。
陸遠坐在那裡,面前放著一台筆記本。
「你是跨模態對齊模組的實際開發者?」
「嗯。」
「程式碼是你寫的?」
「一部分。」
「訓練十二小時,推理零點八秒。你能壓到多少。」
陸遠想了想。
「訓練六小時。推理零點三秒。」
會議室里有人抬頭看他,趙博士看了他兩秒。
「怎麼壓。」
【寫到這裡我希望讀者記一下我們域名 TW 看書網書庫全,𝔰𝔥𝔲.𝔱𝔴任你選 】
「重構資料載入管線。把I/O瓶頸消掉。再把模型推理路徑上的冗餘計算合併。尤其是特徵融合那一段,現在重複算了三遍。」
趙博士沒再問,他轉向李副研究員。
「評審繼續。」
匯報全部結束後,趙博士站起來。
他走到投影幕布前,把陸遠剛才那段匯報調出來,重新翻了一遍。
看完了,他轉過身,看著會議室里的所有人。
「跨模態對齊模組,從今天起併入核心組。負責人不變。實際執行人,陸遠。」
會議室里安靜了一下。
核心組原來的一個成員,姓周,三十出頭,資歷不淺。他舉起手。
「趙博士,陸遠是本科生。核心組的工作強度和要求,他可能跟不上。」
趙博士看了他一眼。
「你那個語言模型模組,上一輪訓練精度多少。」
「百分之八十九點七。」
「陸遠的跨模態模組,精度多少。」
周沒說話。
趙博士說:「有本事你也把那個模組做到他的精度。做得到,你也能進。做不到,就按這個定。」
沒人再吭聲。
散會之後,陸遠把工位搬到了核心組那邊。
核心組在走廊另一頭,獨立隔間,六台最新型號的工作站,一台共享儲存伺服器。
他分到靠牆那台機器,開機的時候,風扇聲音比舊機器輕很多。
他坐下之後,先把整個專案的架構圖調出來。
從資料輸入到特徵提取,從模態對齊到決策輸出。
一整套流程,十幾萬行程式碼。
他一行一行過,過了三天。
越看越清楚。
這個時代沒有現成的深度學習框架,很多底層運算都是手寫的。
矩陣乘法靠迴圈堆,卷積靠滑動視窗,效率低得驚人。
可沒有人覺得有問題,因為大家都這麼寫。
他決定重構。
先從資料載入開始。
原來的程式碼把整批資料一次性讀進記憶體,再一塊一塊處理。
批次一大,記憶體就爆。
他把載入改成流式,每次只讀當前批次需要的部分,記憶體占用降了七成。
然後是計算圖。
原來的實現里,特徵融合那一段反覆呼叫了三次相同的矩陣運算,結果每次都重新算一遍。
他把中間結果快取起來,只算一次,後面直接查表,推理時間從零點八秒降到零點三秒。
最後是訓練迴圈。
原來的程式碼每疊代一步就更新一次權重,梯度波動大,收斂慢。
他把梯度累積加進去,每四步更新一次權重,等效批次增大四倍,收斂速度直接上去了。
整個重構花了他將近一個月。
白天調程式碼,晚上看文獻。
周末也不休息,把測試集反覆跑。
跑完一輪,記錄資料。
再改,再跑。
第二個月初,他把重構後的版本提交到核心組的共享倉庫。
跑了一整輪完整訓練,訓練時間從十二小時降到六小時四十分鐘。
推理延遲從零點八秒降到零點二九秒,精度還漲了零點三個百分點。
核心組的人看到結果時,沒人說話。
周盯著螢幕上的對比表,看了很久。
然後他站起來,走到陸遠工位旁邊。
「你那個流式資料載入,能不能給我也用一下。」
「可以。在共享倉庫里,你自己拷。」
周點頭,走回自己工位,開啟倉庫開始看程式碼。
看了一會兒,他回頭又看了陸遠一眼。
什麼也沒說,轉回去了。
第二周,趙博士來核心組開內部會。
他看了重構前後的對比資料,把表從頭翻到尾。
「訓練效率提升將近一倍。推理延遲降到原來的三分之一。精度還有提升。」他合上表,看著陸遠,「你重構的時候,按什麼原則走的。」
陸遠說:「先找瓶頸。哪一個環節最慢,就改哪一個。改完了再看下一個。」
「你怎麼知道瓶頸在哪。」
「看日誌。跑一輪下來,每個模組的耗時都有記錄。排在前面的那幾個,就是瓶頸。」
趙博士點頭。
他站起來,走到白板前,畫了一個圖,是模型訓練的時間分配。
資料載入、前向傳播、反向傳播、權重更新。
每一塊的耗時都被標了出來。
「這個圖,核心組所有人都要看。以後每周報進度的時候,先報這個。」他把筆放下,轉身看著所有人,「效率就是一切。你精度再高,跑得慢,等於沒跑。」
散會之後,林薇來找陸遠拷資料。
她在門口站了一會兒,等核心組的人走得差不多了才進來。
「聽說趙博士在會上誇你了。」
「沒夸。」
「他說你是他見過的最像工程師的工程師。從骨子裡懂這東西。」
陸遠正盯著螢幕調引數。
他聽完,沒接話。
只是把右手從鍵盤上抬起來,看了看自己的手。
掌心有繭。
修電器時留下的,後來考大學,繭退了大半。
但手指根部還有幾塊硬皮,是常年握螺絲刀和扳手磨出來的。
他把手翻過來,指腹上還有幾道淺痕。
當年在礦道里敲鍵盤,鍵盤是舊式的機械鍵盤,鍵帽硬,敲久了指尖會留下印子。
後來用靈械鍵盤,光感應的,不留痕。
可那些舊繭一直沒全消。
「還在。」林薇說。
「什麼。」
「你手上的繭。」
陸遠把手放下。
「在。退不掉了。」
林薇沒再問。
她拷完資料,抱著硬碟走了,走到門口回頭看了他一眼。
陸遠低下頭,繼續調程式碼。
螢幕上的訓練曲線在跑,比一個月前快了一倍。
可他知道,這才剛開始。
模型還在長大。
他得讓它長得慢一點,再慢一點。
會議室不大,長條桌圍了十幾個人。
牆上掛著投影幕布,幕布上打著各組的進度表。
李副研究員坐在長桌一端,面前攤著評審表。
他旁邊坐了一個生面孔。
三十多歲,穿深色襯衫,袖口卷到小臂。
沒打領帶,但坐姿很直。
頭髮梳得利落,手上戴一塊素麵的金屬表。
他聽匯報的時候不翻材料,也不記筆記,就盯著螢幕看,偶爾點一下頭。
李副研究員介紹了一句:「這位是趙博士。剛從矽谷回來,負責下一階段的架構評審。」
趙博士沒起身,只朝大家點了點頭。
各組輪流匯報。
第三組的小趙先講,內容是關於多模態對齊的最佳化方案。
趙博士聽完,問了一個問題。
「對齊模組現在跑一輪要多久。」
小趙說:「完整訓練一輪十二小時。推理一次大概零點八秒。」
「太慢。」
小趙愣了一下,沒接上話。
趙博士把目光移向長桌末尾。
陸遠坐在那裡,面前放著一台筆記本。
「你是跨模態對齊模組的實際開發者?」
「嗯。」
「程式碼是你寫的?」
「一部分。」
「訓練十二小時,推理零點八秒。你能壓到多少。」
陸遠想了想。
「訓練六小時。推理零點三秒。」
會議室里有人抬頭看他,趙博士看了他兩秒。
「怎麼壓。」
【寫到這裡我希望讀者記一下我們域名 TW 看書網書庫全,𝔰𝔥𝔲.𝔱𝔴任你選 】
「重構資料載入管線。把I/O瓶頸消掉。再把模型推理路徑上的冗餘計算合併。尤其是特徵融合那一段,現在重複算了三遍。」
趙博士沒再問,他轉向李副研究員。
「評審繼續。」
匯報全部結束後,趙博士站起來。
他走到投影幕布前,把陸遠剛才那段匯報調出來,重新翻了一遍。
看完了,他轉過身,看著會議室里的所有人。
「跨模態對齊模組,從今天起併入核心組。負責人不變。實際執行人,陸遠。」
會議室里安靜了一下。
核心組原來的一個成員,姓周,三十出頭,資歷不淺。他舉起手。
「趙博士,陸遠是本科生。核心組的工作強度和要求,他可能跟不上。」
趙博士看了他一眼。
「你那個語言模型模組,上一輪訓練精度多少。」
「百分之八十九點七。」
「陸遠的跨模態模組,精度多少。」
周沒說話。
趙博士說:「有本事你也把那個模組做到他的精度。做得到,你也能進。做不到,就按這個定。」
沒人再吭聲。
散會之後,陸遠把工位搬到了核心組那邊。
核心組在走廊另一頭,獨立隔間,六台最新型號的工作站,一台共享儲存伺服器。
他分到靠牆那台機器,開機的時候,風扇聲音比舊機器輕很多。
他坐下之後,先把整個專案的架構圖調出來。
從資料輸入到特徵提取,從模態對齊到決策輸出。
一整套流程,十幾萬行程式碼。
他一行一行過,過了三天。
越看越清楚。
這個時代沒有現成的深度學習框架,很多底層運算都是手寫的。
矩陣乘法靠迴圈堆,卷積靠滑動視窗,效率低得驚人。
可沒有人覺得有問題,因為大家都這麼寫。
他決定重構。
先從資料載入開始。
原來的程式碼把整批資料一次性讀進記憶體,再一塊一塊處理。
批次一大,記憶體就爆。
他把載入改成流式,每次只讀當前批次需要的部分,記憶體占用降了七成。
然後是計算圖。
原來的實現里,特徵融合那一段反覆呼叫了三次相同的矩陣運算,結果每次都重新算一遍。
他把中間結果快取起來,只算一次,後面直接查表,推理時間從零點八秒降到零點三秒。
最後是訓練迴圈。
原來的程式碼每疊代一步就更新一次權重,梯度波動大,收斂慢。
他把梯度累積加進去,每四步更新一次權重,等效批次增大四倍,收斂速度直接上去了。
整個重構花了他將近一個月。
白天調程式碼,晚上看文獻。
周末也不休息,把測試集反覆跑。
跑完一輪,記錄資料。
再改,再跑。
第二個月初,他把重構後的版本提交到核心組的共享倉庫。
跑了一整輪完整訓練,訓練時間從十二小時降到六小時四十分鐘。
推理延遲從零點八秒降到零點二九秒,精度還漲了零點三個百分點。
核心組的人看到結果時,沒人說話。
周盯著螢幕上的對比表,看了很久。
然後他站起來,走到陸遠工位旁邊。
「你那個流式資料載入,能不能給我也用一下。」
「可以。在共享倉庫里,你自己拷。」
周點頭,走回自己工位,開啟倉庫開始看程式碼。
看了一會兒,他回頭又看了陸遠一眼。
什麼也沒說,轉回去了。
第二周,趙博士來核心組開內部會。
他看了重構前後的對比資料,把表從頭翻到尾。
「訓練效率提升將近一倍。推理延遲降到原來的三分之一。精度還有提升。」他合上表,看著陸遠,「你重構的時候,按什麼原則走的。」
陸遠說:「先找瓶頸。哪一個環節最慢,就改哪一個。改完了再看下一個。」
「你怎麼知道瓶頸在哪。」
「看日誌。跑一輪下來,每個模組的耗時都有記錄。排在前面的那幾個,就是瓶頸。」
趙博士點頭。
他站起來,走到白板前,畫了一個圖,是模型訓練的時間分配。
資料載入、前向傳播、反向傳播、權重更新。
每一塊的耗時都被標了出來。
「這個圖,核心組所有人都要看。以後每周報進度的時候,先報這個。」他把筆放下,轉身看著所有人,「效率就是一切。你精度再高,跑得慢,等於沒跑。」
散會之後,林薇來找陸遠拷資料。
她在門口站了一會兒,等核心組的人走得差不多了才進來。
「聽說趙博士在會上誇你了。」
「沒夸。」
「他說你是他見過的最像工程師的工程師。從骨子裡懂這東西。」
陸遠正盯著螢幕調引數。
他聽完,沒接話。
只是把右手從鍵盤上抬起來,看了看自己的手。
掌心有繭。
修電器時留下的,後來考大學,繭退了大半。
但手指根部還有幾塊硬皮,是常年握螺絲刀和扳手磨出來的。
他把手翻過來,指腹上還有幾道淺痕。
當年在礦道里敲鍵盤,鍵盤是舊式的機械鍵盤,鍵帽硬,敲久了指尖會留下印子。
後來用靈械鍵盤,光感應的,不留痕。
可那些舊繭一直沒全消。
「還在。」林薇說。
「什麼。」
「你手上的繭。」
陸遠把手放下。
「在。退不掉了。」
林薇沒再問。
她拷完資料,抱著硬碟走了,走到門口回頭看了他一眼。
陸遠低下頭,繼續調程式碼。
螢幕上的訓練曲線在跑,比一個月前快了一倍。
可他知道,這才剛開始。
模型還在長大。
他得讓它長得慢一點,再慢一點。