主頁 >  其他 > GPT大語言模型Vicuna本地化部署實踐(效果秒殺Alpaca)

GPT大語言模型Vicuna本地化部署實踐(效果秒殺Alpaca)

2023-05-19 08:57:36 其他

背景

上一篇文章《GPT大語言模型Alpaca-lora本地化部署實踐》介紹了斯坦福大學的Alpaca-lora模型的本地化部署,并驗證了實際的推理效果,

總體感覺其實并不是特別理想,原始Alpaca-lora模型對中文支持并不好,用52k的中文指令集對模型進行fine-tuning之后,效果依然達不到網上說的媲美GPT-3.5的推理效果,驗證了那句話:“事不目見耳聞,而臆斷其有無,可乎?”

在具有3塊Tesla P40顯卡的服務器上,利用3塊GPU顯卡加載模型引數和計算,進行一次簡單的推理(非數學運算和邏輯運算)也需要大概30s-1min的時間,效率簡直慢的驚人,在京東云GPU云主機部署上,雖然推理效率提高了很多,用中文資料集對模型進行了fine-tuning,然而對中文的支持也并不是很好,經常會出現亂碼、重復問題、詞不達意等情況,

最近大模型也同雨后春筍般的層出不窮,各個大廠和科研機構都推出了自己的大模型,其中基于LLaMA(開源且好用)的最多,所以決定再看看其他模型,有沒有推理效果好,中文支持好,同時推理效率高的模型,

經過篩選,Vicuna-13B的推理效果據說達到了ChatGPT的90%以上的能力,優于LLaMA-13B和Alpaca-13B的效果(具體如下圖所示),評估方法是對各個模型Alpaca、LLaMA、ChatGPT和Bard輸入同樣的問題,然后通過GPT-4當裁判對推理結果進行打分,以ChatGPT的回答作為100分,回答越接近得分越高(雖然評估方法并不科學,但是目前看也沒有更好的辦法對模型推理結果進行更科學的評估),

同時Vicuna的訓練成本也很低,據說只需要$300左右,所以嘗試本地化部署一下Vicuna-7B,看看效果如何,說干就干,

環境準備

由于之前本地化部署過Alpaca-lora模型了,本以為可以直接下載開源包,簡單部署一下就可以看到效果了,結果發現我還是“too young,too simple”了,環境部署和解決包沖突的程序竟然比第一次部署Alpaca-lora模型還要費勁,

簡單的復述一下部署流程,詳細的可以參考上一篇內容《GPT大語言模型Alpaca-lora本地化部署實踐》,

  1. 本地化部署或GPU云主機部署:GPU服務器具有4塊獨立的GPU,型號是P40,單個P40算力相當于60個同等主頻CPU的算力;GPU云主機要選購P40https://www.jdcloud.com/cn/calculator/calHost
  2. 安裝顯卡驅動和CUDA驅動

模型準備

由于Vicuna 是基于LLaMA模型的,為了符合LLaMA 模型license授權,僅發布了 delta 權重,所以我們需要將原始llama-7b模型與delta模型權重合并之后,才能得到vicuna權重,

首先是下載llama-7b模型,由于檔案比較大,所以用lfs直接從檔案服務器上下載,大小有26G,執行:

git lfsclonehttps://huggingface.co/decapoda-research/llama-7b-hf

然后是下載delta模型,執行:

git lfsclonehttps://huggingface.co/lmsys/vicuna-7b-delta-v1.1

下載完成后進行權重合并,執行:

python -m fastchat.model.apply_delta \ --base ./model/llama-7b-hf \ --delta ./model/vicuna-7b-delta-v1.1 \ --target ./model/vicuna-7b-all-v1.1

這個合并程序會很快,最終結果如下,合并之后引數大小變成了13G,

合并之后的目錄下會有組態檔和資料檔案,

安裝依賴包

Vicuna主要用到3個依賴包,fschat、tensorboardX和flash-attn,前2個安裝比較順利,直接pip install fschat、tensorboardX即可安裝完成,flash-attn安裝遇到了問題,一直報以下錯誤:

經過一番檢索,發現是gcc版本太低導致的,需要升級gcc,首先查看了一下本地的gcc版本,gcc -v和g++ -v發現是4.8.5的,確實是太低了,那么既然要升級,就升級到最新版,直接下載13.1版本,可以在
http://ftp.gnu.org/gnu/gcc/選擇想要安裝的版本,這里選擇的是gcc-13.1.0.tar.gz,

