一、概述
本文档记录了在 GPU 服务器上部署 NInfer 推理引擎、加载 Qwen3.8-27B-NVFP4 大模型、并以 OpenAI 兼容 API 提供服务的完整过程。系统已成功部署并通过实测验证,由 systemd 托管并设置开机自启。
二、机器配置
2.1 硬件
项目 配置
主机名 guoxizheng-System
IP 地址 192.168.50.10
GPU 2 × NVIDIA Tesla V100-SXM2-16GB (16 GB 显存/卡, 共32GB)
GPU 互联 PCIe (PHB),无 NVLink
CPU x86_64 (多核, 支持 AVX2)
内存 15 GiB
交换分区 4.0 GiB
磁盘 约 275 GB 可用(系统分区 /)
网卡 enp0s31f6 (有线, 千兆) + wlp6s0 (无线)
2.2 软件环境
组件 版本/说明
操作系统 Ubuntu 24.04 (noble)
内核 6.8.0-147-generic
GPU 驱动 NVIDIA 580.178.04
CUDA Toolkit 12.8 (V12.8.93),安装于 /usr/local/cuda-12.8
CUDA 架构目标 sm_70 (Volta)
构建工具 CMake 3.28.3, Ninja 1.11.1, gcc/g++ 13, pkg-config
FFmpeg 6.1.1 (libavformat 60.16.100 等)
libcurl 8.5.0 (libcurl4-openssl-dev)
Python 3.12.3
CUDA 运行时 libcudart.so.12
重要约束:本机 GPU 为 Volta 架构 (sm_70),不支持 BF16 硬件运算,必须使用 FP16/NVFP4 量化;CUDA 13 已移除 Volta 编译支持,因此必须使用 CUDA 12.8。
三、参考网址
NInfer-V100-Duo 仓库(双 V100 专用推理引擎):https://github.com/plus1998/NInfer-V100-Duo
模型 Qwen3.8-27B-NVFP4-NInfer (23.7GB):https://huggingface.co/neroued/Qwen3.8-27B-nvfp4-NInfer
模型国内镜像 (hf-mirror):https://hf-mirror.com/neroued/Qwen3.8-27B-nvfp4-NInfer
CUTLASS (GPU 算子库, v4.4.2):https://github.com/NVIDIA/cutlass
CUDA 12.8 官方源 (Ubuntu 24.04):https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/
清华镜像 (Ubuntu apt):https://mirrors.tuna.tsinghua.edu.cn/ubuntu
FFmpeg 源码:https://ffmpeg.org/releases/
四、安装步骤
以下步骤在 GPU 服务器 192.168.50.10 上以 ocadmin 用户执行。SSH 示例:
ssh ocadmin@192.168.50.10
步骤 1:安装基础构建工具
sudo apt-get update
sudo apt-get install -y cmake ninja-build git curl pkg-config
步骤 2:接入 CUDA 12.8 官方源 并 安装 Toolkit
注意:必须装 12.8,不能装 13(13 不支持 Volta/sm_70 编译)。本机制造驱动 580.178.04 对应 CUDA 13.0 运行时,但 nvcc 单独装 12.8 即可并存。
添加 NVIDIA CUDA 官方源
curl -sL -o /tmp/cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i /tmp/cuda-keyring.deb
sudo apt-get update
安装 CUDA 12.8 Toolkit (不含驱动)
sudo apt-get install -y cuda-toolkit-12-8
验证 nvcc
/usr/local/cuda-12.8/bin/nvcc --version
步骤 3:安装系统开发库(FFmpeg / curl / openssl / zlib)
本机网络访问 ffmpeg.org / GitHub 等国外源不稳定,因此使用 Ubuntu 系统自带的库替代源码编译,避免在源码下载环节卡死。
sudo apt-get install -y ffmpeg libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libswresample-dev
sudo apt-get install -y libcurl4-openssl-dev
pkg-config --modversion libavformat libavcodec libavutil libswscale libcurl
步骤 4:下载 CUTLASS v4.4.2(GPU 算子库)
CUTLASS 为 header-only 库。因 GitHub 连接不稳定,提前手动下载好源码包。
mkdir -p ~/ninfer_models
curl -sL -o ~/ninfer_models/cutlass.tar.gz https://codeload.github.com/nvidia/cutlass/tar.gz/refs/tags/v4.4.2
mkdir -p ~/ninfer_models/cutlass-extract && tar -xzf ~/ninfer_models/cutlass.tar.gz -C ~/ninfer_models/cutlass-extract
解压后目录: ~/ninfer_models/cutlass-extract/cutlass-4.4.2
步骤 5:下载模型 Qwen3.8-27B-NVFP4
模型为 .ninfer 格式,约 23.7 GB,可走国内镜像 hf-mirror(速度快、稳定)。
export HF_ENDPOINT=https://hf-mirror.com
curl -C - -sL -o ~/ninfer_models/qwen3_8_27b_nvfp4.ninfer https://hf-mirror.com/neroued/Qwen3.8-27B-nvfp4-NInfer/resolve/main/qwen3_8_27b_nvfp4.ninfer
stat -c %s ~/ninfer_models/qwen3_8_27b_nvfp4.ninfer # 应等于 23719715844
步骤 6:克隆 NInfer 仓库
cd ~ && git clone --depth 1 https://github.com/plus1998/NInfer-V100-Duo.git
cd NInfer-V100-Duo
步骤 7:CMake 配置(使用系统库 + nvcc 12.8)
注意:跳过仓库自带的 build_dependencies.sh(它会去下 ffmpeg/curl 源码,网络不稳易卡)。改用系统已装好的库,并把 CUTLASS 指向本地源码。
cd ~/NInfer-V100-Duo
cmake -S . -B build-v100-duo -G Ninja -DCMAKE_BUILD_TYPE=Release
-DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.8/bin/nvcc
-DCMAKE_CUDA_ARCHITECTURES=70
-DBUILD_TESTING=OFF -DNINFER_BUILD_BENCHMARKS=OFF
-DFETCHCONTENT_SOURCE_DIR_CUTLASS=~/ninfer_models/cutlass-extract/cutlass-4.4.2
步骤 8:编译引擎
cd build-v100-duo
ninja ninfer ninfer-serve -j 8
编译成功后生成:
build-v100-duo/apps/ninfer(约 347 MB)
build-v100-duo/apps/ninfer-serve(约 349 MB)
步骤 9:配置 systemd 服务(开机自启 + 失败重启)
服务以 ocadmin 用户运行,监听 0.0.0.0:8080(局域网可访问),上下文 8192。
sudo tee /etc/systemd/system/ninfer.service > /dev/null <<“UNIT”
[Unit]
Description=NInfer V100 Duo - Qwen3.8-27B-nvfp4 engine server
After=network.target
[Service]
Type=simple
User=ocadmin
WorkingDirectory=/home/ocadmin/NInfer-V100-Duo
ExecStart=/home/ocadmin/NInfer-V100-Duo/build-v100-duo/apps/ninfer-serve /home/ocadmin/ninfer_models/qwen3_8_27b_nvfp4.ninfer --tp 2 --devices 0,1 --host 0.0.0.0 --port 8080 --max-context 8192
Restart=on-failure
RestartSec=10
StandardOutput=append:/home/ocadmin/ninfer_serve.log
StandardError=append:/home/ocadmin/ninfer_serve.log
[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable ninfer.service
sudo systemctl start ninfer.service
步骤 10:验证服务
systemctl status ninfer.service # 应显示 active (running)
curl -s http://127.0.0.1:8080/v1/models
curl -s -X POST http://127.0.0.1:8080/v1/chat/completions
-H “Content-Type: application/json”
-d ‘{“model”:“qwen3.8-27b”,“messages”:[{“role”:“user”,“content”:“你好,请自我介绍”}],’“max_tokens”:50}’
五、服务管理与常用命令
查看服务状态:systemctl status ninfer.service
查看日志:tail -f /home/ocadmin/ninfer_serve.log
重启服务:sudo systemctl restart ninfer.service
停止服务:sudo systemctl stop ninfer.service
开机自启设置:sudo systemctl enable ninfer.service
开机自启取消:sudo systemctl disable ninfer.service
六、API 使用说明
服务提供 OpenAI 兼容接口,地址为 http://192.168.50.10:8080。支持端点:
/v1/models —— 列出可用模型
/v1/chat/completions —— 对话补全
/v1/responses —— OpenAI Responses 接口
Anthropic Messages 兼容端点
模型 ID:qwen3.8-27b(auth 已禁用,无需真实 API Key)
配置 Chatbox 客户端
模型提供方:OpenAI API
API 域名 / Base URL:http://192.168.50.10:8080/v1
API Key:任意(如 sk-123456,服务不校验)
模型名称:qwen3.8-27b
七、常见问题与说明
没有 NVLink 的影响:NInfer 专为双 V100 + NVLink 设计。本机无 NVLink,运行时会检测到 P2P 不可用,自动降级为 CPU 中介的跨卡通信(CUDA host-staged copies)。功能正常,但双卡协同性能相比 NVLink 有折扣。日志见 “direct P2P disabled”。
首次对话慢:模型加载约需 40~50 秒,服务启动后的首次推理有预热延迟,属正常。
显存不足:当前 max-context 8192 下,加载后每卡剩余约 4.2 GiB。若需更大上下文需谨慎,详见日志中 KV capacity 提示。
CUDA 版本冲突:必须使用 CUDA 12.8 编译(sm_70),CUDA 13 会直接 FATAL_ERROR。系统驱动为 580.178.04(CUDA 13 运行时)与 nvcc 12.8 可并存。
网络下载不稳:本机访问 GitHub / ffmpeg.org / nvidia 官方源不稳,建议模型走 hf-mirror,库走 apt 国内镜像(清华),CUTLASS 提前下载好源码。
改监听地址/端口:修改 /etc/systemd/system/ninfer.service 中 ExecStart 的 --host / --port,然后 systemctl daemon-reload && systemctl restart ninfer.service。