昇腾开源仓Issue分析解答-Ascend精选(二)
昇腾开源仓Issue分析解答-Ascend精选(二)
一句话让Agent变成昇腾专家,昇腾任务轻松搞定。评测入口:请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools
总览
| 仓库 | 定位 | 收录条数 |
|---|---|---|
| MindSpeed-MM | 多模态训练框架续表:环境配套、训练 hang、checkpoint 保存与权重转换类问题 | 7 |
| MindIE-LLM | LLM 推理服务化底座,OpenAI 兼容接口、PD 分离与调度优化问题的主阵地 | 14 |
| msmodelslim | W4A8/W8A8/FP8 训练式与离线量化,版本配套与产物校验是第一坑 | 11 |
| msprobe | 训练/推理数据采集、精度比对与 API 风险分级,精度定位的手术刀 | 9 |
| mssanitizer | memcheck/racecheck/synccheck 三件套,NPU 侧的 valgrind | 6 |
| ascend-deployer | 驱动/CANN/固件一键安装,硬件适配与操作系统识别的前哨 | 3 |
MindSpeed-MM(续)
多模态训练框架续表:环境配套、训练 hang、checkpoint 保存与权重转换类问题
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #143 | Qwen2.5-VL SFT数个step后NPU利用率突降0,无报错直至超时退出 | hang排查:①排查是否卡在保存权重step;②–distributed-timeout-minutes 120与HCCL_CONNECT_TIMEOUT=7200放宽;③ASCEND_LAUNCH_BLOCKING=1后py-spy dump抓堆栈定位卡点;④关注host内存;⑤用MM充分验证的torch版本(master对应2.6.0/2.7.1)。未最终定位,同类见#146/#173。 |
| #149 | Qwen2.5-VL微调如何冻结LLM只训ViT;冻结后报优化器参数为空 | 冻结在model_xb.json对应模块freeze字段配置(默认ViT冻结);冻结LLM在pretrain_vlm.py加freeze_text_decoder=True,放开ViT则将vit模块freeze置false。坑:PP切分后若某stage全为冻结参数,该rank优化器参数为空,报learning_rate is None——需保证每个PP stage都有可训练参数。 |
| #250 | MindSpeed-MM微调后dcp转hf权重,体积恰为原始权重的两倍 | 非参数增长:原始HF权重bf16,FSDP2训练保存高精度fp32主权重,大小恰2倍;改fsdp2_config.yaml无效(不控保存dtype)。解法:升级master/26.0.0分支,原生支持保存bf16权重。社区PR#2182(2.3.0分支可选fp16)未合入,且非MoE模型走不进if num_experts分支有风险,不建议用。 |
| #334 | Qwen3.5训练报triton版本不兼容,连环触发transformers导入等错误 | 根因:pip原生triton与triton-ascend冲突;transformers须用Qwen3.5指定版5.2.0(装5.3.0会报import错)。解法:uninstall两者后重装triton-ascend(参照issue#296);官方已在install_extensions.sh固定triton 3.2.0;缺mistral-common装1.11.2。按官方脚本安装可避坑。 |
| #344 | Qwen3-Omni保存checkpoint报unexpected pos及Bad address | 根因不在模型:FSDP2+DCP多rank并行写checkpoint分片到共享文件系统,高并发I/O触发底层写异常,torch.save文件offset与实际不一致,暴露为unexpected pos/Bad address;HCCL时序使各rank更集中写入而放大问题。解法:–save改指本地磁盘即可稳定保存(实测);共享存储需先核空间与并发写入能力。 |
| #393 | 微调Qwen3.5-9B报No module named 'fla_npu’缺模块错误 | 旧版Qwen3.5的GDN实现依赖fla_npu扩展模块,未随仓发布导致缺模块。官方已重构:最新GDN代码合入master后解决,直接拉最新代码即可;环境配套CANN 8.5.2+torch/torch-npu 2.7.1+transformers 5.2.0。注意换新代码后若出现新报错属另一问题,需另行定位。 |
| #470 | 4节点分布式训练主节点HCCL通信超时,伴随fftsplus task timeout | 排查:删HCCL_IF_IP,改用HCCL_SOCKET_IFNAME/GLOO_SOCKET_IFNAME显式指定网卡(如bond1),多网卡自动选网卡易建链异常;可上调HCCL_CONNECT_TIMEOUT/HCCL_EXEC_TIMEOUT至7200。本例最终为底层驱动问题(用户自行解决);fftsplus task timeout为runtime症状,还应核查驱动/固件与CANN配套。 |
MindIE-LLM(推理服务框架)
LLM 推理服务化底座,OpenAI 兼容接口、PD 分离与调度优化问题的主阵地
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #106 | RFC:MindIE Server 低频使用接口日落(下架)计划及迁移指引 | 74 家调研(42 家不用)定于 2026-06-30 前日落 TGI 兼容 /health、/info、/generate、/generate_stream 与 Triton /v2/health/* 低频接口。处置:/generate 系引导升级 OpenAI chat 接口;/health、/v2/health/ready 改自研接口;/v1/tokenizer 保留。存量使用需尽快迁移。 |
| #140 | 边云协同 1P1D 调度 P 衔接处空泡,1000km 拉远吞吐难达标 | 边云协同 1P1D 下 Prefill batch 上限 1,两 P 衔接期云侧只能连跑 Decode,hidden 传输时延无法掩盖形成空泡。方案:放开 Prefill batch 为 2,配置 ScheduleConfig.layerwiseDisaggregated.nextPHeadPrior=true 使能 2P1D,P2 首层提前至 P1 尾层前填气泡。PR#370/#372 已合入。 |
| #167 | atb-models 多机推理中调 dist.broadcast_object_list 报错或卡死 | plog 根因:hccl multiple initialization——同一 HCCL 通信域被初始化两次,多为残留 NPU 进程未杀净;且多节点 HDK 驱动版本不一致时底层通信能力有差异,无法保证兼容。规避:服务拉起前彻底清理残留进程,多机统一驱动版本再验证;业务侧数据同步与模型推理避免复用同一通信域。 |
| #180 | 快速入门起服务报 kmcKsfMaster 等证书路径全部 invalid,跑不通 | 根因:安全配置默认开启(httpsEnable/InterCommTLSEnable 默认 true),而快速入门流程未生成 kms 密钥文件(ksfa/ksfb)与 TLS 证书(server.pem/ca.pem 等),ConfigManager 启动校验全红;坑在文档未提及需改默认值。解法:快速验证时将两项置 false,生产按安全章节生成证书再开;官方已更新资料。 |
| #202 | 纯文本 content 用数组传参报 token length=0,不兼容 openai 规范 | 旧版仅多模态允许 content 为数组,纯文本数组被解析成 0 token,报 Messages token length must be in (0,1048576], but got 0;vLLM/SGLang 均兼容致前端改造成本大。官方在 2.3.0+qwen3-32B 用数组请求实测可正常返回(疑与旧报文写法有关),兼容已排期 Q2;过渡期把纯文本 content 拼为字符串。 |
| #289 | 源码编译出的 run 包安装时报找不到 *.whl,无法完成安装 | 该仓已改用 whl 打包:bash build.sh 3rd 编三方依赖,再 pip wheel . --no-build-isolation -v 生成 whl 安装。坑:三方库可能编出 lib64 而 CMake 找 lib,报 abslConfig.cmake 缺失,进 third_party/output/abseil-cpp 软链 ln -s lib64 lib 即过。 |
| #303 | Feature:DeepSeek V3.2 支持 Ascend C 自定义算子接入 | 诉求:通过自定义算子框架接入 mlapo 与 MoE 大融合算子提升推理效率。落地:PR#570『Deepseek V3.2支持ascend c自定义算子接入』2026-03-20 合入,配套 PR#540『dsv32适配MoE大融合算子』同期合入;官方在 issue 确认『修复PR已合入』并标记 resolved。Ascend C 自定义算子接入路径自此对社区开放。 |
| #327 | PD 分离下 D 节点静默故障致 grpc 阻塞,健康检查误杀 P 节点 | D 节点静默故障时,P→D 的 grpc 通信阻塞,healthchecker 超时后将无故障的 P 节点标记为 abnormal,健康 Prefill 节点被误杀、整服务受损。修复 PR#657『修复grpc阻塞期间,healchecker将P节点识别为abnormal,导致服务被误杀』2026-03-30 合入(早期 PR#648 未合);升级含修复版本即可。 |
| #332 | claude code 发的 function call 请求,MindIE json 解析失败 | safe_io.cpp 报 MIE04E02040E Failed to parse json: depth is 11, object is 16,content 遂计 0 token。疑因工具调用请求 JSON 嵌套深、体量大(57K+),触发 safe_io 解析上限致内容丢失。官方建议直连 MindIE→LiteLLM→Claude Code 逐级排查;规避:精简 tools 降低嵌套。 |
| #337 | 结构化输出 json_schema 的 name 含中文等特殊字符即报错 | MindIE 结构化输出(xgrammar 方案)对 json_schema.name 做字符校验,中文等特殊字符被拒(dsv3 w8a8 复现)。修复 PR#658『结构化输出放开对schema名字的校验』2026-03-24 提交,暂未合入主干。规避:name 改用 ASCII 英文标识符,中文语义描述放到 schema 内部字段。 |
| #342 | Qwen-14B 接入 mooncake KVCache 池化后吞吐/时延全面恶化 | 实测单卡 64 并发吞吐 1310→521 tok/s(约-60%)。根因方向(KG 最佳实践):池化引入跨节点 KV 远程加载,传输协议开销、多次内存拷贝、带宽竞争、传输与计算未重叠,远程加载时延可能抵消命中收益。排查:msServiceProfiler 采 pd_split_kvcache.csv 看 during_time 与带宽,权衡命中率与开销。 |
| #343 | 910B 部署 qwen2.5vl,gif 图推理报 Invalid base64 url | 服务化多模态图片白名单仅 jpg/jpeg/png(对应 image/jpeg、image/png),gif 不在支持列表,传入时被按 base64 data URL 解析,直接报 Download fail: Invalid base64 url。规避:预处理将 gif 转成 jpg/png(如取首帧)再传路径;需原生 gif 支持要等版本放开格式限制。 |
| #344 | A2 双机开 SLO 调度后,SLO 统计时延与实际值不符(实际 60ms) | SLO 调度算法的时延统计存在缺陷,上报 SLO 与真实时延(实测 60ms)出现偏差。MindIE-LLM 特性列表含调度类 SLO 调度优化(docs/zh/user_guide/feature)。修复 PR#681『slo调度算法时延问题修复』2026-03-29 合入,升级后统计口径对齐;交叉验证可用 msServiceProfiler 采集调度/请求耗时核对。 |
| #347 | 特殊字符输入+mtp=3 流式输出时非停止词 token 被截断丢失 | 根因(开发者定位):mtp 流式推理一轮返回多个 token,若其中恰含 stop_token_ids 中的 token,整轮 token 都不做 decode 致输出丢失(DSV3.1 A2 大 EP+mtp=3 复现)。PR#662 已于 03-28 合入;规避:升级含修复版本或临时关 mtp。 |
msmodelslim(量化压缩工具)
W4A8/W8A8/FP8 训练式与离线量化,版本配套与产物校验是第一坑
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #8 | Qwen3-32B W4A4 FlatQuant Dynamic 量化报错 | 坑有三层:一是 transformers 版本需降 4.51.0 才能跑通训练式量化;二是产物仅 vllm-ascend 支持,MindIE 加载报 connector 错属正常;三是量化时 batch_size 只能为 1,用户改 4 后 gsm8k 从 90 掉到 80,回调 1 精度即恢复。训练后期 loss 增大是 qwen 激活值随深度增大的正常现象,不必中止。 |
| #30 | Qwen3-30B-A3B w4a8 叠加 gptq 报 ZeroDivisionError 除零 | 坑在 MoE 专家层配 gptq(ext group_size 64)当时不受支持,除零且只报笼统的 UnexpectedError Code 500。PR#117 优化该场景报错并在 gptq.md 补 MoE 模型限制说明。GPTQ 三参数语义:percdamp 是逆 Hessian 阻尼系数、block_size 分块列数、group_size 分组共享量化参数,配置不当直接异常。 |
| #59 | v1 场景权重描述文件 bias 层误记为量化方式,应为 FLOAT | ascendv1_saver 生成 quant_model_description 时 bias 层的记录逻辑有误,把本应保持浮点的 bias 写成量化类型,与 v0 产物不一致,会影响下游推理侧读取。修复 PR#164 修正描述文件中 bias 层的值,与 v0 输出对齐,2026-03-16 复测通过。教训:量化产物校验除数值外还要核对描述文件逐层 dtype。 |
| #101 | transformers 版本跨度大时依赖预检不生效无日志提示 | 根因两条:插件依赖预检需先加载插件,若依赖导入写在插件模块头会直接 ImportError 不触发预检;预检只做版本比较、无依赖存在性校验。修复 PR#234 调整 Qwen Omni 适配器模块导入位置(配套 PR#227 把 transformers 依赖移到适配器初始化后)。临时规避:依赖导入放进函数体内、版本校验写 >=0.0.0 兜底。 |
| #108 | GLM-5-FP8 量化保存时报 FileNotFoundError 找不到末片权重 | 根因在 ascendv1_save_postprocess 读 model.norm.weight 生成 rot.safetensors(解决 MTP 采信率低)时硬编码分片路径,FP8 原始权重分片布局不同导致索引失效。修复:适配器改为解析 model.safetensors.index.json 获取真实分片路径,PR#226 已合并;4 层验证 + GLM-5 BF16 回归确认无影响。 |
| #185 | Qwen3.6-35B-A3B w8a8 报 ImportError 无法导入 MoE 模型类 | 环境是 vllm-ascend v0.18.0rc1 镜像自带 transformers 4.57.6,而 Qwen3.5 系列 MoE 模型类需要更新版本。官方口径:qwen3.5 系列量化要求 transformers5.2.0,pip install transformers5.2.0 后用户实测量化成功。注意推理镜像内置版本与量化工具要求经常不一致,量化前先按模型最佳实践核对。 |
| #186 | Qwen3-30B-A3B w4a8 产物缺 W4A8_DYNAMIC,层数 0 对 62976 | 根因是 transformers v5.0.0 引入权重转换特性(PR#41580),加载时把 MoE 线性层转成 tensors,msModelSlim 匹配不到 nn.Linear,逐层量化静默漏配、描述文件全空。按 Qwen3-MOE 最佳实践装 transformers==4.51.0 即恢复。教训:命令跑成功不代表产物正确,务必 grep 校验描述文件量化层数。 |
| #192 | master 分支一键量化 Qwen3.5-27B 直接失败 | 报错点 match 语句是 python3.10+ 语法,根因是 install.sh 调 PATH 里的 pip,把包装进系统 python3.9 而非 conda 的 3.11。解法:检查 PYTHONPATH 确保安装运行同环境;官方另推荐用推理引擎镜像起容器隔离环境,容器内按需装 msModelSlim 与对应 transformers,并与部署版本对齐。 |
| #218 | 源码 pip install -e 安装后量化报错找不到 config 目录 | 坑在 editable 安装:代码按仓库相对路径拼接出 msmodelslim/msmodelslim/config 双层路径,导致目录不存在报错。官方确认 -e 安装确有缺陷、列入修复计划。规避:在仓库根目录 bash install.sh 安装到 site-packages,对该目录下 msmodelslim 代码打断点调试(配置 launch.json),效果等同源码开发模式。 |
| #258 | Qwen3.5-35B-A3B W8A8 报 Model adapter not found 等错 | 根因是版本错配:用户装 MsModelSlim 8.2.0,旧版不含 Qwen3.5 适配器,报 ‘Qwen3.5-35B-A3B’ not found 后 fallback 默认适配器又触发 Qwen3_5MoeConfig 属性缺失。官方建议升级最新代码再量化。追问 swift-lora 微调后合并权重量化失败:微调若改变模型结构,需自行修改模型适配器才能量化。 |
| #364 | DeepSeek-v4 微调版权重 w8a8 量化 load_state_dict 报错 | 对比 HF 权重确认微调后 expert 维度变化,与内置适配器 state_dict 不匹配。解法是按该模型 modeling 文件改 msmodelslim/model/deepseek_v4/model.py 适配;但其 modeling 文件在模型目录与 transformers 中均缺失,官方判定暂不具备适配条件,可复现主页 demo 验证是否发布方问题。 |
msprobe(精度比对与 dump 工具)
训练/推理数据采集、精度比对与 API 风险分级,精度定位的手术刀
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #93 | 风险等级过滤失效:被 list 过滤掉的 API 仍被 dump | 根因:dump 风险等级配置与 list/scope 过滤交互缺陷——风险等级设为 all 时 list 与 scope 过滤不生效(PR#424),子模块 API 设置风险等级时无法正确匹配(PR#431),导致被 list 过滤掉的 API 继续落盘、采集数据超出预期范围。两个 bugfix 均于 2026-03 合入,PR#396 补充风险等级配置 UT 防回归。 |
| #111 | 每次 dump 都要改框架源码插桩,询问免插桩与动态启停计划 | 官方答复:①免插桩暂无计划——大模型训练框架差异过大,工具插入位置无法统一,最小插桩(初始化处数行)仍是必须;②动态启停已上线 master 的 dump_enable 参数,可不重启服务启停 dump 或变更配置文件;26.0.0-alpha.2 未包含该特性,需从 master 源码编译安装。详见 config_json_introduct.md 的 dump_enable 说明。 |
| #125 | triton 直调算子落盘 pt 失败:名称含 特殊字符 | 根因:triton 算子取名用了整个调用栈 qualname(Triton.SFTTrainer.forward_step..fn_dot),尖括号为路径非法字符,触发『非法文件路径』校验拒绝落盘。修复:只取函数 name(PR#443),后续版本 API 名不再带 <>,真实数据模式回归通过。 |
| #153 | 未装 PyTorch 时分级可视化构图比对直接 ImportError | 根因:import 链路污染——入口逐层 import 到 msaccucmp 模块,其 file_utils 顶层 import torch,无 torch 环境即抛 No module named ‘torch’,不需要 torch 的功能也被拖垮。修复(PR#469):msaccucmp 不再直接 import torch/psutil,B080 回归通过。 |
| #295 | 采集不到 vllm-ascend 注册的自定义算子 | PyTorch dump 默认 hook 标准 API,vllm-ascend 自定义算子需显式注册:在 worker 执行 model 前调 debugger.register_custom_api(torch.ops._c_ascend, “npu_hc_pre”)。时机关键:debugger 初始化时算子尚未注册,过早调用会失败。 |
| #309 | vLLM 图模式 acl_save 落盘 tensor 数量与 shape 不符 | 图模式下落盘仅 2 个 tensor、shape 为 (1,4096)、positions 全 0——vLLM dummy run(图捕获预热)假数据被采集所致。官方验证 master 删除 dummy run 阶段数据后数量恢复;另落盘路径须按 rank 区分否则互相覆盖。关联 PR#669(编号复用)、PR#659(replay 内存问题)。 |
| #338 | DS V4 dump 时显存膨胀 OOM、Tensor 维度为负数 | 根因:MOE 专家权重为 NZ 私有格式,工具调 float/clone 统计时自动触发 TransData 转换并申请大块临时内存;TransData tiling 异常被捕获未中断,异步模式下脏内存下传污染 repeat_interleave 入参,致 OOM 或 Tensor 负维度。修复 PR#795 跳过 NZ 格式采集;规避:ASCEND_LAUNCH_BLOCKING=1。 |
| #413 | nan check 溢出检测不稳定,配 tensor_list 时报错且漏触发异常 | 两缺陷:①overflow 开关反复切换致同一数据两次检测 is_nan 抖动,PR#844/#845 移除 nan_check 开关 toggling 修复;②配 tensor_list 后 aclnnNanTest 报 EZ1009,因打包丢了 vendors 的 libcust_opapi.so,PR#852 保留该目录修复;溢出未触发 Exception 一并修复,master 回归通过。 |
| #431 | A5 低精度模型 VLLM 图模式挂 dump 配置拉起服务异常 | 官方结论:图模式(ACLGraph)数据采集未适配低精度场景(fp8/fp4),低精度模型带 dump 配置起服务即异常,Q3 转需求适配。规避:加 --enforce_eager 走 eager 模式(实测可正常采集),或图模式改用 fp16/bf16/fp32 常规精度配置;26.1.0/master 文档已补充『图模式不支持低精度采集』限制说明(PR#863/#864)。 |
mssanitizer(内存与竞争检测)
memcheck/racecheck/synccheck 三件套,NPU 侧的 valgrind
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #4 | simt UB 建模为全量空间,算子实际 UB 越界时工具漏报 | 坑:漏报比误报更隐蔽。simt 可访问的 UB 范围由用户控制而非全量 UB,工具早期把它建模成全量空间,越界判定永不触发。修复 PR !19(修复 simt ub 范围建模错误)合入并验证通过,同期落地 simt 影子内存与核内线程间踩踏检测(!10/!11)。启示:simt 算子的“检测干净”结论要确认工具版本含此修复,否则可能只是漏报。 |
| #68 | shmem allgather 算子 memcheck 报 host 侧越界(GM 0 地址非法读) | 坑:先别急着怪工具。定位中发现算子异常退出且伴随 shmem 初始化失败(Failed to determine driver version / init hybm failed -4),跨仓转 shmem#177 处理。官方最终定性:算子问题,非工具问题——越界报告真实反映了算子侧异常。启示:host 侧 GM 0 地址非法读与初始化报错并存时,优先查算子实现与驱动支持性,再评估工具。 |
| #125 | dispatch_gmm_combine 竞争报告 kernel 名展示错误且调用栈缺失 | 坑:报告归因错位——racecheck 告警的 kernel 名显示错、调用栈缺失,用户无法定位真实竞争点。根因是 simt 竞争检测的 kernel name 展示缺陷。修复 PR !235(simt 竞争检测 kernel name 显示错误)合入,配套 !241/!256 增强异常调用栈;复验通过,能正确报出 DispatchGMM 的 UB WAR 并展示完整签名。 |
| #164 | 调用 ReduceSum 高阶 API 被报读写越界,打印地址与空间大小实际未越界 | 坑:ReduceSum(AR 模式 float)底层落 vcadd 指令,用户抓 sanitizer 日志中 REDUCE_OP 记录,发现 vectormask/maskmode 与预期不符——地址和空间均未越界却告警。官方与提交者对齐后定性为编译器问题,已定位解决。启示:高阶 API 误报先把日志指令级参数(maskmode/stride/repeat)与手算对比,区分工具与编译器责任。 |
| #190 | 检测 triton tl.dot() 前缀累加 kernel 报 OOB,疑似误报 | 坑:OOB WARNING 级含义是“多核访问同一内存可能踩踏”,不是地址越界。racecheck 复跑报 ERROR,非误报:根因在 NPU-IR——LocalMmad.cpp 的 pingPongId 为 static,各核共享同一份 .data,并发改写产生真实竞争,见 AscendNPU-IR#509。排查:OOB WARNING 先 racecheck 复核,报 ERROR 才是真踩踏。 |
| #206 | Vector 与 DataCopyPad 跨函数共享 UB 且缺同步,synccheck 检不出来 | 坑:工具选错。synccheck 只检 set_flag/wait_flag 配对类问题(如 set 多于 wait),不覆盖数据竞争;跨函数共享内存的读写竞争要用 --tool=racecheck。官方明确二者分工后用户确认解决。KG FAQ 亦给出使用顺序建议:先 memcheck 排内存异常,再按需 racecheck。单测精度时好时坏这类典型竞争症状,直接上 racecheck。 |
ascend-deployer(部署工具)
驱动/CANN/固件一键安装,硬件适配与操作系统识别的前哨
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #152 | 麒麟 V10 Halberd 安装昇腾软件报 dpkg 找不到 docker .deb 资源包 | 坑:麒麟 V10 属 rpm 系,系统里残留 dpkg 使工具误走 debian 路径去找不存在的 .deb。官方排查三步:cat /etc/os-release 确认系统类型;核对 resources 下 {os_and_arch} 目录与服务器 OS 是否一致;查目录内有无报错对应的包。建议 yum remove dpkg 卸载残留包管理器再走正常安装——一个 OS 只保留自带的包管理器。 |
| #154 | 300I A2 64G 装驱动报 Can not detect npu, exit! | 坑:报错发生在探测阶段并直接退出,易误判为环境或驱动故障,实为 deployer 硬件适配清单未收录该型号。官方结论:硬件未支持;规避方法是执行 common_info.py 获取本机芯片信息并替换机器型号四元组后再安装。启示:新型号上线初期先确认工具支持列表,不在列表内可用 common_info.py 手工适配四元组。 |
| #205 | 换行转换后脚本变 write-only,普通用户构建 sdist/wheel 失败 | 坑:setup.py 的 crlf_to_lf() 写回前执行 os.chmod(path, stat.S_IWRITE) 且不恢复,脚本变仅 owner 可写,setuptools 复制源文件时读取失败。根因:权限处理缺“临时提权+恢复”语义。PR !2219(8 月合入):记录原权限、写前临时补 owner write、finally 恢复,并补回归测试。同类构建失败先查脚本权限位。 |
组合解读:这 50 条里的共性规律
1. 推理服务的接口兼容层是重灾区。
纯文本 content 传数组被算成 0 token(MindIE-LLM#202)、gif 不在图片白名单被按 base64 解析直接报错(#343)、function call 深嵌套 JSON 触发 safe_io 解析上限(#332)、json_schema name 含中文被字符校验拒绝(#337)——API 路径对 ≠ 语义兼容。接入 MindIE 前先对照接口语义清单:content 格式、图片格式白名单、JSON 嵌套深度、schema 命名约束;低频接口(/generate 系)已被排期日落(#106),存量尽早迁移 OpenAI chat 接口。
2. 量化链路的版本耦合比量化算法本身更易翻车。
两条硬口径:Qwen3-MOE w4a8 要 transformers4.51.0——v5.0.0 的权重转换特性会把 MoE 线性层转成 tensors,逐层量化静默漏配、描述文件全空(msmodelslim#186、#8);Qwen3.5 系列要 transformers5.2.0(#185,MindSpeed-MM#334 同款)。推理镜像内置版本与量化工具要求经常不一致(#192)。姿势:按模型最佳实践锁版本;命令跑成功 ≠ 产物正确,务必 grep 描述文件量化层数、核对 bias 层 dtype(#59)。
3. 检测工具的误报与漏报要会判读。
ReduceSum 越界告警实为编译器问题(mssanitizer#164)、OOB WARNING 含义是「多核可能踩踏」非地址越界,racecheck 复核报 ERROR 才是真竞争(#190)、synccheck 只检 flag 配对不检数据竞争(#206)、host 侧越界也可能是算子问题而非工具问题(#68)。漏报更隐蔽:simt UB 曾被建模成全量空间,越界判定永不触发(#4)。姿势:先选对工具,再把日志指令级参数(maskmode/stride/repeat)与手算对拍,区分工具/编译器/算子三方责任。
4. dump 采集先过三关:真数据、支持格式、过滤生效。
vLLM dummy run 假数据被采集,tensor 数量与 shape 全不对(msprobe#309)、NZ 私有格式权重触发 TransData 临时内存膨胀 OOM(#338)、图模式不支持低精度采集须 --enforce_eager(#431)、风险等级过滤与 list 过滤交互失效致超范围落盘(#93)。采集数据「看起来不对」时先问这三个问题,再怀疑业务本身。另:动态启停 dump 的 dump_enable 已上线 master(#111)。
5. MindSpeed-MM 续表:环境配套与训练中后期问题。
triton 与 triton-ascend 冲突连环触发导入错误,须卸净重装 triton-ascend(#334)、fla_npu 缺模块拉最新代码即解(#393);PP 切分后某 stage 全为冻结参数会报优化器参数为空,每 stage 须留可训练参数(#149);hang 排查五步:保存点→放宽分布式超时→ASCEND_LAUNCH_BLOCKING=1+py-spy→host 内存→核 torch 版本(#143);共享存储高并发写 checkpoint 触发底层写异常,–save 改本地盘即稳(#344);dcp 转 hf 权重恰 2 倍体积是 fp32 主权重口径,升 master 可存 bf16(#250)。
6. 部署工具先过环境识别关。
新型号不在适配清单报 Can not detect npu(ascend-deployer#154)、麒麟 V10 残留 dpkg 致误走 debian 路径找不存在的 .deb(#152)、换行转换脚本缺「临时提权+恢复」语义致 sdist/wheel 构建失败(#205)。新型号/新系统上线初期,先核工具支持清单与版本约束,不在清单内用 common_info.py 手工适配四元组;报「包不存在」先核对 pkg_utils.py 匹配规则。
7. 统计口径与实测不符,用交叉验证定责。
SLO 调度时延统计与实测 60ms 不符,修复在统计侧(MindIE-LLM#344);mooncake KVCache 池化吞吐 -60%,用 msServiceProfiler 采 pd_split_kvcache.csv 看传输耗时与带宽,权衡命中率与开销(#342);量化校准 batch_size 只能 1,改 4 精度即掉分(msmodelslim#8);mtp 流式一轮含 stop token 整轮不 decode 致丢字(MindIE-LLM#347)。数字不对时先核对统计口径与采集方法,再怀疑业务逻辑。
排错指引(从这批 issue 提炼)
| 症状 | 第一优先动作 | 本篇相关案例 |
|---|---|---|
| 推理接口报 token=0 / 格式错 | content 拼字符串;图片转 jpg/png;精简 tools 降嵌套;schema name 用 ASCII | MindIE#202、#343、#332、#337 |
| 量化失败 / 产物为空 | 按最佳实践锁 transformers(4.51.0 / 5.2.0);grep 描述文件量化层数;batch_size=1 | slim#8、#186、#185、#258 |
| sanitizer 告警真假难辨 | OOB WARNING 先 racecheck 复核;synccheck 不检竞争;核工具版本含漏报修复 | mssan#190、#206、#164、#4 |
| dump 数据异常 / 采集 OOM | 删 dummy run 数据;规避 NZ 格式;图模式低精度改 eager | msprobe#309、#338、#431 |
| 训练 hang / 利用率归零 | ASCEND_LAUNCH_BLOCKING=1+py-spy dump;放宽分布式超时;核 torch 版本 | MM#143、#470 |
| checkpoint 报错 / 权重翻倍 | –save 改本地盘;fp32 主权重属正常口径,升 master 存 bf16 | MM#344、#250 |
| 新硬件/新系统部署失败 | common_info.py 核四元组;清残留包管理器;构建失败查脚本权限位 | dep#154、#152、#205 |
| 指标统计与实测不符 | 核统计口径修复版本;msServiceProfiler 交叉采集传输耗时 | MindIE#344、#342 |
涉及具体 API 语义与硬件约束的核对,用了昇腾知识图谱(ascend.wiki)的官方文档节点;各条解答中 KG 核实过的部分不再单独标注,评论与 PR 均无依据的信息一律未收录。ascend-deployer 另有 3 条高质量条目(#194/#187/#204)按溢出规则拆至下一篇「ascend-deployer(续)」表。接入昇腾知识图谱 https://gitcode.com/agent0/kg-tools
系列下一篇:mindspore 精选(一)—— mindspore / mindformers / mindspore-lite 仓,覆盖图编译、算子注册与端侧部署的真实案例,并承接 ascend-deployer 续表 3 条。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)