一、总体说明
1.1 部署简介
通过HCC集群标准化交付,能够统一规范全链路部署路径架构,明确服务部署、高性能容器、模型权重三类核心资源的分区存储路径。依托本地多块 NVMe 硬盘实现资源物理隔离与性能最优配置,全面保障大模型推理服务快速部署、秒级启动与高效稳定运行。
HCC标准交付将统一采用如下部署路径:
服务部署工作路径:/home/[模型]/
高性能容器存储路径:/mnt/nvme0n1/apptainer/
模型权重参数路径:/mnt/nvme1n1/models/
本文档以 DeepSeek 模型为例,统一设定服务部署工作路径为/home/deepseek。高性能容器与模型权重文件均存放于各物理机本地 NVMe 硬盘中,该类静态资源的读写性能,直接决定业务服务的拉起部署效率与启动加载速度。在实测中,高性能容器和模型权重分别放置在不同的NVMe硬盘中,性能最优。
核心注意事项:HCC集群采用共享目录架构,需重点监控/home目录存储容量。服务运行日志会持续增量写入。若该目录空间耗尽,将直接引发推理服务启动失败、接口响应超时等核心业务故障,需做好空间清理与容量管控。
1.2 部署路径文件说明
/home/deepseek 路径下核心文件/文件夹功能如下:
| 名称 | 类型 | 功能 |
|---|---|---|
| srun.sh | slurm启动脚本 | 模型推理服务启动脚本 |
| node.sh | shell脚本 | 模型推理服务核心配置脚本,包含单个计算节点实际环境变量、启动参数等关键配置 |
| check.sh | shell脚本 | 推理服务验证脚本,封装的curl命令,用于快速校验服务是否正常可用 |
| vllm-ascend_xxx.sif | 软链接 | 指向推理框架实际文件(路径:/mnt/nvme1n1/apptainer/vllm-ascend_xxx.sif),无需手动修改 |
| logs | 文件夹 | 存储模型推理服务运行日志,包含服务启动日志、推理请求日志、错误日志等,用于问题排查 |
| kernel_meta | 文件夹 | 存储vllm-ascend 框架运行时生成的算子缓存,属于vllm-ascend自动生成及维护,无需手动操作 |
二、模型配置修改
2.1 配置文件路径
2.1.1 模型基础配置
模型基础配置放置在/home/deepseek/srun.sh,主要参数如下:
#!/bin/bash
...
# 模型基础配置
export MODEL_NAME=DeepSeek-V4 # 模型名
export MODEL_PORT=11025 # 服务端口
export MODEL_DIR=/mnt/nvme1n1/model/DeepSeek-V4-Flash-w8a8-mtp # 本地模型权重路径
export VLLM_IMG=vllm-ascend_v0.13.0rc3.sif # 推理引擎高性能容器
...| 名称 | 含义 |
|---|---|
| MODEL_NAME | 模型推理服务对外暴露的模型名 |
| MODEL_PORT | 模型推理服务对外暴露的端口 |
| MODEL_DIR | 本地模型权重路径,默认放置在各物理机本地 NVMe 高速存储介质中 |
| VLLM_IMG | 推理引擎高性能容器 |
2.1.2 推理服务节点配置
推理服务节点配置文件:/home/deepseek/nodes.sh(以下文脚本内容为例)
#!/bin/bash
export LC_CTYPE=C.UTF-8
# 环境变量配置
export USE_MULTI_BLOCK_POOL=1
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=10
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export VLLM_USE_V1=1
export ACL_OP_INIT_MODE=1
# 启动高性能容器实例
apptainer instance start --writable-tmpfs --no-home \
-B /usr/local/sbin:/usr/local/sbin \
-B /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-B $MODEL_DIR:/model \
$VLLM_IMG deepseek
# 启动vllm推理服务
apptainer exec instance://deepseek \
vllm serve \
/model \
--served-model-name $MODEL_NAME \
--host 0.0.0.0 \
--port $MODEL_PORT \
--tensor-parallel-size 8 \
--data-parallel-size 1 \
--gpu-memory-utilization 0.92 \
--max_model_len 65536 \
--max-num-seqs 16 \
--max-num-batched-tokens 8192 \
--block-size 128 \
--async-scheduling \
--enable-expert-parallel \
--quantization ascend \
--no-enable-prefix-caching \
--trust-remote-code \
--disable-log-stats \
--chat-template /model/chat_template.jinja \
--additional-config '{"enable_cpu_binding": "true", "multistream_overlap_shared_expert": true}' \
--speculative-config '{"num_speculative_tokens": 1,"method": "deepseek_mtp"}' \
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'2.2 常用配置修改说明
修改任意配置,均需重启模型推理服务才能生效。
2.2.1 修改模型名(MODEL_NAME)
作用:指定推理服务的模型名
修改步骤:
编辑srun.sh文件,找到 export MODEL_NAME=DeepSeek-V4 字段
将 DeepSeek-V4 改为需求推理服务模型名
保存退出后,重启推理服务
2.2.2 修改服务端口(MODEL_PORT)
作用:指定推理服务对外提供访问的端口,默认 11025
修改步骤:
编辑srun.sh文件,找到 export MODEL_PORT=11025 字段
将 11025 改为目标端口(如 11026,需确保端口未被占用)
保存退出后,重启推理服务
2.2.3 替换新模型(MODEL_DIR)
作用:指定使用哪个模型提供推理服务
修改步骤:
编辑srun.sh文件,找到 export MODEL_DIR 字段
将模型权重路径改为替换的新的模型权重路径,新模型权重文件需要放置在每台服务器本地NVMe盘
保存退出后,重启推理服务
2.2.4 升级推理引擎高性能容器(VLLM_IMG)
作用:指定推理服务使用的推理引擎高性能容器
修改步骤:
下载新的推理引擎高性能容器,推荐使用cthpc工具下载,下载后的容器需要分发到每台服务器相同路径(例如:
/mnt/nvme0n1/apptainer/vllm-ascend_vXXX.sif)在
/home/deepseek目录下建立新推理引擎高性能容器的软连接
ln -s /mnt/nvme0n1/apptainer/vllm-ascend_vXXX.sif .编辑srun.sh文件,找到 export VLLM_IMG 字段
将推理引擎高性能容器改为新的推理引擎高性能容器
保存退出后,重启推理服务
2.2.5 修改上下文长度上限(--max_model_len)
作用:限定模型单次推理的上下文长度(单位:token),默认 65536 token
修改步骤:
编辑node.sh文件,找到 --max_model_len 65536 字段
按实际需求修改数值(如 32768、131072,需结合模型支持范围与 GPU 内存容量)
保存退出后,重启推理服务
2.2.6 开关前缀缓存(--enable-prefix-caching/--no-enable-prefix-caching)
作用:开启前缀缓存可提升重复前缀请求的推理速度,默认开启
修改步骤:
编辑node.sh文件,找到 --enable-prefix-caching 字段
关闭:将其改为 --no-enable-prefix-caching;开启:保持原参数不变
保存退出后,重启推理服务
2.2.7 配置聊天模板(--chat-template)
作用:指定模型推理的对话格式模板(如系统提示词、用户 / 助手角色分隔符)
配置步骤:
确保模板文件(如 chat_template.jinja)已在模型目录($MODEL_DIR,即 /mnt/nvme1n1/model/DeepSeek-V4-Flash-w8a8-mtp)
编辑node.sh文件,在 vllm serve 启动命令中添加参数:--chat-template /model/chat_template.jinja
保存退出后,重启推理服务
三、推理服务启停
3.1 服务启动
# 进入部署目录
cd /mnt/nvme0n1/deepseek
# 启动 DeepSeek 服务
sbatch srun.sh
# 查看npu运行状态
npu-smi info
# 查看实例和作业运行信息
squeue
# 示例输出
# JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
# 1 batch deepseek root R 2-00:20:40 1 master00013.2 服务停止
停止一项推理服务
# scancel [JOBID],根据上文deepseek服务的JOBID为1
scancel 1 停止所有推理服务
scancel --me四、服务验证与运维
4.1 推理服务验证
测试方法:执行check.sh脚本,向大模型问一个简单的问题,check.sh脚本内容如下:
#!/bin/bash
curl http://localhost:11025/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4",
"messages": [
{"role":"user","content":"你是谁?"}
],
"extra": {"openai_proxy":true}
}'成功响应示例:
sh check.sh
# {"id":"chatcmpl-badd14778df1c172","object":"chat.completion","created":1777055526,"model":"DeepSeek-V4","choices":[{"index":0,"message":{"role":"assistant","content":"你好!我是DeepSeek,由深度求索公司创造的AI助手。很高兴认识你!😊\n\n我是一个纯文本模型,擅长回答各种问题、协助写作、编程、分析数据等。我的一些特点包括:\n\n✨ **完全免费** - 没有任何收费计划\n📚 **超长上下文** - 支持1M上下文,可以一次性处理像《三体》三部曲那么大体量的内容\n📎 **文件上传** - 支持上传图片、PDF、Word、Excel、PPT等文件,从中提取文字信息\n🔍 **联网搜索** - 可以联网获取最新信息(需要手动开启)\n🎙️ **语音输入** - App端支持语音输入功能\n\n我的知识截止于2025年5月,会尽我所能为你提供准确、有用的帮助。有什么我可以为你做的吗?无论是学习、工作还是生活中的问题,都欢迎随时问我!💪","refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[],"reasoning":null,"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null,"token_ids":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":6,"total_tokens":196,"completion_tokens":190,"prompt_tokens_details":null},"prompt_logprobs":null,"prompt_token_ids":null,"kv_transfer_params":null}4.2 推理日志查看
若服务异常,可通过日志排查问题:
# 查看模型推理服务API及模型名
tail -f /home/deepseek/logs/log.$JOBID.out
# 查看作业输出日志
tail -f /home/deepseek/logs/log.$JOBID.${节点编号}.out
# 查看错误日志
tail -f /home/deepseek/logs/log.$JOBID.${节点编号}.err其中JOBID可通过squeue命令查看,节点编号格式为0.x,x从0开始,表示第一个节点。
五、附录
天翼云 HCC 产品文档:弹性高性能计算-产品文档-帮助中心 - 天翼云
DeepSeek-V4 模型下载地址:https://modelscope.cn/collections/deepseek-ai/DeepSeek-V4