当前位置: 首页 > news >正文

CANN/cannbot-skills:网络用例映射

Step 5b:映射网络用例 → S5_mapped_cases_network.json

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

前置条件:Step 5a 完成(S5_case_mapper.py + S5_mapped_cases_path.json 已写入)

映射规则:5b 读S5_mapping_spec.md(算子侧规格)+S2P1_low_configs.json(网络侧结构),自行生成映射规则并写回S5_mapping_spec.md§网络用例映射。


输入文件清单见 00-execution-order.md。

1. 目标

S2P1_low_configs.json映射为与S2P2_cases.json格式一致的S2P2_network_cases.json,然后调用S5_case_mapper.main()复用 5a 全部管道,附加元数据后输出S5_mapped_cases_network.json

S5_mapping_spec.md§输入 tensor 的(DYNAMIC)标注识别 DYNAMIC 输入。读S2P1_low_configs.json前 3 条确认字段结构,生成映射规则并写回S5_mapping_spec.md§网络用例映射。

2. 数据流

S5_mapping_spec.md(算子侧:§dtype ~ §验证规则) + S2P1_low_configs.json(网络侧:config 字段结构) │ 5b 分析两侧,生成映射规则 │ 写回 S5_mapping_spec.md §网络用例映射(可审查) ▼ S2P2_network_cases.json(可审查) │ S5_case_mapper.main(network_cases_file, network_out_file, id_prefix="network") ▼ ── 内部经 load_mapped_configs → map_case → validate_config ── S5_mapped_cases_network.json │ 每条附加 _source / _reason 元数据

3. 映射推导

3.0 生成映射规则

S5_mapping_spec.md(§dtype ~ §验证规则,算子侧)+S2P1_low_configs.json前 3 条(网络侧),分析两侧字段对应关系,生成映射规则并写回S5_mapping_spec.md§网络用例映射。规则包括:

  • 每个 config 字段对应的算子参数名及映射方式(直接 / 乘积 / 透传)
  • DYNAMIC 输入的 tensor_count 来源(config 提供 / 固定值)
  • 缺失参数的默认值

后续 §3.1-3.6 的模式用于将生成的规则翻译为代码。

3.1 直接映射

config 中某字段直接对应算子参数。对应:case["{算子参数名}"] = cfg["{字段路径}"]

3.2 乘积映射

多个 config 字段的乘积对应一个算子参数。对应:case["{算子参数名}"] = cfg["{字段1}"] * cfg["{字段2}"]

3.3 dtype 映射

读 S5_mapping_spec.md §dtype 获取 dtype 控制参数名和合法值,对照 config 的 dtypes 字段确定映射。值直接透传。

3.4 attr 补全

对照 S5_mapping_spec.md §shape 构造参数 + §属性,对 low_config 中缺失的算子参数取 default 值,不随机采样。

3.5 tensor_count 映射(DYNAMIC 专用)

读 S5_mapping_spec.md §输入 tensor 中标注(DYNAMIC)的输入,对照 config 字段确定 tensor_count 来源:

  • config 提供:config 中有对应字段(如shapes.tensor_count)→case["{name}_count"] = cfg["{字段路径}"]
  • 固定值:config 中无对应字段 →case["{name}_count"] = {N}(N 在 [min, min(max, 50)] 范围内选取)

3.6 _group

所有网络用例的_group固定为"network"

4. 代码模板

def map_network_to_path_cases(configs_file): """ 将 S2P1_low_configs.json 转换为 S2P2_network_cases.json 子 agent 从 §3.0 生成的映射规则翻译生成 """ with open(configs_file) as f: configs = json.load(f) cases = [] for config in configs: cfg = config case = {} # ============================================================ # 以下内容由子 agent 翻译生成 # ============================================================ # 直接映射 case["{算子参数名}"] = cfg["{语义名}"] # 乘积映射 case["{算子参数名}"] = cfg["{语义名1}"] * cfg["{语义名2}"] # dtype 映射 case["{算子dtype_param}"] = cfg["{语义名}"] # attr 补全(不采样,取 default) case.setdefault("{算子参数名}", {default}) # tensor_count 映射(DYNAMIC 专用) case["{name}_count"] = cfg["{语义名}"] # 或固定值 # _group 固定 case["_group"] = "network" # ============================================================ cases.append(case) return cases

5. 生成 S2P2_network_cases.json + 调 main

