0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何訓練自己的ChatGPT

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-04-21 14:11 ? 次閱讀


LLM 這兩周不斷帶給我們震撼與驚喜。GPT-4 的發(fā)布讓大家對 LLM 的想象空間進一步擴大,而這些想象在本周眼花繚亂的 LLM 應用發(fā)布中逐漸成為現(xiàn)實,下面分享一位朋友訓練ChatGPT的完整方案,供大家參考~

LLM 相關的開源社區(qū)這兩周涌現(xiàn)了很多優(yōu)秀的工作,吸引了很多人的關注。其中,我比較關注的是 Stanford 基于 LLaMA 的 Alpaca 和隨后出現(xiàn)的 LoRA 版本 Alpaca-LoRA。原因很簡單,便宜

Alpaca 宣稱只需要 600$ 不到的成本(包括創(chuàng)建數(shù)據(jù)集),便可以讓 LLaMA 7B 達到近似 text-davinci-003 的效果。而 Alpaca-LoRA 則在此基礎上,讓我們能夠以一塊消費級顯卡,在幾小時內(nèi)完成 7B 模型的 fine-turning。

下面是開源社區(qū)成員分享的可以跑通的硬件規(guī)格及所需時間:

0c1b8fd6-dff3-11ed-bfe3-dac502259ad0.png

根據(jù)大家分享的信息,fine-tune 7B 模型僅需要 8-10 GB vram。因此我們很有可能可以在 Google Colab 上完成你所需要的 fine-tune!

那么,說干就干!

為什么要訓練自己的 ChatGPT ?

我想到了以下的方面:

  • 對我個人而言,這非常非常 cooooool !
  • 讓模型能夠講我熟悉的語言
  • 讓模型替我寫注釋和測試代碼
  • 讓模型學習產(chǎn)品文檔,幫我回答用戶提出的小白問題
  • ...

計劃

那么,為了訓練自己的 Chat我們需要做那些事兒呢? 理論上需要如下步驟:

第一步:準備數(shù)據(jù)集

fine-tune 的目標通常有兩種:

  • 像 Alpaca 一樣,收集 input/output 生成 prompt 用于訓練,讓模型完成特定任務
  • 語言填充,收集文本用于訓練,讓模型補全 prompt。

以第一種目標為例,假設我們的目標是讓模型講中文,那么,我們可以通過其他 LLM (如 text-davinci-003)把一個現(xiàn)有數(shù)據(jù)集(如 Alpaca)翻譯為中文來做 fine-tune。實際上這個想法已經(jīng)在開源社區(qū)已經(jīng)有人實現(xiàn)了。

第二步:訓練并 apply LoRA

在第一步準備的數(shù)據(jù)集上進行 fine-tune。

第三步:合并模型(可選)

合并 LoRA 與 base 可以加速推理,并幫助我們后續(xù) Quantization 模型。

第四步:quantization(可選)

最后,Quantization 可以幫助我們加速模型推理,并減少推理所需內(nèi)存。這方面也有開源的工具可以直接使用。

https://github.com/megvii-research/Sparsebit/blob/main/large_language_models/llama/quantization/README.md

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

實踐

柿子挑軟的捏,我們從簡單的目標開始:讓模型講中文。

為了達成這個目標,我使用的數(shù)據(jù)集是 Luotuo 作者翻譯的 Alpaca 數(shù)據(jù)集,訓練代碼主要來自 Alpaca-LoRA。

準備

由于我打算直接使用 Alpaca-LoRA 的代碼,我們先 clone Alpaca-LoRA:

gitclonegit@github.com:tloen/alpaca-lora.git

下載數(shù)據(jù)集:

wgethttps://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json

創(chuàng)建虛擬環(huán)境并安裝依賴(需要根據(jù)不同環(huán)境的 cuda 版本調(diào)整):

condacreate-nalpacapython=3.9
condaactivatealpaca
cdalpaca-lora
pipinstall-rrequirements.txt

訓練

單卡選手很簡單,可以直接執(zhí)行:

pythonfinetune.py
--base_model'decapoda-research/llama-7b-hf'
--data_path'/path/to/trans_chinese_alpaca_data.json'
--output_dir'./lora-alpaca-zh'

雙卡選手相對比較麻煩,需要執(zhí)行:

WORLD_SIZE=2CUDA_VISIBLE_DEVICES=0,1torchrun
--nproc_per_node=2
--master_port=1234
finetune.py
--base_model'decapoda-research/llama-7b-hf'
--data_path'/path/to/trans_chinese_alpaca_data.json'
--output_dir'./lora-alpaca-zh'

在我的環(huán)境下(2 * RTX 3090 Ti 24GB),需要額外配置 micro_batch_size 避免 OOM。

