Validate RTX 3080 LeRobot environment
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 机械臂到货前的软件准备
|
||||
|
||||
本机项目位于 `/home/ubuntu/lerobot_learn`,运行环境位于 `~/robot/.venv-lerobot-0.6.1`。
|
||||
|
||||
## 复验命令
|
||||
|
||||
```bash
|
||||
cd /home/ubuntu/lerobot_learn
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
bash env/setup_lerobot.sh
|
||||
source "$HOME/robot/.venv-lerobot-0.6.1/bin/activate"
|
||||
python env/smoke_pipeline.py --output "$HOME/robot/reports/pipeline-$(date +%Y%m%dT%H%M%S)"
|
||||
```
|
||||
|
||||
每次使用新输出目录;脚本拒绝覆盖。安装检查使用已有锁,不重新解析。原始安装日志位于 `~/robot/reports/`。
|
||||
|
||||
管线检查生成 3 段共 72 帧合成数据(6 维状态/动作,单相机 128×96),编码 H.264,分别通过 PyAV 和 TorchCodec 读取,再用 batch=2、chunk=8 跑 10 步 ACT。关闭预训练视觉权重和 Hub 联网,保存 checkpoint 与处理器,再重载并检查有限值动作。输出训练日志、训练峰值显存和推理延迟报告。
|
||||
|
||||
这验证的是软件通路;合成数据模型不能用于机械臂。小图像、短 chunk 的显存不能作为正式 640×480 采集训练的预算,真实配置需再次测量。SmolVLA 当前只做模块导入检查,预训练权重下载、微调和推理另行验证。
|
||||
|
||||
也可指定接近正式 ACT 的参数:
|
||||
|
||||
```bash
|
||||
python env/smoke_pipeline.py \
|
||||
--output "$HOME/robot/reports/pipeline-640x480-$(date +%Y%m%dT%H%M%S)" \
|
||||
--height 480 --width 640 --episodes 2 --frames-per-episode 120 \
|
||||
--batch-size 8 --steps 10 --chunk-size 100 --pretrained-backbone
|
||||
```
|
||||
|
||||
该命令仍使用合成画面,但会验证 640×480 输入、ACT 默认动作块和预训练 ResNet18 的下载与加载。
|
||||
|
||||
## 到货后顺序
|
||||
|
||||
1. 按实际套件确认 leader/follower 电机和供电,组装固定并确认停止手段。
|
||||
2. 在本机发现端口和相机,回填 `docs/cli_reference.md` 中的设备参数。
|
||||
3. 按官方装配流程逐个设置新电机,校准两条臂并备份校准文件。
|
||||
4. 验证遥操与相机视野,先录 2–3 段真实示范;检查回放、状态动作和时间对齐。
|
||||
5. 正式采约 50 条同任务示范,再同步至 3090 训练 ACT,回传完整模型与处理器。
|
||||
|
||||
双臂、底盘与远程推理在后续阶段开展。3090 仍需使用相同锁独立验证,不能凭 3080 的结果勾选两机验收。
|
||||
@@ -0,0 +1,44 @@
|
||||
# 3080 软件验收记录 · 2026-09-08
|
||||
|
||||
状态:本机基础环境及离线合成数据管线通过。机械臂未到货,3090 未验收,整个 P0 尚未完成。
|
||||
|
||||
## 环境
|
||||
|
||||
- Ubuntu 24.04.3 x86_64;RTX 3080 10240 MiB;驱动 550.163.01。
|
||||
- Python 3.12.3;uv 0.12.10;FFmpeg 6.1.1-3ubuntu5;已安装 build-essential/python3-dev。
|
||||
- LeRobot 0.6.1;PyTorch 2.7.1+cu126;TorchVision 0.22.1;TorchCodec 0.4.0;PyAV 15.1.0。
|
||||
- 112 个依赖包;`uv pip check` 通过;按哈希同步安装通过。
|
||||
- 锁 SHA256:`d3876e8ff74ba8356618bf6f6059fc32be33e3ed6301a50d164b668884405e18`。
|
||||
|
||||
原始输入会选择 PyTorch 2.11 / CUDA 13,因此约束为 CUDA 12 的版本组合。配对依据:[TorchCodec 官方兼容表](https://github.com/pytorch/torchcodec/tree/v0.5.0#installing-torchcodec)、[NVIDIA CUDA minor compatibility](https://docs.nvidia.com/deploy/cuda-compatibility/minor-version-compatibility.html);本机 CUDA 运算及 ACT 训练已实际通过。未升级系统驱动。
|
||||
|
||||
## 通过的检查
|
||||
|
||||
- CUDA 矩阵运算;ACT、SmolVLA、SO follower/leader 和视频库导入。
|
||||
- 电机设置、校准、遥操、录制、训练、rollout CLI 帮助加载;端口/相机发现 CLI 存在,未连接硬件。
|
||||
- 3 段共 72 帧合成 LeRobot 数据写入、H.264 编码、PyAV/TorchCodec 读取及跨 episode 边界取样。
|
||||
- ACT batch=2、chunk=8、128×96 单相机、6 维状态/动作、seed=42、无预训练视觉权重,10 步 CUDA 训练完成。
|
||||
- 保存及重载完整模型/处理器;输出形状为 (1, 6),无 NaN/Inf。
|
||||
|
||||
## 测量
|
||||
|
||||
- 训练子进程含初始化和保存:4.55 秒;逐步日志峰值 allocated 显存约 1.38 GiB(上游日志精度 0.01 GiB)。
|
||||
- 重载推理:预热 5 次后测 20 次,每次清空动作缓存并重新生成 chunk;包括预处理和后处理,不包括图像解码/硬件采集。
|
||||
- 推理 P50/P95/P99:2.19 / 3.48 / 3.56 ms;推理峰值 allocated 显存 214.49 MiB。
|
||||
- 最后一步显存另列于 JSON;上游逐步重置峰值计数,不能拿末步值替代全程峰值。
|
||||
|
||||
2026-09-09 又完成一轮更接近正式配置的单相机基准:640×480、batch=8、chunk=100、预训练 ResNet18、10 步训练。训练子进程含初始化和保存共 8.26 秒,逐步日志峰值 allocated 显存约 2.17 GiB;重载推理 P50/P95/P99 为 5.17 / 5.19 / 5.22 ms,推理峰值 allocated 显存 265.21 MiB。结果见 [640×480 基准 JSON](p0-3080-benchmark-640x480.json)。
|
||||
|
||||
上述数字只适用于合成小图像配置,不能推断真实任务成功率、640×480 多相机显存或端到端控制延迟。SmolVLA 只通过导入,尚未下载基座或微调。
|
||||
|
||||
## 本机证据路径
|
||||
|
||||
- 基础环境:`/home/ubuntu/robot/reports/20260908T090146Z-51776/`
|
||||
- 最终管线:`/home/ubuntu/robot/reports/pipeline-20260908-final/`
|
||||
- 管线内含 `result.json`、`train.log`、合成数据及 `training/checkpoints/000010/pretrained_model/`。
|
||||
- 可移植精简结果:[p0-3080-result.json](p0-3080-result.json)。复验命令:[到货前准备](before_hardware.md)。
|
||||
- 640×480 基准:`/home/ubuntu/robot/reports/pipeline-640x480-b8/`。
|
||||
|
||||
## 剩余
|
||||
|
||||
3090 同锁安装及验收;真实相机和示范数据检查;机械臂组装、校准、遥操和停止验证;真实 ACT 训练及 20 次评测。合成 checkpoint 不用于机械臂。
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"scope": "synthetic software pipeline only; not robot/task validation",
|
||||
"frames": 240,
|
||||
"episodes": 2,
|
||||
"train_steps": 10,
|
||||
"batch_size": 8,
|
||||
"chunk_size": 100,
|
||||
"image_shape": [
|
||||
480,
|
||||
640,
|
||||
3
|
||||
],
|
||||
"pretrained_backbone": true,
|
||||
"training_wall_seconds": 8.26456517999759,
|
||||
"training_peak_allocated_gib_from_step_logs": 2.17,
|
||||
"training_last_step_memory": {
|
||||
"allocated_mib": 2144.20751953125,
|
||||
"reserved_mib": 2588.0
|
||||
},
|
||||
"checkpoint": "/home/ubuntu/robot/reports/pipeline-640x480-b8/training/checkpoints/000010/pretrained_model",
|
||||
"inference_ms_p50_p95_p99": [
|
||||
5.1704970028367825,
|
||||
5.194654352089856,
|
||||
5.221867668733466
|
||||
],
|
||||
"inference_peak_allocated_mib": 265.20556640625,
|
||||
"torch": "2.7.1+cu126",
|
||||
"cuda": "12.6",
|
||||
"gpu": "NVIDIA GeForce RTX 3080"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"scope": "synthetic software pipeline only; not robot/task validation",
|
||||
"frames": 72,
|
||||
"episodes": 3,
|
||||
"train_steps": 10,
|
||||
"batch_size": 2,
|
||||
"image_shape": [
|
||||
96,
|
||||
128,
|
||||
3
|
||||
],
|
||||
"pretrained_backbone": false,
|
||||
"training_wall_seconds": 4.55074907900007,
|
||||
"training_peak_allocated_gib_from_step_logs": 1.38,
|
||||
"training_last_step_memory": {
|
||||
"allocated_mib": 959.85107421875,
|
||||
"reserved_mib": 1040.0
|
||||
},
|
||||
"checkpoint": "/home/ubuntu/robot/reports/pipeline-20260908-final/training/checkpoints/000010/pretrained_model",
|
||||
"inference_ms_p50_p95_p99": [
|
||||
2.192092500081344,
|
||||
3.4814052502724735,
|
||||
3.5563298500483143
|
||||
],
|
||||
"inference_peak_allocated_mib": 214.486328125,
|
||||
"torch": "2.7.1+cu126",
|
||||
"cuda": "12.6",
|
||||
"gpu": "NVIDIA GeForce RTX 3080"
|
||||
}
|
||||
Reference in New Issue
Block a user