最近有用戶展示了一種在 48GB GPU RAM 上訓(xùn)練大模型(例如 Llama 2 70B)的方法。此外,它可以在多個(gè) GPU 上運(yùn)行,因此可以在 2X 4090 實(shí)例上訓(xùn)練模型!
新的fsdp_qlora開(kāi)源軟件有許多訓(xùn)練選項(xiàng)和示例。該軟件基于兩個(gè)重要理念:
QLoRA(量化 LoRA)結(jié)合了量化(使用更少的位來(lái)存儲(chǔ)模型權(quán)重)和 LoRA(低秩自適應(yīng),將小型可訓(xùn)練矩陣添加到凍結(jié)的基礎(chǔ)模型)。這允許使用帶有可訓(xùn)練 LoRA 適配器的量化基礎(chǔ)模型來(lái)訓(xùn)練大于 GPU 內(nèi)存的模型。但是,QLoRA 仍然存在局限性,例如需要昂貴的 GPU 并且由于內(nèi)存限制而限制序列長(zhǎng)度和批處理大小。
FSDP(完全分片數(shù)據(jù)并行)是由 Meta 開(kāi)發(fā)的一個(gè)庫(kù),它可以有效地將大型模型拆分到多個(gè) GPU 上,從而允許同時(shí)使用它們。它改進(jìn)了之前的黃金標(biāo)準(zhǔn) DDP(分布式數(shù)據(jù)并行),后者要求完整模型適合每個(gè) GPU。通過(guò)將模型參數(shù)分片到多個(gè) GPU,F(xiàn)SDP 可以訓(xùn)練超出單個(gè) GPU 內(nèi)存的大型模型。
本指南將向您展示如何在捷智算平臺(tái)上租用 2X 實(shí)例以按需運(yùn)行該軟件。
如何在捷智算平臺(tái)2X 3090/4090 實(shí)例上運(yùn)行 fsdp_qlora
捷智算平臺(tái)有大量 RTX 3090 和 RTX 4090 GPU,非常適合運(yùn)行 fsdp_qlora。您需要一個(gè)帶有積分的捷智算平臺(tái)帳戶。
創(chuàng)建您的捷智算帳戶,添加信用并在本地機(jī)器上安裝。
設(shè)置捷智算平臺(tái)帳戶并驗(yàn)證您的電子郵件地址。向您的帳戶添加一些用于 GPU 租賃的信用額度。然后安裝。
搜索捷智算算力市場(chǎng)
我們需要找到合適的 GPU。根據(jù)我的測(cè)試,訓(xùn)練 Llama 70B 需要 200GB 的系統(tǒng) RAM。此查詢將返回適合 2X 4090 實(shí)例的按需 GPU 優(yōu)惠,按下載帶寬排序
對(duì)于 2X 4090 實(shí)例
vastai search offers "gpu_name=RTX_4090 cpu_ram>=130 disk_space>140 num_gpus=2" -o "inet_down-"
對(duì)于 2X 3090 實(shí)例
vastai search offers "gpu_name=RTX_3090 cpu_ram>=130 disk_space>140 num_gpus=2" -o "inet_down-"
創(chuàng)建捷智算平臺(tái)實(shí)例
優(yōu)惠列表將包含大量有關(guān)可用機(jī)器的詳細(xì)信息。要選擇一個(gè),您將需要優(yōu)惠 ID。然后在創(chuàng)建命令中使用該 ID 以及 Pytorch Cuda Devel 模板哈希。
此命令將根據(jù)提供的報(bào)價(jià)創(chuàng)建一個(gè)實(shí)例,使用該模板并分配 200GB 的磁盤(pán)。
將 XXXXXXX 替換為來(lái)自市場(chǎng)的優(yōu)惠 ID。
vastai create instance XXXXXXX --template_hash e4c5e88bc289f4eecb0c955c4fe7430d --disk 200
通過(guò) SSH 進(jìn)入捷智算平臺(tái)實(shí)例
等待幾分鐘,讓實(shí)例啟動(dòng)。您可以使用 WebUI通過(guò)單擊 >_ 按鈕獲取直接 SSH 命令。
要通過(guò) SSH 連接,您只需使用從實(shí)例卡復(fù)制的命令。它看起來(lái)類似于以下內(nèi)容:
ssh -p <port> <sshURL> -L 8080:localhost:8080
安裝 fsdp_qlora 并登錄 Hugging Face
git clone https://github.com/AnswerDotAI/fsdp_qlora
pip install llama-recipes fastcore --extra-index-url https://download.pytorch.org/whl/test/cu118
pip install bitsandbytes>=0.43.0
pip install wandb
登錄 Hugging Face,粘貼你的 API 密鑰來(lái)下載模型
huggingface-cli login
可選:登錄 wandb 以啟用 Weights and Balances 日志記錄
wandb login
可選擇設(shè)置 HQQ
HQQ 是一種快速且準(zhǔn)確的模型量化器。它可以代替 bitsandbytes 使用。如果您想使用它,您需要先安裝它。
git clone https://github.com/mobiusml/hqq.git
安裝 HQQ
cd hqq && pip install .
訓(xùn)練模型
有關(guān)完整選項(xiàng),請(qǐng)查看Github repo。此示例將使用 hqq_lora 對(duì) Llama 70B 進(jìn)行微調(diào)。
例如:微調(diào) Llama 2 70B,上下文長(zhǎng)度為 512
cd ~/fsdp_qlora
python train.py
--model_name meta-llama/Llama-2-70b-hf
--batch_size 2
--context_length 512
--precision bf16
--train_type qlora
--use_gradient_checkpointing true
--use_cpu_offload true
--dataset alpaca
--reentrant_checkpointing true
故障排除
在某些情況下,系統(tǒng)似乎僅在 CPU 上運(yùn)行。 GPU 可能無(wú)法被識(shí)別。 監(jiān)控fsdp_qlora repo以獲取幫助。
對(duì)于與實(shí)例或使用捷智算平臺(tái)相關(guān)的任何問(wèn)題,請(qǐng)點(diǎn)擊捷智算平臺(tái)右下角的網(wǎng)站支持聊天以獲得即時(shí)支持。
有時(shí),它可以幫助導(dǎo)出 cuda 可見(jiàn)設(shè)備,以幫助解決 GPU 無(wú)法加載且 CPU 完成所有工作的問(wèn)題。
export CUDA_VISIBLE_DEVICES=0,1