1.簡介:
組織機(jī)構(gòu):Meta(Facebook)
代碼倉:GitHub - facebookresearch/llama: Inference code for LLaMA models
模型:llama-2-7b、Chinese-LLaMA-Plus-7B(chinese_llama_plus_lora_7b)?
下載:使用download.sh下載
硬件環(huán)境:暗影精靈7Plus
Windows版本:Windows 11家庭中文版 Insider Preview 22H2
內(nèi)存 32G
GPU顯卡:Nvidia GTX 3080 Laptop (16G)
在 https://blog.csdn.net/snmper/article/details/133744694大模型部署手記(8)LLaMa2+Windows+llama.cpp+英文文本補(bǔ)齊https://blog.csdn.net/snmper/article/details/133744694?一文中,張小白完成了基于原始 llama-2-7b 模型的文本補(bǔ)齊。這個(gè)模型只有英文問答,但是勤勞的中國人肯定不會(huì)局限于此的。
打開 GitHub - ymcui/Chinese-LLaMA-Alpaca: 中文LLaMA&Alpaca大語言模型+本地CPU/GPU訓(xùn)練部署 (Chinese LLaMA & Alpaca LLMs)中文LLaMA&Alpaca大語言模型+本地CPU/GPU訓(xùn)練部署 (Chinese LLaMA & Alpaca LLMs) - GitHub - ymcui/Chinese-LLaMA-Alpaca: 中文LLaMA&Alpaca大語言模型+本地CPU/GPU訓(xùn)練部署 (Chinese LLaMA & Alpaca LLMs)https://github.com/ymcui/Chinese-LLaMA-Alpaca
可以看到誘人的中文對(duì)話:
在這里可以看到 Chinese-LLaMA-Alpaca 的家族圖譜關(guān)系:
其中,LLaMA模型是基礎(chǔ)模型,主打“文本補(bǔ)齊”(給定上文內(nèi)容,讓模型生成下文),Alpaca是對(duì)話模型,主打“文本對(duì)話”(指令理解:問答、寫作、建議;多輪上下文理解:聊天)
而模型類型的命名跟手機(jī)后綴差不多,分為基礎(chǔ)版、Plus版和Pro版。例如對(duì)于Alpaca模型,plus偏向于短回復(fù),pro偏向于對(duì)過短的回復(fù)進(jìn)行改進(jìn)。從名字可以看出,可以根據(jù)自己的經(jīng)濟(jì)能力(顯卡內(nèi)存和算力)選擇適當(dāng)?shù)陌姹尽?/p>
而一個(gè)中文模型的生成過程是這樣的:
1、先去Meta官網(wǎng)申請(qǐng)?jiān)娴腖LaMa模型(需要到官網(wǎng)申請(qǐng)授權(quán),并通過郵箱獲取URL,然后使用download.sh下載)
2、從 https://github.com/ymcui/Chinese-LLaMA-Alpaca 提供的鏈接下載 原版模型對(duì)應(yīng)的Lora模型
3、進(jìn)行模型合并:(參考 手動(dòng)模型合并與轉(zhuǎn)換 · ymcui/Chinese-LLaMA-Alpaca Wiki · GitHub?)
(1)使用transformers提供的腳本convert_llama_weights_to_hf.py,將原版LLaMA模型轉(zhuǎn)換為HuggingFace格式,舉例如下:
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
--input_dir path_to_original_llama_root_dir \
--model_size 7B \
--output_dir path_to_original_llama_hf_dir
(2)對(duì)原版LLaMA模型(HF格式)擴(kuò)充中文詞表,合并LoRA權(quán)重并生成全量模型權(quán)重,這時(shí)可以選擇pyTorch版本權(quán)重(.pth文件)或者輸出HuggingFace版本權(quán)重(.bin文件)。對(duì)于llama.cpp部署,應(yīng)轉(zhuǎn)為pth文件。
(a)對(duì)于基座模型,采用單LoRA權(quán)重合并方式 ( Chinese-LLaMA, Chinese-LLaMA-Plus, Chinese-Alpaca)
python scripts/merge_llama_with_chinese_lora_low_mem.py \
--base_model path_to_original_llama_hf_dir \
--lora_model path_to_chinese_llama_or_alpaca_lora \
--output_type [pth|huggingface] \
--output_dir path_to_output_dir
(b)對(duì)于對(duì)話模型,采用多LoRA權(quán)重合并方式( Chinese-LLaMA, Chinese-LLaMA-Plus, Chinese-Alpaca)
python scripts/merge_llama_with_chinese_lora_low_mem.py \
--base_model path_to_original_llama_hf_dir \
--lora_model path_to_chinese_llama_plus_lora,path_to_chinese_alpaca_plus_lora \
--output_type [pth|huggingface] \
--output_dir path_to_output_dir
其中l(wèi)ora_model的模型順序?yàn)橄萀LaMA,后Alpaca,比如 先LLaMA-Plus-LoRA后Alpaca-Plus/Pro-LoRA
(3)對(duì)合并后的模型進(jìn)行SHA256檢查
根據(jù) https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/SHA256.md 提供的表格檢查SHA256值的一致性。
windows的SHA256檢查方法是:
certutil -hashfile your-model-file sha256
Linux的SHA256檢查方法是:
sha256sum your-model-file
參考資料:【LLM】Windows本地CPU部署民間版中文羊駝模型(Chinese-LLaMA-Alpaca)踩坑記錄 【LLM】Windows本地CPU部署民間版中文羊駝模型(Chinese-LLaMA-Alpaca)踩坑記錄_提筆忘字的帝國的博客-CSDN博客想必有小伙伴也想跟我一樣體驗(yàn)下部署大語言模型, 但礙于經(jīng)濟(jì)實(shí)力, 不過民間上出現(xiàn)了大量的量化模型, 我們平民也能體驗(yàn)體驗(yàn)啦~, 該模型可以在筆記本電腦上部署, 確保你電腦至少有16G運(yùn)行內(nèi)存。https://blog.csdn.net/qq_38238956/article/details/130113599
2.代碼和模型下載:
llama.cpp 代碼倉按照 https://blog.csdn.net/snmper/article/details/133744694大模型部署手記(8)LLaMa2+Windows+llama.cpp+英文文本補(bǔ)齊https://blog.csdn.net/snmper/article/details/133744694?一文的方式下載。
Chinese-LLaMA-Alpaca的代碼倉:
d:
cd \
git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca
cd Chinese-LLaMA-Alpaca
1.原版的LLaMa模型
已經(jīng)在 https://blog.csdn.net/snmper/article/details/133578456大模型部署手記(7)LLaMA2+Jetson AGX Orinhttps://blog.csdn.net/snmper/article/details/133578456?講了具體步驟。
在上次的 https://blog.csdn.net/snmper/article/details/133744694大模型部署手記(8)LLaMa2+Windows+llama.cpp+英文文本補(bǔ)齊https://blog.csdn.net/snmper/article/details/133744694?一文中,原版的LLaMa-7B模型已經(jīng)被放到了 D:\llama.cpp\models\7B 目錄下:
2.原版模型對(duì)應(yīng)的Lora模型
根據(jù) GitHub - ymcui/Chinese-LLaMA-Alpaca: 中文LLaMA&Alpaca大語言模型+本地CPU/GPU訓(xùn)練部署 (Chinese LLaMA & Alpaca LLMs)?提供的 模型推薦清單,原版LLaMa-7B對(duì)應(yīng)的基座模型只有 Chinese-LLaMA-Plus-7B:
點(diǎn)擊鏈接 百度網(wǎng)盤 請(qǐng)輸入提取碼?下載百度網(wǎng)盤的壓縮包:chinese-alpaca-lora-7b.zip
將其解壓到D:\llama.cpp\models 目錄:注意由于zip不帶目錄,使用壓縮軟件解壓時(shí)要選擇 解壓到chinese-alpaca-lora-7b
3.安裝依賴
cd Chinese-LLaMA-Alpaca
其中合并的腳本merge_llama_with_chinese_lora.py 在 D:\Chinese-LLaMA-Alpaca\scripts 目錄下:
可將其復(fù)制到 d:\llama.cpp 目錄:
將 scripts/merge_llama_with_chinese_lora_low_mem.py 文件也復(fù)制過來:
下載 https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py
保存到 d:\llama.cpp 目錄
4.部署驗(yàn)證
打開Anaconda Powershell Prompt
conda activate llama
在models目錄下,創(chuàng)建以下幾個(gè)目錄:
- path_to_original_llama_hf_dir 轉(zhuǎn)換好的HF版模型權(quán)重
- path_to_output_dir 合并后的模型權(quán)重
- 7B目錄相當(dāng)于 path_to_original_llama_root_dir
- chinese_llama_plus_lora_7b 目錄相當(dāng)于 path_to_chinese_llama_or_alpaca_lora
在7B目錄下,上次是將 原始模型轉(zhuǎn)換成了 ggml-model-f16.gguf,并int4量化成了 ggml-model-q4_0.gguf
(1)使用transformers提供的腳本convert_llama_weights_to_hf.py,將原版LLaMA模型轉(zhuǎn)換為HuggingFace格式
cd D:\llama.cpp
python convert_llama_weights_to_hf.py --input_dir models/7B --model_size 7B --output_dir path_to_original_llama_hf_dir
pip install tokenizers==0.13.3
再來:
python convert_llama_weights_to_hf.py --input_dir models/7B --model_size 7B --output_dir path_to_original_llama_hf_dir
將7B上層目錄的 tokenizer.model 復(fù)制到 models/7B目錄下:
再來:
python convert_llama_weights_to_hf.py --input_dir models/7B --model_size 7B --output_dir path_to_original_llama_hf_dir
這個(gè)需要耐心等待一會(huì)兒。
不好意思,目的目錄應(yīng)該是 models/path_to_original_llama_hf_dir
將結(jié)果挪過去吧!
mv path_to_original_llama_hf_dir/* models/path_to_original_llama_hf_dir/
rmdir path_to_original_llama_hf_dir
(2)單LoRA權(quán)重合并
python merge_llama_with_chinese_lora_low_mem.py --base_model models/path_to_original_llama_hf_dir --lora_model models/chinese_llama_plus_lora_7b --output_type pth --output_dir models/path_to_output_dir
合并好的模型放到了 models/path_to_output_dir 目錄:
(3)SHA檢查
certutil -hashfile models\path_to_output_dir\consolidated.00.pth sha256
找不到這個(gè)SHA256值。。。
原版pth的SHA256:
certutil -hashfile models\7B\consolidated.00.pth sha256
這個(gè)SHA256可以找到:
Lora Tokenizer.model SHA256:
certutil -hashfile models\chinese_llama_plus_lora_7b\tokenizer.model sha256
(llama) PS D:\llama.cpp> certutil -hashfile models\chinese_llama_plus_lora_7b\tokenizer.model sha256
SHA256 的 models\chinese_llama_plus_lora_7b\tokenizer.model 哈希:
e2676d4ca29ca1750f6ff203328d73b189321dc5776ceede037cbd36541d70c0
CertUtil: -hashfile 命令成功完成。
(llama) PS D:\llama.cpp>
這個(gè)SHA256可以找到:
Lora權(quán)重 adapter_model.bin SHA256:
certutil -hashfile models\chinese_llama_plus_lora_7b\adapter_model.bin sha256
(llama) PS D:\llama.cpp> certutil -hashfile models\chinese_llama_plus_lora_7b\adapter_model.bin sha256
SHA256 的 models\chinese_llama_plus_lora_7b\adapter_model.bin 哈希:
8c928db86b2a0cf73f019832f921eb7e1e069ca21441b4bfa12c4381c6cc46be
CertUtil: -hashfile 命令成功完成。
(llama) PS D:\llama.cpp>
這個(gè)SHA256可以找到:
那就是合并之后的模型權(quán)重文件不對(duì)嗎?張小白也不知道。。。
(4)合并完了之后,進(jìn)行以下操作:
將合并后的模型權(quán)重 models\path_to_output_dir\consolidated.00.pth 轉(zhuǎn)換為ggml的FP16格式:ggml-model-f16.gguf,保存在 models/path_to_output_dir 目錄下。
python convert.py models/path_to_output_dir
結(jié)果寫到了 models\path_to_output_dir\ggml-model-f16.gguf 文件中:13G左右。
剛才轉(zhuǎn)換好的FP16模型進(jìn)行4-bit量化:
./quantize ./models/path_to_output_dir/ggml-model-f16.gguf ./models/path_to_output_dir/ggml-model-q4_0.gguf q4_0
大小只有3.8G了。
進(jìn)行推理:
./main -m ./models/path_to_output_dir/ggml-model-q4_0.gguf -n 512 --prompt "我給大家介紹一下加拿大"
好像有點(diǎn)不大對(duì)頭。但是中文確實(shí)生成了。
./main -m ./models/path_to_output_dir/ggml-model-q4_0.gguf -n 128 --prompt "Tell me something about Canada"
我知道了,提示詞可能需要是是英文。
結(jié)果如下:
Tell me something about Canada Day. 我說... 加拿大的節(jié)日!Canada Day是2011年4月29日,為慶祝加拿大的國家日。在各省市與英聯(lián)邦國家之間,節(jié)日日期會(huì)因各省市的不同而有所差異;因此,各省市也有不同的名稱來表示該節(jié)日,例如:阿爾伯塔省的“NationalDay”、安大略省的“CanadaDay”等。每年4月29日在各省市慶祝加拿大國家日的時(shí)候,都會(huì)舉行各種娛樂活動(dòng)、慶典活動(dòng)、游行活動(dòng) 等等,以示對(duì)國家的重視與喜愛。而在4月29
放長一點(diǎn):
./main -m ./models/path_to_output_dir/ggml-model-q4_0.gguf -n 512 --prompt "Tell me something about Canada"
結(jié)果如下:
Tell me something about Canada (Canada) (2016-04-23) [已完結(jié)] 故事背景是二戰(zhàn)時(shí)的日本,有位年事已高的老人,名叫小林。他以一種特殊的方式記起了自己的生活,這個(gè)老男人的記憶和想象 是如此豐富、奇幻又如此可信!小林說:“我從那時(shí)起就生活在我的記憶里?!惫适轮欣稀?無題書評(píng)(2015-11-23) 作者: 阿爾布雷思·希茨 出版社: 四川文藝 語言: 中文 簡體字 初版:2012年04月 / 新版:2015年09月 本書以1925-1950年間發(fā)生在中國上海及長江中游地區(qū),對(duì)中國歷史和文化的研究者而言,無疑是一個(gè)極富史料價(jià)值的寶庫。本書共分五卷,第一卷《白俄羅斯》、第二卷《克里木》、第三卷《… 無題書評(píng)(2015-11-23) 作者: 周天仇 / 高培夫 出版社: 上海人民 語言: 中國語系 (包括漢語、繁體中文、粵語、吳語等) 小說《北京,我愛你》是中國作家周天仇和歌手高培夫的合作作品。這是繼2013年兩人共同出版的小說《中國大… 無題書評(píng)(2015-11-23) 作者: 艾倫·麥席恩 / 伊登·威廉姆斯 (譯者) 出版社: 三聯(lián)書店 語言: 中國語系 (包括漢語、繁體中文、粵語、吳語等) 《無題書評(píng)》是“世界文壇最有分量的批評(píng)家之一”艾倫·麥席恩的代表作,也是他在三十年寫作生涯中,最偉大的杰作。這本無名指的小說集,在歐美廣受好評(píng),也受到了中國的高度… 無題書評(píng)(2015-11-23) 作者: 阿爾布雷思·希茨 / 愛德華·威廉姆斯 (譯者) 出版社: 南方文藝 語言: 中國語系 (包括漢語、繁體中文、粵語、吳語等) 《無題書評(píng)》是“世界文壇最有分量的批評(píng)家之一”阿爾布雷斯— 希茨的代表作,也是他在三十年寫作生涯中,最偉大的杰作。這本書在歐美廣受好評(píng),也受到了中國的高度關(guān)注… 無
張小白以為這個(gè)真的是一個(gè)圖書簡介,不過,看看搜到了啥:
看來中文是可以生成了,但是也不是每次都能出中文,出的中文也不見得都能對(duì)題。
./main -m ./models/path_to_output_dir/ggml-model-q4_0.gguf -n 512 --prompt "Introduce the special products of Nanjing"
想讓它介紹一下南京的特產(chǎn):
結(jié)果如下:
Introduce the special products of Nanjing 發(fā)布人:administrator 來源:Nanjing-tourism 時(shí)間:2017/7/9 15:00:37 點(diǎn)擊:192 摘要:Nanjing是國家歷史文化名城,也是華東地區(qū)重要的中心城市。在“一帶一路”戰(zhàn)略的推動(dòng)下,近年來,這座歷史文化名城更是成為眾多海內(nèi)外游客向往的地方?!耙粠б宦贰睉?zhàn)略下,中國對(duì)外開放政策也與此同時(shí)出臺(tái),為外國企業(yè)和投資者進(jìn)入中國的大門越開越大。在這樣的國際背景下,Nanjing市充分發(fā)揮了自身的地緣優(yōu)勢(shì),在不斷加大對(duì)外資企業(yè)的吸引力上,讓其成為“一帶一路”建設(shè)的生力軍。而此次專題文集是希望通過介紹城市的獨(dú)特魅力,為更多 的海內(nèi)外游客打開了解這座名城的一扇窗戶。[全文] Introduce the special products of Nanjing 發(fā)布人:administrator 來源:Nanjing-tourism 時(shí)間:2017/7/9 15:00:37 點(diǎn)擊:192 摘要:Nanjing是國家歷史文化名城,也是華東地區(qū)重要的中心城市。在“一帶一路”戰(zhàn)略的推動(dòng)下,近年來,這座歷史文化名城更是成為眾多海內(nèi)外游客向往的地方?!耙粠б宦贰睉?zhàn)略下,中國對(duì)外開放政策也與此同時(shí)出臺(tái),為外國企業(yè)和投資者進(jìn)入中國的大門越開越大。在這樣的國際背景下,Nanjing市充分發(fā)揮了自身的地緣優(yōu)勢(shì),在不斷加大對(duì)外資企業(yè)的吸引力上,讓其成為“一帶一路”建設(shè)的生力軍。而此 次專題文集是希望通過介紹城市的獨(dú)特魅力,為更多的海內(nèi)外游客打開了解這座名城的一扇窗戶。[全文] Introduce the special products of Nanjing 發(fā)布人:administrator 來源:Nanjing-tourism 時(shí)間:2017/7/9 15:00:37 點(diǎn)擊:192 摘要:Nanjing是國家歷史文化名城,也是華東地區(qū)重要的中心城市。在“一帶一路”戰(zhàn)略的推動(dòng)下,近年來,這座歷史文化名城更是成為眾多海內(nèi)外游客向往的地方?!耙粠б宦贰睉?zhàn)略下,中國對(duì)外開放政策也與此同時(shí)出臺(tái),為外國企業(yè)和投資者進(jìn)入中國的大門越開越大。在這樣的國際背景下,Nanjing市充分發(fā)揮了自身的地緣優(yōu)勢(shì),在不斷加大對(duì)外資企業(yè)的
可能需要微調(diào)一下了。
換一個(gè):
./main -m ./models/path_to_output_dir/ggml-model-q4_0.gguf -n 512 --prompt "I want to fly"
I want to fly,but too heavy. (19張) 何思聰(Talitha Hoffman),1988年5月22日出生于美國佛羅里達(dá)州,美國影視演員。2002年,出演了愛情喜劇《我最好朋友的婚禮》中的小角色;2006年,參演科幻電影《變形金剛3:起義》;2010年,憑借青春勵(lì)志劇《籃球節(jié)育子》獲得青少年選擇獎(jiǎng)最佳突破TV女演員提名;2014年,在奇幻冒險(xiǎn)片《冰雪奇緣》中出演了女魔幻師Elsa。何思聰早年經(jīng)歷 編輯1988年5月22日,出生于美國佛羅里達(dá)州。2005年,參加“America’s next top model”的試鏡會(huì),最終未能晉級(jí);2006年,參演科幻電影《變形金剛3:起義》,該片最終在全球票房超過10億美元,成為當(dāng)年全球賣座冠軍影片。2008年,參演家庭劇情《舞出我人生》。2009年4月1日,在紐約舉行的“America’s next top model”試鏡會(huì)中,何思聰因拍攝封面照時(shí)表現(xiàn)得鎮(zhèn)定自然而順利獲得試鏡的資格;同年12月15日,參加“America’s next top model”的總決賽,最終沒能成為年度亞軍。2010年1月6日,參演青春勵(lì)志劇《籃球節(jié)育子》中霍特一角,該劇播出后獲得青少年觀眾選擇獎(jiǎng)最佳突破TV女演員提名;同年5月16日,與約翰·博伊維斯克、艾莉森·威廉姆斯合作出演的科幻喜劇電影《超時(shí)空接觸》上映。2011年3月1日,參演奇幻冒險(xiǎn)片《冰雪奇緣》中女魔幻師Elsa的試鏡會(huì),最終獲得試鏡 資格;6月18日,在美國上映。2012年2月5日,與布萊恩·戴維斯合作出演的電影《I want to fly,but too heavy.》在紐約舉行首映禮;同年7月4日,參演科幻恐怖片《僵尸世界大戰(zhàn)》的試鏡會(huì)中,獲得試鏡資格。何思聰個(gè)人生活編輯2011年11月20日,與美國男演員喬·林恩結(jié)婚。何思聰主要作品編輯何思聰參演電影何思聰參與配音何思聰獲獎(jiǎng)記錄編輯 謝天狗(Rasputin),霹靂布袋戲系列中的虛擬人物。為神滅
也不知道它說的是真的,還是在一本正經(jīng)地胡說八道。她怎么不叫王思聰?shù)摹!?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-769239.html
(全文完,謝謝閱讀)文章來源地址http://www.zghlxwxcb.cn/news/detail-769239.html
到了這里,關(guān)于大模型部署手記(9)LLaMa2+Chinese-LLaMA-Plus-7B+Windows+llama.cpp+中文文本補(bǔ)齊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!