首页/新闻资讯/正文详情

Kornia ONNX / torch.export / torch.compile 支持页面:从图捕获调研到自动生成的兼容性文档

发布时间:2026/11/11 12:21:39 来源:云帆数科 栏目:资讯中心
Kornia ONNX / torch.export / torch.compile 支持页面:从图捕获调研到自动生成的兼容性文档
Kornia ONNX / torch.export / torch.compile 支持页面从图捕获调研到自动生成的兼容性文档【免费下载链接】kornia Geometric Computer Vision Library for Spatial AI项目地址: https://gitcode.com/GitHub_Trending/ko/kornia本指南围绕 Kornia 仓库中新增的ONNX、torch.compile 与 torch.export 支持Export Support页面展开介绍它是如何在构建时由一个提交到仓库的调研快照docs/source/_data/export_support.json自动渲染出来的以及支撑它的整套图捕获graph-capture调研工具链docs/export_support/如何测量、续跑和合并结果。读完本文你将掌握该页面的数据来源、每条状态的含义、如何重新运行调研刷新快照、如何注册新的被测用例以及如何理解失败原因并判断一个 Kornia 算子能否导出到 ONNX 或跑通torch.compile。该页面位于文档 Resources 目录下的get-started/export-support入口见 docs/source/get-started/index.rst对应源文件为docs/source/get-started/export-support.rst——注意这个.rst文件本身是由docs/generate_export_support.py在文档构建时根据快照 JSON 生成的页面源码头部也明确写着编辑 JSON 和生成脚本而不是编辑本文件。一、这个页面解决什么问题Kornia 是一个几何计算机视觉库包含kornia.color、kornia.filters、kornia.geometry、kornia.augmentation、kornia.feature、kornia.losses、kornia.models等大量模块。用户在把模型部署到 ONNX Runtime、用torch.compile加速推理、或用torch.export做整图捕获时最常遇到的问题是某个算子到底能不能被捕获成一张静态图失败原因往往是缺失的 ONNX lowering、数据相关的输出形状或前向过程中的 Python 控制流——这些只有逐个算子实测才知道。新增的迁移条目changelog.d/migration-022.added.md记录了这一变化AnONNX, torch.compile and torch.export supportpage under Resources (get-started/export-support) lists every surveyed public operator, grouped by package and section, with its dynamo ONNX export,torch.exportandtorch.compileoutcome, the cause of each failure and a search box with result filters. It is rendered at build time from the committed snapshotdocs/source/_data/export_support.json;docs/export_support/run.pyreruns the survey to refresh it. (#4182)也就是说页面不是人工维护的表格而是由一次**库级图捕获调研survey**驱动的每个公开算子、模型和数据增强都用真实输入跑一遍 PyTorch 的三条图捕获路径把结果提交为 JSON 快照构建文档时再渲染成带搜索框和过滤器的交互式页面。二、数据流从调研到页面完整链路如下注册用例在docs/export_support/cases_*.py中用case(...)登记每个被测算子详见第四节探测python docs/export_support/run.py并行启动两类 worker——harness.py做 ONNX 探测probe_compile.py做torch.export/torch.compile探测——结果写入docs/export_support/results/git-ignored合并docs/export_support/merge.py校验所有结果文件与各自的inventory_*.json后产出快照docs/source/_data/export_support.json提交到仓库渲染文档构建时由 docs/generate_export_support.py 读取该 JSON生成docs/source/get-started/export-support.rst页面。docs/export_support/README.md强调nothing here runs during a docs build——即调研脚本只在刷新快照时运行构建页面时只有生成器读取已提交的 JSON。这样文档构建既不依赖网络、也不依赖可能很慢的探测过程同时保证页面数据可审计、可复现。页面渲染的关键参数来自 generate_export_support.py 的状态表如下状态单元格显示含义okyes成功捕获且结果与 eager 执行一致ok-breaksyes, graph breaks编译成功且与 eager 一致但 dynamo 在若干处 graph break 回退到 Pythonok-unverifiedyes (random)捕获并运行成功因含随机算子只比较输出形状与有限性mismatchmismatch捕获并运行成功但结果与 eager 不同failno捕获或转换失败Details 列说明原因n/an/a不是张量图文件 I/O、枚举、Python 容器、stub或无法用探测输入运行每个状态还带有面向用户的简短原因onnx_detail/export_detail/compile_detail多个列共享同一原因时会合并显示例如**ONNX, export, compile:** ...见_details函数。页面还额外统计全部三条路径都通过的配置数、被探测算子的去重数量同一个算子的不同配置只算一个算子等指标。三、调研到底测量了什么3.1 用例case的定义一个case就是一个公开可调用对象函数或nn.Module实例加上一组具体的 CPU float32 张量输入注册在某个cases_*.py文件中。根据README.md的划分文件覆盖范围cases_aug.pykornia.augmentation2D、3D、容器、自动策略cases_feature.pykornia.feature检测器、描述子、匹配器cases_geomA.pykornia.geometry的变换、转换、相机、标定cases_geomB.pykornia.geometry其余部分对极几何、李群、Boxes 等cases_misc.pykornia.filters、color、enhance、morphology、contrib、losses、metrics、utils、sensors、io、nerf、tracking、xcases_models.pykornia.models权重未缓存时会自动下载例如 cases_misc.py 里定义了一批标准输入IMG torch.rand(1, 3, 32, 40)、GRAY torch.rand(1, 1, 32, 40)、RGBA torch.rand(1, 4, 32, 40)、VOL torch.rand(1, 1, 8, 16, 16)等然后通过add(RgbToGrayscale, KC.RgbToGrayscale(), IMG)这类调用批量注册。3.2 三条探测路径对每个用例调研分别执行ONNXharness.pytorch.onnx.export(dynamoTrue, opset_version18)然后onnx.checker.check_modelfull check最后在 onnxruntimeCPU中运行并与 eager 逐输出比较默认atol2e-4, rtol1e-3可用atol/rtol参数覆盖torch.exportprobe_compile.pytorch.export.export默认非严格模式torch.compileprobe_compile.py#L153-L185先torch._dynamo.explain统计 graph break 次数再用默认 inductor 后端、fullgraphFalse跑torch.compile并与 eager 比较。ONNX 路径还会记录图的操作类型集合op_types、导出图大小size_kb和耗时time_s失败时记录根因错误err_str会沿着__cause__/__context__链找最深层原因以及涉及到的 kornia 源码帧_kornia_frames最多取最内层 6 帧用于页面上显示kornia/xxx.py:行号定位信息。3.3 随机算子的处理含有随机性的算子无法逐值比较图内 RNG 流与 eager 不同因此checkFalse的用例在导出并运行成功、输出形状正确且值有限时记为ok-unverified。比如Normalize[random]这种把采样放进图内的配置在快照里onnx与compile都是ok-unverified并附注 random operator: exported and ran; only output shape and finiteness are checked见 export_support.json 的实际记录。3.4 与 eager 的比较逻辑比较函数closeharness.py会先比对形状布尔输出用逐元素相等NaN 掩码必须一致且只比较非 NaN 部分最后用np.allclose(atol, rtol)判断失败时报告最大绝对差及超差元素数。输出展开用_flatten_outputs支持Boxes、Keypoints、Se3、Quaternion、Image这类通过.data属性暴露张量的容器也支持任意嵌套的 pytree 结构。四、如何刷新快照命令与机制4.1 标准流程docs/export_support/README.md给出了刷新快照的完整流程pixi run -e default install-docs pixi run -e default build-docs # 先构建一次让算子获得交叉引用 python docs/export_support/run.py # 8 核 CPU 约 2 小时可续跑 pixi run -e default build-docs第一步构建文档是为了生成 Sphinx inventorydocs/build/html/objects.invmerge.py会用它把算子名转成页面上的交叉引用链接如果没有该文件所有算子将渲染为纯文本merge.py 会打印警告但不会失败。install-docs/build-docs这两个命令定义在 pixi.toml其中build-docs实际执行uv run python -m sphinx -W -b html docs/source docs/build/html。run.py支持的参数见其 docstring 与main函数python docs/export_support/run.py # 全部 6 个分组约 2 小时仅 CPU python docs/export_support/run.py aug misc # 只跑指定分组 python docs/export_support/run.py --merge-only # 只基于已有 results 重新合并 JSON python docs/export_support/run.py --force # 即使结果不完整也强制合并分组名取自GROUPS [aug, feature, geomA, geomB, misc, models]run.py传了未知分组会直接报错退出。4.2 并行与续跑机制run.py用ThreadPoolExecutor为每个分组启动两个进程onnx:group跑cases_group.pycompile:group跑probe_compile.py即最多 12 个并发 worker。每个 case 在运行前会先写入一个crashed标记这样进程若因 segfault/OOM 硬崩溃重启后该 case 的失败状态是可见的。续跑resume的核心在 harness.py 的 prepare_resume每个探测会写一个inventory_*.json记录本次运行的 kornia revisiongit rev-parse --short HEAD含-dirty后缀和 torch 版本。已存在的记录只有在 inventory 的(revision, torch)与当前完全一致时才会被复用否则全部丢弃重新测量——不同版本下测得的结果不会被续用避免跨版本混用数据。probe_compile.py还引入了中毒poisoned机制如果某个 case 让 dispatcher 状态损坏PythonDispatcherTLS not setworker 以退出码POISON_EXIT 3退出run.py会重启它最多MAX_RESTARTS 50次由于结果可续跑重启后会自动跳过已完成 case 继续剩余工作。4.3 合并的保护措施merge.py的_validate会做三重校验任何一项不满足都会拒绝写快照除非--force每个结果文件旁边必须有对应的inventory_*.json每个 case 必须有非 crash 标记的真实记录否则报告缺多少个如12 of 40 cases have no record, e.g. [...]所有分组的 inventory 必须声明相同的 kornia revision 和 torch 版本。这样部分运行永远不会静默地少算覆盖率。合并时还排除了 crash 标记和由中毒解释器导致的假 eager 失败记录_load_results中的bogus判断。合并出的 JSON 头部记录了生成日期、kornia/torch/onnx/onnxruntime/onnxscript 版本、Python 版本、opset18、设备cpu并按 pre-commit 的pretty-format-json期望格式indent2, sort_keysTrue写出保证重新生成时 diff 干净。五、失败原因的自动归类页面 Details 列的每个失败原因都由merge.py的_reason函数自动生成分为几类缺失 ONNX lowering错误信息匹配No ONNX function found for OpOverload(opaten.xxx时用ATEN_NAMES表映射成用户叫法例如_linalg_svd → torch.linalg.svd、linalg_qr → torch.linalg.qr、histc → torch.histc、searchsorted → torch.searchsorted数据相关data-dependent_CAUSES表按错误子串匹配例如Could not extract specialized integer from>from harness import case, run_cases CASES [case(rgb_to_grayscale, color, K.color.rgb_to_grayscale, [torch.rand(1, 3, 32, 32)]), ...] if __name__ __main__: run_cases(CASES, sys.argv[1], onlysys.argv[2:] or None)run_cases会先检查重复 case 名重复则拒绝运行并且对每个 case 先写 crash 标记再运行、运行后立即落盘保证中断/崩溃后重启能无缝续跑每个 case 也会打印一行name status size time的实时进度最后输出按状态计数的 SUMMARY。only参数支持按 case 名、分组名或名字前缀过滤。七、实测数据的样子与版本前提以提交的快照 docs/source/_data/export_support.json约 2.2 万行为例前两条记录分别是Normalize三条路径全部ok0 graph breaks和Normalize[random]onnx/compile为ok-unverified附随机算子说明——这正是文档里所说增强类算子探测两次参数作为图输入确定性图与采样放进图内[random]的体现。页面头部还会展示三项卡片指标ONNX 导出、torch.export、torch.compile各自的supported / probed比例并注明快照的测量环境kornia、torch、onnx、onnxruntime、onnxscript 版本及 Python 版本。这些数字与版本强绑定——README 明确提醒除非本次重跑的目的就是升级版本否则请用与快照头部一致的 torch / onnx / onnxruntime / onnxscript 版本运行探测否则合并出的快照会与页面环境不一致。页面同样建议读者查阅docs/source/get-started/onnx.rst了解如何串联多个导出的图查阅docs/source/get-started/gpu-acceleration.rst了解torch.compile的实际用法。八、小结这个新增的 Export Support 页面把Kornia 算子能否被三种图捕获路径支持从人工经验变成了可审计、可续跑、可复现的工程事实cases_*.py定义测量范围harness.py/probe_compile.py执行三类探测run.py编排并行与续跑merge.py用 inventory 校验保证合并安全generate_export_support.py在构建时把提交的快照渲染成带搜索框、过滤器和逐条失败原因的可交互文档。对开发者而言它的价值是双重的既是一张部署前查证算子兼容性的权威表格也是一套可以自行扩展和刷新的测量流水线——新增一个公开算子注册一个case(...)重跑run.py并提交新快照即可。【免费下载链接】kornia Geometric Computer Vision Library for Spatial AI项目地址: https://gitcode.com/GitHub_Trending/ko/kornia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

