Files
lerobot_learn/env/machines.md
T

67 lines
4.8 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.
# GPU 环境与机器记录
基线:LeRobot 0.6.1 / Python 3.12。脚本适用 Ubuntu x86_64 GPU 主机;不用于 Windows 或 RPi。3080 的 CUDA、视频和合成 ACT 短训练已验收,详见 [记录](../docs/p0-3080-20260908.md);3090 未验收;真实任务采集和 ACT 短训练已通过,正式训练进行中,见 [进度追踪](../docs/progress.md)。
## 分工与路径
| 机器 | 用途 | 环境记录 |
|---|---|---|
| Windows | 编辑、静态检查、git 同步 | 本仓库 `D:\robot\lerobot` |
| 3080 10GB | USB 遥操、采集、推理,首次解析依赖 | Ubuntu 24.04.3 / 550.163.01 / Python 3.12.3 / uv 0.12.10;锁见实测记录 |
| 3090 24GB | 训练,同局域网 | OS/驱动/Python/uv/锁 SHA256:待填 |
| RPi 5 | P3 起硬件驱动、采图、执行和故障处理 | ARM64 环境另行验证,不复用 x86_64 锁 |
| DRIVE Orin | 可选实验 | 不阻塞主线 |
GPU 机统一路径:项目 `~/robot/proj`;专用环境 `~/robot/.venv-lerobot-0.6.1`;数据 `~/robot/data`;模型 `~/robot/models`;训练输出 `~/robot/outputs`;安装报告 `~/robot/reports`。脚本支持 `ROBOT_WORKDIR`,改动后相应调整命令。
## 首次安装与依赖锁
前置:安装 NVIDIA 驱动、git、uv、FFmpeg,以及构建遥操依赖 evdev 所需的 `build-essential`、`python3-dev`。Ubuntu 可执行 `sudo apt-get install -y ffmpeg build-essential python3-dev`。脚本用 uv 创建 Python 3.12 环境(必要时 uv 下载 Python),不自动 sudo 安装系统组件。缺少前置即退出。
首次解析流程(本机已完成;新机器有仓库附带锁时直接使用下方默认安装命令):
```bash
mkdir -p ~/robot
git clone https://git.hyonglin.top/ylhan/lerobot_learn.git ~/robot/proj
bash ~/robot/proj/env/setup_lerobot.sh --resolve
```
产生 `env/requirements-linux-py312.lock` 和 `env/requirements-linux-py312.lock.input.sha256`。第一次解析尚不是经过验证的完整环境锁:先完成脚本检查,再做短视频编码/解码、小样本训练、保存和重新加载模型。
将这两个文件一起传到 3090 同一项目的 `env/` 目录,再运行:
```bash
bash ~/robot/proj/env/setup_lerobot.sh
source ~/robot/.venv-lerobot-0.6.1/bin/activate
```
默认安装严格使用锁与包哈希,不重新解析。两台比较报告中的锁 SHA256;验收通过后把锁、输入指纹与精简环境信息提交 git。**当前仓库已包含 3080 验证的完整依赖锁和指纹,默认安装可直接使用。不要对现有锁执行 `--resolve`。**
两台尽量统一 Ubuntu 版本,记录 Python 补丁版本、uv 版本与 NVIDIA 驱动;同一 Python 包锁不能锁定系统库或驱动。脚本 `uv pip sync` 仅作用于新命名的项目专用环境,会使其中包与锁一致,请勿把它用于其他项目。
更新依赖时修改 `requirements.in`,人工归档旧锁及指纹后重新解析、两机复验;脚本拒绝覆盖已有锁,也不会自动更新 LeRobot。大模型、双臂移动所需新 extras 在对应阶段再加入输入并复验。
## 网络与数据
默认使用官方索引。若需要镜像,可在安装前显式设置 `UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple`;uv 自身的 Python 下载不由该变量代理。下载失败应按报告排查,不自动切换不明 Git 代理。
同局域网优先 rsync。HF Hub 可选;登录使用 `hf auth login`,认证上传使用官方端点,勿把下载镜像当作上传服务。Token 保存在机器凭据环境中,不进入 git、报告或聊天。
```bash
# 将占位符替换成自己的 SSH 目标;先停止录制,传完整且不再写入的数据目录。
rsync -avP ~/robot/data/ USER@TRAIN_HOST:~/robot/data/
rsync -avP USER@TRAIN_HOST:~/robot/outputs/ ~/robot/outputs/
```
每个实验保留数据版本/校验值、模型与处理器、配置、校准备份和评测记录。模型快照记录来源 revision,不自动随 Hub main 更新。同步代码使用 git;3080 为当前本机,3090 的远程访问尚未验证。
## 验收报告
脚本失败即非零退出,不把 MISS 当通过;输出完整日志、包列表、Python/FFmpeg 版本、CLI 帮助与锁哈希。脚本验证 CUDA 矩阵运算、实际策略模块和视频库导入,不连接电机,也不下载模型权重。
后续必须记录:录制/解码结果、训练步耗时、训练和推理峰值显存、单次推理 P50/P95/P99,以及 20 次真机评测。不要将包可导入或显存参考值当作任务能力证据。
## 2026-09-10 本机更新
内核 `7.0.0-31-generic`,NVIDIA 驱动 `580.173.02`,CUDA 实际训练已通过。上表 550 驱动为首次验收的历史配置。当前项目路径 `~/lerobot_learn`,任务数据在项目 `data/`,模型与日志在项目 `outputs/train/`;环境仍为 `~/robot/.venv-lerobot-0.6.1`。本次 ACT 基线在 3080 训练,不依赖 3090。