Skip to content

Refactor: 将 in-hand grasp cache 解析与加载移出 reset 热路径 #994

Description

@TATP-233

Parent: #983
Integration base: dev/issue-983-code-cleanup(不得向 main 提 PR)
Work type: infra · Area: envs · Scope: Small

Owner summary

这次只把 Allegro 与 Sharpa rotation task 的 grasp-cache 路径解析、可选下载和 np.load 固定到 env 初始化冷路径;reset provider 只读取已缓存数组。采样分布、缺失缓存诊断、gen-grasp 行为和 backend contract 不变;永久维护项是两类 env 的“初始化一次、reset 零 I/O”边界测试。

一句话问题

两个 domain-randomization provider 都在首次 reset 才加载缓存,Sharpa 还可能在该路径访问 Hugging Face,违反 reset 热路径禁止 asset/网络 I/O 的规则。

最小交付结果

构造 env 时完成 grasp cache materialization,任意后续 reset 不再解析路径、下载或读文件。

In scope

  • Allegro rotation 在 init 冷路径处理 gen-grasp、缺失文件与本地 np.load
  • Sharpa rotation 在 init 冷路径解析所有 scale cache、执行现有 resolver 并加载数组。
  • provider 的 reset 采样只读取 env 已缓存值。
  • 增加 resolver/np.load 仅在 init 调用、重复 reset 不触发 I/O 的测试。

Non-goals

  • 不改变 grasp 采样、scale 分配、reward、reset state 或 cache 文件格式。
  • 不新增下载策略、不改变缺失文件是否报错/降级的现有语义。
  • 不处理 grasp generation lifecycle 或裸 print 日志迁移。

Owner 与预计改动

2 个 env 文件及 1-2 个现有测试文件,预计 <180 行净改动,1 PR。

Acceptance criteria

  • reset 调用链无 np.load、path resolver 或 Hugging Face resolver。
  • 每个 env 构造最多 materialize/load 一次,后续多个 reset 只采样内存 cache。
  • gen-grasp、Allegro 缺失本地 cache、Sharpa 缺失 cache 的现有结果与诊断保持。
  • 定向 env tests 和 make test-all 通过。

Stop conditions

若必须改变 cache 缺失语义、引入新的 asset manager/public contract 或超过 6 个文件,暂停并回到 #983

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions