基於vllm 0.3.0部署 llama2-70B模型

寫在前面

VLLM框架升級了!

0.3.0版本,擁有更高的推理速度(實測解析input的速度+40%),支持S-LoRA(一個主模型外套多個LoRA模型),很值得升級。

本篇文章將會記錄升級過程中遇到的坑爹事情

 

硬件環境

主板:PCIE 4.0 x16

GPU:8x 3090

內存: DDR4 768GB

CPU:Intel(R) Xeon(R) Gold 6330 CPU
實測中,VLLM環境下,對CPU和主板PCIE帶寬的要求都較高,這兩個部分儘量不要省錢。

這裏和開deepspeed+ZeRO3的訓練基本上表現出了一樣的問題?(瓶頸不在GPU而是在PCIE帶寬上)

 

環境安裝

爲了更好地兼容其他的環境,本次採用venv進行安裝。

VLLM 0.3.0版本中,由於使用了Python 3.9的特殊語法,因此需要一個python 3.9的環境。

但是我其他的代碼,都運行在python 3.8的環境中,因此,我需要先安裝python 3.9

1 apt install python3.9
2 python3.9 --version
3 apt install python3.9-venv

第一行代碼爲安裝python3.9

第二行代碼爲輸出當前python3.9的版本(用於驗證是否安裝正確)

第三行爲安裝python3.9-venv,需要專門安裝對應版本的venv環境

接着,我們安裝一個所需的venv環境

1 python3.9 -m venv venv-vllm
2 venv-vllm/bin/pip install wheel
3 venv-vllm/bin/pip install vllm==0.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

第一行代碼爲新建一個venv環境(python 3.9下),注意必須加3.9,不然你會得到一個3.8版本的venv

第二行爲在這個venv環境中,安裝wheel(一個補丁,似乎在這種情況下必須額外安裝wheel,不然無法進行一些包的安裝)

第三行爲安裝vllm,且使用清華的鏡像(實測可以跑到30MB/s的下載速度)

我們就安裝好了一個vllm的venv環境,且不和其他的環境衝突

 

運行代碼

venv-vllm/bin/python -m vllm.entrypoints.openai.api_server \
    --model="/hy-tmp/tigerbot-70b-chat-v4-4k" \
    --tensor-parallel-size 8 \
    --served-model-name "tigerbot" \
    --chat-template /hy-tmp/tiger_template.jinja \
    --gpu-memory-utilization 0.85 \
    --host 0.0.0.0 \
    --port 8080 

大家可以來看這一篇文章,講解了每個參數的含義,以及硬件環境:8卡3090GPU雲服務器上採用VLLM部署中文llama2-70b模型及OpenAI格式接口 - AlphaInf - 博客園 (cnblogs.com)

命令整體上和之前的幾乎一致,不同點主要有兩點:

1. 採用了venv-vllm的環境運行

2. 額外設置了--gpu-memory-utilization 0.85的參數,這個參數默認是0.9,實測如果採用默認值會爆(bug?)

我們就可以開始運行了。

 

啓用LoRA

此處未完待續

下面是一些關於LoRA的吐槽。

vllm 0.3.0似乎並沒有讓OpenAI接口實現LoRA,需要手動進行一些調整,documentation也並沒有及時地進行更新,所以這一部分還在摸索。

個人感覺,可以學習OpenAI,通過不同的model_name來實現不同的LoRA模型的訪問,甚至還可以增加動態上傳LoRA adapter的機制?

挖個配置LoRA的坑,後續回來填。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章