訓練步長
Step(步):模型訓練時ai模型會根據標注生成一個圖片,并與學習圖片進行對比,通過對比的結果調整嵌入向量。這樣的一個流程就被稱為“一步”。
如果一個訓練集中有50張圖片,每張圖片設定為要訓練10次,所以訓練完這一組數據集需要50*10=500步。
Epoch(輪):一個訓練集里面的全部圖片按照規定的訓練次數訓練完一次,被稱之為訓練完“一輪”。參考剛才的例子,500步就是該訓練集的一輪所需要的步數。
max_train_epochs(最大訓練輪數):通常我們使用這個概念來控制訓練一個模型的總步數。模型訓練的總步數=max_train_epochs*Epoch。比如剛才的例子中,一輪是500步,假設我們訓練的最大輪數是10,那么訓練的總步數就是500*10=5000步。
train_batch_size(訓練批次大小):模型訓練可以一次學習多個圖片,如果將這個參數設置為8,那么訓練時ai會一次訓練8張圖片,縮短訓練所需要的時間。
學習率
學習率可以理解為ai學習時的強度。學習率過高會導致過擬合,學習率過低會導致欠擬合。
?過擬合:訓練出的模型過于匹配訓練數據,導致在新數據集中無法生成較好的新結果。在ai畫圖中的表現就是生成的圖片過于和訓練集中的圖片相似,無法生成差異化的內容。
欠擬合:訓練出的模型過于不匹配訓練數據,導致新數據集中生成的結果與預期相差過大。反映在ai畫圖里就是生成的圖片完全不像訓練集里的圖片。
在訓練中通常過擬合的概率會大于欠擬合,因此學習率通常會設置在比較低的水平,通常用0.0001即可。
當訓練的數據集較大時,需要設置較小的學習率。因為數據越多,損失曲面更復雜,在高學習率的情況下容易導致訓練不穩定。
在訓練中通常會增加學習率調度器,使訓練過程中的學習率逐漸降低,可以保證后期避免過擬合。
網絡維度
network rank/network dimension:網絡秩,該值越大,從原始的矩陣中抽取出來的行列就越多,需要微調的數據量就越多,就可以容納下更多的概念。
這個值會直接影響lora模型的大小,與模型大小是正相關關系。在訓練三次元這種畫面細節較多的模型時,通常會調高這個值;在訓練二次元這種畫面細節相對較少的模型時,通常會調低這個值。比如訓練二次元人物,只需要設置為32就可以;如果要訓練畫風,就需要設置為更高的值。
network alpha:用于調節lora作用于原模型程度的參數。alpha和rank的比值等于“減弱權重程度”。alpha不超過rank,越接近于rank,則對原模型權重的影響越小。越接近于0,則對權重的微調作用越顯著。通常會設置為rank的0.5~1倍之間。
性能參數
mixed_precision(混合精度):在深度學習中通常使用32位浮點數進行訓練,但是實踐證明訓練ai模型不需要這么高的精度,因此通常可以設置為16位,可以節約大量的顯存。
cache_latent(緩存圖像latent):可以在學習前一次性地將圖片緩存到顯存里,后面再反復調用,可以有效提升訓練速度。
xfomers:英偉達顯卡的硬件級別優化,可以提升訓練速度。