主頁 >  其他 > GPT大語言模型Alpaca-lora本地化部署實踐【大語言模型實踐一】

GPT大語言模型Alpaca-lora本地化部署實踐【大語言模型實踐一】

2023-05-18 08:02:47 其他

模型介紹

Alpaca模型是斯坦福大學研發的LLM(Large Language Model,大語言)開源模型,是一個在52K指令上從LLaMA 7B(Meta公司開源的7B)模型微調而來,具有70億的模型引數(模型引數越大,模型的推理能力越強,當然隨之訓練模型的成本也就越高),

LoRA,英文全稱Low-Rank Adaptation of Large Language Models,直譯為大語言模型的低階適應,這是微軟的研究人員為了解決大語言模型微調而開發的一項技術,如果想讓一個預訓練大語言模型能夠執行特定領域內的任務,一般需要做fine-tuning,但是目前推理效果好的大語言模型引數維度非常非常大,有些甚至是上千億維,如果直接在大語言模型上做fine-tuning,計算量會非常的大,成本也會非常的高,

’LoRA的做法是凍結預訓練好的模型引數,然后在每個Transformer塊里注入可訓練的層,由于不需要對模型的引數重新計算梯度,所以,會大大的減少計算量,

具體如下圖所示,核心思想是在原始預訓練模型增加一個旁路,做一個降維再升維的操作,訓練的時候固定預訓練模型的引數,只訓練降維矩陣 A 與升維矩陣 B,而模型的輸入輸出維度不變,輸出時將 BA 與預訓練語言模型的引數疊加,

用隨機高斯分布初始化 A,用 0 矩陣初始化 B,這樣能保證訓練時,新增的旁路BA=0,從而對模型結果沒有影響,在推理時,將左右兩部分的結果加到一起,即h=Wx+BAx=(W+BA)x,所以,只要將訓練完成的矩陣乘積BA跟原本的權重矩陣W加到一起作為新權重引數替換原始預訓練語言模型的W即可,不會增加額外的計算資源,LoRA 的最大優勢是訓練速度更快,使用的記憶體更少,

本文進行本地化部署實踐的Alpaca-lora模型就是Alpaca模型的低階適配版本,本文將對Alpaca-lora模型本地化部署、微調和推理程序進行實踐并描述相關步驟,

GPU服務器環境部署

本文進行部署的GPU服務器具有4塊獨立的GPU,型號是P40,單個P40算力相當于60個同等主頻CPU的算力,(也可以考慮使用京東云GPU的P40,
jdcloud.com/cn/calculator/calHost))

拿到GPU服務器我們首先就是安裝顯卡驅動和CUDA驅動(是顯卡廠商NVIDIA推出的運算平臺, CUDA是一種由NVIDIA推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問題),顯卡驅動需要到NVIDIA的官方網站去查找相應的顯卡型號和適配的CUDA版本,下載地址:
https://www.nvidia.com/Download/index.aspx ,選擇相應的顯卡和CUDA版本就可以下載驅動檔案啦,

我下載的檔案是NVIDIA-Linux-x86_64-515.105.01.run,這是一個可執行檔案,用root權限執行即可,注意安裝驅動程序中不能有運行的nvidia行程,如果有需要全部kill掉,否則會安裝失敗,如下圖所示:

然后一路next,沒有報錯的話就安裝成功啦,為了后續查看顯卡資源情況,最好還是再安裝一個顯卡監控工具,比如nvitop,用pip install nvitop即可,這里注意,由于不同服務器python版本有差異,最好安裝anaconda部署自己的私有python空間,防止運行時報各種奇怪的錯誤,具體步驟如下:

1.安裝anaconda 下載方式:wget
https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh, 安裝命令: shAnaconda3-5.3.0-Linux-x86_64.sh 每個安裝步驟都輸入“yes”,最后conda init后完成安裝,這樣每次進入安裝用戶的session,都會直接進入自己的python環境,如果安裝最后一步選擇no,即不進行conda init,則后續可以通過source/home/jd_ad_sfxn/anaconda3/bin/activate來進入到私有的python環境,

