微調baichuan2-7b遇到的視訊記憶體坑

ISGuXing發表於2023-12-19

問題描述:
微調baichuan2-7b模型,驗證一輪後繼續訓練第一個iteration視訊記憶體大幅增加

專案連結:
https://github.com/wp931120/baichuan_sft_lora

具體描述:
由於某些原因,筆者是在transformers4.30.2、torch2.0.1,accelerate==0.22版本上進行實驗。

在訓練過程中,發現視訊記憶體溢位,考慮是句子長度問題,將1024設定為512。
然而訓練還是視訊記憶體溢位,透過除錯分析,在評估驗證集之前,視訊記憶體大概佔用11G左右,在評估過程中,視訊記憶體依然保持11G左右,然而評估一結束,繼續訓練時,視訊記憶體大幅增加,變為20G左右,後面不管怎麼訓練和評估,視訊記憶體基本上都維持在20G。

然而根據專案作者的實驗,明明12G左右的視訊記憶體就夠。
為此,後經群裡大佬提示,考慮釋放torch快取或者更新transformers版本。
1、嘗試各種方式在評估之後釋放視訊記憶體依然無效。
2、由於某些原因無法更新transformers版本,暫無法驗證。

由於作者在原始程式碼上的更改並不多,遂懷疑是否是由於基座大模型(baichuan2-7b)的原因導致視訊記憶體增加,因此將基座大模型換成chatglm2-6b,將資料處理的程式碼稍作修改後進行實驗,發現模型在評估後繼續訓練視訊記憶體沒有大幅增加

至此,雖然不清楚為什麼baichuan-7b在當前環境無法正常訓練,可能的原因是當前版本的transformers不太足夠支援baichuan-7b的訓練,對chatglm2-6b訓練是足夠的。

註釋:
卡2是chatglm2-6b在qlora訓練模式下的視訊記憶體佔用,卡3是baichuan2-7b在qlora訓練模式下的視訊記憶體佔用。
image

相關文章