剛剛,UC 伯克利、CMU、斯坦福等,聯(lián)手發(fā)布了最新開(kāi)源模型駱馬的權(quán)重。
3 月 31 日,UC 伯克利聯(lián)手 CMU、斯坦福、UCSD 和 MBZUAI,推出了 130 億參數(shù)的 Vicuna,俗稱「小羊駝」,僅需 300 美元就能實(shí)現(xiàn) ChatGPT 90% 的性能。
今天,團(tuán)隊(duì)正式發(fā)布了 Vicuna 的權(quán)重 —— 只需單個(gè) GPU 就能跑!
Vicuna 是通過(guò)在 ShareGPT 收集的用戶共享對(duì)話上對(duì) LLaMA 進(jìn)行微調(diào)訓(xùn)練而來(lái),訓(xùn)練成本近 300 美元。
研究人員設(shè)計(jì)了 8 個(gè)問(wèn)題類別,包括數(shù)學(xué)、寫作、編碼,對(duì) Vicuna-13B 與其他四個(gè)模型進(jìn)行了性能測(cè)試。
測(cè)試過(guò)程使用 GPT-4 作為評(píng)判標(biāo)準(zhǔn),結(jié)果顯示 Vicuna-13B 在超過(guò) 90% 的情況下實(shí)現(xiàn)了與 ChatGPT 和 Bard 相匹敵的能力。同時(shí),在在超過(guò) 90% 的情況下勝過(guò)了其他模型,如 LLaMA 和斯坦福的 Alpaca。
訓(xùn)練
Vicuna-13B 的訓(xùn)練流程如下:
首先,研究人員從 ChatGPT 對(duì)話分享網(wǎng)站 ShareGPT 上,收集了大約 70K 對(duì)話。接下來(lái),研究人員優(yōu)化了 Alpaca 提供的訓(xùn)練腳本,使模型能夠更好地處理多輪對(duì)話和長(zhǎng)序列。之后利用 PyTorch FSDP 在 8 個(gè) A100 GPU 上進(jìn)行了一天的訓(xùn)練。
?內(nèi)存優(yōu)化:
為了使 Vicuna 能夠理解長(zhǎng)上下文,將最大上下文長(zhǎng)度從 Alpaca 的 512 擴(kuò)展到 2048,這大大增加了 GPU 內(nèi)存需求。在此,研究人員通過(guò)使用梯度檢查點(diǎn)和閃存注意力來(lái)解決內(nèi)存壓力。
?多輪對(duì)話:
通過(guò)調(diào)整訓(xùn)練損失以考慮多輪對(duì)話,并僅在聊天機(jī)器人的輸出上計(jì)算微調(diào)損失。
?通過(guò) Spot 實(shí)例降低成本:
采用 SkyPilot 托管的 Spot 實(shí)例來(lái)降低成本,將 7B 模型的訓(xùn)練成本從 500 美元降低到約 140 美元,將 13B 模型的訓(xùn)練成本從約 1000 美元降低到 300 美元。
評(píng)估
在模型的質(zhì)量評(píng)估方面,研究人員創(chuàng)建了 80 個(gè)不同的問(wèn)題,并用 GPT-4 對(duì)模型輸出進(jìn)行了評(píng)價(jià)。
為了比較不同的模型,研究人員將每個(gè)模型的輸出組合成一個(gè)單獨(dú)的提示,然后讓 GPT-4 評(píng)估哪個(gè)模型給出的回答更好。
其中,GPT-4 在超過(guò) 90% 的問(wèn)題中更喜歡 Vicuna,而不是現(xiàn)有的 SOTA 開(kāi)源模型。
在 45% 的問(wèn)題中,GPT-4 認(rèn)為 Vicuna 的回答和 ChatGPT 差不多甚至更好。
綜合來(lái)看,Vicuna 在總分上達(dá)到 ChatGPT 的 92%。
安裝使用安裝
方法一:
方法二:
1. clone 版本庫(kù)并變更目錄到 FastChat 文件夾
2. 安裝 Package
pip3install--upgradepip#enablePEP660supportpip3install-e.權(quán)重
根據(jù) LLaMA 模型的許可,權(quán)重將以 delta 的形式發(fā)布。只需將其加到原來(lái)的 LLaMA 權(quán)重上,就可以獲得最終的 Vicuna 權(quán)重。
1. 按照 huggingface 上的說(shuō)明,獲得原始的 LLaMA 權(quán)重
2. 通過(guò)腳本,自動(dòng)從團(tuán)隊(duì)的 Hugging Face 賬戶上下載 delta 權(quán)重
python3-mfastchat.model.ly_delta--base/path/to/llama-13b--target/output/path/to/vicuna-13b--deltalmsys/vicuna-13b-delta-v0使用
?單個(gè) GPU
Vicuna-13B 需要大約 28GB 的 GPU 顯存。
python3-mfastchat.serve.cli--model-name/path/to/vicuna/weights
?多個(gè) GPU
如果沒(méi)有足夠的顯存,則可以使用模型并行來(lái)聚合同一臺(tái)機(jī)器上多個(gè) GPU 的顯存。
python3-mfastchat.serve.cli--model-name/path/to/vicuna/weights--num-gpus2
?僅用 CPU
如果想在 CPU 上運(yùn)行,則需要大約 60GB 的內(nèi)存。
python3-mfastchat.serve.cli--model-name/path/to/vicuna/weights--devicecpuWebUI
?啟動(dòng)控制器
python3-mfastchat.serve.controller
?啟動(dòng) model worker
python3-mfastchat.serve.model_worker--model-path/path/to/vicuna/weights
當(dāng)進(jìn)程完成模型的加載后,會(huì)看到「Uvicorn running on ...」。
?發(fā)送測(cè)試消息
python3-mfastchat.serve.test_message--model-namevicuna-13b
?啟動(dòng) gradio 網(wǎng)絡(luò)服務(wù)器
python3-mfastchat.serve.gradio_web_server
現(xiàn)在,你就可以打開(kāi)瀏覽器和模型聊天了。
微調(diào)
?數(shù)據(jù)
Vicuna 是通過(guò)使用從 ShareGPT 收集到的大約 7 萬(wàn)個(gè)用戶共享的對(duì)話與公共 API 來(lái)微調(diào)一個(gè) LLaMA 基礎(chǔ)模型而創(chuàng)建的。
為了確保數(shù)據(jù)質(zhì)量,團(tuán)隊(duì)將 HTML 轉(zhuǎn)換回 markdown,并過(guò)濾掉一些不合適或低質(zhì)量的樣本。此外,團(tuán)隊(duì)還將冗長(zhǎng)的對(duì)話分成較小的片段,以符合模型的最大上下文長(zhǎng)度。
?代碼和超參數(shù)
團(tuán)隊(duì)使用斯坦福大學(xué) Alpaca 的代碼對(duì)模型進(jìn)行微調(diào),并做了一些修改以支持梯度檢查點(diǎn)和 Flash 注意力。此外,團(tuán)隊(duì)也使用與斯坦福 Alpaca 相似的超參數(shù)。
?用 SkyPilot 在云服務(wù)上進(jìn)行微調(diào)
SkyPilot 是由加州大學(xué)伯克利分校建立的一個(gè)框架,可以在任何與一個(gè)云服務(wù)上輕松、經(jīng)濟(jì)地運(yùn)行 ML 工作負(fù)載。
Vicuna 可以在 8 個(gè)擁有 80GB 內(nèi)存的 A100 GPU 上進(jìn)行訓(xùn)練。下面的命令將自動(dòng)啟動(dòng)一個(gè)滿足要求的節(jié)點(diǎn),在上面設(shè)置并運(yùn)行訓(xùn)練作業(yè)。
skylaunch-cvicuna-sscripts/train-vicuna.yaml--envWANDB_API_KEY
對(duì)于 Alpaca 來(lái)說(shuō),訓(xùn)練作業(yè)會(huì)在具有 4 個(gè) A100-80GB GPU 的單一節(jié)點(diǎn)上啟動(dòng)。
skylaunch-calpaca-sscripts/train-alpaca.yaml--envWANDB_API_KEY
?使用本地 GPU 進(jìn)行微調(diào)
Vicuna 也可以用以下代碼在 8 個(gè) A100 GPU 上訓(xùn)練,顯存為 80GB。
如果要在更少的 GPU 上訓(xùn)練,則可以減少 per_device_train_batch_size,并相應(yīng)地增加 gradient_accumulation_steps,以保持全局批大小不變。要設(shè)置環(huán)境,可以參見(jiàn) scripts / train-vicuna.yaml 中的設(shè)置部分。
torchrun--nnodes=1--nproc_per_node=8--master_port=lt;your_random_portgt;fastchat/train/train_mem.py--model_name_or_pathlt;path-to-llama-model-weightgt;--data_pathlt;path-to-datagt;--bf16True--output_dir./checkpoints--num_train_epochs3--per_device_train_batch_size4--per_device_eval_batch_size4--gradient_accumulation_steps1--evaluation_strategy"no"--save_strategy"steps"--save_steps1200--save_total_limit100--learning_rate2e-5--weight_decay0.--warmup_ratio0.03--lr_scheduler_type"cosine"--logging_steps1--fsdp"full_shardauto_wrap"--fsdp_transformer_layer_cls_to_wrap'LlamaDecoderLayer'--tf32True--model_max_length2048--gradient_checkpointingTrue--lazy_preprocessTrue
參考資料:
鄭重聲明:此文內(nèi)容為本網(wǎng)站轉(zhuǎn)載企業(yè)宣傳資訊,目的在于傳播更多信息,與本站立場(chǎng)無(wú)關(guān)。僅供讀者參考,并請(qǐng)自行核實(shí)相關(guān)內(nèi)容。