2.安裝setuptools 接下來需要安裝打包和分發工具setuptools,下載地址:wget
https://files.pythonhosted.org/packages/26/e5/9897eee1100b166a61f91b68528cb692e8887300d9cbdaa1a349f6304b79/setuptools-40.5.0.zip 安裝命令: unzip setuptools-40.5.0.zip cd setuptools-40.5.0/ python setup.py install

3.安裝pip 下載地址:wget
https://files.pythonhosted.org/packages/45/ae/8a0ad77defb7cc903f09e551d88b443304a9bd6e6f124e75c0fbbf6de8f7/pip-18.1.tar.gz 安裝命令: tar -xzf pip-18.1.tar.gz cd pip-18.1 python setup.py install

至此,漫長的安裝程序終于告一段落了,我們現在創建一個私有的python空間,執行

conda create -n alpaca python=3.9
conda activate alpaca

然后驗證一下,如下圖所示說明已經創建成功啦,

模型訓練

上文已經把GPU服務器的基礎環境安裝好了,下面我們就要開始激動人心的模型訓練了(激動ing),在訓練之前我們首先需要下載模型檔案,下載地址:
https://github.com/tloen/alpaca-lora ,整個模型都是開源的,真好!首先把模型檔案下載到本地,執行git clonehttps://github.com/tloen/alpaca-lora.git .,

本地會有檔案夾alpaca-lora,然后cd alpaca-lora到檔案夾內部執行

pip install -r requirements.txt

這個程序可能會比較慢,需要從網上下載大量的依賴包,程序中可能也會報各種包沖突,依賴沒有等問題,這塊只能見招拆招,缺什么裝什么(解決包依賴和版本沖突確實是個頭疼的事情,不過這步做不好,模型也跑不起來,所以只能耐心的一點一點解決),這里痛苦的程序就不贅述了,因為不同機器可能遇到的問題也不太一樣,參考意義不是很大,

如果安裝程序執行完成,并沒再有報錯資訊,并提示Successful compeleted,那么恭喜你啦,萬里長征已經走完一半啦,你已經離成功很近了,再堅持一下下就很有可能成功啦:),

由于我們的目標是對模型進行fine-tuning,所以我們得有一個fine-tuning的目標,由于原始模型對中文支持并不好,所以我們的目標就有了,用中文語料庫讓模型更好的支持中文,這個社區也給我準備好了,我們直接下載中文的語料庫就好了,在本地執行 wget
https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json?raw=true ,將后面模型訓練用到的語料庫下載到alpaca-lora根目錄下(后面方便使用),

語料庫的內容就是很多的三元組(instruction,input,output,如下圖所示),instruction就是指令,讓模型做什么事,input就是輸入,output是模型的輸出,根據指令和輸入,訓練模型應該輸出什么資訊,讓模型能夠更好的適應中文,

好的,到現在為止,萬里長征已經走完2/3了,別著急訓練模型,我們現在驗證一下GPU環境和CUDA版本資訊,還記得之前我們安裝的nvitop嘛,現在就用上了,在本地直接執行nvitop,我們就可以看到GPU環境和CUDA版本資訊了,如下圖:

在這里我們能夠看到有幾塊顯卡,驅動版本和CUDA版本等資訊,當然最重要的我們還能看到GPU資源的實時使用情況,

怎么還沒到模型訓練呢,別著急呀,這就來啦,

我們先到根目錄下然后執行訓練模型命令:

如果是單個GPU,那么執行命令即可:

python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path 'trans_chinese_alpaca_data.json' \
    --output_dir './lora-alpaca-zh'

如果是多個GPU,則執行:

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

如果可以看到進度條在走,說明模型已經啟動成功啦,

在模型訓練程序中,每迭代一定數量的資料就會列印相關的資訊,會輸出損失率,學習率和代資訊,如上圖所示,當loss波動較小時,模型就會收斂,最終訓練完成,

我用的是2塊GPU顯卡進行訓練,總共訓練了1904分鐘,也就是31.73個小時,模型就收斂了,模型訓練是個漫長的程序,所以在訓練的時候我們可以適當的放松一下,做點其他的事情:),

