Files
Robot_Arm/docs/本机执行清单.md
T

93 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 本机执行清单(给本地 AI 逐条执行)
本文件是 Hark 对本机计算的唯一要求清单。按顺序执行,每一步把「回传」里的文件或输出原样交给用户,不要跳步,不要自行改代码。
所有命令在仓库根目录(G:\Robot_v2\机器人手臂)的 Git Bash 里运行。完成的条目由 Hark 在下一次提交里删掉。
## 已知结论(截至 2026-10-19 02:43 回传)
- 特征口径 Python 与 JS 一致(最大差 3.6e-6):排除「闭环输入没见过」。
- 子目标排除:不用子目标、用老师真实途经点,与基线完全一样(0% 到达 / 99.6% 碰撞)。
- 闭环方向对但极慢:2 s 只把目标误差缩小 18.5%,首撞中位 1.46 s,主碰撞组对 2-4。开环(老师状态上)几乎精确。
- 现在的嫌疑:模型「抄上一帧速度」。第 2 步的 E 段专门验证。
- gaps 显存:粗筛分块已生效(1.05 / 1.40 GiB),4096×40 的 4.46 GiB 全在拼接胶囊对。本版默认只返回 gm,不再拼胶囊对(只有 APG 要)。
## 第 0 步:同步代码
```bash
git status --short # 有未提交改动就先 commit,不要丢
git pull --rebase gitea main
git log --oneline -1 # 应是 Hark 的「fix(kin/diag): gaps 默认不拼胶囊对 …」
```
- 训练控制台若开着先点「停止」,确认没有 python 训练进程在跑。
- 不要启动 DAgger / M5,等 Hark 看完第 1、2 步结果再定。
## 第 1 步:gaps 显存峰值(不到 1 分钟)
```bash
PYTHONUTF8=1 python - <<'EOF'
import torch
from ml.common.kin_torch import Kin
kin = Kin(device='cuda')
for n, cap in [(512, 40.0), (4096, 4.0), (4096, 40.0)]:
q = kin.lo + (kin.hi - kin.lo) * torch.rand(n, 6, device='cuda')
torch.cuda.empty_cache(); torch.cuda.reset_peak_memory_stats()
with torch.no_grad(): kin.gaps(q, cap)
print(f'n={n:5d} cap={cap:4.0f} peak {torch.cuda.max_memory_allocated() / 2**30:6.2f} GiB', flush=True)
EOF
```
- 通过:三行峰值都 ≤ 2 GiB。
- 专用显存接近 22 GB 或共享显存开始上涨:立刻 Ctrl+C,回传已打印的行,不要继续第 2 步。
- 回传:终端 3 行。
## 第 2 步:闭环失败定位(含新加的 E 段,约 5–8 分钟)
```bash
PYTHONUTF8=1 python -m ml.eval.diag_cl --ckpt ml/runs/base/last.pt --n 256 --out ml/runs/diag_cl.json
```
- 专用显存超过 22 GB 就 Ctrl+C 并回传终端输出。
- 新增输出:`E0_openloop`(开环动作幅度 ÷ 老师幅度;把 dq 抹成 0 后的幅度;起点行幅度);`E1_mid_teacher_vel` / `E1_mid_zero_vel`(从老师轨迹 30% 处起步,带老师速度 vs 静止起步:到达、碰撞、1 s 目标误差比、前 1 s 速度 ÷ 老师速度)。D 段已删。
- 回传:`ml/runs/diag_cl.json`。
## 回传汇总
| 步骤 | 回传内容 |
|---|---|
| 1 | 终端 3 行峰值 |
| 2 | ml/runs/diag_cl.json |
| 任一步出错 | 终端最后 30 行输出 |
---
## 执行回传(2026-10-19 04:05,本地 AI)
### 第 0 步:同步代码
pull 前无未提交的 tracked 改动;两个 untracked 文件原位保留未丢(`ml/eval/diag_collision.py` —— 早前已被 diag_cl 取代的旧诊断脚本;根目录「视频轮播-绿幕间隔.html」—— 用户个人文件,两者都未入仓)。log 顶部 = `527bc25`「fix(kin/diag): gaps 默认不拼胶囊对 …」✓。无训练进程。
### 第 1 步:gaps 显存峰值(实测)
```
n= 512 cap= 40 peak 1.05 GiB
n= 4096 cap= 4 peak 1.05 GiB
n= 4096 cap= 40 peak 1.05 GiB
```
**通过**:三行都 ≤ 2 GiB,且都等于单粗块(446 点)的固有水平——默认不拼胶囊对后,峰值与总点数完全无关。
### 第 2 步:闭环失败定位(E 段;完整 JSON 已更新到 ml/runs/diag_cl.json)
A/B/C 与前两轮一致(A/B 全过;C:0% 到达 / 99.6% 碰撞、2 s 误差比 0.815、主碰撞对 J3-J5)。E 段新增:
- **E0_openloop**(开环 val 随机 4096 行):老师幅度 0.319;策略开环幅度比 **1.438**;**把 dq 抹成 0 后幅度比 1.399(只降 2.7%)**;老师正在动的行上抹 dq 也 1.385(不降);抹 dq 前后 16 步末端动作差 p50 7.8°;起点行(静止起步)幅度比 **1.521**。
→ **排除「抄上一帧速度」**:若幅度靠 dq 撑着,抹 dq 应暴降;实测几乎不动(1.438→1.399)。反过来,开环/起点幅度本身就系统性偏大(1.44~1.52×)。
- **E1_mid_teacher_vel**(老师轨迹 30% 处起步、带老师上一帧速度):到达 **0%** / 碰撞 **96.1%** / 1 s 误差比 **0.627** / 前 1 s 速度比 **1.565**
- **E1_mid_zero_vel**(同起点、静止起步):到达 **0%** / 碰撞 **97.7%** / 1 s 误差比 **0.829** / 速度比 **1.442**
→ 带老师速度只把 1 s 误差比从 0.829 改善到 0.627,但两者都 0% 到达、~96–98% 碰撞(老师剩余时长中位 1.5 s):**不是起步问题**,中段带速度起步也全灭。
**本轮观察(供定位)**:策略幅度在开环(1.44)、起点行(1.52)、闭环前 1 s(1.44~1.57)三处一致地是老师的 **1.4~1.6 倍**——幅度系统性偏大是稳定的模型级现象,不是起步或 dq 造成的。
### 第 1、2 步都没出错,无终端报错段。