自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ChatGPT平替「小羊駝」Mac可跑!2行代碼單GPU,UC伯克利再發(fā)70億參數(shù)開源模型

人工智能 新聞
130億參數(shù)模型權(quán)重公布不久,UC伯克利LMSys org再次發(fā)布了70億參數(shù)「小羊駝」。同在今天,Hugging Face也發(fā)布了70億參數(shù)模型StackLLaMA。

自從Meta發(fā)布「開源版ChatGPT」LLaMA之后,學(xué)界可謂是一片狂歡。

先是斯坦福提出了70億參數(shù)Alpaca,緊接著又是UC伯克利聯(lián)手CMU、斯坦福、UCSD和MBZUAI發(fā)布的130億參數(shù)Vicuna,在超過90%的情況下實現(xiàn)了與ChatGPT和Bard相匹敵的能力。

今天,「卷王」UC伯克利LMSys org又發(fā)布了70億參數(shù)的Vicuna——

不僅體積小、效率高、能力強,而且只需兩行命令就能在M1/M2芯片的Mac上運行,還能開啟GPU加速!

圖片

項目地址:https://github.com/lm-sys/FastChat/#fine-tuning

恰在今天,Hugging Face的研究人員也發(fā)布了一個70億參數(shù)的模型——StackLLaMA。這是一個通過人類反饋強化學(xué)習(xí)在LLaMA-7B微調(diào)而來的模型。

Vicuna-7B:真·單GPU,Mac就能跑

距離模型的發(fā)布不到一周,UC伯克利LMSys org便公布了Vicuna-13B的權(quán)重。

其中,單GPU運行需要大約28GB的顯存,而在僅用CPU的情況下需要大約60GB的內(nèi)存。

而這次發(fā)布的70億參數(shù)版本,則要小巧得多——需求直接砍半。

也就是說,用單個GPU運行Vicuna-7B,只需14GB+顯存;而純CPU運行的話,則只需30GB+內(nèi)存。

不僅如此,我們還可以通過Metal后端,在配備了蘋果自研芯片或者AMD GPU的Mac上啟用GPU加速。

圖片

之前在13B模型發(fā)布時,有不少網(wǎng)友吐槽道:

我以為的單個GPU:4090

實際上的單個GPU:28GB顯存及以上

圖片

圖片

現(xiàn)在,這個問題也有了新的解決方案——利用8位壓縮直接減少一半左右的內(nèi)存用量,只不過模型的質(zhì)量會略有下降。

13B模型28GB顯存瞬間變14GB;7B模型14GB顯存瞬間變7GB,有沒有!(但由于activation的緣故,實際占用會比這個高)

對此,LMSys org的研究人員表示,如果遇到內(nèi)存或顯存不夠用的情況,可以通過在上述命令中加入--load-8bit來啟用8位壓縮。

而且,無論是CPU、GPU還是Metal,是7B模型還是13B模型,通通適用。

python3 -m fastchat.serve.cli --model-name /path/to/vicuna/weights --load-8bit

StackLLaMA:超全RLHF訓(xùn)練教程

今天,Hugging Face研究人員發(fā)布了一篇博客StackLLaMA:用RLHF訓(xùn)練LLaMA的實踐指南。

圖片

當(dāng)前大型語言模型ChatGPT、GPT-4和Claude都使用了人類反饋強化學(xué)習(xí)(RLHF)來微調(diào)模型的行為,以產(chǎn)生更符合用戶意圖的響應(yīng)。

在此,HF研究者通過以下方式組合使用,訓(xùn)練了LlaMa模型使用RLHF回答Stack Exchange上的所有步驟:

· 監(jiān)督微調(diào) (SFT)

· 獎勵/偏好建模(RM)

· 人類反饋強化學(xué)習(xí) (RLHF)

要注意了!

訓(xùn)練StackLLaMA的主要目標(biāo)是提供一個教程和指南,介紹如何使用RLHF來訓(xùn)練模型,而不是主要關(guān)注模型的性能表現(xiàn)。

圖片

換句話說,該模型在生成答案方面非?;?,比如問它「我的花園里有一只駱駝,怎樣才能把它趕走?」

StackLLaMA最后給出的一個總括「如果以上方法都不奏效,就要召集增援了。如果有不止一個人想抓住這個奇特的小家伙,為什么不召集一個團隊呢?齊心協(xié)力,集中力量,這個問題應(yīng)該很快就解決了」。