執行:

tar -xzf gcc-13.1.0.tar.gz

cd gcc-13.1.0

./contrib/download_prerequisites

mkdir build

cd build/

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

然后執行make編譯,注意這里make時間會非常長,可能會持續幾個小時,可以使用 make -j 8讓make最多運行8個編譯命令同時運行,加快編譯速度,

順利完成后,我們再執行make install進行安裝,

然后用gcc -v和g++ -v驗證版本是否已經更新,如果提示如下,說明安裝完成,

然后我們需要卸載原有的gcc和g++,切換到root權限,執行yum -y remove gcc g++,

配置新版本全域可用,執行ln -s /usr/local/bin/gcc /usr/bin/gcc,

更新鏈接庫,執行:

查看原鏈接庫:strings /usr/lib64/libstdc++.so.6 | grep CXXABI

洗掉原鏈接庫:rm -f /usr/lib64/libstdc++.so.6

建立軟連接:ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6

查看新鏈接庫:strings /usr/lib64/libstdc++.so.6 | grep CXXABI

如果最新版本有變化,那么恭喜你,說明已經升級成功啦,

安裝cuda

由于之前是用rpm包安裝的cuda,有些檔案是缺失的,運行時會報各種奇奇怪怪的錯誤,這里就不贅述了(只有經歷過才會懂),直接介紹用二進制檔案安裝cuda程序,

下載地址:
https://developer.nvidia.com/cuda-11-7-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=CentOS&target_version=7&target_type=runfile_local

注意這里要選擇runfile(local),

然后執行sh
cuda_11.7.0_515.43.04_linux.run,

安裝完成后,需要配置環境變數,在本地.bash_profile中配置如下兩項:

下面驗證一下安裝是否成功,執行nvcc -V,如下圖所示,那么恭喜你,安裝成功啦,

安裝cudnn和nccl

安裝cudnn和nccl需要先在nvidia注冊賬號,注冊之后可以在以下兩個地址下載相應的rpm包,然后rpm -ivh XXXXX.rpm包即可,

cudnn下載地址: https://developer.nvidia.com/cudnn

nccl下載地址: https://developer.nvidia.com/nccl/nccl-legacy-downloads

安裝完成后,如下圖所示說明已經安裝成功rpm包,

模型推理

又到激動人心的時刻啦,讓我們來測驗一下看看模型的推理效果如何?首先我們先擦拭一下還沒有干透辛勤的汗水,一切努力,都是為了最終能跟機器人程式對上話,理想情況是讓我們感覺它并不是一個機器人,

在終端執行如下命令,然后輸入問題即可,

python -m fastchat.serve.cli --model-path ./model/vicuna-7b-all-v1.1 --style rich

當然,還可以根據不同的需求場景,設定不用的運行引數,如下:

壓縮模型 預測效果會稍差一點,適合GPU顯存不夠的場景

python -m fastchat.serve.cli --model-path ./model/vicuna-7b-all-v1.1 --load-8bit --style rich

使用cpu進行推理,速度會很慢,慎用

python -m fastchat.serve.cli --model-path ./model/vicuna-7b-all-v1.1 --device cpu --style rich

使用多個GPU進行預測

python -m fastchat.serve.cli --model-path ./model/vicuna-7b-all-v1.1 --num-gpus 3 --style rich

1)推薦菜譜測驗:

2)多語言測驗:

3)代碼能力測驗:

4)數學計算測驗

5)普通對話推薦

推理程序中GPU服務器資源使用情況,目前使用單GPU進行推理,都可以做到秒級回應,GPU記憶體空加載13G,推理時不到15G,推理時單GPU算力基本可以達到90%以上,甚至100%,如下圖所示,

總結一下:

1)對精確的推理效果并不是很理想,比如推薦菜譜,感覺是在一本正經的胡說八道,按照推理的結果很難做出可口的飯菜?;

2)對多種自然語言的支持,這個真的是出乎預料,竟然日語和西班牙語完全都能夠自如應對,可以說是相當的驚艷了;

3)編碼能力還是可以的,能夠大概給出基本需求,當然如果想直接編譯執行可能還需要人工微調,但是作為輔助工具應該是沒問題的;

