成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

模型介紹

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.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。 安裝命令: 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/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 pythnotallow=3.9
conda activate alpaca

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

模型訓練

上文已經把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是模型的輸出,根據指令和輸入,訓練模型應該輸出什么信息,讓模型能夠更好的適應中文。

好的,到現在為止,萬里長征已經走完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.toutiao.com/article/7226282048003375675/

作者:京東零售 駱永健

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

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2024-01-10 09:00:00

OpenAILocalGPT開源大模型

2025-02-18 00:04:00

DeepSeek模型ChatGPT

2023-06-20 09:00:00

2024-06-06 08:06:19

鴻蒙大語言模型LLM模型

2024-08-20 07:55:03

2017-11-30 14:44:41

語言代碼文件

2010-03-09 09:33:04

Windows Emb

2021-01-20 07:37:39

Exceptionle服務端部署

2022-04-02 14:41:56

云部署云計算安全

2024-04-19 09:37:49

Ollama大語言模型開源

2012-06-08 10:48:31

商務社交

2011-05-25 10:13:09

WordPressJavaScript

2011-05-30 17:11:08

測試策略

2025-02-13 08:30:11

2013-08-05 10:42:40

SAPRDS快速部署解決方案

2011-05-26 17:28:48

軟件本地化測試

2012-05-14 17:10:50

iOS

2012-05-13 13:15:54

IOS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天玩天天干天天操 | 日本h片在线观看 | 国产在线精品一区二区三区 | 在线日韩精品视频 | 亚洲 中文 欧美 日韩 在线观看 | 午夜精品一区二区三区在线观看 | 国产成人精品一区二区 | 免费观看一级毛片 | 国产欧美精品在线 | 99精品欧美一区二区三区综合在线 | 久久久网| 欧美高清视频一区 | 国产成人精品一区二区 | 国产精品一二区 | 在线观看av网站永久 | 日韩在线视频一区 | 国产精品av久久久久久久久久 | 午夜在线免费观看 | 成人一级片在线观看 | 国产免费一区二区三区 | 精品视频一区二区 | 精品久久久久久久 | 国产97色| 91视视频在线观看入口直接观看 | 久久五月婷 | 欧美中文一区 | 国产一区高清 | 日本精品裸体写真集在线观看 | 国产欧美一区二区精品久导航 | 人人九九精 | 日韩三级一区 | 农村妇女毛片精品久久久 | 亚洲国产精品一区 | 亚洲三级免费看 | 在线免费国产视频 | 91亚洲一区 | 国产精品毛片一区二区在线看 | 欧美精品久久久久 | 久久久久久久久国产成人免费 | 国产极品粉嫩美女呻吟在线看人 | 综合精品 |