昇腾开源仓Issue分析解答-mindspore精选(二)·mindformers深耕与三大户续采
昇腾开源仓Issue分析解答-mindspore精选(二)·mindformers深耕与三大户续采
一句话让Agent变成昇腾专家,昇腾任务轻松搞定。评测入口:请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools
总览
| 仓库 | 定位 | 收录条数 |
|---|---|---|
| mindspore | 昇思深度学习框架主仓,本篇双表续采 25 案(算子一致性与图执行 15 + 训练环境与接口 10) | 25 |
| mindformers | MindSpore 大模型套件:LLM 训练/微调/推理/权重转换与安全整改 | 14 |
| mindspore-lite | MindSpore Lite 端边推理:模型转换/执行/量化,续采 11 案 | 11 |
mindspore(框架主仓·算子一致性与图执行)
昇思深度学习框架主仓·续采二:算子数值一致性、GE 非连续输入与图执行三案族(承接上篇 CANN 侧四案)
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #89 | triuindices对1x1矩阵预期返回下标[0,0],实际返回[-1,-1] | 根因:该AICPU算子无输入直接输出下标,mindspore实现里triuindices与trilindices套用同一套infer逻辑未区分,两者offset语义差1导致算错。修复:PR 84014对triuindices的offset处理增加offset-1操作,新版本连续执行一天未复现。 |
| #93 | atleast_3d 8维fp64输入GE模式输出数据整体错乱 | 根因(hbhu_bin完整RCA):非连续输入场景没有拦截,GE下atleast_3d对8维非连续输入扩展结果错误(loss>1.0,数据整体错乱)。修复PR 83634(fix IsContiguousTensor):GE不再支持非连续输入并正确拦截,用例切换kbk后端。引入PR 81245(GE特性),评论声称3月7日合入,API核实实际2025-02-15,以API为准。 |
| #97 | GE图模式atleast_1d/2d结果错误,*Tensor输入时第二个输入丢失 | dump定位:*Tensor输入下后端给算子的输入错误(第二输入与第一重复,addn同样复现)。根因:GE后端解耦(PR 82691)后不再自动把非连续Tensor转连续(KG:L0算子只支持连续tensor需Contiguous转换),非连续输入未拦截。修复:PR 83634加IsContiguousTensor校验正确拦截,用例切kbk后端。 |
| #100 | Adam算子O1模式fp16偶现与TensorFlow标杆计算结果不一致 | 根因:O1模式算子实现手动用结合律/交换律化简表达式,fp16部分场景与TensorFlow ApplyAdamKernel结果不一致(评论附TF kernel计算逻辑截图佐证)。修复:PR 83576改回严格按Adam论文公式计算,自测30次全PASS,daily包回归通过。 |
| #103 | mint.fmod fp32+fp64混合输入输出dtype与PyTorch不一致 | 现象:x为float32、other为float64时MS输出dtype与PyTorch类型提升结果不一致,断言失败。根因:fmod Tensor接口InferType类型提升缺陷,rct/oldrelease标明存量缺陷被混合精度broadcast用例触发。修复PR 83547(fix fmod_tensor InferType bug),回归4459ab4c通过。 |
| #104 | mint.div fp64反向梯度偶现超差,误差2.6e-5超出rtol=1e-5 | 根因(hz893完整RCA):MS与PyTorch对div中other反向计算顺序不一致(数学等价):MS为dy=-(dout/yout),PT为dy=-dout((x/y)/y),fp64下偶现超阈。引入PR 64084(div aclnn对接,2024-04-17合入,与评论声称一致),存量实现被随机数据触发。修复PR 83814对齐PyTorch顺序,回归119b7ec4通过。 |
| #106 | xlogy fp64 GE模式反向编译报RuntimeError | 根因(hz893完整RCA):接口变更——GE回退double类型支持,fp64的xlogy反向在GE后端不可用(master窗口3.11→3.21),测试用例未及时适配,属用例适配而非框架缺陷,无需修复。KG核实:CANN Xlogy规格表(Atlas训练系列)AI Core仅fp16/fp32,double仅AI CPU路径,与GE回退double口径一致。 |
| #178 | ops.trunc fp16全NaN输入O1(DVM)模式输出全0 | 现象:fp16全NaN张量经trunc,标杆输出NaN,MS在O1(DVM)图模式输出全0,NaN传播语义被破坏。修复PR 82293(fix trunc f16 bug, CompareInt bug):DVM路径CompareInt比较缺陷致NaN被截断为0。回归ba6873c3通过,随DVM特性合入暴露。 |
| #184 | ops.xlogy原语直调传入bool/标量other时报TypeError | 根因:Xlogy原语已去除type_cast不再支持非Tensor输入,上层ops/Tensor/mint接口已处理而原语资料未同步(PR 81625引入)。修复:PR 83453更新原语文档去除标量支持描述并合入master,用例改走functional接口看护,daily包回归通过。 |
| #255 | embedding 910A GE模式反向梯度偶现非零错误值 | 现象:GE模式embedding用例(int64 0d索引+fp16权重+padding_idx/max_norm)grad对比失败,应全0处偶现非零(-0.164/2.475),master窗口1.10→2.6.0 B021引入。根因在GE后端embedding反向梯度:修复PR 82083(fix embedding ge grad);PR 83048补ST。回归ba6873c3通过后关单。 |
| #605 | l1_loss在Ascend pynative下偶现精度问题,同环境两版本一过一挂 | 根因:L1LossExt与L1LossBackwardExt算子不支持混合精度输入,输出数据类型与torch cpu不一致,类型不一致时对比精度即报错。修复:算子支持混合精度输入,dtype处理逻辑对标torch npu;master合入PR 75817(2024-11-01),r2.4回灌PR 76701(2024-11-02)。回归时需同步把用例精度误差标准适配为0.001。 |
| #20474 | max_pool3d池化核踩到padding区且有效数据全负时与torch不一致 | 设随机种子2313可稳定复现。根因:MS自研AICPU算子计算逻辑跳过pad数据取有效输入最大值;torch cpu取padding区0为最大值。该算子开发对标torch1.8,torch2.1已修改此逻辑,属真实语义差异。ccb结论转需求IR20250527002554重构Maxpool3DWithArgmax对标torch2.1。 |
| #20475 | nll_loss 910b graph动态shape用例报错且计算结果错误 | 二分定位commit d663bd69ec47(PR 84431引入)。根因:控制流上少释放address——entrance→fusion→kernel actor链路中带only shape depend属性的算子不释放引用计数而entrance仍递增无法归0,release又未置ptr空。修复:PR 85880补引用计数更正+release置nullptr。 |
| #21181 | bincount 910b graph模式报ScalarGt缺adapter错误 | 根因:PR 83565改动后max操作取item()结果为scalar,比较双方均为scalar时走入ScalarGt算子;该算子只有CPU实现,MS_DISABLE_KERNEL_BACKOFF=1禁止退避后Ascend侧找不到算子。修复:PR 83958改回max后不取item保持Tensor,与改动前逻辑一致。 |
| #21185 | nn.proximaladagrad 910A pynative报GE仅支持连续输入 | 现象:pynative下optimizer经grad_jit进GE后端,报The ge backend only support contiguous inputs。根因:loss_scale路径向GE传入非连续张量触发GE连续性硬约束。修复PR 83405(use ms_backend for loss_scale)改走ms后端规避,回归067a7b32通过。与#93同属GE非连续输入约束批。 |
mindspore(框架主仓·训练环境与接口演进)
主仓·续采三:CANN 包回归 RCA、混合精度接口演进与流水线并行调度
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #186 | deformable_conv2d报DeformableOffsets形状校验失败 | 根因(完整RCA):CANN包升级引入且必现——CANN仓1月16日合入NHWC实现、2月6日回退该代码,20250206包DeformableOffsets InferShape校验失败(offset h/w=12/2 vs conv输出63/2)。CANN责任人确认取2月7日后包即恢复:0219自测+20250307回归均通过。非MS缺陷。 |
| #191 | CANN升8.1后tensor.uniform报workspace接口调用失败 | 根因:CANN 8.0升8.1后aclnnInplaceUniform删除bool支持(DTS2025010742839,canndev PR 61484于2025-01-22合入),bool输入在申请workspace时即失败。处置:非MindSpore缺陷,用例去掉bool输入并以8.1.RC1回归。KG算子文档印证该接口BOOL已废弃,布尔随机建议改用aclnnBernoulli。 |
| #209 | RMSELoss在pynative模式bool输入类型校验丢失,图模式正常报错 | 根因:RMSELoss由小算子拼接,'-'在动态图走PR#81323新增的sub_scalar(SubExt)路径,与torch的sub对齐、支持bool故不拦截;静态图仍走sub、对bool拦截。动静不一致未被要求统一,结论为非缺陷,用例适配:bool用例不再断言报错。启示:动态图标量运算路径与torch对齐,动静图同API校验行为可能不同。 |
| #432 | FlashAttentionScore图模式启动报Resize failed for kernel | 根因:FA/PA在Resize阶段按名字从图输入取变长序列参数:推理前端用新名batch_valid_length/q_seq_lens,单算子用例用原名actual_seq_qlen/actual_seq_kvlen,新名匹配不到必要输入即报错。修复:取值先查新名、未命中回落原名;PR 79561于2024-12-21合入。KG算子原型确认actual_seq_qlen/kvlen为可选输入。 |
| #479 | ops.lpnorm 910B4执行卡死,910B2报LpNorm TBE编译断言失败 | 根因(ziling_huang完整RCA):切换CANN Milan_C20/20241128包后引入,动态shape算子LpNorm的TBE编译在cce_runtime.py断言len(additional_info)==3处崩溃,910B4卡死、910B2报E40021。修复:升级CANN,20241205包用例通过,复验1205包无问题后关单。同批cdist等算子同受影响。 |
| #500 | igamma/igammac等六类AICPU算子报InferShapeAndType failed | 根因:CANN包修改了跳过GE infer校验的环境变量,导致部分AICPU算子执行了本该跳过的infer校验而报错(eps/indexput/affinegrid/norepeatngram/uniquewithpad同样受累)。修复:MindSpore侧增加新的环境变量设置,r2.4.1 commit c337d83d回归通过。 |
| #501 | rms_norm对0d/1d输入报tiling错误:dim num超限(2-8) | 根因:CANN tiling新增输入维度校验——KG核实该约束位于rms_norm_tiling.cpp的CheckInputShape4RmsNorm,现行代码x维度约束[1,8](issue期报错为不小于2,后续演进放开1维)。0d不支持与官方资料及PTA一致。结论:0d用例改异常用例,有效用例在Milan_C20/20241211包验证通过。 |
| #20476 | mint.nn.functional.silu不接受inplace参数报TypeError | 根因(probiotics_53完整RCA):silu的inplace特性代码因DI值熔断暂未合入master,mint接口无inplace参数,测试仓18个用例传inplace即TypeError。修复PR 85090(sync silu inplace bugfix)回合代码并含ST/UT,回归8072cf1a通过。启示:特性回合延迟会造成接口签名与用例的窗口期错位。 |
| #20588 | Atlas 300I Duo上6个outpainting模型推理耗时劣化1.3~1.7倍 | 现象:CANN C22/20250522批(对比C21)6个outpainting ONNX模型推理耗时劣化,如controlnet_gd2 96.44→148.34ms。解决(回归评论):修改用例配置项或模型算子属性的inner_precise值后性能恢复,回归master_20250607+CANN 20250522通过。KG佐证CANN口径:高精度模式可影响推理性能。文字根因未归档。 |
| #21823 | pipeline并行小内存方案在micro%pp!=0场景存在执行序问题 | AutoParallel流水线并行小内存方案在micro批次数不整除pp阶段数时调度执行序错误。修复PR 79218(fix_less_mem_pp_bug)于2024-12-17合入master,回灌PR 79468([AutoParallel]Fix pp less mem opt bug)于2024-12-19合入覆盖r2.4.1分支,处理人评论确认已解决合入。 |
mindformers(大模型套件·深耕)
MindSpore 大模型套件:主流 LLM 训练/微调/推理,本篇并行精度、安全整改与文档线跨仓修复
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #132 | run_check/快速启动日志大量WARNING,文档却称应看到成功标识,用户无法判断任务是否成功 | 官方澄清:WARNING由MindSpore框架打印(stand_alone下shard不生效、接口弃用提示等),属正常不应修改;错在文档’看到成功标识、日志不应有WARNING’的表述,已删除该句。修复落在mindspore/docs仓(mindformers文档托管处)#15917,改quick_start/source_code_start.md中英文版。 |
| #138 | 推理文档五处问题:推荐用法缺失、多卡推理缺src_strategy_path_or_dir说明 | 官方当天回复已安排责任人跟踪,修复落mindspore/docs仓(跨仓):PR15922补齐inference.md中英双语文档的权重转换流程(中文+57行),合入69秒后issue关单;后续PR15939/15940将修复同步至master与r2.4.10分支。与mf#132同为修复落docs仓的跨仓先例。 |
| #165 | telechat2等调用FreqsMgr的模型分布式训练时显存溢出 | 修复PR5229将FreqsMgr类算子的shard逻辑抽象成方法,分布式下旋转位置编码张量按并行度切分,消除各rank冗余持有的全量freqs副本。PR于2025-01-06T16:29合入,4分钟后官方评论确认解决并关单,时间耦合为Fixes关单铁证。 |
| #176 | mindformer_book.py等多文件中模型权重下载链接与gitee示例脚本链接失效 | 根因:版本迭代后部分模型已下架但链接未删,部分文档迁移到新地址。修复:删除已下架模型的失效链接、替换为新有效地址;已声明后续会下架的链接保持不动。PR#5690改动mindformer_book.py、docs/FAQ.md、编程规范文档共3文件,与issue列举位置逐一对应。 |
| #179 | llama配置gqa+tp>1+cp_ds>1组合场景精度不正确 | 官方12月24日在评论给出双分支修复链接并确认已完成修复及验证:dev分支PR4957、r1.3.0分支PR4960,均经gitee API复核为merged(跨托管镜像同号认定)。KG文档解释Ulysses靠head维all_to_all转置换取完整序列,head数须可被SP切分,与GQA(KV头数少)及mp>1的head切分叠加时存在约束冲突,是精度偏差的机制根源。 |
| #1929 | 中软HCCL重计算失败续训特性需mindformers适配使能条件 | 自提单但含完整实质过程:官方评论给出根因、修复方案与验证结论。底层机制为HCCL通信算子重执行(网络闪断时HCCL重新执行该算子提升通信稳定性,KG文档口径);mindformers侧PR6545增加使能条件适配,合入3秒后关单。核心逻辑在MindSpore侧,自测声明由mindspore测试覆盖。 |
| #1943 | np.load与torch.load默认参数存在pickle反序列化风险 | 整改点为np.load(*,allow_pickle=True)与torch.load未指定weights_only=True,属pickle反序列化供应链风险。修复修改函数默认入参消除风险,PR6594于提单当日合入;引入分析定位到2024-10-18合入的特性PR4465。评论根因模板齐全,合入4秒后关单。 |
| #1950 | 代码存在通信矩阵多余、全0监听、trust_remote_code默认True等安全问题 | 三项整改并行落地:PR6608修复通信矩阵与全0IP监听;PR6626消除trust_remote_code=True的不安全默认值;PR6641补充pybind11三方声明。引入分析指向2025-05-29合入的PR6267。全部PR经API复核merged,末个合入5天后关单。 |
| #1954 | experimental目录重构后实现已迁出,遗留代码需整体下架 | 下架落地分两步:PR6711移除experimental下qwen2_5实现,PR6703删除experimental目录本体(被依赖逻辑已先行迁出至其他目录)。同批PR6465下架bert/T5最小集(另见#1942)。官方评论含完整根因分析,合入当日关单(相差3秒)。 |
| #1957 | auto类/openmind以token传参,使用后缓存残留可被恶意获取 | 受控数据下载逻辑会缓存用户token(涉隐私数据)。经评估当前并无受控数据下载场景(数据由用户自行下载使用),故PR6770(r1.6.0)与PR6771(dev)双分支于2025-07-16合并,直接禁用受控数据下载功能并处理token(tools/hub/hub.py +19/-1),从源头消除token长期缓存被恶意获取的风险——不是清缓存而是下线功能。 |
| #2049 | 文档中use_clip_grad层级挂错,应与scale_sense同级 | 官网与仓库文档的优化器配置层级有误:use_clip_grad误挂下级,应与scale_sense同级。修复跨仓落在mindspore/docs:PR17411《Fix use_clip_grad in configuration.md》提单当天2025-08-21合并。与mf#132/#138/#135先例同型:mindformers文档类问题常需去docs仓修,gitcode镜像同号可验。 |
| #2171 | L1用例test_mfloss_monitor与test_build_context执行报错 | 根因是先前改动破坏build_context默认行为:is_legacy_model不再默认返回True,引发兼容性问题。PR8055(2026-02-03合并)删除build_context.py中4行破坏性改动恢复默认值,并调整trainer对该接口的调用;属临时方案,正式重构由issue#2174跟踪。官方评论所称「回退问题改动」实即恢复默认行为而非整体回滚。 |
| #2213 | hyper-parallel下VocabEmbedding行切TP精度与单卡不对齐 | 评论根因:hyper-parallel未适配embedding算子的并行计算。修复PR8169(2026-03-28合并)将vocab_embedding.py的mint.nn.functional.embedding改为mint.gather等价实现(tile扩展输入、按weight收集、reshape复原),TP结果与单卡对齐。KG佐证vocab并行embedding为推理生态独立适配点。 |
| #2402 | 流水线并行下非最后stage无loss日志且无提醒,用户误以为训练异常 | 根因属易用性缺失:loss仅在PP最后stage计算打印,其余stage静默。PR#8470删除冗余logger,并在非最后stage的rank上补一条说明日志,明确告知loss在最后stage打印。PR合并后5分34秒issue关闭,时序吻合;评论同步给出根因(易用性缺失)。 |
mindspore-lite(端边推理·续采二)
MindSpore Lite 端边推理:转换器安全加固、内核正确性与量化执行
| 编号 | Issue 问题内容 | 解答总结 |
|---|---|---|
| #207 | 设ASCEND_CUSTOM_PATH配新CANN包后import mindspore_lite报错 | 新版CANN布局使python环境检查走进异常分支,AscendEnvChecker的ascend_version_file未初始化即被读取。PR608适配新CANN包检查逻辑:改写python/api/_check_ascend.py,在确认ASCEND_HOME_PATH后把该属性无条件初始化为compiler/version.info再使用,并同步更新测试。评论仅附验证截图,修复以PR为准。 |
| #232 | micro端侧int8量化Mul单算子,输入1x2x1x4与1x2x4x1时余弦相似度≈0 | int8算子广播逻辑缺陷:div/mul/sub按错误维度做broadcast对齐,量化后结果全错。PR707修正三个int8算子的广播处理,同步修复micro coder侧同名实现(mul/div/sub_int8_coder.cc),并补齐三组UT。issue关闭时刻与PR合并秒级一致,属Fixes自动关闭铁证。 |
| #234 | CANN升级9.0后update_weight相关CI用例失败下线 | 官方评论确认已修复并给出PR789根因:构图时SetOutputs指定return tuple全部3133个输出,DfGraphConvertor::RemoveIdentity删输出节点的行为在新CANN下不再使模型输出清零。修复为带is_update_graph的图直接不给GE设置任何输出(等价SetOutputs({})),从源头保证update模型输出数为0。r2.9分支由PR777回灌。 |
| #242 | converter三缺陷:内存泄漏、Hex2ByteArray索引错、ONNX误返RET_OK | PR743三文件对应三缺陷:model_c.cc在new失败时先逐个释放已分配MSTensor再返回;string_util.cc把大写分支误用的hex_str[p]改回hex_str[p+1];onnx_model_parser.cc将ConvertGraphInputs失败路径的RET_OK改为RET_ERROR。PR标题只写fix convert bug,须patch级比对才能对上三缺陷。 |
| #310 | 转换器缺tril算子mapper;triu第二输入非常量时空指针解引用致转换core dump | triu_mapper.cc中cnode->input(2)->cast()->default_param()链式调用无判空,第二输入为非常量时cast返回空指针即崩溃。PR878新增tril算子mapper并给triu补空指针校验。PR与issue同日提出、标题一致,自提自修闭环。昇腾ACL适配(tools/converter/adapter/acl)场景。 |
| #348 | CPU算子整数溢出:unsorted_segment_sum、strided_slice_grad等 | PR980按issue方案逐文件加固:kernel层拦output_dim1_超INT_MAX;NNACL层加乘法溢出检测与索引校验;strided_slice_grad改用size_t累计元素数并加越界判断;infer层负begin标准化并拒绝非法shape;batchnorm_int8补channel与张量长度校验。6个改动文件与issue清单一一对应;同批#345/#347为同类加固。 |
| #350 | 恶意输入下 sparse_segment_sum 与 space_to_batch_nd 越界读写 | segment_ids 非单调/负值经 size_t 隐转成巨大偏移、indices 越界,错误路径误 return RET_OK 放行。PR985 前置校验 segment_ids 单调非负、与 indices 等长且限 [0,input_dim0),错误码改 RET_ERROR 并加固 space_to_batch_nd,与 CANN SparseSegmentSum 契约一致。 |
| #390 | Model::Build 报错误用超长 MS_CHECK_TRUE_MSG 报错串,日志混乱 | Model::Build 的 weight_data 参数校验误用 MS_CHECK_TRUE_MSG 塞整段超长报错串,日志混乱。PR1083(master,显式 Fixes #390)改为简洁 MS_LOG(ERROR)+return;PR1086 为 r2.10 孪生回灌,patch 等价、同日前后 10 秒 merged,issue 08-26 手动关闭。 |
| #413 | ONNX MaxPool1D 转换 kernel_size/strides/pads 丢失,池化失效 | commit 93ab9a78 重构 onnx_pool_parser 把 ParseKernelShapeAttr1D 等 helper 简化成只校验不写回,kernel_size/strides 恒为默认 {1,1}、pads 丢 end 维,ACL MaxPoolV3 收到不池化属性。PR1113 恢复写回并补 4 个 UT 覆盖主路径与不对称 pads,merged 当日置 DONE。 |
| #435 | 310P CGDR FP16 beta Cast 源目同缓冲,原位拓宽覆盖未读数据致 NaN | ascend_300iduo 的 CGDR kernel 把 beta 的 FP16 源 ReinterpretCast 到 chunkVFp32(FP32 缓冲)原位拓宽 Cast,覆盖未读 beta 值致 NaN。PR1158 改用独立 chunkAttnOutFp32 缓冲并补 87 行 GQA 测试。KG P41 卡片印证通用约束:原地拓宽 Cast 需缓冲后半段空间足够容纳源数据。 |
| #444 | CPU 后端单例中 Model 对象析构时静态清理顺序不当致 core dump | 静态清理阶段单例 PackWeightManager 先析构,其后 Model 析构回调 FreePackWeight 触碰已销毁成员致 core dump。PR1161 增加 static std::atomic destroyed_:析构置位、FreePackWeight 入口检测即返回,改动仅 6 行。KG 无 msl 实现类覆盖,未从 KG 核实。 |
组合解读:这 50 条里的共性规律
1. GE 非连续输入三连与图执行回归链:Contiguous 硬约束、引用计数与 ScalarGt。
GE 后端解耦后不再自动把非连续 Tensor 转连续(KG:L0 算子只支持连续 tensor,需 Contiguous 转换),一批存量问题由此显形。
- mindspore#97 *Tensor 输入下后端给算子的第二输入与第一重复(dump 定位+addn 同样复现)——PR 83634 加 IsContiguousTensor 校验正确拦截,用例切 kbk 后端
- mindspore#93 8 维非连续输入 atleast_3d 扩展结果整体错乱(loss>1.0):同 PR 83634 拦截;引入 PR 81245 评论称「3 月 7 日合入」、API 实为 2 月 15 日,以 API 为准
- mindspore#21185 pynative 下 optimizer 经 grad_jit 进 GE 报 contiguous inputs:loss_scale 改走 ms 后端规避(PR 83405)
- mindspore#20475 控制流少释放 address:fusion actor 链上 only-shape-depend 算子不减引用计数、release 又不置空——二分定位引入 commit d663bd69ec47,PR 85880 补引用计数+置 nullptr
- mindspore#21181 max 取 item() 后比较双方皆 scalar、走入只有 CPU 实现的 ScalarGt,MS_DISABLE_KERNEL_BACKOFF=1 后 Ascend 找不到算子——改回保持 Tensor(引入 PR 83565 时间与评论逐字吻合)
2. 算子数值一致性十案:标杆版本、数学等价式与 dtype 支持面。
「偶现」「与标杆不一致」多半不是随机,而是计算顺序、类型提升或支持面口径差异。
- mindspore#100 O1 代数化简(结合律/交换律)与 TF ApplyAdamKernel 不一致:改回严格按 Adam 论文公式,自测 30 次全过——「引入 PR Not Applicable」是存量实现被数据分布触发
- mindspore#104 div 反向与 PyTorch 计算顺序不同(数学等价)fp64 偶现超阈:对齐 PT 顺序(引入 PR 64084 的 2024-04-17 与评论声称逐字一致)
- mindspore#89 triu/tril indices 套用同一套 infer 逻辑、offset 语义差 1:增加 offset-1 修复,连续执行一天未复现
- mindspore#178 fp16 全 NaN 输入 trunc 输出全 0:DVM 路径 CompareInt 比较缺陷把 NaN 截断(PR 82293)
- mindspore#103 fmod InferType 类型提升与 PT 不一致(fp32×fp64 混合):修类型提升即报错点本身
- mindspore#605 L1Loss 前后向算子不支持混合精度输入:dtype 处理对标 torch npu(PR 75817 master+76701 r2.4 回灌双分支)
- mindspore#106 xlogy fp64 GE 反向不可用=接口变更用例适配非缺陷——KG 核实 CANN Xlogy 规格表 AI Core 仅 fp16/fp32、double 走 AI CPU
- mindspore#184 Xlogy 原语已去 type_cast 不再支持非 Tensor 输入而原语资料未同步:PR 83453 更新文档(引入 PR 81625 时间与评论秒级吻合)
- mindspore#255 GE embedding 反向梯度(0d int64 索引+padding_idx)应全 0 处偶现非零:PR 82083 修 ge grad+83048 补 ST
- mindspore#20474 MaxPool3DWithArgmax padding 区取值:torch 取 0、MS 取有效输入最大值——真实语义差异转需求重构对标 torch2.1(KG MaxPool3D 规格佐证)
3. CANN 包回归六案:换包二分、环境变量与废弃接口。
主仓一批「升级 CANN 后炸」的 issue 都有完整 RCA,判解决锚评论+包版本回归而非仓内 PR。
- mindspore#479 CANN 20241128 包 LpNorm TBE 编译在 cce_runtime.py 断言处崩溃(910B4 卡死/B2 报 E40021):1205 包复验关闭,同批 cdist 等受累
- mindspore#186 CANN 仓 1-16 合入 NHWC、2-6 回退,20250206 包 DeformableOffsets InferShape 失败:取 2-7 后包恢复(0219+20250307 双验证)
- mindspore#500 CANN 改了「跳过 GE infer 校验」的环境变量,eps/indexput/affinegrid 等六类 AICPU 算子连坐报错:MS 侧新增环境变量设置(r2.4.1 回归)
- mindspore#191 CANN 8.0→8.1 aclnnInplaceUniform 删 bool 支持(申请 workspace 即失败):KG 印证 BOOL 已废弃、布尔随机建议改 aclnnBernoulli
- mindspore#501 rms_norm 0d 报维度校验失败:KG 代码卡核实 CheckInputShape4RmsNorm 现行约束 x∈[1,8](issue 期更严,后续演进放开)
- mindspore#20588 CANN C22 批 6 个 outpainting ONNX 推理劣化(96→148ms):调 inner_precise 值恢复(KG:高精度模式影响性能)
4. 接口演进与并行调度:动静图差异、特性回合延迟与 micro 整除。
接口签名随特性回合节奏漂移,动静图同 API 行为未必一致——升级窗口期的报错先核「代码是否真的在 master」。
- mindspore#209 RMSELoss 动态图走 sub_scalar(与 torch 对齐、支持 bool)、静态图仍走 sub 拦截——动静不一致判非缺陷,用例适配
- mindspore#20476 silu inplace 特性因 DI 值熔断未合 master,mint 接口无 inplace 参数、18 用例传即 TypeError:PR 85090 回合代码——特性回合延迟造成签名与用例的窗口期错位
- mindspore#432 FA/PA Resize 按名字取变长序列参数:推理前端新名匹配不到单算子原名 actual_seq_qlen 即报错——先查新名、回落原名(KG 算子原型确认该输入可选)
- mindspore#21823 AutoParallel 流水线小内存方案在 micro 批次数不整除 pp 阶段数时调度执行序错误(PR 79218 master+79468 r2.4.1 回灌)
5. mindformers 并行训练六案:GQA×Ulysses、冗余 freqs 与 hyper-parallel 适配。
并行度上去后暴露的精度/显存问题,多落在切分约束与冗余持有两侧。
- mindformers#179 GQA×Ulysses 精度偏差:KG 文档解释 Ulysses 靠 head 维 all_to_all、head 数须可被 SP 切分,与 GQA(KV 头数少)叠加即约束冲突——dev PR4957+r1.3.0 PR4960 双分支
- mindformers#165 FreqsMgr 各 rank 冗余持有全量 freqs:shard 逻辑抽方法按并行度切分(PR5229 合入 4 分钟后关单,Fixes 时间耦合铁证)
- mindformers#2213 hyper-parallel 未适配 embedding 并行:mint.embedding 改 mint.gather 等价实现(tile 扩展+按 weight 收集+reshape 复原),TP 与单卡对齐
- mindformers#2171 is_legacy_model 不再默认 True 引发兼容问题:PR8055 删 4 行恢复默认值——评论称「回退」实为恢复默认行为,以 PR files 为准;正式方案转 #2174
- mindformers#2402 loss 仅在 PP 最后 stage 打印、其余静默:非最后 stage rank 补一条说明日志(PR#8470 合并 5 分 34 秒后关闭)
- mindformers#1929 网络闪断训练稳定性:HCCL 通信算子重执行机制(KG 口径:闪断时重执该算子提升稳定性)+mindformers PR6545 使能条件适配
6. mindformers 安全整改族:pickle 风险、监听面与 token 下线。
一批整改单都有「引入分析→修复 PR→当日/次日合入」完整链,处置思路是消默认值而非打补丁。
- mindformers#1943 np.load(allow_pickle=True) 与 torch.load 未指定 weights_only 属反序列化供应链风险:改函数默认入参,提单当日合入(引入分析定位 2024-10 特性 PR4465)
- mindformers#1950 三项并行落地:修通信矩阵与全 0 IP 监听(PR6608)、消除 trust_remote_code=True 不安全默认(PR6626)、补 pybind11 三方声明(PR6641)
- mindformers#1957 受控数据下载逻辑缓存用户 token:评估后直接下线该功能并处理 token(hub.py +19/-1,r1.6.0+dev 双分支)——不是清缓存而是下线功能
- mindformers#1954 experimental 目录下架两步走:PR6711 移除 qwen2_5 实现+PR6703 删目录本体(被依赖逻辑已先行迁出)
7. mindformers 文档线:修复常落在 mindspore/docs 仓(跨仓追链)。
mindformers 的文档托管在 docs 仓 r2.4.x 分支——本仓找不到修复 PR 时去 docs 仓同号搜。
- mindformers#132 「日志不应有 WARNING」表述错误:WARNING 系框架正常打印(shard 不生效提示等),删该句——修复落 docs 仓 #15917(quick_start 中英文版)
- mindformers#176 版本迭代后已下架模型链接未删:PR#5690 改 mindformer_book.py/FAQ.md/编程规范 3 文件,与诉求逐一对应
- mindformers#138 inference.md 缺权重转换流程:docs PR15922 中英双语补 57 行,合入 69 秒后关单(PR15939/15940 同步 master 与 r2.4.10)
- mindformers#2049 use_clip_grad 配置层级误挂下级、应与 scale_sense 同级:docs PR17411 提单当天合并(评论原链为 e.gitee 企业仓,经 gitcode 同号镜像验证)
8. mindspore-lite 转换器安全与正确性:溢出、隐转放行与「只校验不写回」。
恶意输入类缺陷的共同形态:size_t 隐转放大偏移+错误路径返回 RET_OK 放行。
- mindspore-lite#242 PR743 三文件对三缺陷:new 失败先逐个释放已分配 MSTensor、hex_str[p] 误用改回 hex_str[p+1]、失败路径 RET_OK 改 RET_ERROR——标题只写 fix convert bug,patch 级比对才命中
- mindspore-lite#348 6 文件逐项加固:kernel 拦 output_dim1_ 超 INT_MAX、NNACL 加乘法溢出检测、strided_slice_grad 改 size_t 累计、负 begin 标准化(与 issue 清单一一对应)
- mindspore-lite#350 segment_ids 非单调/负值经 size_t 隐转成巨大偏移,错误路径还 return RET_OK 放行:前置校验单调非负+等长+限界,错误码改 RET_ERROR(与 CANN SparseSegmentSum 契约一致,KG 0.937)
- mindspore-lite#413 onnx_pool_parser 重构把 helper 简化成只校验不写回,kernel_size/strides 恒默认 {1,1}:恢复写回+4 个 UT(含不对称 pads)
- mindspore-lite#310 triu mapper 链式 cast 无判空即崩溃:补判空+新增 tril mapper(自提自修同人闭环)
9. mindspore-lite 执行与退出路径:int8 广播、update 图输出与析构顺序。
执行与退出路径的坑多在新 CANN 行为变化和静态析构顺序上,修复都以小 patch 落地。
- mindspore-lite#207 新 CANN 布局使 python 环境检查读未初始化属性:确认 ASCEND_HOME_PATH 后无条件初始化 compiler/version.info(PR608 显式 Fixes)
- mindspore-lite#232 int8 div/mul/sub 按错误维度 broadcast 对齐、量化结果全错:修正三算子+micro coder 同名实现+三组 UT(秒级铁证)
- mindspore-lite#234 update_weight 图 SetOutputs 指定全部 3133 个输出,新 CANN 下 RemoveIdentity 不再使输出清零:带 is_update_graph 的图直接 SetOutputs({})(PR789+r2.9 回灌 777)
- mindspore-lite#390 weight_data 校验误用 MS_CHECK_TRUE_MSG 塞整段超长报错串:改 MS_LOG(ERROR)+return(PR1083 显式 Fixes+1086 r2.10 孪生回灌,同日前后 10 秒 merged)
- mindspore-lite#435 300I Duo CGDR kernel 把 beta 的 FP16 源 ReinterpretCast 到 FP32 缓冲做原位拓宽、覆盖未读值致 NaN:改独立 chunkAttnOutFp32 缓冲+87 行 GQA 测试(KG 印证原地拓宽 Cast 的缓冲通用约束)
- mindspore-lite#444 静态清理阶段单例 PackWeightManager 先析构、其后 Model 析构回调 FreePackWeight 触碰已销毁成员 core dump:destroyed_ 原子标志短路,仅 6 行(PR 创建早于 issue 11 分钟,同人先行备修)
排错指引(从这批 issue 提炼)
| 症状 | 第一优先动作 | 本篇相关案例 |
|---|---|---|
| GE 报 only support contiguous inputs | 核非连续输入拦截;loss_scale 类路径改 ms 后端 | mindspore#97、#93、#21185 |
| 算子偶现错误、引入时间不明 | 二分定位 commit+pulls API 核引入 PR merged_at | mindspore#20475、#93 |
| O1 模式与标杆精度不一致 | 查代数化简路径,改回严格公式 | mindspore#100 |
| fp64 反向偶现超阈 | 核数学等价式的计算顺序差异 | mindspore#104 |
| triu/tril 下标算错 | 两算子 offset 语义差 1 | mindspore#89 |
| Xlogy 传非 Tensor 报错 | 原语已去 type_cast,走 functional 接口 | mindspore#184 |
| xlogy fp64 GE 反向不可用 | AI Core 仅 fp16/fp32,double 走 AI CPU | mindspore#106 |
| CANN 升级后算子批量报错 | 换包二分+查环境变量口径变更 | mindspore#479、mindspore#500 |
| bool 输入 uniform 失败 | 8.1 起 BOOL 废弃,改 aclnnBernoulli | mindspore#191 |
| rms_norm 0d 维度校验失败 | 现行约束 x∈[1,8],0d 改异常用例 | mindspore#501 |
| mint 接口传 inplace 报 TypeError | 特性回合延迟窗口,核 master 是否已合 | mindspore#20476 |
| FA 变长序列参数找不到 | 先查新名 batch_valid_length、回落 actual_seq_qlen | mindspore#432 |
| GQA+Ulysses 精度偏差 | head 数须可被 SP 切分,与 KV 头数冲突 | mf#179 |
| mf 文档问题找不到修复 PR | 去 mindspore/docs 仓找(r2.4.x=mf 文档线) | mindformers#138、mindformers#2049 |
| ONNX MaxPool1D 属性丢失 | pool parser helper 只校验不写回 | msl#413 |
| int8 量化结果全错 | 核 broadcast 维度对齐 | msl#232 |
| update 图转出输出数异常 | SetOutputs({}) 不给 GE 设输出 | msl#234 |
| 退出 core dump(单例先析构) | destroyed_ 原子标志短路回调 | msl#444 |
考据与口径披露
- KG 核实:涉及 API 语义/规格口径的核对用了昇腾知识图谱(ascend.wiki)官方文档与代码节点——rms_norm tiling 现行约束 x∈[1,8](rms_norm_tiling.cpp CheckInputShape4RmsNorm)、aclnnInplaceUniform BOOL 废弃建议改 aclnnBernoulli、FlashAttentionScore 变长序列输入 actual_seq_qlen/kvlen 为可选输入、CANN Xlogy 规格表 AI Core 仅 fp16/fp32、L0 算子连续 tensor 约束与 Contiguous 转换、HCCL 通信算子重执行、Ulysses head 维切分约束、vocab 并行 embedding、高精度模式影响推理性能、SparseSegmentSum 契约、原地拓宽 Cast 的缓冲约束、MaxPool3D 规格;mindspore-lite 实现类主题 KG 无覆盖的条目 kg_refs 留空,未硬凑。
- PR 合并判定:一律以 pulls API state=merged+merged_at 判定(merged 字段恒为 null 不可用);主仓与 mindformers 修复 PR 多落 gitee 镜像(GitCode 评论引用 gitee.com/mindspore/… 编号跨托管一致);gitcode 镜像 2024-12 段 PR 编号存在空洞(mf#179 的 PR4957/4960 404)改经 gitee 同号复核;ms#191 的 canndev PR 61484 因 gitee IP 级 403 未直验,以评论载明合入时间+KG 印证收录并标注;抽 6 条硬时序断言对 API 复核通过(mslite#232/#350 秒级一致、mf#165 合入后 4 分钟关单、mf#138 合入后 69 秒关单、mslite#390 孪生 PR 同日 10 秒先后、ms#93 引入 PR 实为 2-15)。
- 关联依据分层:秒级/毫秒级铁证 finished_at==merged_at(mslite#232/#242/#348/#350/#435);分钟级时间耦合(mf#165 合入 4 分钟后关单、mf#138 合入 69 秒后关单、mf#2402 合入 5 分 34 秒后关闭、mslite#444 PR 早 issue 11 分钟同人备修);显式关联(主仓 #104/#255/#103/#21185/#20476 走 GitCode SSR 活动流「关联了 Pull Request」系统事件、#432/#605/#21823 事件流+处理人评论、#184 评论引 PR、mslite#207/#310/#390 PR 正文显式 Fixes、mslite#234 与 mf#2213/#2171/#1957/#1950/#179/#2049 评论附 PR 链接经 pulls API 复核 merged);引入 PR+修复 PR 双锚点(主仓 #184/#97/#21181/#20475/#104/#93、mf#1943/#1950、mslite#413);自提单「根因评论发布即关单」秒级(mf#1929/#1943/#1954,系内部流程关单,时序不作 Fixes 依据);patch 级比对(mslite#242/#348/#350/#413/#435/#444);评论解答/官方 RCA 类无仓内 PR,以官方口径收录(主仓 #500/#20474/#501/#20588/#106/#209、#479/#186/#191 CANN 包升级族、mf#132/#176 文档族)。
- 时序陷阱实录:①2026-03-19 上午存在批量关单清扫(mf 弃收的 #2208/#2222/#2223/#2227 同分钟段 finished,关单时间与修复时间脱钩);②mslite#247 秒级对齐反例——PR 正文仅提及 issue 编号即触发自动关闭、而 PR 测试结论明言该问题未修复仅跟踪,秒级一致必须读 PR 正文语义甄别(该条按 closed≠fixed 弃收);③评论声称的合入时间以 API 为准(ms#93 评论称引入 PR 3-7 合入、API 实为 2-15);④孪生 PR 双分支常态(mslite#390 同日 10 秒先后、mf#1957 r1.6.0+dev、ms#605/#21823 master+r2.x 回灌),只看 master 漏半边;⑤GitCode 匿名 API 曾账号级 429 整批失效,issue 正文/评论改走 SSR HTML 内嵌 Nuxt payload 解析兜底获取。
- 诚实弃收:主仓 CANN/海思侧换包类 8 条(#484/#483/#487/#482/#189/#95/#105/#94,根因委派内部 DTS 公开层面仅「换包解决」);同质合并 4 条(#475/#520/#183 并入 #479/#186 同批、#21819 无根因);内部任务单/模板评论 4 条(#20647/#563/#448/#20468);#433 评论 API 401+SSR 正文被裁剪公开渠道无根因;#613 closed≠fixed;mindformers 侧 #1083/#60/#1952 无实质解答(后两者 PR 窗口扫描因双 API 限流未完成,已标[未核实])、#1942/#1949/#1962/#1964/#2081/#2093/#2097/#2180/#2201 质量让位或纯勘误、#2223/#2227 评论仅「已修复/已升级」无可钉死 PR;mslite 侧 #224/#274/#322/#345/#347 题材窄、#352/#380/#463/#471 文档勘误秒关自证、#354 内部 codecheck 批量单、#247 如上述秒级反例。
- 候选统计与溢出:本篇 50 条 = 上篇拆入 4 条(mindformers#132/#176/#2402+主仓#209)+ 本轮 93 条候选 7 批 worker 深析(主仓 52 候选留 30 取 24、mindformers 29 候选留 15 取 11、lite 22 候选留 11 全收);主仓 #544/#248/#29041 三条拆入下篇,其余 7 条弱条目按质量弃收。
接入昇腾知识图谱 https://gitcode.com/agent0/kg-tools
系列下一篇:mindspore 精选(三)—— 主仓与 mindformers 长尾收官(#544/#248/#29041 溢出 3 条开篇,主仓 86 条与 mindformers 94 条低评论池续采),欢迎留言点仓。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)