import json, os from S5_case_mapper import main out_dir = os.path.dirname(os.path.abspath(__file__)) low_configs_file = os.path.join(out_dir, "S2P1_low_configs.json") network_cases_file = os.path.join(out_dir, "S2P2_network_cases.json") network_out_file = os.path.join(out_dir, "S5_mapped_cases_network.json") # 1. 语义→算子参数,写 S2P2_network_cases.json(可审查) cases = map_network_to_path_cases(low_configs_file) with open(network_cases_file, "w") as f: json.dump(cases, f, indent=2) print(f"Written {len(cases)} cases to S2P2_network_cases.json") # → 人工审查: 字段名、_group、乘积值、attr 默认值 # 2. 复用 5a 管道 main(network_cases_file, network_out_file, id_prefix="network") # 3. 附加元数据 low_configs = json.load(open(low_configs_file)) with open(network_out_file) as f: mapped = json.load(f) for i, mc in enumerate(mapped["cases"]): mc["_source"] = low_configs[i].get("source") mc["_reason"] = low_configs[i].get("reason") with open(network_out_file, "w") as f: json.dump(mapped, f, indent=2) print(f"Written S5_mapped_cases_network.json")

6. 输出

  • S2P2_network_cases.json— 中间产物,与S2P2_cases.json格式一致,所有字段为算子参数名,_group: "network"
  • S5_mapped_cases_network.json— 最终输出,与S5_mapped_cases_path.json格式一致,每条额外包含_source/_reason

验证说明main()内部已对每条 network case 执行 L1 校验(validate_config)。L2-L4 验证(S5_verify_mapper.py)仅在 5a 对 path cases 执行——其目的是验证 mapper 函数本身的正确性,5a 通过后即可认为map_case/validate_config逻辑可靠,network cases 复用同一函数无需重复验证。

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1120295/

相关文章:

  • 专业分工是否真的有必要? 最好是离开舒适区,让所有人都干活
  • ReactList 部署最佳实践:从开发到生产环境的完整配置流程 [特殊字符]
  • 如何使用Genome与Vapor框架构建现代Swift Web API:完整指南
  • Primer设计系统终极组件库解析:Button、Avatar、FormControl等50+组件详解
  • Instatic权限报告:用户访问与操作审计分析
  • Flutter游戏测试策略:单元测试与集成测试完整指南
  • Instatic边缘计算部署:Cloudflare Workers快速配置指南
  • RingAttention与传统注意力机制对比:为什么它是大语言模型的终极解决方案?
  • ofa.js 终极指南:无需构建的 MVVM 前端框架完全解析
  • 如何彻底解决Dell笔记本风扇噪音问题:专业级风扇控制完整指南
  • ChatGPT Pro深度评测:128K上下文与多模态能力如何重构专业工作流
  • 地平线J6与英伟达Orin芯片架构及自动驾驶算力优化
  • CANN/HCCL环状批量收发示例
  • postcss-write-svg常见问题解答:新手必知的8个疑难解决方法
  • NixOps4完全指南:如何用Nix声明式管理资源与部署
  • Steam Achievement Manager完整指南:开源Steam成就管理工具终极教程
  • 思源宋体完整使用指南:7种字重免费开源字体终极教程
  • Websocket-Rails部署指南:独立服务器模式与生产环境配置
  • CMS扩展性测试:Instatic插件加载性能与资源占用全解析
  • VS Code 1.26 发布:新增安全模式,多维度功能升级助力开发者
  • 如何在30分钟内部署kube-prod-runtime?多平台快速入门教程
  • 终极视频画质修复指南:如何用Video2X免费实现4K超分辨率与智能插帧
  • 紫队演练框架PTEF版本演进:从v1到v3的重要改进与最佳实践
  • 别再按固定间隔截帧了:claude-real-video 让任意大模型真正“看懂”视频
  • Genome转换器详解:Swift中自定义数据类型的映射与序列化完整指南
  • 如何部署高可用GhostDB集群?企业级分布式存储解决方案终极指南 [特殊字符]
  • 30天掌握AIGC:从Transformer到项目实战
  • 2023最新Python-Backdoor安装指南:从克隆到配置的完整步骤
  • 内容自动化工作流:Instatic与IFTTT、Zapier集成的终极指南
  • 如何配置Instatic内容发布审批工作流与权限控制