3 步跑通 reverse-engineer-anything:让 AI 编码助手自己追出二进制里的实现
3 步跑通 reverse-engineer-anything:让 AI 编码助手自己追出二进制里的实现

3 步跑通 reverse-engineer-anything:让 AI 编码助手自己追出二进制里的实现 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea REA 的 re… · 2026/11/5 8:38:45

3种“new“用法,90%开发者不知道的C#陷阱!
3种“new“用法,90%开发者不知道的C#陷阱!

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不孤单🚀 🔥即刻启航,编程之旅更有趣🚀 C#中"new"的三大核心用法深度剖析 一、创建对象实例:最熟悉的&q… · 2026/11/5 1:23:41

doocs/md 微信 Markdown 编辑器:从第一篇草稿到公众号发布的完整实操指南
doocs/md 微信 Markdown 编辑器:从第一篇草稿到公众号发布的完整实操指南

doocs/md 微信 Markdown 编辑器:从第一篇草稿到公众号发布的完整实操指南 【免费下载链接】md ✍ WeChat Markdown Editor | 一款高度简洁的微信 Markdown 编辑器:支持 Markdown 语法、自定义主题样式、内容管理、多图床、AI 助手等特性 项目地址: htt… · 2026/11/9 20:59:56

低压电工证免费培训吗良心建议:实操考试心里没底怕挂科怎么办
低压电工证免费培训吗良心建议:实操考试心里没底怕挂科怎么办

