沒有經驗,可以搞大模型嗎?可以

版權聲明:版權屬於原作者,僅用於學術分享,如有侵權,聯繫刪文。

做大模型一年半,經歷了無數場面試。

經驗

我最常聽到的候選人(尤其是學生)的說辭是:我沒有大模型經驗,可以給個機會嗎?

答案是,我們並不看重候選人的大模型訓練經驗。這裡不是說經驗不重要,而是大部分人的經驗沒有意義。只有頭部大模型公司的核心骨幹的經驗纔有意義,而這和絕大多數人選無關(e.g.: 校招/實習常見的簡歷是微調 LLaMA 7B,社招常見的簡歷是各個公司自己的 XX 大模型)。

事實上,平平無奇的大模型經驗反而是扣分項。候選人說自己有大模型訓練經驗,我會問:你說你有千卡訓練 XX B 模型的經驗,用的是什麼並行配置,DP/PP/TP 如何劃分?很多時候,我得到的回答是:我不知道。甚至有時候,候選人會問我,什麼是 DP,我實在是無言以對。做 CV 的候選人還能背兩句 DP 和 DDP 區別的八股,做 NLP 的候選人,在最需要並行的研究領域,卻完全不知道 DP 是什麼。類似地,如果候選人做過大模型訓練,卻不知道什麼是 MFU,不知道 Megatron 啓動的命令行參數含義是什麼[1]……都屬於負分經歷。

論文

現在不比以前,很多人都有頂會論文。就像大家日常吐槽的一樣,90% 的論文都是廢紙。特別亮眼的文章自然是加分項,例如 PEFT(Parameter-Efficient Fine-Tuning)方向,最近的 LoRA-GA 和 LoRA-pro 都是不錯的文章,但大部分改網絡結構講故事的普通論文是不加分的。如果你有論文,那麼說明你經過了基本的科研訓練,僅此而已。MSRA 之前招聘實習生有時甚至還會傾向於招聘沒做過科研的白紙,因爲怕之前短平快的科研經歷把候選人的品味帶歪了,掰不過來。

除了經驗和論文,還能看什麼

用一個詞來概括,是潛力。潛力這個詞太虛,這裡換成兩個詞來描述:基礎、好奇心。

什麼是基礎? 對於學生來說,首要的自然是學習。學校背景如何、專業課成績如何、基礎知識是否紮實?面試時遇到學生,經常碰到的尷尬場面是:問數學題(高數/線代/概統),答曰大一學的忘了;問編程題(leetcode easy/medium 難度),答曰沒刷題寫不了;問模型結構(指 LLaMA),答曰平常都是調 ChatGPT API,不清楚。相當一部分候選人是答不上來 transformer 模型結構的——一半人承認自己不清楚細節,另一半人裡 90% 是自以爲自己知道、但實際不知道。

大部分科研人的代碼能力孱弱到只會調 ChatGPT API,或者改改 torch.nn.Module,或者調用開源框架跑跑 SFT/RLHF。分不清楚進程和線程,操作系統背完就忘;編程語言只會一些最基本的 Python,其他語言一概不通。是的,我知道這不影響你發論文,不影響你畢業,git clone 一下開源代碼改兩行就能滿足你的需求嘛。但是,如果你想做改變世界的研究呢?例如,穿越回 2016 年,你想到了 AlphaGo 的 idea,給你足夠的計算資源,你有信心自己動手實現它嗎?

什麼是好奇心? 沒有大模型經驗沒關係,但是你願意主動去了解嗎?你會去主動讀大模型的論文嗎?可惜很多候選人不去讀。甚至別說讀論文,有些想轉行大模型的人連大模型用都不用一下。ChatGPT 能解決什麼問題、不能解決什麼問題?它的能力邊界在哪裡?一問一個不知道。有時候跟一些候選人保持聯繫了幾個月,但是對方對大模型的瞭解在幾個月的時間裡沒有任何長進,實在是令人惋惜。如果沒機會訓練 100B 以上的模型,甚至沒有機會訓練 7B 的模型,你願意去下載和分析別人訓好的 7B 乃至 1B 的模型,看看裡面權重分佈的規律嗎?如果有這個細膩的心思,可能你在模型量化方面已經做出了很好的工作。

也有時候,基礎和好奇心可以互補。例如模型訓練剛開始時的 loss 大約是多少?如果數學基礎紮實,那麼可以做一些合理的假設推導出來;如果好奇心強,會注意觀察每一個細節,也能答對這道題。

最後,再介紹一些比普普通通的大模型訓練經驗和論文更加分的經歷的具體例子:

A. 在兩張 2080Ti 上實現和比較過不同的流水算法的性能;

B. 用 Triton 自己實現過一些算子;

C. 能講出不同的大模型使用的 tokenizer 的差異;

D. 在 Python 以外的語言上有不錯的開發能力(例如某些開源項目背書);

E. 實現過一個效果拔羣的五子棋 AI(最好是 RL 算法)

參考

1. ^這裡指候選人說自己用 Megatron 訓練,但是是組裡的師兄/公司的導師給了自己一條啓動命令,但是自己不知道每個參數的含義的情況