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

訓(xùn)練個(gè)中文版ChatGPT沒(méi)那么難:不用A100,開(kāi)源Alpaca-LoRA+RTX 4090就能搞定

人工智能 新聞
Alpaca-LoRA 將微調(diào)類 ChatGPT 模型的算力需求降到了消費(fèi)級(jí),訓(xùn)練個(gè)自己的中文對(duì)話模型真就沒(méi)那么難了。

2023 年,聊天機(jī)器人領(lǐng)域似乎只剩下兩個(gè)陣營(yíng):「OpenAI 的 ChatGPT」和「其他」。

ChatGPT 功能強(qiáng)大,但 OpenAI 幾乎不可能將其開(kāi)源。「其他」陣營(yíng)表現(xiàn)欠佳,但不少人都在做開(kāi)源方面的努力,比如前段時(shí)間 Meta 開(kāi)源的 LLaMA。

LLaMA 是一系列模型的總稱,參數(shù)量從 70 億到 650 億不等,其中,130 億參數(shù)的 LLaMA 模型「在大多數(shù)基準(zhǔn)上」可以勝過(guò)參數(shù)量達(dá) 1750 億的 GPT-3。不過(guò),該模型并沒(méi)有經(jīng)過(guò)指令微調(diào)(instruct tuning),因此生成效果較差。

為了提高模型性能,來(lái)自斯坦福的研究者幫助其完成了指令微調(diào)的工作,訓(xùn)練了一個(gè)名為 Alpaca(羊駝)的 70 億參數(shù)新模型(基于 LLaMA 7B)。具體來(lái)說(shuō),他們讓 OpenAI 的 text-davinci-003 模型以 self-instruct 方式生成 52K 指令遵循(instruction-following)樣本,以此作為 Alpaca 的訓(xùn)練數(shù)據(jù)。實(shí)驗(yàn)結(jié)果表明,Alpaca 的很多行為都與 text-davinci-003 類似。也就是說(shuō),只有 7B 參數(shù)的輕量級(jí)模型 Alpaca 性能可媲美 GPT-3.5 這樣的超大規(guī)模語(yǔ)言模型。

圖片

對(duì)于普通研究者來(lái)說(shuō),這是一種切實(shí)可行的廉價(jià)微調(diào)方式,不過(guò)需要的運(yùn)算量仍然較大(作者表示他們?cè)?8 個(gè) 80GB A100 上微調(diào)了 3 個(gè)小時(shí))。而且,Alpaca 的種子任務(wù)都是英語(yǔ),收集的數(shù)據(jù)也都是英文,因此訓(xùn)練出來(lái)的模型未對(duì)中文優(yōu)化。?

為了進(jìn)一步降低微調(diào)成本,另一位來(lái)自斯坦福的研究者 ——Eric J. Wang 使用 LoRA(low-rank adaptation)技術(shù)復(fù)現(xiàn)了 Alpaca 的結(jié)果。具體來(lái)說(shuō),Eric J. Wang 使用一塊 RTX 4090 顯卡,只用 5 個(gè)小時(shí)就訓(xùn)練了一個(gè)和 Alpaca 水平相當(dāng)?shù)哪P?,將這類模型對(duì)算力的需求降到了消費(fèi)級(jí)。而且,該模型可以在樹(shù)莓派上運(yùn)行(用于研究)。

圖片

LoRA 的技術(shù)原理。LoRA 的思想是在原始 PLM 旁邊增加一個(gè)旁路,做一個(gè)降維再升維的操作,來(lái)模擬所謂的 intrinsic rank。訓(xùn)練的時(shí)候固定 PLM 的參數(shù),只訓(xùn)練降維矩陣 A 與升維矩陣 B。而模型的輸入輸出維度不變,輸出時(shí)將 BA 與 PLM 的參數(shù)疊加。用隨機(jī)高斯分布初始化 A,用 0 矩陣初始化 B,保證訓(xùn)練的開(kāi)始此旁路矩陣依然是 0 矩陣(引自:https://finisky.github.io/lora/)。LoRA 的最大優(yōu)勢(shì)是速度更快,使用的內(nèi)存更少,因此可以在消費(fèi)級(jí)硬件上運(yùn)行。

圖片

Eric J. Wang 發(fā)布的 Alpaca-LoRA 項(xiàng)目。

項(xiàng)目地址:https://github.com/tloen/alpaca-lora

對(duì)于想要訓(xùn)練自己的類 ChatGPT 模型(包括中文版類 ChatGPT)但又沒(méi)有頂級(jí)算力資源配置的研究者來(lái)說(shuō),這無(wú)疑是一大驚喜。因此,在 Alpaca-LoRA 項(xiàng)目問(wèn)世后,圍繞該項(xiàng)目的教程和訓(xùn)練成果不斷涌現(xiàn),本文將介紹其中的幾個(gè)。

如何使用 Alpaca-LoRA 微調(diào) LLaMA

在 Alpaca-LoRA 項(xiàng)目中,作者提到,為了廉價(jià)高效地進(jìn)行微調(diào),他們使用了 Hugging Face 的 PEFT。PEFT 是一個(gè)庫(kù)(LoRA 是其支持的技術(shù)之一),可以讓你使用各種基于 Transformer 的語(yǔ)言模型并使用 LoRA 對(duì)其進(jìn)行微調(diào)。好處在于,它允許你在一般的硬件上廉價(jià)而有效地微調(diào)模型,并有較小的(也許是可組合的)輸出。

在近期的一篇博客中,幾位研究者介紹了如何使用 Alpaca-LoRA 來(lái)微調(diào) LLaMA。

使用 Alpaca-LoRA 之前,需要具備一些先決條件。首先是 GPU 的選擇,得益于 LoRA,現(xiàn)在你可以在 NVIDIA T4 這樣低規(guī)格 GPU 或 4090 消費(fèi)級(jí) GPU 上完成微調(diào);此外,你還需要申請(qǐng) LLaMA 權(quán)重,因?yàn)槠錂?quán)重并不對(duì)外公開(kāi)。

