LLM實戰:LLM微調加速神器-Unsloth + Qwen1.5

mengrennwpu發表於2024-05-16

1. 背景

上一篇介紹了基於訓練加速框架Unsloth,微調訓練Llama3的顯示卡資源佔用及訓練時間對比。

近期Unsloth新增了Qwen1.5的模型適配,因此本qiang~馬不停蹄地又進行了一次實驗對比。

對Unsloth的簡介,感興趣的客觀可以查閱上一篇《LLM微調加速神器:Unsloth + LLama3》。

2. 實戰

本著眼過千遍不如手過一遍的宗旨,本qiang~針對Unsloth做了一個對比實現。

對比的實驗環境為: A800,模型為Qwen1.5-32B-Chat。

可以使用如下命令進行更新unsloth​。

pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

2.1 比對維度

維度

說明

顯示卡

是否支援bf16

最大文字長度

max_seq_length

批次大小

per_device_train_batch_size

梯度累加步長

gradient_accumulation_steps

LoRA的rank

dropout

lora_droput

2.2 原始碼

原始碼請見地址,由於Qwen1.5和Llama3的prompt模板不一致,因此原始碼層面上也稍加了改動。

3 實驗結果

3.1 A800

3.2 結論

針對於Qwen1.5-32B-Chat進行unsloth訓練,與基於transformers框架訓練進行比對,結論如下:

整合unsloth後,顯示卡佔用確實更少,平均減少20%-25%,訓練效率確實更快,不管是哪種維度,平均訓練時間減少了27%-41%。

使用40G視訊記憶體的單卡如A40,即可進行微調訓練。

4. 總結

一句話足矣~

本文主要是使用unsloth框架針對Qwen1.5的高效微調實驗,提供了詳細的對比程式碼以及不同維度的對比分析結果。

之後會研讀一遍unsloth的底層原始碼,具體是如何使用triton語言實現加速的,以及如何手寫的前饋網路和反向傳播的實現~

5. 參考

1. unsloth: https://github.com/unslothai/unsloth


相關文章