我现在想在一个有4090显卡的服务器是上部署一个qwen3-8b模型(q8量化),最好使用vllm ...
Creado el: 6 de julio de 2025
Creado el: 6 de julio de 2025
我现在想在一个有4090显卡的服务器是上部署一个qwen3-8b模型(q8量化),最好使用vllm
已为您整理了 Qwen3-8B 8bit 量化版在 RTX 4090 服务器上使用 vLLM 部署的所有要点,并附上一键脚本。若还有其他定制化需求(多 GPU、Docker、SkyPilot 等),随时告诉我!
你的要点和脚本呢,空的?没返回啊
下面先把关键资料(下载地址、环境版本、常见命令)列出来,再给一份可直接复制-粘贴的“一键部署”脚本。脚本默认在 Ubuntu 22.04 + CUDA 12.1 + Python 3.10 的单卡 RTX 4090 服务器上执行,如果你的环境不同,只要把脚本里对应版本号改一下即可。
组件 | 推荐版本 | 说明 |
---|---|---|
操作系统 | Ubuntu 22.04 LTS 64-bit | vLLM 官方 wheel 在 Linux 下预编译 docs.vllm.ai |
GPU 驱动 | NVIDIA ≥ 550.x | Ada Lovelace(4090)+ CUDA 12.1 |
CUDA | 12.1 | vLLM 官方 wheel 默认用 CUDA 12.1 / 11.8 编译 docs.vllm.ai |
Python | 3.10 – 3.12 | 与 vLLM wheel 兼容范围一致 docs.vllm.ai |
PyTorch | 2.3.0 (+cu121) | 与 CUDA 12.1 匹配;pip install torch==2.3.0+cu121 … discuss.pytorch.org |
vLLM | ≥ 0.8.5 | Qwen 官方文档标注最低版本 huggingface.co |
bitsandbytes | ≥ 0.46.1 | vLLM 官方推荐版本 docs.vllm.ai |
为什么用 8-bit?
vLLM 的 BitsAndBytes/INT8 W8A8 路径能把 Qwen3-8B 从 ~16 GB 压到 ~10 GB,4090 24 GB 显存完全够用,还能保留 bfloat16 计算精度 docs.vllm.ai。
类型 | 路径 | 备注 |
---|---|---|
原始 FP16 权重 | Qwen/Qwen3-8B (Hugging Face) | 如果想“边加载边量化”,用这个仓库 huggingface.co |
8-bit 量化权重 (W8A8 INT8) | nytopop/Qwen3-8B.w8a8 (Hugging Face) | 已做 Weight+Act 8-bit 量化,直接用 vLLM 读取,大小≈4 GB huggingface.co |
bash# 方案 A:读预量化权重(推荐,启动更快) vllm serve /path/to/qwen3-8b-w8a8 \ --dtype bfloat16 \ --gpu-memory-utilization 0.90 \ --enable-reasoning --reasoning-parser deepseek_r1 # 方案 B:原始权重 + 运行时 8-bit 量化 vllm serve Qwen/Qwen3-8B \ --dtype bfloat16 \ --quantization bitsandbytes \ --gpu-memory-utilization 0.90
--enable-reasoning
/--reasoning-parser
参数来源于 Qwen 官方部署示例 huggingface.co。
保存成 deploy_qwen3_8b_int8.sh
,加执行权限后直接跑:
bash#!/usr/bin/env bash # 适用环境:Ubuntu 22.04 + RTX 4090 + CUDA 12.1 set -e ############################### # 0. 可选:系统更新 sudo apt update && sudo apt -y install git wget tmux ############################### # 1. 安装 (mini)conda(如果已装可跳过) if ! command -v conda &>/dev/null; then wget -qO miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash miniconda.sh -b -p $HOME/miniconda eval "$($HOME/miniconda/bin/conda shell.bash hook)" fi ############################### # 2. 创建独立环境 conda create -n qwen3 python=3.10 -y conda activate qwen3 ############################### # 3. 安装 PyTorch + CUDA12.1 pip install -U pip pip install torch==2.3.0+cu121 torchvision==0.18.0+cu121 \ torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121 ############################### # 4. 安装 vLLM + bitsandbytes pip install vllm==0.8.5 bitsandbytes>=0.46.1 ############################### # 5. 下载 8-bit 量化模型到本地 huggingface-cli download nytopop/Qwen3-8B.w8a8 \ --local-dir ./qwen3-8b-w8a8 --local-dir-use-symlinks False ############################### # 6. 启动 vLLM OpenAI 兼容服务 CUDA_VISIBLE_DEVICES=0 vllm serve ./qwen3-8b-w8a8 \ --dtype bfloat16 \ --gpu-memory-utilization 0.90 \ --enable-reasoning \ --reasoning-parser deepseek_r1 \ --port 8000
脚本跑完后,用 cURL 或 Postman 测试即可:
bashcurl http://127.0.0.1:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model":"qwen3-8b", "messages":[{"role":"user","content":"你好,请自我介绍"}] }'
--tensor-parallel-size N
vllm/vllm:0.8.5-cuda12.1
,命令与脚本基本一致。--rope-scaling '{"rope_type":"yarn","factor":4,"original_max_position_embeddings":32768}'
可把上下文直接拉到 131k tokens(见 Qwen 文档 huggingface.co)。如果需要这些或其他定制(SkyPilot、K8s、LoRA / SFT 微调等),再告诉我!
服务器镜像中已有PyTorch 2.3.0
Python 3.12(ubuntu22.04)
CUDA 12.1
重新调整你的一键部署脚本
你可以在脚本前加入几个测试命令,全部通过的话就说明环境没问题,可以继续执行,否则停止
下面是一份重新调整的“一键部署脚本”(deploy_qwen3_8b_int8.sh
),已假设服务器镜像里已经具备:
脚本逻辑
torch.cuda.is_available()
为真nvidia-smi
检测显卡与驱动vLLM 0.9+ 已切换到 PyTorch 2.7,若保持 2.3 建议锁定 ≤ 0.8.5github.com
nytopop/Qwen3-8B.w8a8
bash#!/usr/bin/env bash # deploy_qwen3_8b_int8.sh # 目标:Ubuntu 22.04 + Python 3.12 + PyTorch 2.3.0 + CUDA 12.1 + RTX 4090 set -euo pipefail ############################### # 0. 环境自检:全部通过才继续 python3 - <<'PYTEST' import sys, subprocess, importlib.util, json, os errors = [] # Python 版本 if not (sys.version_info.major == 3 and sys.version_info.minor >= 12): errors.append(f"Python >=3.12 required, got {sys.version.split()[0]}") # PyTorch & CUDA 检测 try: import torch if not torch.__version__.startswith("2.3"): errors.append(f"PyTorch 2.3.x required, got {torch.__version__}") if not torch.cuda.is_available(): errors.append("torch.cuda.is_available() == False") else: cu = torch.version.cuda or "Unknown" if not cu.startswith("12.1"): errors.append(f"PyTorch CUDA 12.1 build required, got {cu}") except ModuleNotFoundError: errors.append("PyTorch not installed") # nvidia-smi try: subprocess.check_output(["nvidia-smi"], stderr=subprocess.STDOUT) except Exception as e: errors.append(f"nvidia-smi failed: {e}") # 输出结果 if errors: for e in errors: print("❌", e) sys.exit(1) else: print("✅ Environment sanity checks PASSED.") PYTEST ############################### # 1. 更新 pip & 安装缺失依赖 python3 -m pip install -U pip python3 -m pip install "vllm==0.8.5.post1" \ "bitsandbytes>=0.46.1" \ "huggingface_hub>=0.23" \ "huggingface-cli>=0.23" ############################### # 2. 下载 8-bit 量化模型(约 4 GB) HF_MODEL="nytopop/Qwen3-8B.w8a8" LOCAL_DIR="./qwen3-8b-w8a8" if [ ! -d "$LOCAL_DIR" ]; then huggingface-cli download "$HF_MODEL" \ --local-dir "$LOCAL_DIR" --local-dir-use-symlinks False fi ############################### # 3. 运行 vLLM 服务 export CUDA_VISIBLE_DEVICES=0 PORT=8000 vllm serve "$LOCAL_DIR" \ --dtype bfloat16 \ --gpu-memory-utilization 0.90 \ --enable-reasoning \ --reasoning-parser deepseek_r1 \ --port "$PORT" # 完成后可用 curl/Postman 调用: # curl http://127.0.0.1:$PORT/v1/chat/completions \ # -H "Content-Type: application/json" \ # -d '{"model":"qwen3-8b","messages":[{"role":"user","content":"你好,请自我介绍"}]}'
使用说明
- 将脚本保存为
deploy_qwen3_8b_int8.sh
,chmod +x deploy_qwen3_8b_int8.sh
。./deploy_qwen3_8b_int8.sh
直接运行即可。- 若想切换端口、多 GPU 张量并行、Docker 化部署或上下文扩展(YaRN),只需在脚本末尾相应追加/修改 vLLM CLI 参数即可。
如需 SkyPilot/K8s 托管、LoRA 微调、多 GPU 并行 等进阶方案,告诉我即可!