记录在 NVIDIA DGX Spark 中使用 [[vLLM]] 部署 [[Qwen3.5]] 大模型时的环境配置和在国内网络下的资源下载,以防忘记。
另外在写的时候才发现 uv 也有 uvx 命令了,这样一些临时脚本直接用 uvx 执行就行了,方便许多。
环境准备
显卡驱动
等开机配置和更新完成进入桌面后,先通过 [[nvidia-smi]] 命令查看显卡驱动是否已经安装(默认都已经安装):
nvidia-smi如果正确返回表示正常:
+-----------------------------------------------------------------------------------------+| NVIDIA-SMI 580.82.09 Driver Version: 580.82.09 CUDA Version: 13.0 |+-----------------------------------------+------------------------+----------------------+| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. || | | MIG M. ||=========================================+========================+======================|| 0 NVIDIA GB10 Off | 0000000F:01:00.0 Off | N/A || N/A 60C P0 12W / N/A | Not Supported | 2% Default || | | N/A |+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=========================================================================================|| 0 N/A N/A 62018 C VLLM::EngineCore 70109MiB |+-----------------------------------------------------------------------------------------+如果报错 Command 'nvidia-smi' not found,则先通过 apt 命令安装 NVIDIA 显卡驱动:
# 先查看可用版本apt search nvidia-driver | grep "nvidia-driver-5"
# 然后执行安装sudo apt install nvidia-driver-570待安装完成后重启系统:
sudo rebootDocker 环境
[[docker]] 同样如此,先确认是否安装:
docker --version# 正常返回:Docker version 28.3.3, build 980b856
# 再查看 Compose 是否安装docker compose version# 正常返回:Docker Compose version v2.39.1如果没有安装参考笔记 [[docker]],如果已安装直接修改 docker 权限:
sudo usermod -aG docker $USER操作完成后退出终端重新进入,就可以用普通用户的权限执行 docker 命令了。
修改镜像源
在国内使用还需要额外修改 Docker 镜像源:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ "https://docker.1ms.run" ]}EOF修改完成后执行 sudo systemctl restart docker 让配置生效。
安装运行时库
为了 Docker 能正确识别到显卡,还需要额外安装 [[nvidia-container-toolkit]],先配置存储库:
curl -fsSL https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list然后更新软件包并安装 nvidia-container-toolkit:
sudo apt update && sudo apt install nvidia-container-toolkit -y如果 apt update 时出现以下报错:
W: GPG 错误:https://workbench.download.nvidia.com/stable/linux/debian default InRelease: 下列签名无效: EXPKEYSIG CD63F8B21266DE3C svc-workbench [email protected] E: 仓库 “https://workbench.download.nvidia.com/stable/linux/debian default InRelease” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
先更新密钥,然后再重新运行 sudo apt update && sudo apt install nvidia-container-toolkit -y:
curl -fsSL https://workbench.download.nvidia.com/stable/linux/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/ai-workbench-desktop-key.gpg集成到 Docker 配置中:
sudo nvidia-ctk runtime configure --runtime=docker重启 Docker 并验证:
sudo systemctl restart dockerdocker info | grep -i runtime正常返回 Default Runtime: runc。
资源下载
无论是镜像还是模型都比较大,下载耗时,建议在 [[tmux]] 中执行对应命令。
vLLM 镜像
对于 Qwen 3.5 模型,必须使用 nightly 镜像(截止 2026-03 月):
docker pull vllm/vllm-openai:nightly镜像有 20 G,会比较花时间。
下载 Qwen3.5 模型
安装 [[uv]] 包管理器用于执行 [[huggingface_hub]] 下载模型:
# 安装 uvcurl -LsSf https://astral.sh/uv/install.sh | sh安装完成后先设置环境变量加速下载:
export HF_HUB_DOWNLOAD_TIMEOUT=300export HF_ENDPOINT=https://hf-mirror.com然后直接通过 uvx 执行 hf 命令下载 Qwen 3.5 模型:
uvx hf download Qwen/Qwen3.5-122B-A10B-GPTQ-Int4hf 是 huggingface-hub 最新的命令行工具,替代原有的 huggingface-cli 命令。
模型下载完成后默认保存在 ~/.cache/huggingface 目录(与下文 Docker 挂载路径一致),非必要不建议修改。
部署 Qwen
因为实际使用中不需要太长的上下文,而且也不需要 thinking,因为对这两方面都进行了限制:
services: vllm: container_name: vllm restart: unless-stopped image: vllm/vllm-openai:nightly runtime: nvidia ports: - "8000:8000" volumes: - ${HOME}/.cache/huggingface:/root/.cache/huggingface environment: - HF_HUB_OFFLINE=1 - CUDA_VISIBLE_DEVICES=0 command: - Qwen/Qwen3.5-122B-A10B-GPTQ-Int4 - --tensor-parallel-size=1 - --quantization=moe_wna16 - --api-key=${VLLM_API_KEY} - '--default-chat-template-kwargs={"enable_thinking": false}' - --enable-prefix-caching - --max-num-batched-tokens=16384 - --max-model-len=8192 - --gpu-memory-utilization=0.93 - --mm-encoder-tp-mode=data - --mm-processor-cache-type=shm ipc: host shm_size: "16gb" logging: driver: json-file options: max-size: "100m"DGX Spark 如果在使用过程中如果 OOM,可以先尝试加上 swap,如果不行再降 --gpu-memory-utilization:
sudo fallocate -l 32G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile也是出问题才发现 Spark 默认是没配置 swap 的。