作者​:昇腾实战派
知识地图​:https://blog.csdn.net/Lumos_Lovegood/article/details/161601003

背景概述

在Atlas 800I A3设备上部署DeepSeek-V3.1模型时,发现模型推理生成内容语义连贯但与用户请求完全无关,即出现“答非所问”现象。本文基于实际排查过程,系统分析问题根因,并提出可用的优化方案。

问题现象

在8机Atlas 800I A3环境中,基于vllm-ascend采用PD分离部署DeepSeek-V3.1模型,推理过程中:生成内容语义通顺但与输入无逻辑关联(即“答非所问”);问题在多轮测试中稳定复现,排除随机性干扰。

环境配置信息:
硬件:Atlas 800I A3
模型: Eco-Tech/DeepSeek-V3.1-Terminus-w8a8-mtp-QuaRot
推理框架:vLLM-Ascend v0.18.0rc1-a3

问题分析

1. 模型权重验证

  • 检查模型配置文件 config.json,确认 torch_dtype 正确设置为 bfloat16,无异常;
  • 对所有节点模型权重进行哈希校验,结果一致,排除文件损坏或下载错误;

2. 推理行为复现与初步推断

通过修改输入输出参数排除随机性干扰。
输入请求(如“你好吗”),模型输出长度放宽限制(max_tokens=5000),此时推理结果依然答非所问,且结束原因为 length打满上限;初步判定问题可能出在 KV Cache 的存储或读取环节,导致推理上下文缺失。

3. Mooncake配置修正尝试

检查服务启动参数中, --kv-transfer-config 配置的 engine_id 和 kv_port 存在错误;修正上述配置项后,现象未改变,不是 Mooncake 配置错误导致的问题。

4. 日志分析与超时排查

分析业务日志与系统 plog,定位通信链路异常:

  • 业务日志中存在 mooncake transfer failed,确认 KV Cache 传输失败;
  • plog日志上有HCCL 建链超时,经 IP 对应设备分析,失败链路均位于 P 节点与 D 节点之间。

尝试做如下调优:

  • 将 HCCL_EXEC_TIMEOUT 和 HCCL_CONNECT_TIMEOUT 提升至 600 秒,仍有超时;
  • 将 ASCEND_TRANSFER_TIMEOUT 和 ASCEND_CONNECT_TIMEOUT 提升至 10000 微秒,仍有超时。

5. 二分隔离测试

通过减少节点数量定位故障范围,排查是否为特定机器的裸机环境问题。
现场部署方案为:4×1P+1×4D。分别在 P 节点所在的前四机和 D 节点所在的后四机上,独立运行四机 PD 分离服务。
前 4 台机器(原 P 节点)复现相同异常,后 4 台机器(原 D 节点)工作正常。
问题并非由软件版本或模型本身引起,需聚焦于P 节点所在机器的裸机环境差异。

根因定位

检查全部裸机的 NPU 底层 TLS 校验配置。

for i in {0..15}; do hccn_tool -i $i -tls -g; done | grep switch

结果显示:2台P节点所在的机器上,TLS未置零(处于开启状态),D节点及其他节点均已置零(关闭状态)。

  1. 服务拉起阶段:由于该部署方案中单个 P 实例均部署在单机内,未触发跨机建链,因此服务启动正常,未报错。
  2. 运行推理阶段:Mooncake 尝试从 P 节点拉取 KV Cache 时,由于P与D节点间TLS 配置不一致,导致 HCCL 建链失败,无法成功拉取 KV Cache。
  3. vLLM/vLLM-Ascend 误判 KV Cache 拉取成功,使用错误的/空的上下文状态进行解码,最终导致生成内容与请求无关,出现“答非所问”现象。

解决方案

统一集群内所有节点的TLS配置,确保通信参数一致:

for i in {0..15}; do hccn_tool -i $i -tls -s enable 0; done

总结

在 vLLM PD 分离部署场景下,若出现回答内容与请求无关或精度异常问题,需检查日志中是否存在 mooncake transfer failed 报错。若存在上述报错,通常对应 HCCL 建链失败,需要进一步排查相应的网路问题。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