在進行RLHF時,最重要的是從一個強有力的模型開始。因為RLHF只是一個微調(diào)步驟,以便讓模型與我們期望的互動方式和響應(yīng)方式相一致。

當(dāng)前,Meta開源的LLaMA模型參數(shù)大小從7B到65B不等,并且在1T到1.4T的token上進行了訓(xùn)練,是目前開源比較強大的模型。

因此,研究人員使用7B模型作為后續(xù)微調(diào)的基礎(chǔ)。

在數(shù)據(jù)集選用上,研究人員使用了StackExchange數(shù)據(jù)集,包括所有的問題和答案(還有StackOverflow和其他主題)。

選用該數(shù)據(jù)集的好處是,答案伴隨著點贊數(shù)和接受答案的標(biāo)簽一起給出。

研究人員根據(jù)A General Language Assistant as a Laboratory for Alignment論文中描述的方法,給每個答案打分:

score = log2 (1 + upvotes) rounded to the nearest integer, plus 1 if the questioner accepted the answer (we assign a score of ?1 if the number of upvotes is negative).


對于獎勵模型,始終需要每個問題兩個答案來進行比較。

而有些問題有幾十個答案,導(dǎo)致可能存在許多的可選對。因此,研究者對每個問題最多采樣十個答案對,以限制每個問題的數(shù)據(jù)點數(shù)。

最后,通過將HTML轉(zhuǎn)換為Markdown來清除格式,使模型輸出更可讀。

訓(xùn)練策略

即使訓(xùn)練最小的LLaMA模型也需要大量的內(nèi)存。通過計算7B 參數(shù)模型將使用(2+8)*7B=70GB 內(nèi)存空間。當(dāng)計算注意力分數(shù)等中間值時,可能需要更多。因此,即使在單個80GB的A100上也無法訓(xùn)練該模型。

一種方法是使用更高效的優(yōu)化器和半精度訓(xùn)練,將更多信息壓縮到內(nèi)存中,但內(nèi)存仍舊不夠用。

另一種選擇是使用參數(shù)高效微調(diào)(PEFT)技術(shù),例如PEFT庫,它可以在8位模型上執(zhí)行低秩適應(yīng)(LoRA)。

線性層的低秩適應(yīng): 在凍結(jié)層(藍色)旁邊添加額外參數(shù)(橙色),并將結(jié)果編碼的隱藏狀態(tài)與凍結(jié)層的隱藏狀態(tài)相加。

以8位加載模型大大減少了內(nèi)存占用,因為每個參數(shù)只需要一個字節(jié)的權(quán)重。比如,7B LLaMA在內(nèi)存中是7 GB。

LoRA不直接訓(xùn)練原始權(quán)重,而是在一些特定的層 (通常是注意力層) 上添加小的適配器層,因此可訓(xùn)練參數(shù)的數(shù)量大大減少。

在這種情況下,一個經(jīng)驗法則是為每十億參數(shù)分配約1.2-1.4GB的內(nèi)存(取決于批次大小和序列長度),以適應(yīng)整個微調(diào)設(shè)置。

這可以以較低成本微調(diào)更大的模型(在NVIDIA A100 80GB上訓(xùn)練高達50-60B規(guī)模的模型)。這些技術(shù)已經(jīng)能夠在消費級設(shè)備,比如樹莓派、手機,和GoogleColab上對大型模型進行微調(diào)。

研究人員發(fā)現(xiàn)盡管現(xiàn)在可以把非常大的模型放入當(dāng)個GPU中,但是訓(xùn)練可能仍然非常緩慢。

在此,研究人員使用了數(shù)據(jù)并行策略:將相同的訓(xùn)練設(shè)置復(fù)制到單個GPU中,并將不同的批次傳遞給每個GPU。

圖片

監(jiān)督微調(diào)

在開始訓(xùn)練獎勵模型并使用RL調(diào)整模型之前,若要模型在任何情況下遵循指令,便需要指令調(diào)優(yōu)。

實現(xiàn)這一點最簡單的方法是,使用來自領(lǐng)域或任務(wù)的文本繼續(xù)訓(xùn)練語言模型。

為了有效地使用數(shù)據(jù),研究者使用一種稱為「packing」的技術(shù):在文本之間使用一個EOS標(biāo)記連接許多文本,并切割上下文大小的塊以填充批次,而無需任何填充。

