国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

llama.cpp部署通義千問Qwen-14B

這篇具有很好參考價值的文章主要介紹了llama.cpp部署通義千問Qwen-14B。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

llama.cpp是當前最火熱的大模型開源推理框架之一,支持了非常多的LLM的量化推理,生態(tài)比較完善,是個人學習和使用的首選。最近阿里開源了通義千問大語言模型,在眾多榜單上刷榜了,是當前最炙手可熱的開源中文大語言模型。今天在github上看到前幾天llama.cpp已經(jīng)支持Qwen的推理了,但是由于是近期才開源的,網(wǎng)上還沒有太多使用llama.cpp來推理通義千問的實例。本著學習的目的,今天就來實操一下,作為記錄,也給需要的同學一些參考。由于最大的Qwen-72B太大了,下載需要較久時間,這里我們使用的是次一級的Qwen-14B的版本。

前提條件

已正確安裝llama.cpp
能夠訪問HuggingFace

原始模型下載

通義千問模型在https://huggingface.co/Qwen/Qwen-14B-Chat/tree/main下載。
模型和相關代碼配置文件
需要下載的文件包括:

模型文件 model-00001-of-00015 , … , model-00001-of-00015等
代碼文件configuration_qwen.py,modeling_qwen.py,tokenization_qwen.py
配置文件config.json,tokenizer_config.json,model.safetensors.index.json

將上述文件下載到llama.cpp項目的models目錄下,這里我放到了models/Qwen/14B/目錄下。
llama.cpp convert-hf-to-gguf.py,DeepLearning,llama,阿里云,transformer

需要魔法上網(wǎng),不然國內(nèi)無法順利下載。
代碼和配置都需要下載完全,不然llama.cpp轉(zhuǎn)換的時候會報錯。

模型格式轉(zhuǎn)換

下載下來的模型是HuggingFace的格式,需要將HuggingFace的safetensors格式的模型文件轉(zhuǎn)換成gguf格式才能使用llama.cpp推理。在llama.cpp項目根木目錄執(zhí)行轉(zhuǎn)換腳本:

python convert-hf-to-gguf.py --model /workspace/Codes/llama.cpp/models/Qwen/14B

得到輸出為:

Loading model: 14B
gguf: This GGUF file is for Little Endian only
Set model parameters
Set model tokenizer
gguf: Adding 151387 merge(s).
gguf: Setting special token type bos to 151643
...
...
blk.39.ffn_gate.weight, n_dims = 2, torch.bfloat16 --> float16
output_norm.weight, n_dims = 1, torch.bfloat16 --> float32
output.weight, n_dims = 2, torch.bfloat16 --> float16
Model successfully exported to '/workspace/Codes/llama.cpp/models/Qwen/14B/ggml-model-f16.gguf'

提示將模型格式轉(zhuǎn)換成fp16的gguf格式即為轉(zhuǎn)換成功。轉(zhuǎn)換成功后,models/Qwen/14B/就會得到ggml-model-f16.gguf模型文件。

若在轉(zhuǎn)換過程中報錯提示缺少transformers和tiktoken等庫,按提示pip install即可。

模型量化

格式轉(zhuǎn)換后得到的是模型參數(shù)是fp16的,推理所需的資源還是比較多,速度相對較慢。想要進一步降低推理所需計算資源,需要對fp16的gguf模型進行量化。llama.cpp提供了多種量化方式,包括INT4,INT8量化及其各種變體。這里以INT4為例來進行量化,執(zhí)行如下命令:

./quantize models/Qwen/14B/ggml-model-f16.gguf q4_0 # q4_0代表進行INT4量化

得到輸出為:

ggml_init_cublas: GGML_CUDA_FORCE_MMQ:   no
ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes
ggml_init_cublas: found 1 CUDA devices:
  Device 0: NVIDIA GeForce RTX 4070, compute capability 8.9