--micro_batch_size2

推薦的其他額外參數(shù)

--num_epochs2

訓練的過程比較穩(wěn)定,我在訓練過程中一直在用 nvitop 查看顯存和顯卡的用量:

0c49bf82-dff3-11ed-bfe3-dac502259ad0.png

下面是我訓練時模型收斂的情況,可以看到差不多 2 epochs 模型就收斂的差不多了:

0c5f2a0c-dff3-11ed-bfe3-dac502259ad0.png

推理

單卡選手可以直接執(zhí)行:

pythongenerate.py--base_model"decapoda-research/llama-7b-hf"
--lora_weights'./lora-alpaca-zh'
--load_8bit

雙卡選手還是會麻煩點,由于現(xiàn)在還不支持雙卡推理,我手動修改了 generate.py,添加了第 47 行:

0c741778-dff3-11ed-bfe3-dac502259ad0.png

而后,執(zhí)行上面的命令即可。

如果你的推理運行在服務器上,想要通過其他終端訪問,可以給 launch 方法添加參數(shù):

server_name="0.0.0.0"

此時打開瀏覽器,享受你的工作成果吧 :D

加速推理

Alpaca-LoRA 提供了一些腳本,如 export_hf_checkpoint.py 來合并模型。合并后的模型可以通過 llamap.cpp 等項目達到更好的推理性能。

測試

最后,讓我們對比下原生 Alpaca 與自己 fine-tune 的 Alpaca,看看 fine-tune 到底有沒有讓模型學會講中文吧!

Good Examples

0c8986da-dff3-11ed-bfe3-dac502259ad0.png

Bad Examples

0cabd9a6-dff3-11ed-bfe3-dac502259ad0.png

可以看出模型確實在講中文,也能依據(jù)中文的指令和輸入完成一些工作。但是由于 LLaMA 本身訓練數(shù)據(jù)大部分為英文以及 Alpaca 數(shù)據(jù)集翻譯后的質(zhì)量不足,我們的模型有些時候效果不如原生 Alpaca。此時不得不感嘆高質(zhì)量數(shù)據(jù)對 LLM 的重要性 。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權限、多租戶、數(shù)據(jù)權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

總結(jié)

作為一個分布式系統(tǒng)方向的工程師,fine-tune 一個 LLM 的過程遇到了不少問題,也有很多樂趣。雖然 LLaMA 7B 展現(xiàn)出的能力還比較有限,我還是很期待后面開源社區(qū)進一步的工作。

后續(xù)我也打算嘗試 fine-tune 特定目的的 LLM,比如讓 LLM 教我做飯,感興趣的朋友可以保持關注!


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3244

    瀏覽量

    48847
  • 數(shù)據(jù)集

    關注

    4

    文章

    1208

    瀏覽量

    24704
  • ChatGPT
    +關注

    關注

    29

    文章

    1561

    瀏覽量

    7683

