| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(parser): ONNX 属性 JSON 保真修复——补 DOUBLE 序列化分支并提升 FLOAT 精度 Co-authored-by: chenqian1365<chenqian2@huawei.com> # message auto-generated for no-merge-commit merge: !5543 merge fix/onnx-attr-json-fidelity into develop fix(parser): ONNX 属性 JSON 保真修复——补 DOUBLE 序列化分支并提升 FLOAT 精度 Created-by: chenqian1365 Commit-by: chenqian1365 Merged-by: cann-robot Description: # Pull Request ## 描述 原始讨论帖:https://gitcode.com/cann/ops-nn/discussions/13 修复 GE 属性 JSON 序列化层( Pb2Json)的 ONNX 属性保真缺陷。插件使用新式回调 .ParseParamsByOperatorFn 时,op_src.GetAttr("attribute") 拿到的 JSON 存在丢数据/截断: 1. **typed DOUBLE 变 null**:OneField2Json 与 RepeatedMessage2Json 均无 TYPE_DOUBLE 分支,TensorProto.double_data(repeated double)落 default: break 后被逐元素追加 nlohmann 默认构造的 null(插件侧见 "double_data": [null],原值不可恢复);singular double 字段则整体静默丢弃。本 PR 补上 TYPE_DOUBLE 分支,按数字形态输出——与 float_data/int64_data 等兄弟字段形态一致,nlohmann dump 为最短往返表示,无损。 2. **scalar FLOAT 截断到 6 位有效数字**:OneField2Json 对 TYPE_FLOAT 用 sprintf_s("%g"),不能由 6 位往返的取值(如 1.5957691f,float32 实值 1.5957690477371216)被输出为 "1.59577",读回误差约 8 ULP。改为 %.9g(float32 往返充分精度),缓冲区 10→32 字节;对外仍为字符串形态(兼容按字符串读取的已迁移插件),且 sprintf_s 失败的数字 fallback 分支不再可达,一并消除同一字段字符串/数字混用的形态歧义。 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 描述测试此变更的步骤和前提条件: 1. UT:tests/parser/ut/parser 新增 4 个往返用例(double_data 双值往返含 1e200 极值、ONNX 属性 f 字符串形态+精度往返、Pb2Json 层 singular double 不丢弃、float 往返);ut_parser 全量 671/671 通过,回归敏感用例(message_to_operator_fail、message_to_operator_onnx_attr_float_default_value 的 "0" 输出等)不受影响。 2. pre-commit 全量 hook(clang-format/codespell/OAT)通过。 3. 端到端实机验证:以本改动构建 ge-compiler + ge-executor 组件 run 包,在 Ascend910_9362(Atlas A3)环境整包换装后,ATC --framework=5 加载探针插件(REGISTER_CUSTOM_OP PartitionedCall,仅打印 attribute JSON)复跑三个用例:ConstantOfShape typed DOUBLE 由 "double_data":[null] 恢复为 [1.234567890123];HardSigmoid alpha 由 "1.59577" 变为 "1.59576905"(float32 精确往返)、beta 保持 "0.5";raw_data 对照用例逐字节不变。三用例均 ATC run success(rc=0,om 正常生成)。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 邻近缺陷(不在本 PR 范围,建议跟进):RepeatedMessage2Json 对 repeated TYPE_STRING/TYPE_BYTES 不做 CEscape,配合 dump(error_handler_t::ignore) 时非 UTF-8 字节(如 TensorProto.string_data、二进制 strings 属性)会被静默丢弃。该修复属行为变化(非 ASCII 字符串将变为 \ooo 转义),需与 onnx 插件迁移方协同,建议另开 issue/PR 处理。 See merge request: cann/ge!5543 | 6 天前 | |
fix: precommit整改 Co-authored-by: yelongjian<yelongjian1@huawei.com> # message auto-generated for no-merge-commit merge: !3726 merge dev-precommit into develop fix: precommit整改 Created-by: yelongjian Commit-by: yelongjian Merged-by: cann-robot Description: # Pull Request ## 描述 precommit整改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.NA ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/ge!3726 | 4 个月前 |