在阿里云GPU云服務(wù)器上基于Alpaca大模型搭建個人版“對話大模型”
本教程介紹如何在阿里云GPU云服務(wù)器上基于Alpaca大模型快速搭建個人版“對話大模型”。
背景信息
Alpaca大模型是一款基于LLaMA的大語言模型,它可以模擬自然語言進行對話交互,并協(xié)助用戶完成寫作、翻譯、編寫代碼、生成腳本等一系列創(chuàng)作任務(wù)。同時,使用了中文數(shù)據(jù)進行二次預(yù)訓(xùn)練,提升了中文基礎(chǔ)語義理解能力。
本文基于阿里云GPU服務(wù)器和Alpaca大模型,指導(dǎo)您如何快速搭建個人版“對話大模型”。
阿里云不對第三方模型Alpaca大模型的合法性、安全性、準確性進行任何保證,阿里云不對由此引發(fā)的任何損害承擔責任。
您應(yīng)自覺遵守第三方模型的用戶協(xié)議、使用規(guī)范和相關(guān)法律法規(guī),并就使用第三方模型的合法性、合規(guī)性自行承擔相關(guān)責任。
操作步驟
創(chuàng)建并配置ECS實例
在ECS實例創(chuàng)建頁面,創(chuàng)建ECS實例。
關(guān)鍵參數(shù)說明如下,其他參數(shù)的配置,請參見自定義購買實例。
實例規(guī)格:選擇實例規(guī)格為ecs.gn7i-c16g1.4xlarge。
鏡像:公共鏡像Ubuntu 22.04,并選中安裝GPU驅(qū)動,選擇CUDA 版本12.1.1/Driver 版本535.154.05/CUDNN 版本8.9.7.29。
系統(tǒng)盤:不小于200 GiB。
公網(wǎng)IP:選中分配公網(wǎng)IPv4地址,帶寬計費方式選擇按使用流量,帶寬峰值選擇100 Mbps,以加快模型下載速度。
添加安全組規(guī)則。
在ECS實例安全組的入方向添加安全組規(guī)則并放行7860端口。具體操作,請參見添加安全組規(guī)則。
查看驅(qū)動以及CUDA庫是否安裝成功。
使用root用戶遠程登錄ECS實例。具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
首次登錄ECS實例時,系統(tǒng)會自動安裝驅(qū)動。當顯示如下圖所示的回顯信息時,表示驅(qū)動以及CUDA庫已安裝成功。
重要系統(tǒng)自動安裝驅(qū)動以及CUDA庫時,請不要手動操作或者重啟實例,否則可能會導(dǎo)致驅(qū)動或者CUDA庫安裝失敗。等到安裝驅(qū)動以及CUDA庫完成以后,系統(tǒng)會自動重啟。
如果創(chuàng)建完ECS實例后,沒有立即遠程登錄ECS實例,可能看不到類似下圖的回顯信息。
再次使用root用戶遠程登錄ECS實例。具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
執(zhí)行以下命令,查看GPU驅(qū)動的版本。
nvidia-smi
回顯信息類似下圖所示。
執(zhí)行以下命令,查看CUDA庫的版本。
nvcc -V
回顯信息如下圖所示。
配置軟件
安裝Python 3.11并升級pip。
分別執(zhí)行以命令,安裝Python 3.11。
apt-get update apt-get upgrade apt install -y python-is-python3 # 將默認Python改成Python3 apt install -y software-properties-common # 安裝software-properties-common軟件包 add-apt-repository ppa:deadsnakes/ppa # 添加PPA存儲庫 apt -y install python3.11 # 安裝Python 3.11 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 # 設(shè)置默認Python為Python 3.11
執(zhí)行如下命令,查看Python版本。
python --version
當回顯如下所示時,表示已安裝Python 3.11.9。
分別執(zhí)行以命令,升級pip。
wget https://bootstrap.pypa.io/get-pip.py python3.11 get-pip.py
執(zhí)行以下命令,安裝Git和Git LFS軟件。
apt install -y git git-lfs python3.11-distutils
依次執(zhí)行以下命令,安裝模型所需要的Python包。
sudo apt-get install pkg-config cmake sudo apt-get install python3.11-dev pip install git+https://github.com/huggingface/transformers pip install sentencepiece==0.1.97 -i https://mirrors.aliyun.com/pypi/simple pip install peft==0.10.0 -i https://mirrors.aliyun.com/pypi/simple
重要從GitHub上下載Transformers庫,由于網(wǎng)絡(luò)原因偶爾可能會不成功,建議您多嘗試幾次。
在PyTorch環(huán)境下驗證GPU是否正常工作。
執(zhí)行以下命令,進入Python運行環(huán)境。
python
執(zhí)行以下命令,驗證GPU是否正常工作。
import torch torch.cuda.is_available()
返回
True
,表示GPU正常工作。執(zhí)行以下命令,退出Python。
quit()
下載與配置模型
依次執(zhí)行以下命令,下載tmux并創(chuàng)建一個tmux session。
apt install -y tmux tmux
重要下載模型耗時較長,建議在tmux session中下載,以免ECS斷開連接導(dǎo)致下載中斷。
執(zhí)行以下命令,下載Chinese-LLaMA-Alpaca模型。
git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
執(zhí)行以下命令,下載chinese-alpaca-lora-13b模型。
git clone https://www.modelscope.cn/ChineseAlpacaGroup/chinese-alpaca-lora-13b.git
依次執(zhí)行以下命令,下載llama-13b-hf。
llama-13b-hf是預(yù)訓(xùn)練的llama 13b模型,已經(jīng)轉(zhuǎn)換成了Huggingface的模型格式。下載llama-13b-hf大約有40 GiB的數(shù)據(jù),預(yù)估下載時間約30分鐘,請您耐心等待。
重要LLaMA是第三方提供的Huggingface格式的預(yù)訓(xùn)練模型數(shù)據(jù)。Meta官方發(fā)布的LLaMA模型禁止商用,并且官方暫時還沒有正式開源模型權(quán)重。這里使用這個下載鏈接只為做演示使用,不承擔任何法律責任。
pip install -U huggingface_hub pip install -U hf-transfer export HF_ENDPOINT=https://hf-mirror.com export HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download --resume-download --local-dir-use-symlinks False yahma/llama-13b-hf --local-dir llama-13b-hf
依次執(zhí)行以下命令,合并代碼。
cd Chinese-LLaMA-Alpaca/ python 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
命令行中需要用--output_dir命令指定一個輸出目錄,本示例中輸出目錄為
/root/Chinese-LLaMA-Alpaca/llama_with_lora_hf
。轉(zhuǎn)換需要一段時間,需要耐心等待。執(zhí)行以下命令,查看轉(zhuǎn)換完成后的文件。
ls -lh llama_with_lora_hf
部署WebUI
執(zhí)行以下命令,在
/root
目錄或者您的工作目錄,下載WebUI并且進行代碼部署。cd git clone https://github.com/oobabooga/text-generation-webui.git
執(zhí)行以下命令,安裝代碼及依賴庫。
重要安裝代碼及依賴庫涉及從GitHub下載代碼,可能會因為網(wǎng)絡(luò)原因運行失敗,請多試幾次。
cd text-generation-webui/ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple pip install datasets gradio rich bitsandbytes -i https://mirrors.aliyun.com/pypi/simple/
執(zhí)行以下命令,在models目錄下面生成一個軟鏈接,指向合并后模型數(shù)據(jù)的目錄。
ln -s /root/Chinese-LLaMA-Alpaca/llama_with_lora_hf/ models/llama_with_lora_hf
參數(shù)說明如下:
/root/Chinese-LLaMA-Alpaca/llama_with_lora_hf/
:指的是合并模型存放的目錄,您可以從合并代碼步驟獲取。models/llama_with_lora_hf
:指的是模型名稱,您可以修改成其他名稱。
驗證結(jié)果
完成以上操作后,您已經(jīng)成功完成了WebUI部署和個人版對話大模型的搭建。您可以在WebUI頁面進行驗證。
執(zhí)行以下命令,運行WebUI。
cd text-generation-webui/ python server.py --model llama_with_lora_hf --listen --chat --load-in-8bit
參數(shù)說明如下:
--model:指定的是步驟3生成的軟鏈接的名稱,不需要帶前面的model/目錄名。本示例軟鏈接的名稱為
llama_with_lora_hf
。--listen:用于設(shè)置WebUI監(jiān)聽所有外部IP(不配置--listen默認只能監(jiān)聽本地IP),以實現(xiàn)從實例外訪問WebUI。默認監(jiān)聽端口是7860,您可通過--listen-port來指定其他監(jiān)聽端口。
--chat:用于指定默認的運行模式,本文示例為對話模式(可按需嘗試其他模式)。
--load-in-8bit:用于指定以8 bit模式加載模型。正常加載13B模型需要26 GB以上顯存,A10顯卡只有24 GB,所以需要以8bit模式加載,模型占用顯存大約為15 GB。
當顯示如下圖所示的回顯信息時,表示運行WebUI成功。
在ECS實例頁面,獲取ECS實例的公網(wǎng)IP地址。
在瀏覽器中輸入
http://<ECS實例公網(wǎng)IP地址>:7860
,即可訪問個人版對話大模型。您可以輸入相應(yīng)的問題和AI機器人進行對話。
了解更多AIGC實踐和GPU優(yōu)惠
活動入口:立即開啟AIGC之旅