訓練個中文版ChatGPT沒那麼難:不用A100,開源Alpaca-LoRA+RTX 4090就能搞定
2023 年,聊天機器人領域似乎只剩下兩個陣營:「OpenAI 的 ChatGPT」和「其他」。
ChatGPT 功能強大,但 OpenAI 幾乎不可能將其開源。 「其他」陣營表現欠佳,但不少人都在做開源的努力,例如前段時間 Meta 開源的 LLaMA。
LLaMA 是一系列模型的總稱,參數量從70 億到650 億不等,其中,130 億參數的LLaMA 模型「在大多數基準上」可以勝過參數量達1750 億的GPT-3。不過,模型並沒有經過指令微調(instruct tuning),因此產生效果較差。
為了提高模型性能,來自史丹佛的研究者幫助其完成了指令微調的工作,訓練了一個名為 Alpaca(羊駝)的70 億參數新模型(基於LLaMA 7B)。具體來說,他們讓 OpenAI 的 text-davinci-003 模型以 self-instruct 方式產生 52K 指令遵循(instruction-following)樣本,以此作為 Alpaca 的訓練資料。實驗結果表明,Alpaca 的許多行為都與 text-davinci-003 類似。也就是說,只有 7B 參數的輕量級模型 Alpaca 效能可媲美 GPT-3.5 這樣的超大規模語言模型。
對於一般研究者來說,這是一種切實可行的廉價微調方式,不過所需的運算量仍然較大(作者表示他們在8 個80GB A100 上微調了3 個小時)。而且,Alpaca 的種子任務都是英語,收集的資料也都是英文,因此訓練出來的模型未對中文優化。
為了進一步降低微調成本,另一位來自史丹佛的研究者 ——Eric J. Wang 使用 LoRA(low-rank adaptation)技術復現了 Alpaca 的結果。具體來說,Eric J. Wang 使用一張 RTX 4090 顯示卡,只用 5 個小時就訓練了一個和 Alpaca 水平相當的模型,將這類模型對算力的需求降到了消費級。而且,該模型可以在樹莓派上運行(用於研究)。
LoRA 的技術原理。 LoRA 的想法是在原始 PLM 旁邊增加一個旁路,做一個降維再升維的操作,來模擬所謂的 intrinsic rank。訓練的時候固定 PLM 的參數,只訓練降維矩陣 A 與升維矩陣 B。而模型的輸入輸出維度不變,輸出時將 BA 與 PLM 的參數疊加。以隨機高斯分佈初始化 A,以 0 矩陣初始化 B,確保訓練的開始此旁路矩陣仍是 0 矩陣(引自:https://finisky.github.io/lora/)。 LoRA 的最大優勢是速度更快,使用的記憶體更少,因此可以在消費級硬體上運行。
Eric J. Wang 發布的 Alpaca-LoRA 專案。
專案地址:https://github.com/tloen/alpaca-lora
對於想要訓練自己的類ChatGPT 模型(包括中文版類ChatGPT)但又沒有頂級算力資源配置的研究者來說,這無疑是一大驚喜。因此,在 Alpaca-LoRA 計畫問世後,圍繞著該計畫的教學和訓練成果不斷湧現,本文將介紹其中的幾個。
如何使用Alpaca-LoRA 微調LLaMA
#在Alpaca-LoRA 專案中,作者提到,為了廉價高效地進行微調,他們使用了Hugging Face 的PEFT 。 PEFT 是一個函式庫(LoRA 是其支援的技術之一),可以讓你使用各種基於 Transformer 的語言模型並使用 LoRA 對其進行微調。好處在於,它允許你在一般的硬體上廉價而有效地微調模型,並有較小的(也許是可組合的)輸出。
在近期的一篇部落格中,幾位研究者介紹如何使用 Alpaca-LoRA 來微調 LLaMA。
使用 Alpaca-LoRA 之前,需要具備一些先決條件。首先是 GPU 的選擇,由於 LoRA,現在你可以在 NVIDIA T4 這樣低規格 GPU 或 4090 消費級 GPU 上完成微調;此外,你還需要申請 LLaMA 權重,因為其權重並不對外公開。
先決條件具備了,接下來就是如何使用 Alpaca-LoRA。首選你需要複製 Alpaca-LoRA 儲存庫,程式碼如下:
git clone https://github.com/daanelson/alpaca-lora cd alpaca-lora
#其次,取得 LLaMA 權重。將下載到的權重值儲存到名為unconverted-weights 資料夾裡,資料夾層次結構就像下面這樣:
unconverted-weights ├── 7B │ ├── checklist.chk │ ├── consolidated.00.pth │ └── params.json ├── tokenizer.model └── tokenizer_checklist.chk
權重儲存好後,接著使用下列指令將PyTorch checkpoint 的權重轉換為transformer 相容的格式:
cog run python -m transformers.models.llama.convert_llama_weights_to_hf --input_dir unconverted-weights --model_size 7B --output_dir weights
#得到最終的目錄結構應該是這樣的:
weights ├── llama-7b └── tokenizermdki
#處理好上述兩步,來到第三步,安裝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
第四步來到微調模型,預設情況下,微調腳本上配置的GPU 功能較弱,但如果你有效能較好的GPU,則可以在finetune.py 中將MICRO_BATCH_SIZE 增加到32 或64。此外,如果你有指令調優資料集,則可以在 finetune.py 中編輯 DATA_PATH 以指向自己的資料集。需要注意的是這項操作應該確保資料格式與 alpaca_data_cleaned.json 相同。接下來執行微調腳本:
cog run python finetune.py
微調過程在 40GB A100 GPU 上花費 3.5 小時,對於處理能力較低的 GPU 則需要更多時間。
最後一步用Cog 運行模型:
$ 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.
教學作者表示,完成上述步驟之後,大家可以繼續嘗試各種玩法,包含但不限於:
- 帶上自己的資料集,微調自己的LoRA,例如微調LLaMA,讓它像動漫角色一樣說話。請參閱:https://replicate.com/blog/fine-tune-llama-to-speak-like-homer-simpson
- 將模型部署到雲端平台上;
- 結合其他LoRA,例如Stable Diffusion LoRA,把這些都用到影像領域;
- 使用Alpaca 資料集(或其他資料集)微調更大的LLaMA 模型,並查看它們的表現。這應該可以透過 PEFT 和 LoRA 實現,儘管它需要更大的 GPU。
Alpaca-LoRA 的衍生項目
#儘管Alpaca 表現可以媲美GPT 3.5,但其種子任務都是英語,收集的數據也都是英文,因此訓練出來的模型對中文並不友善。為了提升對話模型在中文的效果,我們來看看有哪些比較好的項目。
首先是來自華中師範大學等機構的三位個人開發者開源的中文語言模型駱駝(Luotuo),該項目基於LLaMA、Stanford Alpaca、Alpaca LoRA、Japanese-Alpaca -LoRA 等完成,單卡就能完成訓練部署。有趣的是,他們之所以將模型名字命名為駱駝,是因為 LLaMA(大羊駝)和 alpaca(羊駝)都屬於偶蹄目 - 駱駝科。這樣看來,取這個名字也在意料之中。
這個模型是在 Meta 開源的 LLaMA 基礎上,參考 Alpaca 和 Alpaca-LoRA 兩個項目,對中文進行了訓練。
專案網址:https://github.com/LC1332/Chinese-alpaca-lora
#目前該專案釋放了兩個模型luotuo-lora-7b-0.1、luotuo-lora-7b-0.3,還有一個模型在計畫中:
以下是效果展示:
#不過luotuo-lora-7b-0.1(0.1) 、luotuo-lora-7b-0.3(0.3)還是有差距的,當使用者詢問華中師範大學地址時,0.1 回答錯誤:
除了進行簡單的對話外,還有人在保險相關領域進行了模型優化。據這位推特網友表示,借助 Alpaca-LoRA 項目,他輸入了一些中文保險問答數據,最後效果也不錯。
具體來說,作者訓練中文版Alpaca LoRa 用了3K 多條中文問答保險語料,實現過程使用了LoRa 方法,並微調Alpaca 7B 模型,耗時240 分鐘,最終Loss 0.87 。
圖片來源:https://twitter.com/nash_su/status/1639273900222586882
#以下是訓練過程與結果:
測試結果顯示:1. 訓練語料相關內容都能有大概合理的回复,但僅限於不胡說八道2. 非語料相關內容則會強行回复某個語料內的數據3. 邏輯推理數學計算則沒有這個能力。
看到這個結果後網友紛紛喊要失業了:
###最後期待更多的中文對話模型加入。 ######
以上是訓練個中文版ChatGPT沒那麼難:不用A100,開源Alpaca-LoRA+RTX 4090就能搞定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的