低压电工证免费培训吗良心建议:实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科,你不是一个人。作为特种作业持证人员,低压电工证是很多电工从业者进阶的关键,也是上岗的必备条件。但现实中,很多人担心自己考试不过,尤其是实操部分,一不小心就挂… · 2026/11/11 12:21:09

电工证查不到国网值不值得考
电工证查不到国网值不值得考

电工证查不到国网值不值得考 证书过期了不知道怎么复审延期,这事儿很多人都遇到过。尤其是像我们河南水利工程从业者,现场作业频繁,证件一旦过期,不仅影响工作,还可能被处罚。最近有不少人问:“ 电工证查不到国网值不值得考… · 2026/11/11 12:21:09

广西考建筑电工证怎么准备?实操考试心里没底怕挂科?官方报名入口在这里
广西考建筑电工证怎么准备?实操考试心里没底怕挂科?官方报名入口在这里

广西考建筑电工证怎么准备?实操考试心里没底怕挂科?官方报名入口在这里 实操考试心里没底怕挂科?广西考建筑电工证的朋友们,别慌,这篇文章就帮你理清楚备考思路,告诉你在哪里能报名,怎么准备,还能避免哪些常见问题。别再被那些“过不了”“考不进”的… · 2026/11/11 12:21:09

考特种作业操作证资料合格标准与通过率,全国通用证件怎么考才稳?
考特种作业操作证资料合格标准与通过率,全国通用证件怎么考才稳?