模型推理

模型訓練好后,我們就可以測驗一下模型的訓練效果了,由于我們是多個GPU顯卡,所以想把模型引數加載到多個GPU上,這樣會使模型推理的更快,需要修改

generate.py 檔案,添加下面這樣即可,

然后我們把服務啟起來,看看效果,根目錄執行:

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

其中./lora-alpaca-zh目錄下的檔案,就是我們剛剛fine tuning模型訓練的引數所在位置,啟動服務的時候把它加載到記憶體(這個記憶體指的是GPU記憶體)里面,

如果成功,那么最侄訓輸出相應的IP和Port資訊,如下圖所示:

我們可以用瀏覽器訪問一下看看,如果能看到頁面,就說明服務已經啟動成功啦,

激動ing,費了九牛二虎之力,終于成功啦!!

因為我們目標是讓模型說中文,所以我們測驗一下對中文的理解,看看效果怎么樣?

簡單的問題,還是能給出答案的,但是針對稍微復雜一點的問題,雖然能夠理解中文,但是并沒有用中文進行回答,訓練后的模型還是不太穩定啊,

在推理的時候我們也可以監控一下GPU的變化,可以看到GPU負載是比較高的,說明GPU在進行大量的計算來完成推理,

總結

1.效果問題:由于語料庫不夠豐富,所以目前用社區提供的語料庫訓練的效果并不是很好,對中文的理解力有限,如果想訓練出能夠執行特定領域的任務,則需要大量的語料支持,同時訓練時間也會更長;

2. 推理時間問題:由于目前部署的GPU服務器有4塊GPU,能夠執行的有3塊,基于3塊GPU,在推理的時候還是比較吃力的,執行一次互動需要大概30s-1min,如果達到chatGPT那樣實時回傳,則需要大量的算力進行支持,可以反推,chatGPT后臺肯定是有大集群算力支持的,所以如果想做成服務,成本投入是需要考量的一個問題;

3. 中文亂碼問題:在input為中文的時候,有時候回傳結果會亂碼,懷疑跟切詞有關,由于中文的編碼問題,中文不像英文以空格區分,所以可能會有一定的亂碼情況產生,呼叫open AI 的API也會有這種情況,后面看看社區是否有相應解決辦法;

4. 模型選擇問題:由于目前GPT社區比較活躍,模型的產生和變化也是日新月異,由于時間倉促,目前只調研了alpaca-lora模型的本地化部署,后面針對實際落地的應用應該也會有更好的更低成本的落地方案,需要持續跟進社區的發展,選擇合適的開源方案,

京東云P40型號GPU的【ChatGLM語言模型】實踐篇詳見

https://my.oschina.net/u/4090830/blog/8695561

作者:Beyond_luo

內容來源:京東云開發者社區

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552697.html

標籤:其他

上一篇:從GFS到GPT,AI Infra的激蕩20年

下一篇:返回列表

