寫在前面
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的坑,後續回來填。