什么是Llama2
Meta在7月18日發布了可以免費用于學術研究或商業用途的Llama2開源大語言模型。


Llama的訓練方法是先進行無監督預訓練,再進行有監督微調,訓練獎勵模型,根據人類反饋進行強化學習。 Llama 2的訓練數據比Llama 1多40%,用了2萬億個tokens進行訓練,并且上下文長度是Llama 1的兩倍。 目前提供7B 、13B、70B三種參數量的版本。

根據Meta公布的官方數據,Llama 2在許多基準測試上都優于其他開源語言模型,包括推理、編程、對話能力和知識測試,在幫助性、安全性方面甚至比部分閉源模型要好。


Llama 2-Chat在Llama 2的基礎上針對聊天對話場景進行了微調和安全改進,使用 SFT (監督微調) 和 RLHF (人類反饋強化學習)進行迭代優化,以便更好的和人類偏好保持一致,提高安全性。
Llama 2-Chat更專注于聊天機器人領域,主要應用于以下幾個方面:
- 客戶服務:Llama 2-Chat可以用于在線客戶服務,回答關于產品、服務的常見問題,并向用戶提供幫助和支持。
- 社交娛樂:Llama 2-Chat可以作為一個有趣的聊天伙伴,與用戶進行隨意、輕松的對話,提供笑話、謎語、故事等娛樂內容,增加用戶的娛樂體驗。
- 個人助理:Llama 2-Chat可以回答一些日常生活中的問題,如天氣查詢、時間設置、提醒事項等,幫助用戶解決簡單的任務和提供一些實用的功能。
- 心理健康:Llama 2-Chat可以作為一個簡單的心理健康支持工具,可以與用戶進行交流,提供情緒調節、壓力緩解的建議和技巧,為用戶提供安慰和支持。
在GPU云主機上搭建模型運行環境
步驟一:創建1臺未配置驅動的GPU云主機
- 進入創建云主機頁面。
a.點擊天翼云門戶首頁的“控制中心”,輸入登錄的用戶名和密碼,進入控制中心頁面。
b.單擊“服務列表>彈性云主機”,進入主機列表頁。
c.單擊“創建云主機”,進入彈性云主機創建頁。