標籤雲
其他(159201) Python(38148) JavaScript(25431) Java(18055) C(15228) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7191) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1938) python-3.x(1918) C++(1917) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • GPT大語言模型Alpaca-lora本地化部署實踐【大語言模型實踐一】

    本文進行本地化部署實踐的Alpaca-lora模型就是Alpaca模型的低階適配版本。本文將對Alpaca-lora模型本地化部署、微調和推理程序進行實踐并描述相關步驟。 ......

    uj5u.com 2023-05-18 08:02:47 more
  • 從GFS到GPT,AI Infra的激蕩20年

    ?導讀 最近AIGC和LLM的浪潮層層迭起,大有把AI行業過去十年畫的餅,一夜之間完全變現的勢頭。而 AI Infra (構建AI所需的基礎設施),也成了討論的焦點之一。大眾對AI Infra的關注點,往往放在AI算力上——比如A100/H100的芯片封鎖;比如馬斯克又買了一萬張GPU,等等。 算力 ......

    uj5u.com 2023-05-18 08:02:27 more
  • 記錄內網Docker啟動Stable-Diffusion遇到的幾個坑

    摘要:最近看到K8s啟動stable-diffusion的文章,想著在自己開發環境復現一下。沒想到在內網環境還遇到這么多問題,記錄一下。 本文分享自華為云社區《內網Docker啟動Stable-Diffusion(AI作畫)》,作者:tsjsdbd 。 最近看到K8s啟動stable-diffusi ......

    uj5u.com 2023-05-18 08:01:58 more
  • 楠姐技術漫話:圖計算的那些事 | 京東云技術團隊

    不知道大家在平時的作業中有沒有聽說過“圖計算”這個名詞,但大家一定在各作業匯報,技術分享中聽說過“智能化”,“人工智能”這樣的字眼,而我們今天要嘮的這個圖計算就是人工智能領域內近幾年炙手可熱的前沿寵兒 ......

    uj5u.com 2023-05-18 08:01:33 more
  • Matplotlib.pyplot.plot 繪圖

    Matplotlib.pyplot 創建圖形、在圖形中創建創建一個繪圖區域、在繪圖區域中你那個繪制一些線、在圖形中添加標簽之類 畫二維平面圖 x = np.arange(0, 10, 2) y1 = x y2 = x ** 2 plt.plot(x, y1, '*g--') #g 表示顏色 plt. ......

    uj5u.com 2023-05-18 07:56:13 more
  • 4大特性看Huawei Cloud EulerOS為開發者帶來平滑遷移體驗

    摘要:本期《解密Huawei Cloud EulerOS算力釋放技術》主題直播中,華為云DTSE技術布道師陸維迪通過剖析傳統OS上云面臨的性能,安全,彈性等問題,與開發者們分享Huawei Cloud EulerOS(簡稱“HCE OS”)在提升客戶云上使用體驗的核心優勢和關鍵技術。 本文分享自華為 ......

    uj5u.com 2023-05-18 07:49:46 more
  • 基于云原生的物聯大資料智能服務

    摘要:物聯大資料已成為當前物聯網系統建設的核心,基于物聯大資料的涌現智能和應用以及借此對物理世界的反饋和控制是未來物聯網系統的建設目標。 本文分享自華為云社區《基于云原生的物聯大資料智能服務》,作者:趙卓峰 、丁維龍 、于淇 / 北方工業大學資料工程研究院、大規模流資料集成與分析北京市重點實驗室。 ......

    uj5u.com 2023-05-18 07:49:10 more
  • windows環境下如何優雅搭建ftp服務?

    (windows環境下如何優雅搭建ftp服務) 0. 前言 由于學習或作業需要,我們經常需要和他人或其他電腦共享檔案,在這之前我們普遍的做法是用U盤來回拷貝檔案,但這樣就存在著一個風險,①U盤容易中毒;②容易把U盤上的病毒帶到別的電腦上。 不管哪個風險都是我們不愿看到的,為了盡可能規避以上風險,我們 ......

    uj5u.com 2023-05-18 07:48:19 more
  • 智能家居生態迎來超強輔助

    在家居領域,中商行業研究所預測,2023年中國智能家居市場可達7157.1億元。未來5年,中國智能家居產業將繼續快速發展。2027年,市場規模預計將超過1.1萬億億元人民幣。那么未來智能家居發展的突破口又在何方? 智能終端設備運行小程式的概念 在智能終端設備中運行小程式,是指在不需要下載和安裝應用程 ......

    uj5u.com 2023-05-18 07:48:06 more
  • 【Go】彩云小譯翻譯介面js逆向解密回傳值

    一、前言 對彩云小譯網頁版進行抓包分析,將js演算法代碼轉換成go代碼,使用go發送http請求撰寫一個翻譯小工具。 主要實作: 翻譯(解密翻譯結果) 單詞字典查詢 生成JWT(保持有效期) 二、抓包 打開網頁按F12調出開發人員工具,再切換到網路選項卡,在輸入框里輸入內容開始抓包,會抓到兩個介面,t ......

    uj5u.com 2023-05-18 07:46:54 more