环境说明 🔗
OS: Ubuntu 22.04
GPU: A10显卡 24G
CPU: 12核
vLLM: 0.7.X
Python: 3.10
MiniConda3: lastest version
Nvidia Driver: 12.4
CUDA: 12.4
软件安装 🔗
conda 安装 🔗
mkdir -p ~/miniconda3
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
# 初始化conda
~/miniconda3/bin/conda init bash
#配置清华源
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
~/miniconda3/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
#显示检索路径,每次安装包时会将包源路径显示出来
~/miniconda3/bin/conda config --set show_channel_urls yes
~/miniconda3/bin/conda config --set always_yes True
#执行以下命令清除索引缓存,保证用的是镜像站提供的索引
~/miniconda3/bin/conda clean -i
# 显示所有镜像通道路径命令
~/miniconda3/bin/conda config --show channels
#不显示base环境
~/miniconda3/bin/conda config --set auto_activate_base false
# 使配置生效
source ~/.bashrc
#虚拟环境创建
conda create --name=vllm python=3.10
conda activate vllm
nvidia驱动安装 🔗
# 安装nvidia驱动
sudo apt-get update && sudo apt-get upgrade -y
# 必要依赖
sudo apt-get install -y dkms build-essential # 执行完成重启
# linux禁用Nouvau(如果没有需要执行下面命令)
sudo bash -c 'echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf'
sudo bash -c 'echo "blacklist lbm-nouveau" >> /etc/modprobe.d/blacklist.conf'
sudo bash -c 'echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf'
sudo update-initramfs -u # 执行完成重启
# 安装驱动 https://www.nvidia.cn/drivers 自行查找对应显卡驱动和系统版本
mkdir ~/Downloads && cd ~/Downloads
sudo dpkg -i nvidia-driver-local-repo-ubuntu2204-550.144.03_1.0-1_amd64.deb
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y cuda-drivers
# 重启服务器
cuda工具包安装 🔗
#下载地址:https://developer.nvidia.com/cuda-toolkit-archive,找到12.4.0版本
cd ~/Downloads
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo chmod a+x cuda_12.4.0_550.54.14_linux.run
sudo sh cuda_12.4.0_550.54.14_linux.run
#设置环境变量
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.4/lib64
export PATH=$PATH:/usr/local/cuda-12.4/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-12.4
source ~/.bashrc
#查看安装
nvcc --version
pytorch和vllm安装 🔗
# 安装pytorch https://download.pytorch.org/whl/torch
# torch-2.4.0+cu124-cp310-cp310-linux_x86_64.whl ,其中cu124表示cuda-12.4.0 cp310表示python-3.10
cd ~/Downloads
wget https://download.pytorch.org/whl/cu124/torch-2.4.0%2Bcu124-cp310-cp310-linux_x86_64.whl#sha256=2cb28155635e3d3d0be198e3f3e7457a1d7b99e8c2eedc73fe22fab574d11a4c
conda activate vllm
pip install torch-2.4.0+cu124-cp310-cp310-linux_x86_64.whl
pip install vLLM
vllm运行 🔗
魔搭社区方式下载 🔗
#优先使用阿里推出的魔搭下载,模型没有huggingface全面,教程地址:https://modelscope.cn/docs/home
modelscope download --model 'unsloth/DeepSeek-R1-Distill-Llama-8B' --local_dir '/home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B'
huggingface方式模型下载(备选) 🔗
from huggingface_hub import snapshot_download
model_name="unsloth/DeepSeek-R1-Distill-Llama-8B"
local_dir=r"/home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B"
# repo_id 模型id
# local_dir 下载地址
# endpoint 镜像地址
# resume_download (中断后)继续下载
snapshot_download(repo_id=model_name, local_dir=local_dir,
revision="main",
endpoint='https://hf-mirror.com', #镜像地址会限流,不建议使用较大参数模型
force_download=False)
模型调用 🔗
模型启动 🔗
启动说明:
CUDA_VISIBLE_DEVICES=0 vllm serve /home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B --port 8088 --max-model-len 16384
参数说明:
CUDA_VISIBLE_DEVICES=0:指定使用的 GPU 设备(0 表示第一块 GPU)。
/home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B:模型的实际保存路径。
--port:服务监听的端口号(可根据需要修改)。
--max-model-len:模型的最大上下文长度。
--tensor-parallel-size、-tp:多张量并行副本数量(对于 GPU)。默认值:1。
--gpu-memory-utilization:设置每张GPU的显存利用率上限,取值范围为0~1(例如:0.9表示限制为90%的显存使用)
--host 和 --port:指定服务器地址和端口。
--enforce-eager:启用即时执行模式(Eager Execution),即模型推理会在每个操作执行时立即进行,而非先构建完整的操作图。
--dtype:模型权重和激活的精度类型。可能的值:auto、half、float16、bfloat16、float、float32。默认值:auto。
--max-num-seqs:每次迭代的最大序列数。
--distributed-executor-backend=ray:指定分布式服务的后端,可能的值:ray、mp。默认值:ray(当使用超过一个 GPU 时,自动设置为 ray)。
服务启动后,可以通过访问 http://localhost:8088/docs 查看 API 文档,验证服务是否正常运行
后台启动:
nohup vllm serve /home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B --port 8088 --max-model-len 16384 --gpu-memory-utilization 0.9 > ./logs/vllm.log 2>&1 &
测试调用 🔗
curl --location 'http://101.33.248.34:8088/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "/home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B",
"messages": [
{
"role": "user",
"content": "你是谁?"
}
]
}'
open-webui访问vllm 🔗
conda create --name openwebui python=3.12
pip install open-webui -i https://mirrors.aliyun.com/pypi/simple/
# 启动
#镜像站点
export HF_ENDPOINT=https://hf-mirror.com
## 禁用OLLAMA API
export ENABLE_OLLAMA_API=False
## 设置vllm API的基础URL为本地服务器
export OPENAI_API_BASE_URL=http://localhost:8088/v1
## 设置默认模型路径
export DEFAULT_MODELS="/home/ubuntu/data/DeepSeek-R1-Distill-Llama-8B"
## 启动Open WebUI
open-webui serve
# 后台启动
nohup open-webui serve > ./logs/open-webui.log 2>&1 &