E5 验证与交付范围#
Learning home · MuJoCo contents
Course text is primarily Chinese, with English terminology and summaries. The original content is preserved.
任务:MuJoCo #6,A8/A9及B6的批量、JIT/传输与数据主线。MuJoCo3.15.0固定源码9ea3cdfcae93bf2cc4dc0e1a1627c5a39a1e06e5;JAX0.7.2固定源码94233144f5469af28c065aa4263a6849338eeaa1只用于API阅读,不是验证过的运行依赖锁。
基于main 8a8060d7c6a5bc341049df2b0c17df4d95d64cd8与干净分支docs/e5-batch-learning-data续作;E2/E4依赖已交付,Issue开放且无未关闭PR。途中按用户要求暂停,收到明确继续指令后复用已有分支与研究,没有另建重复任务。本记录不把本地提交当作远端发布。
Issue 验收映射#
范围 |
交付 |
边界 |
|---|---|---|
CPU批量与隔离 |
CPU批量:共享model、每worker Data、rollout shape/mask/初始化、warning、线程池及多模型边界 |
开环原生入口;没有把四项shape检查当任意拓扑兼容证明 |
设备与后端 |
MJX设备数据:JAX/Warp身份、metadata/leaves、vmap/JIT/where、拷贝/同步、dtype/池/graph模式 |
CPP枚举不等于完整后端,GPU数据有结构/容量限制;无设备执行或性能数值 |
学习与随机化 |
学习契约:动作/物理/观测时序、reward单位、终止/截断/无效状态、PRNG、参数派生量 |
应用契约与原生API分开,没有引入未经分析的RL adapter或新封装 |
记录与重现 |
记录/回放:字段/单位/frame/时间/来源、state mask、copyData、设备/外部状态、分块与重现层次 |
不把视觉回放或INTEGRATION数组称作完整checkpoint;没有数据生成或跨后端等价性实验 |
片段与练习 |
原创slider批量,四篇32道带答案练习;另有3段完整Python接口片段 |
仅AST/XML结构审查;执行示例将编译/步进,当前没有执行 |
导航与来源 |
中英文README、curriculum/roadmap、source map、MuJoCo/JAX分开manifest与版本说明 |
保留Sim Atlas首页;B6完整扩展与E6/E7保持待开发 |
实际静态检查#
git diff --check
git diff --cached --check
python scripts/check_docs.py
python scripts/check_examples.py
文档/语法脚本在Python3.10.12与CI对应的Python3.12.12均通过:全仓相对Markdown链接通过,6个Python文件、6个文档Python片段、5个XML文件文本解析通过。没有import MuJoCo/JAX/Warp、编译模型、forward/step/rollout、JIT、传感器/渲染、设备传输、训练、随机化实验、benchmark或数据生成。ElementTree解析不是MJCF schema或物理验收。
source manifest从44扩充至62个官方MuJoCo文件;新增18个实际引用文件,未把只下载的候选文件算成交付。全仓430个MuJoCo blob链接固定同一SHA且路径收录manifest,行锚有序且位于文件范围。另有external manifest的5个JAX文件、14个固定blob链接。每个下载文件都按Git blob算法计算身份,并与对应固定官方tree及manifest核对一致;没有把JAX并入MuJoCo提交身份。文件身份与行号检查不代替逐段语义阅读。
全仓Markdown无TAB或其他非换行控制字符;E5显示公式的独立双美元符号行成对。最初写入两篇时普通Python字符串把tau/theta的转义写成了TAB,已改成raw string重写并重新检查。首轮行锚审查发现rollout.py、Warp forward.py与JAX default_dtypes.md的三处结束行超过文件长度,按真实源码修正后全部通过。一次简单“全文件双美元符号字符数”检查命中了旧E3验证文档中的符号说明,随后改为检查E5公式独立分隔行;没有跳过控制字符或源码检查。上述失败均已保留为过程记录,不作为已通过结果。
关键源码结论与适用边界#
项目 |
实际处理 |
|---|---|
rollout ctrl=None |
默认CTRL mask下不会清旧ctrl;示例显式给control数组。排除CTRL的全零也不等于SO3中性 |
warmstart与FULLPHYSICS |
C++写qacc_warmstart,不沿用Python注释的qfrc称呼;FULLPHYSICS含history,但不覆盖全部输入/隐藏/外部状态 |
模型兼容性 |
Python只比较state/control宽度、nv、nsensordata;C++取首model的nbody/neq,不能只靠这些检查混任意模型 |
warning与采样 |
warning后复制剩余帧;最后一步故障不一定有平台段。积分后state与step留下的sensor不自动同阶段 |
MJX身份 |
包3.15、树内vendored元数据3.14、Warp extra1.17分别记录;CPP I/O不当完整step后端 |
JAX支持边界 |
实际积分器分派不含DISCRETE;history存储不等于CPU的delay/interval实现;dtype不由CPU构建自动继承 |
Data.where |
裸(B,) mask没有按每叶rank自动reshape;示例JAX路径在vmap内用scalar,Warp共享池单独解释 |
随机化 |
逻辑env/episode/stream与worker调度脱钩;质量/惯量/派生常量/BVH不能独立任意改 |
恢复 |
mask、同进程copyData、模型文件、图像回放与外部RNG/controller各有范围,不宣称可移植全量快照 |
四篇正文提供公式假设、量纲、字段、固定实现行锚和带答案练习。JAX用于讲清原生MJX依赖的语言/执行边界;没有将课程选择的JAX版本称作与MuJoCo3.15已验证兼容。
自审、未决项与下一阶段#
实现者按调用链自审了对象所有权、shape/单位/时点、静态字段/后端分派、多模型与容量、外部随机状态和示例控制输入。独立主审与远端交付由主agent负责,本记录不替代该审查。
没有以无运行为由省略知识主线;仍未验证的是具体环境的依赖兼容性、MJCF编译、批量实际行为、设备/JIT/图捕获、训练效果、模型随机化后的物理有效性、轨迹恢复误差和sim-to-real转移。课程提供这些后续验证需要的原生边界,不编造结果。
下一项建议E6:E3前置已具备,继续引擎特色、插件/回调生命周期、flex/IPC和完整后端扩展;A0安装专题与B7综合审校仍由后续计划收口。待本轮主审发布后再独立派发,本执行者不自行启动。实验最终复用DexLab固定版本、配置与工况,不建立新的评分或benchmark。