CANN/cannbot-skills: Kernel模式TTK执行验收

发布时间:2026/7/4 8:40:16
CANN/cannbot-skills: Kernel模式TTK执行验收 Kernel 模式 TTK 执行验收【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills前置条件任务 5 初步验证通过。目的在 TTK kernel 模式下验证 golden 函数与算子输出的精度比对结果。6a单用例探测cd {ops_test_kit_path} python3 -m ttk kernel \ -i {whitebox_dir}/ttk_{op_name}_cases_low.csv \ --plugin {plugin_path} \ -t {random_testcase_name} \ --pc 1 \ --seed 42命令固定仅-i/--plugin/-t根据算子变化-t指定随机挑选的一个用例避开 case00000优先选中间位置如 case00042防止首个用例恰巧正常而掩盖 CSV 格式问题不传-b/-d/-cTTK 根据用例自行选择编译模式验收检查项#检查项通过标准日志关键字1Custom golden 加载日志出现加载成功Loaded custom golden: kernel.{op_name}2编译成功编译通过Compilation Result: SUCC3Golden/Output 一致Shape 和 Dtype 匹配Golden ShapeOutput Shape4精度比对DYN_GOLD 结果输出DYN_GOLD:后有数值百分比失败处理见「失败诊断与纠错流程」。6b采样门禁执行必须执行前置条件6a 全部通过。使用 nohup 后台执行防止会话超时cd {ops_test_kit_path} setsid bash -c exec python3 -m ttk kernel \ -i {whitebox_dir}/ttk_{op_name}_cases_low.csv \ -o {whitebox_dir}/ttk_{op_name}_cases_low_sample_result.csv \ --plugin {plugin_path} \ --tc 10 \ --pc 1 \ --seed 42 {whitebox_dir}/ttk_batch_6b.log 21 disown--tc 10从 low CSV 中随机取 10 条作为门禁验证集默认 N10-o输出ttk_{op_name}_cases_low_sample_result.csv执行后提供进度查询指令pgrep -af ttk kernel | grep -v pgrep grep -c Performance result {whitebox_dir}/ttk_batch_6b.log tail -5 {whitebox_dir}/ttk_batch_6b.log执行完成后验收python3 -c import csv with open({whitebox_dir}/ttk_{op_name}_cases_low_sample_result.csv) as f: rows list(csv.DictReader(f)) passed sum(1 for r in rows if r.get(perf_status,) PASS) print(f{passed}/{len(rows)} {passed/len(rows)*100:.1f}%) 验收检查项#检查项通过标准检查方法1perf_status 通过率≥ 90% 用例 PASS统计ttk_{op_name}_cases_low_sample_result.csv中perf_status列2编译成功率全部 SUCC日志无Compilation Result: FAIL3无内存越界全部memory_oob_status为空或 PASSttk_{op_name}_cases_low_sample_result.csv检查失败处理见「失败诊断与纠错流程」。若批量通过率 90%先执行步骤一区分批量干扰。失败诊断与纠错流程适用于 6a/6b/6c 中任何用例执行失败的场景。6a/6b 的「失败处理」均指向本节。步骤一区分批量干扰 vs 真实用例问题现象TTK 批量执行--tc NN 1时部分用例 PASS、部分 FAIL 交替出现但单独执行同一 FAIL 用例却 PASS。这是 TTK 多进程执行环境下的已知干扰现象进程间共享设备状态导致 tiling 上下文污染。判定方法将所有批量执行中 FAIL 的用例逐个单独执行cd {ops_test_kit_path} python3 -m ttk kernel \ -i {whitebox_dir}/ttk_{op_name}_cases_low.csv \ --plugin {plugin_path} \ -t {fail_case_id} \ --pc 1 --seed 42单独执行结果判定处理PASS批量干扰非用例问题记录为 TTK 工具限制不修改用例。全部 FAIL 用例单独执行均 PASS → 门禁视为通过FAIL真实用例问题进入步骤二步骤二收集失败用例的输入输出空间信息对每个真实失败的用例从S5_mapped_cases_low.json提取case[params]路由参数x_dtype、scalar_dtype、path、key 等case[tensors][inputs]各输入的 shape、dtypecase[tensors][outputs]各输出的 shape、dtype从 TTK 日志中提取错误类型日志关键字错误类型常见原因OPTILING_FAILURECheckScalar/Checktiling 参数校验失败dtype 组合非法、shape 超限Compilation Result: FAIL编译失败kernel 不支持该 dtype/shapeDYN_GOLD:非 100%精度不匹配golden 函数实现有误步骤三与 S5_mapping_spec.md 交叉核查将失败用例的输入输出空间信息与S5_mapping_spec.md中声明的约束逐条比对核查维度检查内容对照来源dtype 组合x_dtype 与 scalar_dtype 的组合是否合法S5_mapping_spec §dtype 源码 SUPPORT_DTYPE_COMBshape 约束各 tensor 的 shape/dtype 是否满足算子约束S5_mapping_spec §shape 构造参数输出推导输出 shape/dtype 是否与输入一致S5_mapping_spec §输出 tensor参数语义case 字段名是否与 tiling 源码变量语义一致S5_mapping_spec tiling 源码步骤四溯源错误传播链从失败点向上游逐层追溯定位根因TTK 执行失败tiling/编译/精度 ↑ CSV 字段值错误ttk_{op}_cases_low.csv ↑ S5_case_mapper.py 映射逻辑错误如从错误字段读取 dtype ↑ S2P2_cases.json 枚举数据错误如跨参数约束未过滤 ↑ S2P2_param_def.json 参数定义/约束遗漏如 per_dtype 未结构性过滤关键检查点跨参数约束如 dtype 组合限制是否在per_dtype中结构性过滤而非仅在文本中描述case 字段名是否与 tiling 源码变量语义一致mapper 是否从正确的 case 字段读取值步骤五修正并重新生成按依赖顺序从根因文件开始向下游修正顺序文件操作1S2P2_param_def.json修正 per_dtype / 约束定义2S2P2_gen_cases.py→S2P2_cases.json重新运行枚举3S5_mapping_spec.md修正参数语义描述4S5_case_mapper.py/S5_network_mapper.py修正映射逻辑5S5_merge_expand.py→ low/high JSON重新合并展开6TTK CSV任务 3-4重新生成步骤六重新验证修正后必须重新执行完整验收链6a → 6b→ 6c。回归检查对比修正前后的 PASS/FAIL 用例集合确认修正未引入新的失败。6c全量执行可选默认不执行前置条件6b 门禁通过。6c 为可选步骤默认不执行。主 Agent 向用户确认选项说明执行全量用 nohup 后台执行全量 low CSV跳过结束 TTK 模块超时处理若发出确认后 1 分钟内用户未回复默认选择「跳过」。用户确认「执行全量」后使用 nohup 后台执行cd {ops_test_kit_path} setsid bash -c exec python3 -m ttk kernel \ -i {whitebox_dir}/ttk_{op_name}_cases_low.csv \ -o {whitebox_dir}/ttk_{op_name}_cases_low_result.csv \ --plugin {plugin_path} \ --pc 1 \ --seed 42 {whitebox_dir}/ttk_batch.log 21 disown执行后提供进度查询指令pgrep -af ttk kernel | grep -v pgrep grep -c Performance result {whitebox_dir}/ttk_batch.log tail -5 {whitebox_dir}/ttk_batch.log执行完成后验收python3 -c import csv with open({whitebox_dir}/ttk_{op_name}_cases_low_result.csv) as f: rows list(csv.DictReader(f)) passed sum(1 for r in rows if r.get(perf_status,) PASS) print(f{passed}/{len(rows)} {passed/len(rows)*100:.1f}%) 【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考