先決條件具備了,接下來(lái)就是如何使用 Alpaca-LoRA。首選你需要克隆 Alpaca-LoRA 存儲(chǔ)庫(kù),代碼如下:

git clone https://github.com/daanelson/alpaca-lora
cd alpaca-lora

其次,獲取 LLaMA 權(quán)重。將下載到的權(quán)重值存儲(chǔ)到名為 unconverted-weights 文件夾里,文件夾層次結(jié)構(gòu)就像下面這樣:

unconverted-weights
├── 7B
├── checklist.chk
├── consolidated.00.pth
└── params.json
├── tokenizer.model
└── tokenizer_checklist.chk

權(quán)重存儲(chǔ)好后,接著使用以下命令將 PyTorch checkpoint 的權(quán)重轉(zhuǎn)換為 transformer 兼容的格式:

cog run python -m transformers.models.llama.convert_llama_weights_to_hf \
--input_dir unconverted-weights \
--model_size 7B \
--output_dir weights

得到最終的目錄結(jié)構(gòu)應(yīng)該是這樣的:

weights
├── llama-7b
└── tokenizermdki

處理好上述兩步,來(lái)到第三步,安裝 Cog:

sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog

第四步來(lái)到微調(diào)模型,默認(rèn)情況下,微調(diào)腳本上配置的 GPU 功能較弱,但如果你有性能更好的 GPU,則可以在 finetune.py 中將 MICRO_BATCH_SIZE 增加到 32 或 64。此外,如果你有指令調(diào)優(yōu)數(shù)據(jù)集,則可以在 finetune.py 中編輯 DATA_PATH 以指向自己的數(shù)據(jù)集。需要注意的是這一項(xiàng)操作應(yīng)該確保數(shù)據(jù)格式與 alpaca_data_cleaned.json 相同。接下來(lái)運(yùn)行微調(diào)腳本:

cog run python finetune.py

微調(diào)過(guò)程在 40GB A100 GPU 上花費(fèi) 3.5 小時(shí),對(duì)于處理能力較低的 GPU 則需要更多時(shí)間。

最后一步用 Cog 運(yùn)行模型:

$ cog predict -i prompt="Tell me something about alpacas."
Alpacas are domesticated animals from South America. They are closely related to llamas and guanacos and have a long, dense, woolly fleece that is used to make textiles. They are herd animals and live in small groups in the Andes mountains. They have a wide variety of sounds, including whistles, snorts, and barks. They are intelligent and social animals and can be trained to perform certain tasks.

教程作者表示,在完成以上步驟之后,大家可以繼續(xù)嘗試各種玩法,包括但不限于:

  • 帶上你自己的數(shù)據(jù)集,微調(diào)你自己的 LoRA,比如微調(diào) LLaMA,讓它像動(dòng)漫角色一樣說(shuō)話。參見(jiàn):https://replicate.com/blog/fine-tune-llama-to-speak-like-homer-simpson
  • 將模型部署到云平臺(tái)上;
  • 結(jié)合其他 LoRA,比如 Stable Diffusion LoRA,把這些都用到圖像領(lǐng)域;
  • 使用 Alpaca 數(shù)據(jù)集(或其他數(shù)據(jù)集)微調(diào)更大的 LLaMA 模型,并查看它們的表現(xiàn)。這應(yīng)該可以通過(guò) PEFT 和 LoRA 實(shí)現(xiàn),盡管它需要更大的 GPU。