考特种作业操作证资料合格标准与通过率,全国通用证件怎么考才稳? 怕考不过白交培训费,这是很多准备考特种作业操作证的人最怕的事。尤其是像南阳卧龙区市政公用工程从业者,很多都在工地一线干活,时间紧任务重,谁也不想花了钱还拿不到证。现在市面上培训… · 2026/11/11 12:21:09

电工证和驾照哪个难考 别踩坑了!跨省证书怎么转过来
电工证和驾照哪个难考 别踩坑了!跨省证书怎么转过来

电工证和驾照哪个难考 别踩坑了!跨省证书怎么转过来 之前考的证在外省能不能转过来?这是很多郑州金水区市政公用工程从业者最关心的问题,尤其是那些在外地考了电工证、焊工证或高处作业证的人。别踩坑了!如果你正在考虑换证或者打算考一个特种作业证,先… · 2026/11/11 12:21:09

电工证报考哪个部门在哪考 找工作必须知道的实操干货
电工证报考哪个部门在哪考 找工作必须知道的实操干货

电工证报考哪个部门在哪考 找工作必须知道的实操干货 现在找工作,很多单位都要求必须有电工证才能上岗,特别是像郑州这种工地、工厂集中的地方,没有电工证连面试机会都没有。很多人一着急就乱报,结果花了钱还拿不到证,或者报错了地方,耽误时间又浪费钱… · 2026/11/11 12:20:09

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/10 17:11:43

_中职电工证最新政策解读
_中职电工证最新政策解读

中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52

昆明电工证培训价格值不值得考?老电工告诉你真相
昆明电工证培训价格值不值得考?老电工告诉你真相

昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52

特种电缆张工网上查询全攻略:外省证如何转过来
特种电缆张工网上查询全攻略:外省证如何转过来

特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 17:00:47

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码