模型介紹
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雲端伺服器。相較於實體卡,用GPU雲端伺服器搭建不僅能保障彈性的高效能運算,還有這些好處──
- 高性價比:按時計費,一小時才十幾元,可以隨時依照自己的需求調配;靈活資源管理、可擴展性、彈性伸縮等雲端運算優勢,根據業務或個人訓練的需要,快速調整運算資源,滿足模型的訓練與部署需求;
- 開放性:雲端運算的開放性讓使用者更容易進行資源的共享和協作,為AI模型的研究和應用提供了更廣泛的合作機會;
- 豐富的API和SDK:雲端運算廠商提供了豐富的API和SDK,讓使用者能夠輕鬆存取雲端平台的各種服務和功能,進行客製化開發和整合。
京東雲端的GPU雲端主機最近在做618活動,非常划算
https://www.php.cn/link/5d3145e1226fd39ee3b3039bfa90c95d
拿到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。安裝指令: 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.安裝setuptools 接下來需要安裝打包和分發工具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。
conda create -n alpaca pythnotallow=3.9conda activate alpaca然後驗證一下,如下圖所示說明已經創建成功啦。
https://github.com/tloen/alpaca-lora ,整個模型都是開源的,真好!先把模型檔下載到本地,執行git clone https://github.com/tloen/alpaca-lora.git .。
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根目錄下(後面方便使用)。
好的,到现在为止,万里长征已经走完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://www.php.cn/link/f044bd02e4fe1aa3315ace7645f8597a
#作者:京東零售駱永健
內容來源:京東雲端開發者社群
以上是GPT大語言模式Alpaca-lora在地化部署實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

網絡攻擊正在發展。 通用網絡釣魚電子郵件的日子已經一去不復返了。 網絡犯罪的未來是超個性化的,利用了容易獲得的在線數據和AI來製作高度針對性的攻擊。 想像一個知道您的工作的騙子

新當選的教皇獅子座(Leo Xiv)在對紅衣主教學院的就職演講中,討論了他的同名人物教皇里奧XIII的影響,他的教皇(1878-1903)與汽車和汽車和汽車公司的黎明相吻合

本教程演示瞭如何使用模型上下文協議(MCP)和FastAPI將大型語言模型(LLM)與外部工具集成在一起。 我們將使用FastAPI構建一個簡單的Web應用程序,並將其轉換為MCP服務器,使您的L

探索DIA-1.6B:由兩個本科生開發的開創性的文本對語音模型,零資金! 這個16億個參數模型產生了非常現實的語音,包括諸如笑聲和打噴嚏之類的非語言提示。本文指南

我完全同意。 我的成功與導師的指導密不可分。 他們的見解,尤其是關於業務管理,構成了我的信念和實踐的基石。 這種經驗強調了我對導師的承諾

AI 增强型矿业设备 矿业作业环境恶劣且危险重重。人工智能系统通过将人类从最危险的环境中移除并增强人类能力,帮助提高整体效率和安全性。人工智能越来越多地用于为矿业作业中使用的自动驾驶卡车、钻机和装载机提供动力。 这些 AI 驱动的车辆能够在危险环境中精确作业,从而提高安全性和生产力。一些公司已经开发出用于大型矿业作业的自动驾驶采矿车辆。 在挑战性环境中运行的设备需要持续维护。然而,维护会使关键设备离线并消耗资源。更精确的维护意味着昂贵且必要的设备的正常运行时间增加以及显著的成本节约。 AI 驱动

Salesforce首席執行官Marc Benioff預測了由AI代理商驅動的巨大的工作場所革命,這是Salesforce及其客戶群中已經進行的轉型。 他設想從傳統市場轉變為一個較大的市場,重點是

人力資源中AI的崛起:與機器人同事一起導航勞動力 將人工智能集成到人力資源(HR)不再是未來派的概念。它正在迅速成為新現實。 這種轉變影響了人力資源專業人員和員工,DEM


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

WebStorm Mac版
好用的JavaScript開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

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