Alpaca-LoRA 的衍生項(xiàng)目

盡管 Alpaca 性能可以媲美 GPT 3.5,但其種子任務(wù)都是英語(yǔ),收集的數(shù)據(jù)也都是英文,因此訓(xùn)練出來(lái)的模型對(duì)中文并不友好。為了提升對(duì)話模型在中文上的效果,我們看看都有哪些比較好的項(xiàng)目。

首先是來(lái)自華中師范大學(xué)等機(jī)構(gòu)的三位個(gè)人開(kāi)發(fā)者開(kāi)源的中文語(yǔ)言模型駱駝 (Luotuo),該項(xiàng)目基于 LLaMA、Stanford Alpaca、Alpaca LoRA、Japanese-Alpaca-LoRA 等完成,單卡就能完成訓(xùn)練部署。有意思的是,他們之所以將模型名字命名為駱駝,是因?yàn)?LLaMA(大羊駝)和 alpaca(羊駝)都屬于偶蹄目 - 駱駝科。這樣看來(lái),起這個(gè)名字也在意料之中。

這個(gè)模型是在 Meta 開(kāi)源的 LLaMA 基礎(chǔ)上,參考 Alpaca 和 Alpaca-LoRA 兩個(gè)項(xiàng)目,對(duì)中文進(jìn)行了訓(xùn)練。

圖片

項(xiàng)目地址:https://github.com/LC1332/Chinese-alpaca-lora

目前該項(xiàng)目釋放了兩個(gè)模型 luotuo-lora-7b-0.1、luotuo-lora-7b-0.3,還有一個(gè)模型在計(jì)劃中:

圖片

下面是效果展示:

圖片

圖片

不過(guò) luotuo-lora-7b-0.1(0.1)、luotuo-lora-7b-0.3(0.3)還是有差距的,在用戶詢問(wèn)華中師范大學(xué)地址時(shí),0.1 回答錯(cuò)誤:

圖片

除了進(jìn)行簡(jiǎn)單的對(duì)話外,還有人在保險(xiǎn)相關(guān)領(lǐng)域進(jìn)行了模型優(yōu)化。據(jù)這位推特網(wǎng)友表示,借助 Alpaca-LoRA 項(xiàng)目,他輸入了一些中文保險(xiǎn)問(wèn)答數(shù)據(jù),最后效果也不錯(cuò)。

具體來(lái)說(shuō),作者訓(xùn)練中文版 Alpaca LoRa 用了 3K 多條中文問(wèn)答保險(xiǎn)語(yǔ)料,實(shí)現(xiàn)過(guò)程使用了 LoRa 方法,并微調(diào) Alpaca 7B 模型,耗時(shí) 240 分鐘,最終 Loss 0.87 。

圖片

圖源:https://twitter.com/nash_su/status/1639273900222586882

以下是訓(xùn)練過(guò)程和結(jié)果:

圖片

圖片

圖片

測(cè)試結(jié)果表明:1. 訓(xùn)練語(yǔ)料相關(guān)內(nèi)容都能有大概合理的回復(fù),但僅限于不胡說(shuō) 2. 非語(yǔ)料相關(guān)內(nèi)容則會(huì)強(qiáng)行回復(fù)某個(gè)語(yǔ)料內(nèi)的數(shù)據(jù) 3. 邏輯推理數(shù)學(xué)計(jì)算則沒(méi)有這個(gè)能力。

圖片

看到這個(gè)結(jié)果后網(wǎng)友紛紛喊要失業(yè)了:

圖片

最后期待更多的中文對(duì)話模型加入進(jìn)來(lái)。

責(zé)任編輯:張燕妮 來(lái)源: 機(jī)器之心
相關(guān)推薦

2023-02-28 12:56:15

AIChatGPT

2012-12-21 09:31:52

Windows 8

2014-11-03 18:22:53

2023-12-22 09:32:13

引擎模型

2021-07-01 07:34:09

LinuxIO模型

2023-05-29 12:35:09

模型ChatGPT

2010-06-22 16:11:08

2015-10-23 09:44:59

PaaS開(kāi)源云應(yīng)用

2023-10-26 18:22:16

前端CSSFlex 布局

2020-02-13 10:05:24

開(kāi)源技術(shù) 趨勢(shì)

2016-07-04 08:01:46

2024-06-21 09:17:09

2024-02-21 15:05:30

2023-06-20 07:19:49

RTX 4090HWBOT顯卡

2024-11-25 10:30:00

AI視頻開(kāi)源

2023-03-22 07:51:11

2020-05-21 09:17:51

Vue 3Vue代碼

2015-08-24 14:36:53

2018-08-30 17:28:52

TCP三次握手HTTP

2024-04-30 10:40:11

點(diǎn)贊
收藏

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