在本地部署 MiniMax 大模型服务
这篇文章记录的是在本地 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-rate 和 max-concurrency,同时观察显存占用、GPU 利用率、CPU 占用以及服务日志变化,这样更容易找到当前机器的稳定区间。
八、收尾建议
如果目标只是“把服务先跑起来”,那么上面的流程已经够用;如果目标是长期稳定运行,那么还建议继续补几项工作:
- 反向代理与 TLS
- 日志轮转
- 监控与告警
- 显存与并发的调优记录
本地化部署的重点,很多时候不只是模型能不能跑,而是它能不能稳定、可控、可重复地跑。这也是为什么除了启动命令本身,systemd、缓存和压测同样值得认真整理。