# Lora train
## 提要
- 參數
- 結論
- 相關文件
## 參數
### 訓練步長

1. Presets 是 Kohya-ss 所提供的現成的設定檔
2. 選擇不同算法的lora(LoHa、LoKr適合訓練畫風且多概念)

3. 每次訓練圖片的張數,如果數字越大,速度也會越快,但是精細程度會越低並且硬體要求越高
4. epoch就是總共需要訓練幾次(EX:總步數=圖片張數 * 重複次數 * epoch,建議1200~1500)
5. 強制設定最大步數後停止
6. 每批數量假設為10,每2個epochs保存,會如下圖依序產生五個模型(不需要等全部步數跑完即可先使用)

### 學習率

1. 默認建議0.0001,圖片集簡單學習率就需要低一點,因為他可能一下就學會,很快就會過擬合,也會跟訓練批次大小有關係,批次大小越大學習率就需要高一點(同時多張圖片較複雜)
2. 圖片的尺寸
3. 文本編碼器學習率建議為U-net學習率的1/2~1/10
4. 沒填會直接填入第1項的學習率
ps: [文本編碼器(text encoder)和 U-Net (圖像分割等任務的卷積神經網絡結構)模型的學習率](https://bbs.mnya.tw/d/14204-wen-ben-bian-ma-qi-text-encoderhe-u-net-mo-xing-de-xue-xi-lu-learning-rate)
### 優化器

1. 調度器 - 比較不會影響訓練結果
2. 絕大多數只會使用到2~3個,主要為AdamW8bit,也可以使用Google推出的Lion(最佳學習率比AdamW小10倍左右且在大的batchsize表現優秀),還有Prodigy(神童)可以無腦把學習率設定為1
### 網路維度

1. 訓練複雜的物品或者三次元建議64、128,二次元畫風32、16、8,此大小會影響模型大小,另外維度過高導致學習太深(過擬合)
2. 權重強度,越接近rank則lora對原模型權重影響越小,越接近0影響越大,建議rank數值的一半,也可以設定0
ps:下圖主要是針對二次元的參數,如果需要訓練三次元須往上增加一倍

## 結論
機器學期裡的複雜神經網路,大多數時候都是一個不可解釋的黑箱,即使是推薦的參數,在不同的訓練集裡面,發揮的效果也是天差地遠,所以需要反覆訓練跟測試。

## 相關文件
[參考影片](https://www.bilibili.com/video/BV16e411e7Zx/?spm_id_from=333.999.0.0&vd_source=50237a2fa3844ddaa2214b06f276131a)