- 進行基礎配置。
a.根據業務需求配置“計費模式”、“地域”、“企業項目”、“虛擬私有云”、“實例名稱”、“主機名稱”等。
b.選擇規格。此處選擇"CPU架構"為"X86"、"分類"為"GPU加速/AI加速型"、"規格族"為"GPU計算加速型p2v"、"規格"為"p2v.4xlarge.8"。
注意大模型推理場景需要處理大量的數據和參數,對顯卡顯存和云盤大小都有一定要求。
針對顯存,加載全精度Llama-7B-chat模型時,模型將消耗28G顯存,除此之外也需要額外的顯存用于存儲中間激活和其他臨時變量,因此,最低選擇顯存為32G的V100顯卡。同時您也可以根據自身需求對模型進行量化,縮減模型大小,減少對顯存的要求并提升計算速度。
針對系統盤,為了存儲模型文件、相關依賴、輸入數據以及中間結果,最好將系統盤大小配置為100GB以上。
c.選擇鏡像。此處選擇ubuntu 20.04的基礎鏡像進行推理實踐。
注意為了演示模型搭建的整個過程,此處選擇未配備任何驅動和工具包的ubuntu基礎模型。詳細創建步驟請參見創建未配備驅動的GPU云主機-GPU云主機-用戶指南-創建GPU云主機 - 天翼云。
最終我們生成了預裝llama2模型和模型依賴的大模型鏡像,并在成都4進行了加載,如您有相關需要可在訂購時直接選擇該鏡像——大模型鏡像 LLaMA2-7B-Chat(100GB)。
d.設置云盤類型和大小。
- 網絡及高級配置。設置網絡,包括"網卡"、"安全組",同時配備'彈性IP'用于下載模型和相關依賴;設置高級配置,包括"登錄方式"、"云主機組"、"用戶數據"。
- 確認配置并支付。
步驟二:下載模型并上傳
從、魔搭社區等國內大模型社區及平臺下載Llama-2-7b-chat模型。下載完成后上傳至GPU云主機/opt/llama路徑下。
說明如何將本地文件上傳到Linux云主機請參考本地文件如何上傳到Linux云主機。
步驟三:環境搭建
-
上傳并安裝GPU驅動
從下載GPU驅動并上傳至GPU云主機,按照如下步驟安裝驅動。# 對安裝包添加執行權限 chmod +x NVIDIA-Linux-x86_64-515.105.01.run # 安裝gcc和linux-kernel-headers sudo apt-get install gcc linux-kernel-headers # 運行驅動安裝程序 sudo sh NVIDIA-Linux-x86_64-515.105.01.run --disable-nouveau # 查看驅動是否安裝成功 nvidia-smi
說明如何選擇驅動及相關庫、軟件版本請參見如何選擇驅動及相關庫、軟件版本。
TESLA驅動安裝更詳細說明請參見安裝Tesla驅動-GPU云主機-用戶指南-安裝NVIDIA驅動 - 天翼云。
-
安裝Nvidia CUDA Toolkit組件
wget //developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run # 安裝CUDA bash cuda_11.7.0_515.43.04_linux.run # 編輯環境變量文件 vi ~/.bashrc #在當前行下新開一行并插入 o # 增加環境變量 export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH # 按Esc 鍵退出插入模式并保存修改 :wq # 使環境變量生效 source ~/.bashrc # 查看是否安裝成功 nvcc -V -
安裝Miniconda
wget //repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 安裝Miniconda3 bash Miniconda3-latest-Linux-x86_64.sh # 配置conda環境變量 vim /etc/profile #在當前行下新開一行并插入 o # 添加環境變量 export ANACONDA_PATH=~/miniconda3 export PATH=$PATH:$ANACONDA_PATH/bin # 按Esc 鍵退出插入模式并保存修改 :wq # 使環境變量生效 source /etc/profile # 查看是否安裝成功 which anaconda conda --version conda info -e source activate base python # 查看虛擬環境 conda env list
-
安裝cuDNN
從下載cuDNN壓縮包并上傳至GPU云主機,按照如下步驟進行安裝。
# 解壓 tar -xf cudnn-linux-x86_64-8.9.4.25_cuda11-archive.tar.xz # 進目錄 cd cudnn-linux-x86_64-8.9.4.25_cuda11-archive # 復制文件到 CUDA 庫目錄 cp ./include/* /usr/local/cuda-11.7/include/ cp ./lib/libcudnn* /usr/local/cuda-11.7/lib64/ # 訪問授權 chmod a+r /usr/local/cuda-11.7/include/* /usr/local/cuda-11.7/lib64/libcudnn* # 查看是否安裝成功 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 #返回根目錄 cd
-
安裝依賴
-
下載代碼
git clone //github.com/facebookresearch/llama.git -
在線安裝依賴
# 創建python310版本環境 conda create --name python310 python=3.10 # 查看虛擬環境列表 conda env list # 激活python310環境 source activate python310 # 切換到llama目錄 cd /opt/llama python -m pip install --upgrade pip -i //pypi.tuna.tsinghua.edu.cn/simple # 下載依賴 pip install -e . -i //pypi.tuna.tsinghua.edu.cn/simple pip install transformers -i //pypi.tuna.tsinghua.edu.cn/simple pip install numpy==1.23.1 -i //pypi.tuna.tsinghua.edu.cn/simple pip install torch==2.0.1 -i //pypi.tuna.tsinghua.edu.cn/simple pip install -U bitsandbytes -i //pypi.tuna.tsinghua.edu.cn/simple # 下載peft git clone //github.com/huggingface/peft.git # 傳到離線服務器上切換分支,安裝特定版本peft cd peft git checkout 13e53fc # 安裝peft pip install . -i //pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn注意安裝相關依賴的耗時較久請您耐心等待。
-
-
準備推理代碼和啟動腳本
-
進入/opt/llama目錄下
cd /opt/llama -
下載推理代碼
訪問,下載推理代碼inference_hf.py并上傳至云主機。
-
新建啟動腳本run.sh
#新建空文件 vim run.sh #文件內新增如下內容 python inference_hf.py --base_model 7b-chat --tokenizer_path 7b-chat --with_prompt --gpus 0
-
步驟四:鏡像打包
為了使您能更快的搭建模型運行環境,在完成步驟一和步驟二的操作后,我們對GPU云主機的系統盤進行了打包,生成了標準的GPU云主機鏡像。目前已經上傳至天翼云成都4、海口2資源池,您可直接對該鏡像進行使用。
鏡像打包步驟如下:
echo "nameserver 114.114.114.114" > /etc/resolv.conf
echo "localhost" > /etc/hostname
# 清除 machine-id。
yes | cp -f /dev/null /etc/machine-id
# 若有 /var/lib/dbus/machine-id,則:
# rm -f /var/lib/dbus/machine-id
# ln -s /etc/machine-id /var/lib/dbus/machine-id
cloud-init clean -l # 清理 cloud-init。若此命令不可用,則可嘗試:rm -rf /var/lib/cloud
rm -f /tmp/*.log # 清除鏡像腳本日志。
# 清理 /var/log 日志。
read -r -d '' script <<-"EOF"
import os
def clear_logs(base_path="/var/log"):
files = os.listdir(base_path)
for file in files:
file_path = os.path.join(base_path, file)
if os.path.isfile(file_path):
with open(file_path, "w") as f:
f.truncate()
elif os.path.isdir(file_path):
clear_logs(base_path=file_path)
if __name__ == "__main__":
clear_logs()
EOF
if [ -e /usr/bin/python ]; then
python -c "$script"
elif [ -e /usr/bin/python2 ]; then
python2 -c "$script"
elif [ -e /usr/bin/python3 ]; then
python3 -c "$script"
else
echo "### no python env in /usr/bin. clear_logs failed ! ###"
fi
# 清空歷史記錄。
rm -f /root/.python_history
rm -f /root/.bash_history
rm -f /root/.wget-hsts
使用大模型鏡像進行模型快速部署
步驟一:創建GPU云主機
登錄天翼云控制臺,進入彈性云主機主機訂購頁,選擇計算加速型GPU云主機,在公共鏡像中選擇大模型鏡像 LLaMA2-7B-Chat。

大模型鏡像 LLaMA2-7B-Chat最低規格推薦:p2v.2xlarge.4 8vCPU 32GB內存 單張v100 GPU。
步驟二:在線推理
登錄GPU云主機,根據如下步驟執行推理任務。
#進入/opt/llama目錄并執行sh run.sh命令
cd /opt/llama && sh run.sh
#根據提示在 ”please input your question :” 后輸入推理問題


注意大模型推理場景下不同模型多于顯卡顯存和云盤的大小都有一定要求。
