本项目提供在CNB云构建环境中本地部署和运行MiniMax M2.1模型的完整解决方案。通过vLLM高性能推理框架或Transformers直接加载,实现无需依赖外部API的本地化大模型部署。
MiniMax M2.1是MiniMax公司开发的开源大语言模型,具备以下核心特性:
minimax-m2.1-local/ ├── .cnb.yml # CNB云构建配置 ├── download_model.py # 模型权重下载脚本 ├── run_local_inference.py # 本地推理测试脚本 ├── requirements.txt # Python依赖包 ├── models/ # 模型文件目录(下载后生成) │ └── MiniMax-M2/ │ ├── config.json │ ├── pytorch_model.bin.index.json │ ├── tokenizer.json │ └── ... ├── output/ # 输出目录(运行后生成) │ ├── inference_results.json │ └── summary_report.txt └── README.md # 项目说明文档
| 组件 | 要求 |
|---|---|
| CPU | x86_64架构,支持AVX2指令集 |
| 内存 | 32GB RAM |
| 存储 | 50GB可用空间(NVMe SSD推荐) |
| GPU | NVIDIA GPU,24GB显存 |
| CUDA | 11.8或更高版本 |
| 组件 | 配置 |
|---|---|
| GPU | 1× NVIDIA A100 (40GB/80GB) 或 2× RTX 4090 (24GB) |
| 内存 | 64GB RAM |
| 存储 | 100GB NVMe SSD |
| CUDA | 12.1或更高版本 |
在开始部署前,请确保满足以下条件:
git clone <your-repository-url>
cd minimax-m2.1-local
推荐使用conda或venv创建隔离环境:
# 使用conda
conda create -n minimax-m2 python=3.10 -y
conda activate minimax-m2
# 或使用venv
python -m venv minimax_env
source minimax_env/bin/activate # Linux/macOS
# 或
minimax_env\Scripts\activate # Windows
# 基础安装
pip install -r requirements.txt
# 国内用户使用镜像
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 验证安装
python -c "import torch; print(f'PyTorch: {torch.__version__}')"
python -c "import vllm; print(f'vLLM: {vllm.__version__}')"
MiniMax M2模型权重约45GB,可通过以下方式下载:
python download_model.py
# 设置HuggingFace镜像
export HF_ENDPOINT=https://hf-mirror.com
# 使用huggingface-cli
huggingface-cli download MiniMaxAI/MiniMax-M2 --local-dir ./models/MiniMax-M2 --local-dir-use-symlinks False
# 或使用Git
git clone https://huggingface.co/MiniMaxAI/MiniMax-M2 ./models/MiniMax-M2
pip install modelscope -q
python -c "
from modelscope import snapshot_download
snapshot_download('MiniMax/MiniMax-M2', cache_dir='./models')
"
# 启动vLLM OpenAI兼容API服务
python -m vllm.entrypoints.openai.api_server \
--model ./models/MiniMax-M2 \
--host 0.0.0.0 \
--port 8000 \
--trust-remote-code \
--dtype float16 \
--gpu-memory-utilization 0.85
# 多GPU并行(需要2张GPU)
python -m vllm.entrypoints.openai.api_server \
--model ./models/MiniMax-M2 \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 2 \
--trust-remote-code
服务启动后会显示类似以下输出:
INFO 01-19 10:00:00 api_server.py:100] vLLM version: 0.6.0 INFO 01-19 10:00:00 api_server.py:101] args: ... INFO 01-19 10:00:15 api_server.py:207] Available roles: ... INFO 01-19 10:00:15 api_server.py:208] MultiModalProjector not supported... INFO 01-19 10:00:15 api_server.py:209] Starting vLLM API server on http://0.0.0.0:8000
# 运行推理测试
python run_local_inference.py
# 或使用curl测试API
curl http://localhost:8000/v1/models
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-M2",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
],
"max_tokens": 1000
}'
在CNB平台配置云构建触发器:
CNB云构建会自动执行以下步骤:
vLLM提供OpenAI兼容的API接口,可直接使用OpenAI客户端调用:
import openai
client = openai.OpenAI(
base_url="http://localhost:8000/v1",
api_key="dummy" # 本地部署不需要真实API密钥
)
response = client.chat.completions.create(
model="MiniMax-M2",
messages=[
{"role": "system", "content": "你是一个helpful的助手"},
{"role": "user", "content": "请用Python写一个快速排序算法"}
],
max_tokens=1000,
temperature=0.7
)
print(response.choices[0].message.content)
import requests
url = "http://localhost:8000/v1/chat/completions"
payload = {
"model": "MiniMax-M2",
"messages": [
{"role": "user", "content": "解释一下什么是机器学习"}
],
"max_tokens": 500,
"temperature": 0.7
}
response = requests.post(url, json=payload)
data = response.json()
print(data["choices"][0]["message"]["content"])
# 列出可用模型
curl http://localhost:8000/v1/models
# 简单对话
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-M2",
"messages": [{"role": "user", "content": "你好"}],
"max_tokens": 100
}'
# 流式输出
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-M2",
"messages": [{"role": "user", "content": "讲个笑话"}],
"stream": true
}'
| 参数 | 说明 | 默认值 |
|---|---|---|
--model | 模型路径或名称 | 必需 |
--host | 服务监听地址 | 0.0.0.0 |
--port | 服务端口 | 8000 |
--dtype | 数据精度 | float16 |
--gpu-memory-utilization | GPU显存使用率 | 0.9 |
--tensor-parallel-size | GPU并行数量 | 1 |
--max-model-len | 最大序列长度 | 模型支持的最大值 |
--trust-remote-code | 信任远程代码 | False |
python -m vllm.entrypoints.openai.api_server \ --model ./models/MiniMax-M2 \ --host 0.0.0.0 \ --port 8000 \ --dtype float16 \ --gpu-memory-utilization 0.85 \ --max-model-len 32768
python -m vllm.entrypoints.openai.api_server \ --model ./models/MiniMax-M2 \ --host 0.0.0.0 \ --port 8000 \ --tensor-parallel-size 2 \ --dtype float16 \ --gpu-memory-utilization 0.9 \ --max-model-len 32768
python -m vllm.entrypoints.openai.api_server \ --model ./models/MiniMax-M2 \ --host 0.0.0.0 \ --port 8000 \ --dtype bfloat16 \ --gpu-memory-utilization 0.95 \ --max-model-len 65536
现象:启动服务时报错CUDA out of memory
解决方案:
--gpu-memory-utilization参数:--gpu-memory-utilization 0.7
--max-model-len参数现象:下载超时或网络错误
解决方案:
export HF_ENDPOINT=https://hf-mirror.com
pip install modelscope -q
python -c "from modelscope import snapshot_download; snapshot_download('MiniMax/MiniMax-M2')"
现象:pip安装vLLM时报错
解决方案:
pip install --upgrade pip setuptools wheel
git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e .
docker run --gpus all -v ./models:/models -p 8000:8000 vllm/vllm-openai:latest --model /models/MiniMax-M2
现象:curl请求超时或连接拒绝
解决方案:
ps aux | grep vllm curl http://localhost:8000/v1/models
# 开放8000端口
sudo ufw allow 8000
--host 0.0.0.0
现象:生成速度低于预期
解决方案:
--tensor-parallel-size <GPU数量>
--temperature 0.0 --top-p 1.0
nvidia-smi
import openai
client = openai.OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")
# 批量请求
prompts = ["问题1", "问题2", "问题3"]
responses = []
for prompt in prompts:
response = client.chat.completions.create(
model="MiniMax-M2",
messages=[{"role": "user", "content": prompt}],
max_tokens=500
)
responses.append(response.choices[0].message.content)
vLLM支持连续批处理,可自动优化吞吐量:
python -m vllm.entrypoints.openai.api_server \ --model ./models/MiniMax-M2 \ --enable-auto-tool-choice \ --tool-call-parser minimax
减少显存占用(可能影响精度):
# AWQ量化
pip install awq
vllm serve MiniMaxAI/MiniMax-M2 --quantization awq
始终使用虚拟环境,避免依赖冲突:
conda create -n minimax-m2 python=3.10 -y conda activate minimax-m2
根据GPU显存调整配置:
# 24GB显存
--gpu-memory-utilization 0.7
# 40GB显存
--gpu-memory-utilization 0.9
# 80GB显存
--gpu-memory-utilization 0.95
# 保存日志到文件
python -m vllm.entrypoints.openai.api_server ... > vllm.log 2>&1 &
# 实时查看日志
tail -f vllm.log
# 停止服务
pkill -f vllm
# 清理显存
nvidia-smi
使用systemd管理服务:
# /etc/systemd/system/vllm.service
[Unit]
Description=vLLM MiniMax-M2 Server
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/path/to/project
ExecStart=/path/to/python -m vllm.entrypoints.openai.api_server --model /path/to/models/MiniMax-M2 --host 0.0.0.0 --port 8000
Restart=on-failure
Environment="HF_ENDPOINT=https://hf-mirror.com"
[Install]
WantedBy=multi-user.target
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v1.0.0 | 2026-01-19 | 初始版本,支持CNB云构建和本地部署 |
本项目仅供学习和研究使用。MiniMax M2模型遵循其开源许可证,请查阅官方许可协议了解详情。
如有问题,请通过以下方式获取帮助:
注意:本项目仅供演示和学习使用。请确保遵守MiniMax的使用条款和开源许可证协议。模型下载可能需要较长时间(约45GB),请确保网络稳定和存储空间充足。