api-mapping-updater
定期触发验证并自动更新 API 映射表。基于 verify_api_mapping.py 全量验证,检测分类漂移,自动修复高置信度问题,低置信度进入Agent 审核队列。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
定期触发验证并自动更新 API 映射表。基于 verify_api_mapping.py 全量验证,检测分类漂移,自动修复高置信度问题,低置信度进入Agent 审核队列。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
循环新增 Paddle 对 PyTorch C++ 兼容接口。Use when: 有新增 PyTorch C++ API 需求时,在 Paddle compat 层新增接口与测试,并执行双仓编译、ctest、wheel 安装和回归验证。
根据 PR 链接、GitHub Actions 链接或 review/comment 链接定位问题并修复 Paddle C++ compat 接口。Use when: 需要按外部链接驱动修复 c10/ATen/torch 兼容层接口并完成编译、测试和回归。
按需验证单个或批次 API 的映射准确性,基于 Step 2-1 追踪方法深入 PyTorch 实现链路。支持发现问题、给出修复建议、执行修复。
编写或更新 Paddle 与 PyTorch C++ API 兼容性文档。Use when: 添加兼容文档、补充 API 对比表、补全兼容性统计、拆分 typeid 类级文档、统一文档格式。
编写或更新 Paddle 与 PyTorch C++ API 兼容性文档。Use when: 添加兼容文档、补充 API 对比表、补全兼容性统计、拆分 typeid 类级文档、统一文档格式。
PaddlePaddle 与 PyTorch C++ API 兼容性测试开发规范。适用于:编写或扩展 test/ 目录下的兼容性测试、验证 Paddle 兼容层与 PyTorch 同一 API 的行为一致性、定位接口输出差异、新增算子测试、覆盖 Shape/Dtype/值域/API 变体。Use when: writing compatibility tests, adding operator tests, checking ATen/c10 API behavior differences between Paddle and PyTorch.
| name | api-mapping-updater |
| description | 定期触发验证并自动更新 API 映射表。基于 verify_api_mapping.py 全量验证,检测分类漂移,自动修复高置信度问题,低置信度进入Agent 审核队列。 |
| argument-hint | 可选批次名(P0/P1/P2/P3/P4/P5/all),不传则全量验证 |
基于 Step 2-1 追踪验证的映射表自动维护工作流,定期检测 PyTorch/Paddle 更新导致的映射分类漂移。
| 上游调用方 | 调用时机 | 期望传入字段 | 处理策略 |
|---|---|---|---|
| cron / schedule | 定期触发(如每周) | batch=all | 全量验证 + 自动修复 + 生成报告 |
| 用户手动 | 映射表疑似过时 | batch=P4_missing 等 | 指定批次验证 |
| CI/CD | Paddle/PyTorch 版本升级后 | batch=all | 全量验证确认兼容性 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
batch | string | all | 验证批次:P0/P1/P2/P3/P4/P5/all |
auto_fix | bool | true | 是否自动修复高置信度问题 |
output_dir | string | doc/mapping/verification_output | 报告输出目录 |
libtorch_ops_dir | string | D:/Lenovo/libtorch/include/ATen/ops | libtorch 头文件路径 |
paddle_src_dir | string | D:/Lenovo/Paddle | Paddle 源码路径 |
pytorch_src_dir | string | D:/Lenovo/pytorch | PyTorch 源码路径 |
verification_report_YYYY-MM-DD.md — 人类可读的差异报告verification_results_*.json — 结构化验证结果fix_log_YYYY-MM-DD.md — 自动修复操作记录manual_review_queue.json — 需 Agent 确认的条目核心原则:脚本只负责表层验证(头文件签名、kernel 文件路径定位、重复条目检测),具体 C++ 实现逻辑的审核由 Agent 逐一阅读源码完成。
确认以下路径存在且可访问:
libtorch_ops_dir — ATen/ops 头文件paddle_src_dir/paddle/phi/api/include/api.h — Paddle API 声明pytorch_src_dir/aten/src/ATen/native/native_functions.yaml — PyTorch 原生函数定义cd "$PCAT_ROOT/doc/mapping"
python verify_api_mapping.py --batch "$batch"
脚本输出(仅限表层信息):
对 P0(API 完全一致)和 P1(仅参数名不一致)等关键批次的 API,逐一阅读 C++ 实现文件,对比以下维度:
| 检查项 | PyTorch 关注点 | Paddle 关注点 | 差异影响 |
|---|---|---|---|
| 核心数学运算 | 实际调用的函数(std::abs, sum_stub 等) | Functor 中的运算(Acos<T>, SumFunctor) | 数学语义是否一致 |
| 数据类型处理 | AT_DISPATCH_* 宏、complex 分支 | if constexpr、float16 特化 | dtype 支持范围是否一致 |
| 空张量处理 | TensorIterator.numel() == 0 | if (x.numel() == 0) | 边界行为是否一致 |
| 精度累积 | should_use_acc_buffer、中间 float 缓冲 | Cast 到 float32 | 低精度输入结果是否一致 |
| 非连续张量 | TensorIterator 自动处理 | 是否检查 is_contiguous() | 布局敏感操作是否有差异 |
| 异常/断言 | TORCH_CHECK、AT_ASSERT | PADDLE_ENFORCE | 异常触发时机是否一致 |
| in-place 限制 | complex 禁止、维度检查 | 是否由上层框架处理 | in-place 语义是否一致 |
审核产出:每个 API 的风险评级(低/中/高)+ 差异说明
对比本次与历史验证结果:
truly_missing(Paddle 侧实现被移除)verified_api_h_only(Paddle 新增实现但未封装 compat)alias_candidate(发现新别名映射)verified_compat → truly_missing)脚本可自动修复的场景(不涉及实现逻辑判断):
| 场景 | 修复操作 | 置信度 |
|---|---|---|
| 别名映射在 Paddle api.h 中无实现 | 从 cpp_api_alias_mapping.json 移除 | high |
| 映射表中有重复条目 | 删除重复,保留正确分类 | high |
verified_compat API 的 compat 层文件缺失 | 降级为 verified_api_h_only | medium |
发现新的 strip_underscore_prefix 别名 | 添加到 cpp_api_alias_mapping.json | high |
⚠️ 注意:脚本不判断实现语义等价性,语义审核必须由 Step 3 的 Agent 审核完成。
修复后运行 fix_mapping.py 更新 cpp_api_mapping_cn.md。
python generate_comprehensive_report.py
报告包含:
若存在修复:
git add doc/mapping/git commitgit push origin docverified_compat 类是否仍有效cpp_api_mapping_cn.md 和 cpp_api_alias_mapping.json❌ 错误:自动移除了实际上存在的别名映射(因 api.h 未暴露但 kernel 已注册)
✅ 要求:kernel_only 的 API 不移除别名映射,仅标记状态
❌ 错误:每次全量验证 1096 个 API,耗时数小时 ✅ 要求:支持增量验证(仅验证变更分类的 API)
❌ 错误:每次验证覆盖上次的报告 ✅ 要求:报告文件名带时间戳,保留历史报告