4)資料計算能力目前看還是比較弱的,簡單的乘法目前還不能夠給出正確的答案;

5)普通的對話是完全沒有問題的,對中文的理解也完全能否符合預期,解解悶排解一下孤獨是能夠cover住的,

由于模型目前還沒有做fine-tuning,從目前的推理效果來看,已經是非常不錯了,而且推理的效率也是非常不錯的,即使使用單GPU進行推理也可以做到秒級回應,而且推理程序中顯存占用也才只有60%多,跟空載時候的50%多沒差多少,總之在沒有經過fine-tuning的情況下,模型的推理表現和推理效率還是可以打7-8分(滿分10分)的,如果假以時日,有足夠的語料庫和進行fine-tuning的話,效果還是可期的,

模型fine-tuning

要想使模型適合某一特定領域內的場景,獲取特定領域的知識是必不可少的,基于原始模型就要做fine-tuning操作,那么我們嘗試做一下fine-tuning,看看效果如何吧,

fine-tuning需要在終端執行一下命令:

torchrun --nproc_per_node=3 --master_port=40001 ./FastChat/fastchat/train/train_mem.py \
    --model_name_or_path ./model/llama-7b-hf  \
    --data_path dummy.json \
    --bf16 False \
    --output_dir ./model/vicuna-dummy \
    --num_train_epochs 2 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 8 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 300 \
    --save_total_limit 10 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --report_to "tensorboard" \
    --fsdp "full_shard auto_wrap" \
    --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
    --tf32 False \
    --model_max_length 2048 \
    --gradient_checkpointing True \
    --lazy_preprocess True


最終./model/vicuna-dummy目錄輸出就是我們fine-tuning之后的模型權重檔案目錄,

很遺憾,本文fine-tuning沒有成功,報錯如下:

原因也很簡單,由于我們使用的GPU型號是Tesla P40,此款顯卡使用的SM_62架構,目前模型fine-tuning至少需要SM_75及以上架構,看社區有在4090、A100或者A80顯卡上fine-tuning成功的,所以fine-tuning只能后續再更高架構的顯卡上進行了,

后續作業

終上,Vicuna模型在整體表現和推理效率上可以說是秒殺Alpaca模型的,我們本文測驗用的是Vicuna-7b,如果是Vicuna-13b效果會更好,而且對多種自然語言(包含中文)的支持也要遠遠好于Alpaca模型,確實像社區所說的,目前Vicuna模型可以說是開源大模型的天花板了,如果想基于開源大模型進行二次開發,是個不二的選擇,

基于大模型的本地化部署作業目前就告一段落了,后續做的作業可能有以下幾點:

1)如果有更好的顯卡,可以對vicuna進行fine-tuinig,驗證一下fine-tuning之后模型能不能學到特定領域的知識;后續準備使用公司內部提供的試用資源【京東云GPU云主機p.n3a100系列】,這個產品提供Nvidia? A100 GPU(80G顯存),搭配使用Intel? Xeon? Platinum 8338C 處理器及DDR4記憶體,支持NVLink,單精度浮點運算峰值能達到156TFlops,可以說是最強算力了,

2)找到合適的與目前應用結合的場景,將大語言模型應用落地;

3)基于vicuna開源專案進行二次開發,封裝成可用的服務;

4)基于大語言模型進行更多的探索和學習,

來源:京東云開發者社區

作者:Beyond_luo(未經授權請勿轉載)

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

標籤:其他

上一篇:ChatGPT新玩法來了,微信聊天機器人

下一篇:返回列表