main: build = 1601 (5a7d312)
...
...
[ 321/ 323]               blk.39.ffn_gate.weight - [ 5120, 13696,     1,     1], type =    f16, quantizing to q4_0 .. size =   133.75 MiB ->    37.62 MiB | hist: 0.036 0.016 0.025 0.039 0.057 0.077 0.096 0.111 0.117 0.111 0.097 0.077 0.057 0.039 0.025 0.021 
[ 322/ 323]                   output_norm.weight - [ 5120,     1,     1,     1], type =    f32, size =    0.020 MB
[ 323/ 323]                        output.weight - [ 5120, 152064,     1,     1], type =    f16, quantizing to q6_K .. size =  1485.00 MiB ->   609.08 MiB | hist: 
llama_model_quantize_internal: model size  = 27023.93 MB
llama_model_quantize_internal: quant size  =  7794.73 MB
llama_model_quantize_internal: hist: 0.036 0.016 0.025 0.039 0.056 0.077 0.096 0.112 0.118 0.112 0.096 0.077 0.056 0.039 0.025 0.021 

main: quantize time = 41580.08 ms
main:    total time = 41580.08 ms

執(zhí)行完成之后,會在models/Qwen/14B/目錄下生成ggml-model-Q4_0.gguf文件
ggml-model-Q4_0.gguf

部署推理量化模型

得到我們想要的INT4量化的模型后就可以部署推理了。llama.cpp項目編譯生成的main可執(zhí)行文件是推理的入口,可以直接在命令行運行main文件執(zhí)行推理。同時,llama.cpp也提供了多個執(zhí)行腳本,能夠更方便進行推理。這里以examples/chat.sh為例,將chat.sh腳本內(nèi)的./main的參數(shù)修改為如下,指定使用我們生成的量化模型的路徑:

./main -m ./models/Qwen/14B/ggml-model-Q4_0.gguf -c 512 -b 1024 -n 256 --keep 48 \
    --repeat_penalty 1.0 --color -i \
    -r "User:" -f prompts/chat-with-bob.txt

然后在項目根目錄命令行執(zhí)行:

sh examples/chat.sh

回車執(zhí)行后即可進入到聊天界面,現(xiàn)在可以和千問14B聊天了。
llama.cpp convert-hf-to-gguf.py,DeepLearning,llama,阿里云,transformer

可以看出,千問的回答還是挺現(xiàn)實的哈哈哈。這里還有更多的聊天玩法,還可以部署成server形式,通過web界面來聊天,在這里不展開。
簡單精度評測
光會聊天還不行,害得客觀驗證一下模型回答的質(zhì)量。llama.cpp提供了perplexity可執(zhí)行文件來驗證模型的PPL精度,這里以wikitext語料來簡單測試一下千問14B的性能(通義千問可能更偏向于中文,wikitext-2多數(shù)都是英文語料)。需要先下載解壓wikitext-2到本地,這里解壓到了llama.cpp/wikitext-2-raw/目錄下,運行一下命令:

./perplexity -m models/Qwen/14B/ggml-model-Q4_0.gguf -f wikitext-2-raw/wiki.test.raw

在本地的4070上跑完測試大概需要26min左右,PPL為7.8242 +/- 0.05521,作為對比llama2-7B INT4量化版本的PPL大概為PPL = 7.8803 +/- 0.05373左右,千問14B并沒有比llama2-7B提升太多,猜測可能是千問的訓練數(shù)據(jù)英文較少的緣故還是我測試不當?希望知道的大佬指正。當然PPL只能作為一個參考,并不能全面地衡量模型的真正性能。
Qwen-14B-q4_0精度PPL
最后再增加一個INT8量化的對比結果:

Model / PPL INT4 INT8
Qwen-14B 7.8242 +/- 0.05521 7.6019 +/- 0.05281
llama 7.8803 +/- 0.05373 7.6350 +/- 0.05166

到此,llama.cpp部署通義千問模型算是初步完成了,希望能幫助到需要的同學。

接下來還可以嘗試利用llama.cpp的server模式來推理模型以及更詳細的性能測試,未完待續(xù)…文章來源地址http://www.zghlxwxcb.cn/news/detail-768415.html

到了這里,關于llama.cpp部署通義千問Qwen-14B的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包