SuperAPI AI 工具集

add-shape-types-to-torch-model

通用与其它

查看项目

更新于 10-16 08:37

技能介绍

用途:把 PyTorch 模型迁移到 pyrefly 的张量形状类型系统,包括使用 Tensor[[B, C, H, W]]、Int[T] 等形状类型,添加或转换形状注解,并按需做形状检查。

主要能力与做法:资料强调按模块逐个迁移,先完成一个模块再开始下一个;先做操作审计(模块构造与调用、Tensor 方法、运算符与索引、torch/F. 函数、第三方 API 等),把每个表达式归类为 tracked-stub、tracked-DSL、tracked-handler、gradual、Any、unavailable-overlay-symbol 或 third-party-boundary。可从源码中挖掘形状证据(jaxtyping 注解、文档字符串与注释、reshape/view、einsum/einops、配置维度、测试夹具等),形成形状映射。

使用方式:默认检查命令为 pyrefly check,可用 pyrefly dump-config 查看解析路径;Pyrefly 需通过所选解释器或 --site-package-path 看到真实的 torch 安装;模型使用 einops 时还需加入 pyrefly-einops-stubs 根。迁移前先检查一个已知良好的邻近示例并要求 0 错误,同时记录目标边界迁移前的错误数作为基线。

处理既有 jaxtyping:若目标是原生语法转换,需清点每个 jaxtyping 注解及其预期形状;若目标是尽量少改生产代码的形状检查,可考虑用 @static_jaxtyping("...") 声明维度名并保留原注解。转换后要对比清点结果,每个被移除的注解都要有精度相等或更好的原生对应,或记录无法表达的原因。变长前缀如 "*B D" 应使用 Bs: IntTuple 与 Tensor[[*Bs, D]],不要退化为裸 Tensor。

适用场景:为个人模型添加形状注解(常见情形)、贡献参考示例(穷尽式,记录审计表与逐局部 assert_type)、迁移现有生产代码库(保留结构、测试与既有注解约定,优先精确组件输入输出)。

限制与边界:资料未提供具体收费、价格或平台信息。初始检查报错或出现渐变张量只是诊断,不代表模型不可迁移;空 jaxtyping 形状字符串不一定表示标量,需检查实际用法;在运行时读取注解的代码(含 schema 校验器)应单独适配和测试。是否为共享 stub 改动需先明确范围,不改 stub 也是受支持的结果。