如何使用GPU云服務(wù)器自建一個簡單的類似ChatGPT、Kimi的會話機(jī)器人
一、選擇云服務(wù)器
1.申請?jiān)品?wù)器
建議云服務(wù)器使用按量付費(fèi),按小時算還是非常便宜的。
硬件配置:
系統(tǒng):ubuntu,20.04
系統(tǒng)盤:150G
GPU:12核44G,1 * NVIDIA A10(32G),硬盤150G,1*NVIDIA A10(24G)

軟件版本:
由于A10的驅(qū)動,cuda均未安裝,為了省事,直接申請了另一臺,初始化完成后,打成鏡像,然后再為A10重裝就可以了,這樣最省事。當(dāng)然也可以手動安裝。
使用的V100的鏡像,初始化條件選擇如下

配置安全組,出全放開,入至少放開22和8760。
后付費(fèi)要注意:要滿足余額不低于要凍結(jié)金額。
2.GPU確認(rèn)
登錄GPU服務(wù)器后,在安裝V100的鏡像時,可以看到顯卡驅(qū)動在安裝。(早了晚了可能都會錯過這個頁面)

等待顯卡驅(qū)動安裝完成后(會有一段時間),做下顯卡確認(rèn)
nvidia-smi
用于確認(rèn)cuda版本。
安裝cuda toolkit
sudo apt install nvidia-cuda-toolkit #時間有點(diǎn)久
如上面所述,然后制作為鏡像,再導(dǎo)入到我們的A10當(dāng)中。(重裝系統(tǒng))
二、安裝并配置Python環(huán)境
1.安裝python3.10
sudo apt-get update
sudo apt-get upgrade #需等待
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt -y install python3.10
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
#驗(yàn)證安裝成功,均返回Python 3.10.13
python3.10 --version
python3 --version
#升級pip
wget https://bootstrap.pypa.io/get-pip.py
python3.10 get-pip.py
2.安裝Git和Git LFS軟件
sudo apt install -y git git-lfs python3.10-distutils
3.安裝模型所需要的Python包
在此之前,先把pip工具設(shè)置好。
看兩處pip的版本是否一致:
第一種方式:pip show pip
第二種方式:python3.10 -m pip --version
若不一樣,則:
然后修改兩個文件:sudo vim /usr/bin/pip 以及sudo vim /usr/bin/pip3,將每個文件里面的兩個版本號位置,修改為新的,最后再用pip show pip驗(yàn)證下。
#需等待,可能要不停地試,直到成功
pip install git+https://github.com/huggingface/transformers
#1.如果上面pip工具沒設(shè)置好,可能會有如下報錯:

回到上面處理吧,也可以參考:https://zhuanlan.zhihu.com/p/664770225
#2.如果報128,則看 https://zhuanlan.zhihu.com/p/648289974
下載到本地再上傳 或者等網(wǎng)絡(luò)環(huán)境好的時候下載。
繼續(xù)執(zhí)行:
pip install sentencepiece==0.1.97 -i https://pypi.tuna.tsinghua.edu.cn/simple
#需等待,非常漫長
pip install peft==0.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
4.驗(yàn)證:在PyTorch環(huán)境下驗(yàn)證GPU是否正常工作
python3.10
import torch
#返回值為true,表示正常工作
torch.cuda.is_available()
quit()
有可能會報cuda與python版本不匹配的問題:需要選擇正確版本的CUDA和PyTorch安裝(windows)
三、下載與配置模型
1.下載Chinese-LLaMA-Alpaca模型
git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
本地已下載:Chinese-LLaMA-Alpaca-main.zip
修改代碼:Chinese-LLaMA-Alpaca/scripts/merge_llama_with_chinese_lora.py文件,dType類型 由float16全部換為bfloat16
全部修改為:
torch_dtype=torch.bfloat16
否則,在最終運(yùn)行時,會報錯:RuntimeError: probability tensor contains either inf, nan or element < 0
2.下載chinese-alpaca-lora-13b模型
git-lfs clone https://huggingface.co/ziqingyang/chinese-alpaca-lora-13b
大概率會失敗,解決辦法是把該文件夾下載到本地,然后再上傳到服務(wù)上
//如果需要文件進(jìn)行下載,可以聯(lián)系我:lucky_shisheng
scp -r chinese-alpaca-lora-13b ubuntu@106.52.198.183:~
修改代碼:chinese-alpaca-lora-13b中的adapter_config.json
去掉兩行:
“enable_lora”: null,
“merge_weights”: false,
否則,在最終運(yùn)行時,會報錯:TypeError: init() got an unexpected keyword argument ‘enable_lora’
3.下載 llama-13b-hf模型
git-lfs clone https://huggingface.co/decapoda-research/llama-13b-hf
大概也會失敗,解決辦法是用wget直接下載,或者是像上面一樣,下載到本地后,再上傳上去。
//如果需要文件進(jìn)行下載,可以聯(lián)系我:lucky_shisheng
scp -r llama-13b-hf ubuntu@106.52.198.183:~
4.合并代碼
合并代碼,生成新模型
cd Chinese-LLaMA-Alpaca/
python3.10 scripts/merge_llama_with_chinese_lora.py --base_model ~/llama-13b-hf/ --lora_model ~/chinese-alpaca-lora-13b/ --output_type huggingface --output_dir ./llama_with_lora_hf
在這里,指定了base model和lora_model,輸出路徑為./llama_with_lora_hf
如果出現(xiàn)被kill,則是資源內(nèi)存不足,需要換臺機(jī)器來做。
合并完成后,可以確認(rèn)一下轉(zhuǎn)換完成后的文件內(nèi)容,大概25G
ls -lh llama_with_lora_hf
四、部署WebUI
1.下載WebUI
#需要多試幾次
cd~
git clone https://github.com/oobabooga/text-generation-webui.git
備份:text-generation-webui-main.zip
2.安裝代碼及依賴庫
cd text-generation-webui/
#非常耗時
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
3.模型軟鏈接生成到models下面
ln -s /home/ubuntu/Chinese-LLaMA-Alpaca/llama_with_lora_hf/ models/llama_with_lora_hf
五、最終對話界面生成
驗(yàn)證結(jié)果
python3.10 server.py --model llama_with_lora_hf --listen --chat --load-in-8bit
人機(jī)界面:

控制臺:

若提示GPU內(nèi)存不足,可以換個命令試一下:
python3.10 server.py --model llama_with_lora_hf --listen --chat --load-in-4bit