搜尋
首頁科技週邊人工智慧GPT大語言模式Alpaca-lora在地化部署實踐

模型介紹

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 與預訓練語言模型的參數疊加。

GPT大語言模式Alpaca-lora在地化部署實踐

用隨機高斯分佈初始化 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的算力。

GPT大語言模式Alpaca-lora在地化部署實踐

如果只是測試覺得實體卡太貴了,也可以使用「平替版」-GPU雲端伺服器。相較於實體卡,用GPU雲端伺服器搭建不僅能保障彈性的高效能運算,還有這些好處──

  • 高性價比:按時計費,一小時才十幾元,可以隨時依照自己的需求調配;靈活資源管理、可擴展性、彈性伸縮等雲端運算優勢,根據業務或個人訓練的需要,快速調整運算資源,滿足模型的訓練與部署需求;
  • 開放性:雲端運算的開放性讓使用者更容易進行資源的共享和協作,為AI模型的研究和應用提供了更廣泛的合作機會;
  • 豐富的API和SDK:雲端運算廠商提供了豐富的API和SDK,讓使用者能夠輕鬆存取雲端平台的各種服務和功能,進行客製化開發和整合。

京東雲端的GPU雲端主機最近在做618活動,非常划算
https://www.php.cn/link/5d3145e1226fd39ee3b3039bfa90c95d

GPT大語言模式Alpaca-lora在地化部署實踐

拿到GPU伺服器 我們首先就是安裝顯示卡驅動和CUDA驅動(是顯示卡廠商NVIDIA推出的運算平台。CUDA是一種由NVIDIA推出的通用平行運算架構,該架構使GPU能夠解決複雜的計算問題)。

顯示卡驅動程式需要到NVIDIA的官方網站去尋找對應的顯示卡型號和適合的CUDA版本,下載位址:
https://www.nvidia.com/Download/index.aspx ,選擇對應的顯示卡和CUDA版本就可以下載驅動檔啦。

GPT大語言模式Alpaca-lora在地化部署實踐


我下載的檔案是

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

GPT大語言模式Alpaca-lora在地化部署實踐

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

1.安裝anaconda 下載方式:wget
https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64 .sh。安裝指令: sh Anaconda3-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.安裝s​​etuptools 接下來需要安裝打包和分發工具setuptools,下載地址:wget
https://files.pythonhosted.org/packages/26/e5/9897eee1100b166a61f91b68528cb692288886d 0.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 -fbbf6de8f7/pip-18.1.tar。

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

conda create -n alpaca pythnotallow=3.9conda activate alpaca
然後驗證一下,如下圖所示說明已經創建成功啦。

GPT大語言模式Alpaca-lora在地化部署實踐

模型訓練

上文已經把GPU伺服器的基礎環境安裝好了,下面我們就要開始刺激的模型訓練了(激動ing ),在訓練之前我們首先需要下載模型文件,下載地址:

https://github.com/tloen/alpaca-lora ,整個模型都是開源的,真好!先把模型檔下載到本地,執行git clone https://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是模型的輸出,根據指令和輸入,訓練模型應該輸出什麼訊息,讓模型能更好的適應中文。

GPT大語言模式Alpaca-lora在地化部署實踐

好的,到现在为止,万里长征已经走完2/3了,别着急训练模型,我们现在验证一下GPU环境和CUDA版本信息,还记得之前我们安装的nvitop嘛,现在就用上了,在本地直接执行nvitop,我们就可以看到GPU环境和CUDA版本信息了,如下图:

GPT大語言模式Alpaca-lora在地化部署實踐


在这里我们能够看到有几块显卡,驱动版本和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'

如果可以看到进度条在走,说明模型已经启动成功啦。

GPT大語言模式Alpaca-lora在地化部署實踐

在模型训练过程中,每迭代一定数量的数据就会打印相关的信息,会输出损失率,学习率和代信息,如上图所示,当loss波动较小时,模型就会收敛,最终训练完成。

我用的是2块GPU显卡进行训练,总共训练了1904分钟,也就是31.73个小时,模型就收敛了,模型训练是个漫长的过程,所以在训练的时候我们可以适当的放松一下,做点其他的事情:)。