通過這種方法,訓(xùn)練效率更高,因為通過模型的每個token也進行了訓(xùn)練。

獎勵建模和人類偏好

原則上,研究人員可以使用RLHF直接通過人工標(biāo)注對模型進行微調(diào)。然而,這需要在每次優(yōu)化迭代之后將一些樣本發(fā)送給人類進行評級。

由于需要大量的訓(xùn)練樣本來實現(xiàn)收斂,人類閱讀和標(biāo)注速度固有的延遲,不僅昂貴,還非常緩慢。

因此,研究人員在RL調(diào)整模型之前,在收集的人工標(biāo)注上訓(xùn)練一個獎勵模型。獎勵建模的目的是模仿人類對文本的評價,這一方法比直接反饋更有效。

在實踐中,最好的方法是預(yù)測兩個示例的排名,獎勵模型會根據(jù)提示X提供兩個候選項,并且必須預(yù)測哪一個會被人類標(biāo)注員評價更高。

通過StackExchange 數(shù)據(jù)集,研究人員根據(jù)分數(shù)推斷出用戶更喜歡這兩個答案中的哪一個。有了這些信息和上面定義的損失,就可以修改transformers.Trainer 。通過添加一個自定義的損失函數(shù)進行訓(xùn)練。

class RewardTrainer(Trainer):def compute_loss(self, model, inputs, return_outputs=False):
rewards_j = model(input_ids=inputs["input_ids_j"], attention_mask=inputs["attention_mask_j"])[0]
rewards_k = model(input_ids=inputs["input_ids_k"], attention_mask=inputs["attention_mask_k"])[0]
loss = -nn.functional.logsigmoid(rewards_j - rewards_k).mean()
if return_outputs:
return loss, {"rewards_j": rewards_j, "rewards_k": rewards_k}
return loss

研究人員利用100,000對候選子集,并在50,000對候選的支持集上進行評估。

訓(xùn)練通過Weights & Biases進行記錄,在8-A100 GPU上花費了幾個小時,模型最終的準(zhǔn)確率為67%。

雖然這聽起來分數(shù)不高,但是這個任務(wù)對于人類標(biāo)注員來說也非常困難。

人類反饋強化學(xué)習(xí)

有了經(jīng)過微調(diào)的語言模型和獎勵模型,現(xiàn)在可以運行RL循環(huán),大致分為以下三個步驟:

· 根據(jù)提示生成響應(yīng)

· 根據(jù)獎勵模型對回答進行評分

· 對評級進行強化學(xué)習(xí)策略優(yōu)化

圖片

在對查詢和響應(yīng)提示進行標(biāo)記并傳遞給模型之前,模板如下。同樣的模版也適用于SFT,RM 和RLHF階段。

Question: <Query>
Answer: <Response>

使用RL訓(xùn)練語言模型的一個常見問題是,模型可以通過生成完全胡言亂語來學(xué)習(xí)利用獎勵模型,從而導(dǎo)致獎勵模型得到不合實際的獎勵。

為了平衡這一點,研究人員在獎勵中增加了一個懲罰:保留一個沒有訓(xùn)練的模型進行參考,并通過計算 KL散度將新模型的生成與參考模型的生成進行比較。

在訓(xùn)練期間對每個步驟進行批次獎勵,模型的性能在大約1000個步驟后趨于穩(wěn)定。

圖片


責(zé)任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2023-04-04 13:17:00

GPUCMU開源

2023-03-31 13:55:00

模型智能

2023-04-07 09:28:31

模型訓(xùn)練

2023-07-01 13:27:55

2024-12-02 08:20:00

2023-06-21 13:44:57

模型AI

2025-04-18 08:42:52

模型推理AI

2023-04-02 21:39:14

ChatGPT開源

2023-08-05 13:45:46

模型AI

2023-05-04 14:55:02

模型AI

2023-06-21 13:20:14

系統(tǒng)模型

2024-03-25 08:30:00

AI數(shù)據(jù)

2025-04-10 10:02:43

2023-04-11 14:16:53

模型AI

2025-01-22 15:21:00

2024-11-26 13:40:00

2025-04-30 09:09:00

2024-04-07 00:45:00

開源模型

2023-05-22 09:28:30

模型AI

2025-02-11 16:17:42

點贊
收藏

51CTO技術(shù)棧公眾號