qwen模型 MindIE PD分离部署问题定位

简介: 使用MindIE提供的PD分离特性部署qwen2-7B模型,使用k8s拉起容器,参考这个文档进行部署:https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0060.html,1个Prefill,1个Decode。最后一步测试推理请求的时候,出现报错:model instance has been finalized or not initialized。

背景

使用MindIE提供的PD分离特性部署qwen2-7B模型,使用k8s拉起容器,参考这个文档进行部署:https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0060.html,1个Prefill,1个Decode。

最后一步测试推理请求的时候,出现报错:model instance has been finalized or not initialized。

排查过程

不管发生什么,不要慌,首先要看日志,重点看看有没有fail、error等关键字。

P节点和D节点都是用mindieservice-daemon起的服务,最后打印了”daemon start success!“,看上去没有问题,但是用npu-smi info查看昇腾卡的显存占用,发现没有显存被占用,说明模型没有加载,和上面的报错信息逻辑对上了。

于是继续看controller和coordinator的启动日志。其实有一定经验后,通过”model instance has been finalized or not initialized“就知道应该是controller出问题了,因为controller负责PD身份决策与下发,coordinator是数据面入口,用于对用户的请求输入进行调度。果然,在controller的日志里面发现这一一行Error日志:IsValidServer: server ip 10.xxx has invalid device num。这说明,controller在尝试分配P或者D的时候,发现某个节点上没有可用的device。由于device的信息是在rank_table文件中配置的,所以下一步需要检查rank_table文件。

果然,打开rank_table文件一看,发现rank_table文件中没有device字段!这样的话controller广播给P和D的rank_table中就缺失了device信息,导致P和D的server启动找不到昇腾卡。

根因找到了就好办了。

解决方案

对开发者最友好的方案,当然是修改MindIE镜像 /usr/local/Ascend/mindie/latest/mindie-service/examples/kubernetes_deploy_scripts/gen_ranktable_helper 目录下的gen_global_ranktable.py文件。但是为了快速解决问题,我们手动获取device字段的信息,再添加到rank_table中。

device字段的格式如下:

"device":[
{
"device_id":0,
"device_ip":"xxx.xxx.xxx.xxx",
"device_logical_id":"0"
}
]

由于客户使用了k8s进行容器化部署,而device的device_ip信息在宿主机的/etc/hccn.conf文件中,所以我们可以在创建容器的时候,把宿主机的/etc/hccn.conf挂载进容器,然后在容器中使用npu-smi info命令查看容器中的卡号(每个容器挂载了1张卡),再根据卡号和/etc/hccn.conf获取卡的device_ip。由于容器中只有1张卡,device_logical_id就是取0。

通过上面的方法获取到P和D的device信息后,再添加到rank_table文件中,重新启动。重新启动后,有个新的报错”read ./conf/model_config/qwen2-b.json failed“,这个报错比较常见,把文件权限修改成640就可以了。再重新启动,可以看到controller中有日志”avaliable node 2“出现,同时可以看到P和D的日志中在加载模型,说明P和D创建成功了。

稍等一会可以看到coordinator的日志中出现”MindIE-MS coordinator is ready!!!“,说明PD分离服务部署成功了,这时候再用curl命令向coordinator节点发送推理请求,就可以得到回复了。

总结

需要清楚controller、coordinator、P server和D server节点的职责,再根据日志中的error信息和fail信息进行逐步分析。

目录
相关文章
|
6月前
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
553 2
|
5月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
653 120
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
895 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
6月前
|
自然语言处理 机器人 图形学
腾讯混元图像3.0正式开源发布!80B,首个工业级原生多模态生图模型
腾讯混元图像3.0,真的来了——开源,免费开放使用。 正式介绍一下:混元图像3.0(HunyuanImage 3.0),是首个工业级原生多模态生图模型,参数规模80B,也是目前测评效果最好、参数量最大的开源生图模型,效果可对…
1249 2
腾讯混元图像3.0正式开源发布!80B,首个工业级原生多模态生图模型
|
5月前
|
缓存 物联网 PyTorch
使用TensorRT LLM构建和运行Qwen模型
本文档介绍如何在单GPU和单节点多GPU上使用TensorRT LLM构建和运行Qwen模型,涵盖模型转换、引擎构建、量化推理及LoRA微调等操作,并提供详细的代码示例与支持矩阵。
1303 2
|
5月前
|
监控 安全 数据安全/隐私保护
55_大模型部署:从云端到边缘的全场景实践
随着大型语言模型(LLM)技术的飞速发展,从实验室走向产业化应用已成为必然趋势。2025年,大模型部署不再局限于传统的云端集中式架构,而是向云端-边缘协同的分布式部署模式演进。这种转变不仅解决了纯云端部署在延迟、隐私和成本方面的痛点,还为大模型在各行业的广泛应用开辟了新的可能性。本文将深入剖析大模型部署的核心技术、架构设计、工程实践及最新进展,为企业和开发者提供从云端到边缘的全场景部署指南。
|
5月前
|
缓存 API 调度
70_大模型服务部署技术对比:从框架到推理引擎
在2025年的大模型生态中,高效的服务部署技术已成为连接模型能力与实际应用的关键桥梁。随着大模型参数规模的不断扩大和应用场景的日益复杂,如何在有限的硬件资源下实现高性能、低延迟的推理服务,成为了所有大模型应用开发者面临的核心挑战。
|
5月前
|
存储 机器学习/深度学习 人工智能
54_模型优化:大模型的压缩与量化
随着大型语言模型(LLM)的快速发展,模型规模呈指数级增长,从最初的数亿参数到如今的数千亿甚至万亿参数。这种规模扩张带来了惊人的能源消耗和训练成本,同时也给部署和推理带来了巨大挑战。2025年,大模型的"瘦身"已成为行业发展的必然趋势。本文将深入剖析大模型压缩与量化的核心技术、最新进展及工程实践,探讨如何通过创新技术让大模型在保持高性能的同时实现轻量化部署,为企业和开发者提供全面的技术指导。

热门文章

最新文章