GPT大語言模式Alpaca-lora在地化部署實踐

模型推理

模型训练好后,我们就可以测试一下模型的训练效果了,由于我们是多个GPU显卡,所以想把模型参数加载到多个GPU上,这样会使模型推理的更快,需要修改

generate.py 文件,添加下面这样即可。

GPT大語言模式Alpaca-lora在地化部署實踐

然后我们把服务启起来,看看效果,根目录执行:

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信息,如下图所示:

GPT大語言模式Alpaca-lora在地化部署實踐

我们可以用浏览器访问一下看看,如果能看到页面,就说明服务已经启动成功啦。

GPT大語言模式Alpaca-lora在地化部署實踐

激动ing,费了九牛二虎之力,终于成功啦!!

因为我们目标是让模型说中文,所以我们测试一下对中文的理解,看看效果怎么样?

GPT大語言模式Alpaca-lora在地化部署實踐

GPT大語言模式Alpaca-lora在地化部署實踐


简单的问题,还是能给出答案的,但是针对稍微复杂一点的问题,虽然能够理解中文,但是并没有用中文进行回答,训练后的模型还是不太稳定啊。

在推理的时候我们也可以监控一下GPU的变化,可以看到GPU负载是比较高的,说明GPU在进行大量的计算来完成推理。

GPT大語言模式Alpaca-lora在地化部署實踐

总结

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://www.php.cn/link/f044bd02e4fe1aa3315ace7645f8597a

#作者:京東零售駱永健

內容來源:京東雲端開發者社群

以上是GPT大語言模式Alpaca-lora在地化部署實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
如何使用Huggingface Smollm建立個人AI助手如何使用Huggingface Smollm建立個人AI助手Apr 18, 2025 am 11:52 AM

利用“設備” AI的力量:建立個人聊天機器人CLI 在最近的過去,個人AI助手的概念似乎是科幻小說。 想像一下科技愛好者亞歷克斯(Alex)夢見一個聰明的本地AI同伴 - 不依賴

通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析Apr 18, 2025 am 11:49 AM

他們的首屆AI4MH發射於2025年4月15日舉行,著名的精神科醫生兼神經科學家湯姆·因斯爾(Tom Insel)博士曾擔任開幕式演講者。 Insel博士因其在心理健康研究和技術方面的傑出工作而聞名

2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭Apr 18, 2025 am 11:44 AM

恩格伯特說:“我們要確保WNBA仍然是每個人,球員,粉絲和公司合作夥伴,感到安全,重視和授權的空間。” anno

Python內置數據結構的綜合指南 - 分析VidhyaPython內置數據結構的綜合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介紹 Python擅長使用編程語言,尤其是在數據科學和生成AI中。 在處理大型數據集時,有效的數據操作(存儲,管理和訪問)至關重要。 我們以前涵蓋了數字和ST

與替代方案相比,Openai新型號的第一印象與替代方案相比,Openai新型號的第一印象Apr 18, 2025 am 11:41 AM

潛水之前,一個重要的警告:AI性能是非確定性的,並且特定於高度用法。簡而言之,您的里程可能會有所不同。不要將此文章(或任何其他)文章作為最後一句話 - 目的是在您自己的情況下測試這些模型

AI投資組合|如何為AI職業建立投資組合?AI投資組合|如何為AI職業建立投資組合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投資組合:初學者和專業人士指南 創建引人注目的投資組合對於確保在人工智能(AI)和機器學習(ML)中的角色至關重要。 本指南為建立投資組合提供了建議

代理AI對安全操作可能意味著什麼代理AI對安全操作可能意味著什麼Apr 18, 2025 am 11:36 AM

結果?倦怠,效率低下以及檢測和作用之間的差距擴大。這一切都不應該令任何從事網絡安全工作的人感到震驚。 不過,代理AI的承諾已成為一個潛在的轉折點。這個新課

Google與Openai:AI為學生打架Google與Openai:AI為學生打架Apr 18, 2025 am 11:31 AM

直接影響與長期夥伴關係? 兩週前,Openai提出了強大的短期優惠,在2025年5月底之前授予美國和加拿大大學生免費訪問Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器