这篇文章记录的是在本地 GPU 服务器上部署 MiniMax 大模型服务的一套实践流程,目标是把模型稳定跑起来,并以 OpenAI 兼容接口的方式提供调用能力。

整体过程包括模型下载、运行环境准备、systemd 托管、接口验证,以及用 vLLM 自带工具做一轮基础压测。重点不在概念,而在于把一套可复用的部署链路整理清楚。

一、准备模型与运行环境

先安装 ModelScope

pip install modelscope

然后把模型下载到本地。下面以 Minimax-M2.5 为例:

modelscope download \
  --model Minimax-M2.5 \
  --local_dir /opt/Minimax-M2.5

接着准备一个独立的 Python 虚拟环境,用来运行 vLLM:

python3 -m venv /home/service-user/vllm-env
source /home/service-user/vllm-env/bin/activate
pip install --upgrade pip
pip install vllm
pip install -U lmcache

二、配置 LMCache

在长上下文和多并发场景下,KV Cache 的管理会直接影响推理服务的稳定性。LMCache 可以看作 vLLM 之外的一层缓存扩展能力,主要价值在于缓解显存压力、提升缓存复用效率,并让服务在复杂请求场景下更稳。

先创建配置目录和配置文件:

sudo mkdir -p /etc/lmcache
sudo nano /etc/lmcache/lmcache_config.yaml

配置示例如下:

chunk_size: 256
local_cpu: true
max_local_cpu_size: 16
reserve_local_cpu_size: 32
enable_lazy_memory_allocator: true
lazy_memory_initial_ratio: 0.2
lazy_memory_expand_trigger_ratio: 0.5
lazy_memory_step_ratio: 0.1
lazy_memory_safe_size: 8

三、安装 CUDA Toolkit

如果当前机器已经安装了可用的 NVIDIA Driver,这里只安装 CUDA Toolkit 即可,不需要重新装驱动:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install -y cuda-toolkit-12-4

安装完成后可以简单确认一下:

/usr/local/cuda-12.4/bin/nvcc --version

这一组命令只会安装 Toolkit,不会主动覆盖系统现有的显卡驱动。

四、通过 systemd 托管 vLLM 服务

为了让模型服务具备开机自启、异常重启和日志可追踪能力,建议直接交给 systemd 管理。

创建服务文件:

sudo nano /etc/systemd/system/vllm-llm.service

如果你是部署 Minimax-M2.5 这类大模型,下面这份启动参数会更贴近真实运行配置:

[Unit]
Description=vLLM Service for MiniMax
After=network.target

[Service]
User=root
WorkingDirectory=/home/service-user
Environment=PYTHONUNBUFFERED=1
Environment=CUDA_VISIBLE_DEVICES=0,1,2,3
Environment=PATH=/usr/local/cuda-12.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Environment=LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64
Environment="LMCACHE_CONFIG_FILE=/etc/lmcache/lmcache_config.yaml"
Environment="PYTHONHASHSEED=0"

ExecStart=/home/service-user/vllm-env/bin/python -m vllm.entrypoints.openai.api_server \
--model /opt/Minimax-M2.5 \
--served-model-name Minimax-M2.5 \
--host 0.0.0.0 \
--port 8090 \
--tensor-parallel-size 4 \
--trust-remote-code \
--enable-expert-parallel \
--gpu-memory-utilization 0.90 \
--swap-space 4 \
--max-num-batched-tokens 8192 \
--max-num-seqs 12 \
--max-model-len 131072 \
--kv-cache-dtype fp8 \
--enable-prefix-caching \
--enable-chunked-prefill \
--enable-auto-tool-choice \
--tool-call-parser minimax_m2 \
--reasoning-parser minimax_m2 \
--api-key YOUR_API_KEY \
--kv-transfer-config '{"kv_connector":"LMCacheConnectorV1Dynamic","kv_role":"kv_both","kv_connector_module_path":"lmcache.integration.vllm.lmcache_connector_v1"}'

Restart=on-failure
RestartSec=10
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

其中需要按实际环境调整的主要有:

  • 虚拟环境路径
  • 模型目录与模型别名
  • 监听端口与 API Key
  • GPU 数量与张量并行参数
  • 是否启用 expert parallel、tool parser 和 reasoning parser

五、启动并验证服务

sudo systemctl daemon-reload
sudo systemctl start vllm-llm.service
sudo systemctl enable vllm-llm.service
sudo systemctl status vllm-llm.service
sudo journalctl -u vllm-llm.service -f

接口验证可以先从最简单的模型列表接口开始:

curl http://127.0.0.1:8090/v1/models \
  -H "Authorization: Bearer YOUR_API_KEY"

如果这里已经能返回模型信息,说明本地推理服务和鉴权链路都已经打通。

六、准备 vLLM 压测工具

vllm bench 是 vLLM 自带的压测工具,所以核心前提其实很简单:有一个可用的 vLLM 环境。

如果你打算在独立环境中做压测,可以额外准备一个 benchmark 虚拟环境:

python3 -m venv /home/service-user/vllm-bench-env
source /home/service-user/vllm-bench-env/bin/activate
pip install --upgrade pip
pip install vllm

随后确认工具已经可用:

vllm bench serve --help

如果你不想单独建环境,也可以直接复用前面部署服务时使用的 vllm-env

七、使用 vLLM 做基线压测

下面是一组对齐 Minimax-M2.5 服务配置的基线压测命令:

export API_KEY='YOUR_API_KEY'

source /home/service-user/vllm-bench-env/bin/activate

vllm bench serve \
  --backend openai-chat \
  --base-url http://127.0.0.1:8090 \
  --endpoint /v1/chat/completions \
  --model Minimax-M2.5 \
  --tokenizer /opt/Minimax-M2.5 \
  --dataset-name random \
  --random-input-len 1024 \
  --random-output-len 256 \
  --num-prompts 1000 \
  --request-rate 100 \
  --max-concurrency 100 \
  --disable-tqdm \
  --percentile-metrics ttft,tpot,itl,e2el \
  --metric-percentiles 50,90,95,99 \
  --save-result \
  --result-filename vllm_benchmark_result.json \
  --header Authorization="Bearer $API_KEY"

这组参数最值得关注的几个指标包括:

  • TTFT:首 token 延迟
  • TPOT:每个输出 token 的平均耗时
  • ITL:token 间延迟
  • E2EL:端到端总耗时

实际压测时,建议从较低并发开始,逐步提高 request-ratemax-concurrency,同时观察显存占用、GPU 利用率、CPU 占用以及服务日志变化,这样更容易找到当前机器的稳定区间。

八、收尾建议

如果目标只是“把服务先跑起来”,那么上面的流程已经够用;如果目标是长期稳定运行,那么还建议继续补几项工作:

  • 反向代理与 TLS
  • 日志轮转
  • 监控与告警
  • 显存与并发的调优记录

本地化部署的重点,很多时候不只是模型能不能跑,而是它能不能稳定、可控、可重复地跑。这也是为什么除了启动命令本身,systemd、缓存和压测同样值得认真整理。

标签: vllm, lmcache, 大模型, 压测, 推理服务

添加新评论