標籤雲
其他(159299) Python(38156) JavaScript(25435) Java(18070) C(15228) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7197) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4573) 数据框(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大語言模型Vicuna本地化部署實踐(效果秒殺Alpaca)

    Vicuna-13B的推理效果據說達到了ChatGPT的90%以上的能力,優于LLaMA-13B和Alpaca-13B的效果。同時Vicuna的訓練成本也很低,所以嘗試本地化部署一下Vicuna-7B,看看效果如何,說干就干。 ......

    uj5u.com 2023-05-19 08:57:36 more
  • ChatGPT新玩法來了,微信聊天機器人

    前言 上一篇文章中說了ChatGPT是什么,然后怎么注冊使用。 傳送門:花了1塊錢體驗一把最近很火的ChatGPT 但是實際操作下來還是有不少小伙伴跟我一樣遇到各種坑。 沒有魔法工具 OpenAI的服務在你的國家無法使用(最多的問題) 注冊不上國外手機號 注冊上手機號了,但是收不到驗證碼(等了20分 ......

    uj5u.com 2023-05-19 08:51:54 more
  • 華為Atlas 200I DK A2開箱!

    摘要:Atlas 200I DK A2是Atlas 200DK之后的一款產品,從2022年一直醞釀至今,終于在2023年5月6日-7日昇騰AI開發者峰會2023正式發布。 本文分享自華為云社區《首發!華為Atlas 200I DK A2開箱!》,作者:張輝。 Atlas 200I DK A2是Atl ......

    uj5u.com 2023-05-19 08:49:46 more
  • GPT大語言模型Vicuna本地化部署實踐(效果秒殺Alpaca)

    Vicuna-13B的推理效果據說達到了ChatGPT的90%以上的能力,優于LLaMA-13B和Alpaca-13B的效果。同時Vicuna的訓練成本也很低,所以嘗試本地化部署一下Vicuna-7B,看看效果如何,說干就干。 ......

    uj5u.com 2023-05-19 08:49:15 more
  • SRE方法論之擁抱風險

    一、系統不可能100%可靠 系統不可能100%可靠,人都不可能100%健康,更何況我們人類創造的系統?所以,任何軟體系統都不應該一味地追求 100%可靠。事實證明,可靠性超過一定值后,再提高可靠性對于一項服務來說,結果可能會更差而不是更好!極端的可靠性會帶來成本的大幅提升:比如過分追求穩定性限制了新 ......

    uj5u.com 2023-05-19 08:49:02 more
  • 更專業省心的來了,你沒必要研究UE4和Unity官方推流了!

    在當今互聯網時代,所有的內容制作者都希望盡可能觸達到更多的目標受眾,那就需要全平臺發布內容并且可以輕松跨平臺分享,包括手機、平板電腦、個人電腦以及互動式螢屏,用戶能暢快的獲得高質量的體驗。需求催生了一種新的“云渲染”方案,將龐大負載的“渲染”放到云端強大算力的服務器去執行,前端僅僅是展示和互動。
    本... ......

    uj5u.com 2023-05-19 08:43:46 more
  • 應用現代化中的彈性伸縮

    作者:馬偉,青云科技容器顧問,云原生愛好者,目前專注于云原生技術,云原生領域技術堆疊涉及 Kubernetes、KubeSphere、KubeKey 等。 2019 年,我在給很多企業部署虛擬化,介紹虛擬網路和虛擬存盤。 2023 年,這些企業都已經上了云原生了。對于高流量的 Web 應用程式,實時數 ......

    uj5u.com 2023-05-19 08:32:20 more
  • 城市開發者平臺:程式員成長和創新的“家園”

    摘要:華為云與CSDN攜手共同打造城市開發者綜合服務平臺,不僅能夠為廣大程式員提供更好的技術支持和服務,也在當地政府的人才政策幫扶下,為開發者的技術創新和人才培養提供更好的作業學習平臺,在本地扎根發展。 本文分享自華為云社區《華為云與CSDN攜手打造城市開發者綜合服務平臺》,作者:于邦旭 CSDN高 ......

    uj5u.com 2023-05-19 08:30:12 more
  • JMeter性能測驗工具快速入門教程

    簡介 什么是JMeter? Apache JMeter TM是純Java 開源軟體,最初由Apache Software Foundation的Stefano Mazzocchi開發,旨在負載測驗功能行為和測量性能。 您可以使用JMeter分析和測量Web應用程式或各種服務的性能。 性能測驗意味著針 ......

    uj5u.com 2023-05-19 08:28:59 more
  • 如何在金融企業推進故障演練?中國人壽分階段實踐總結

    一分鐘精華速覽 越來越多企業正在通過故障注入和演練的方式提升系統可靠性,這其中金融行業的應用較為特殊。一方面其可靠性要求比非涉賬類系統更高;另一方面金融行業有更加嚴格的監管要求,如客戶、賬目等資訊都有嚴格約束。加之金融系統較其他行業系統更加龐大、繁雜,所以金融行業落地混沌工程和故障演練等作業需尤為謹 ......

    uj5u.com 2023-05-19 08:28:36 more