原文標題:如何訓練自己的ChatGPT

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ChatGPT訓練需高性能芯片大規(guī)模并聯(lián),高速接口IP迎紅利時代

    ChatGPT應用。 眾所周知,類ChatGPT應用是一個吞金獸,微軟公司為了訓練ChatGPT使用了1萬張英偉達的高端GPU。“從訓練的角
    的頭像 發(fā)表于 03-06 09:18 ?8507次閱讀

    科技大廠競逐AIGC,中國的ChatGPT在哪?

    迅速走紅。 進入2023年,微軟推新,谷歌入局,“ChatGPT”熱潮迅速升溫,國內(nèi)的科技巨頭也陸續(xù)涌入潮中。ChatGPT發(fā)布后,包括百度、科大訊飛、京東等在內(nèi)的多家企業(yè)紛紛公布自己在AI領域的布局
    發(fā)表于 03-03 14:28

    ChatGPT系統(tǒng)開發(fā)AI人功智能方案

    隨著人工智能技術的不斷發(fā)展,本文由小編:Congge420整理發(fā)布。社交聊天系統(tǒng)在人們生活中扮演著越來越重要的角色。尤其是當人們想要與他人交流時,這個工具可以幫助他們更好地表達自己的想法和感受
    發(fā)表于 05-18 10:16

    chatgpt怎么用

    chatgpt怎么用 chatgpt怎么用?chatgpt 簡介 ChatGPT是一種語言模型,它被訓練來對對話進行建模。它能夠通過學習和理
    發(fā)表于 02-10 14:22 ?5.8w次閱讀

    ChatGPT使用初探

      最近 一直聽到ChatGPT,如雷貫耳,目前只能在國外用。近期找了個時間專門研究了怎么使用ChatGPT.   ChatGPT是一種大型語言模型,由 OpenAI 訓練。它可
    發(fā)表于 02-13 10:11 ?1次下載
    <b class='flag-5'>ChatGPT</b>使用初探

    如何訓練ChatGPT?中國版ChatGPT下月面世

    中國百度公司2月7日表示,將在今年3月完成類似ChatGPT的項目“文心一言”(ERNIE Bot)的內(nèi)部測試,加入這場全球競賽。
    的頭像 發(fā)表于 02-13 15:10 ?3048次閱讀
    如何<b class='flag-5'>訓練</b><b class='flag-5'>ChatGPT</b>?中國版<b class='flag-5'>ChatGPT</b>下月面世

    ChatGPT介紹和代碼智能

    一. ChatGPT 1. ChatGPT的自我介紹 2. ChatGPT的前世 2.1GPT-3是啥?General Pre-Training(GPT),即通用預訓練語言模型,是一種
    發(fā)表于 02-14 09:33 ?2次下載
    <b class='flag-5'>ChatGPT</b>介紹和代碼智能

    如何打造我們自己ChatGPT

      火爆全網(wǎng)的ChatGPT究竟是什么?為什么這么強?ChatGPT會取代搜素引擎嗎?ChatGPT凸顯的能力會是metaverse的有力支撐嗎?ChatGPT的火爆背后, AI發(fā)展路
    發(fā)表于 02-14 09:14 ?3次下載
    如何打造我們<b class='flag-5'>自己</b>的<b class='flag-5'>ChatGPT</b>

    ChatGPT是什么?ChatGPT寫代碼的原理你知道嗎

    ChatGPT是什么 ChatGPT是一種人工智能聊天機器人,可以與用戶進行自然語言對話,回答問題,提供建議和娛樂等服務。它的名字"GPT"代表著"生成預訓練模型
    的頭像 發(fā)表于 06-04 17:01 ?3206次閱讀

    chatgpt是什么原理

    具有更優(yōu)的表現(xiàn)。它代表了 OpenAI 最新一代的大型語言模型,并且在設計上非常注重交互性。 OpenAI 使用監(jiān)督學習和強化學習的組合來調(diào)優(yōu) ChatGPT,其中的強化學習組件使 ChatGPT 獨一無二。OpenAI 使用了「人類反饋強化學習」(RLHF)的
    發(fā)表于 06-27 13:57 ?340次閱讀

    ChatGPT原理 ChatGPT模型訓練 chatgpt注冊流程相關簡介

    ChatGPT注冊沒有外國手機號驗證怎么辦? ChatGPT作為近期火爆網(wǎng)絡的AI項目,受到了前所未有的關注。我們可以與AI機器人實時聊天,獲得問題的答案。但受ChatGPT服務器及相關政策
    的頭像 發(fā)表于 12-06 16:28 ?897次閱讀
    <b class='flag-5'>ChatGPT</b>原理 <b class='flag-5'>ChatGPT</b>模型<b class='flag-5'>訓練</b> <b class='flag-5'>chatgpt</b>注冊流程相關簡介

    PyTorch如何訓練自己的數(shù)據(jù)集

    PyTorch是一個廣泛使用的深度學習框架,它以其靈活性、易用性和強大的動態(tài)圖特性而聞名。在訓練深度學習模型時,數(shù)據(jù)集是不可或缺的組成部分。然而,很多時候,我們可能需要使用自己的數(shù)據(jù)集而不是現(xiàn)成
    的頭像 發(fā)表于 07-02 14:09 ?1716次閱讀

    pytorch如何訓練自己的數(shù)據(jù)

    本文將詳細介紹如何使用PyTorch框架來訓練自己的數(shù)據(jù)。我們將從數(shù)據(jù)準備、模型構建、訓練過程、評估和測試等方面進行講解。 環(huán)境搭建 首先,我們需要安裝PyTorch??梢酝ㄟ^訪問PyTorch官網(wǎng)
    的頭像 發(fā)表于 07-11 10:04 ?537次閱讀

    如何訓練自己的AI大模型

    訓練自己的AI大模型是一個復雜且耗時的過程,涉及多個關鍵步驟。以下是一個詳細的訓練流程: 一、明確需求和目標 首先,需要明確自己的需求和目標。不同的任務和應用領域需要不同類型的AI模型
    的頭像 發(fā)表于 10-23 15:07 ?1520次閱讀

    如何訓練自己的LLM模型

    訓練自己的大型語言模型(LLM)是一個復雜且資源密集的過程,涉及到大量的數(shù)據(jù)、計算資源和專業(yè)知識。以下是訓練LLM模型的一般步驟,以及一些關鍵考慮因素: 定義目標和需求 : 確定你的LLM將用
    的頭像 發(fā)表于 11-08 09:30 ?549次閱讀