Instructions to use yrpark/elice_gr00t_install with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use yrpark/elice_gr00t_install with LeRobot:
- Notebooks
- Google Colab
- Kaggle
elice_gr00t_install
GR00T N1.7 (lerobot native GrootPolicy) νμ΅ νκ²½ μ€μΉ + λ°μ΄ν° κ²μ¦ + λμ νμ΅ μ€ν μ€ν¬λ¦½νΈ λͺ¨μ.
UR7e / RH5DG2 Isaac Lab taskλ₯Ό EE-space μμ λ°μ΄ν°μ
μΌλ‘ νμΈνλνκΈ° μν μΈν
μ΄λ©°,
A100 80GB Γ 4 μ₯λΉμμ λ task(cup_hang, pour_cup)λ₯Ό GPUλ₯Ό 2μ₯μ© λλ λμμ νμ΅νλ€.
1. μ μ΄ repoκ° νμνκ°
맨λ°λ₯(conda μμ / ffmpeg μμ / HF λ‘κ·ΈμΈ μμ) μλ²μμ lerobot 81db623b(0.6.1) +
GR00T N1.7 νμ΅μ κ΅΄λ¦¬λ €λ©΄ λ¬Έμμ μ λμ€λ ν¨μ μ΄ 3κ° μλ€. μ΄ repoμ setup.shλ
κ·Έ 3κ°λ₯Ό μ λΆ ν‘μν idempotent μ€μΉ μ€ν¬λ¦½νΈλ€.
ν¨μ β Python 3.11 λ‘λ μ€μΉ μμ²΄κ° μ λλ€
lerobot 81db623bμ pyproject.toml μ΄ requires-python = ">=3.12".
3.11 env μμ pip install -e '.[groot]' νλ©΄:
ERROR: Package 'lerobot' requires a different Python: 3.11.16 not in '>=3.12'
β conda env λ Python 3.12 λ‘ λ§λ λ€.
ν¨μ β‘ .[groot] κ° torch μ ABI μ λ§λ torchvision μ λμ΄μ¨λ€
extras κ° PyPI κΈ°λ³Έ λΉλ torchvision μ μ€μΉνλλ°, μ΄κ² torch 2.11.0+cu128 κ³Ό ABI λΆμΌμΉ:
RuntimeError: operator torchvision::nms does not exist
λ²μ λ²νΈκ° κ°μμ(0.26.0) κ·Έλ₯ pip install νλ©΄ Requirement already satisfied λ‘ no-op μ΄ λλ€.
β --force-reinstall --no-deps λ‘ cu128 wheel μ κ°μ κ΅μ²΄ν΄μΌ νλ€.
pip install --force-reinstall --no-deps \
--index-url https://download.pytorch.org/whl/cu128 torchvision==0.26.0
# -> torchvision 0.26.0+cu128
ν¨μ β’ torchcodec μ΄ ffmpeg λ₯Ό λͺ» μ°Ύλλ€ + LD_LIBRARY_PATH νμ
νμ΅μ --dataset.video_backend=torchcodec μ μ°λλ°, μ΄ μλ²μ μμ€ν
ffmpeg κ° μλ€:
OSError: libavutil.so.60: cannot open shared object file
conda-forge λ‘ ffmpeg λ₯Ό env μμ κΉλ©΄ libavutil.so.60 μ μκΈ°μ§λ§, κ·Έκ²λ§μΌλ‘λ λΆμ‘±νλ€.
conda ffmpeg κ° λΈκ³ μ€λ libopenvino.so κ° μμ€ν
libstdc++ λ‘λ λ‘λκ° μ λλ€:
OSError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.15' not found
(required by .../lib/libopenvino.so.2600)
β env μ lib λλ ν°λ¦¬λ₯Ό loader path μ λ°λμ μ¬λ €μΌ νλ€. μΈ μ€ν¬λ¦½νΈ μ λΆμ λ€μ΄μλ€:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
μ΄κ±° λΉ μ§λ©΄ νμ΅μ΄ λ°μ΄ν° λ‘λ© λ¨κ³μμ μ£½λλ€.
ν¨μ β£ (μ€ν μ) lerobot_train.py λ νμΌ κ²½λ‘λ‘ μ€ννλ©΄ μ λλ€
lerobot_train.py λ μλ import (from .lerobot_eval import eval_policy_all) λ₯Ό μ΄λ€.
κ·Έλμ accelerate launch .../scripts/lerobot_train.py λ‘ λμ°λ©΄:
ImportError: attempted relative import with no known parent package
β λͺ¨λλ‘ μ€ννλ€: accelerate launch --module lerobot.scripts.lerobot_train
2. νμΌ
| νμΌ | μν |
|---|---|
setup.sh |
miniconda β conda env(py3.12) β torch cu128 β lerobot 81db623b .[groot]+.[training] β torchvision ABI μμ β ffmpeg β hf cli. idempotent |
download.sh |
λ°μ΄ν°μ
μμ νμν λ ν΄λλ§ λ€μ΄λ‘λ (cup_hang_ee/, pour_cup_ee/) + μλͺ»λ ν΄λ νΌμ
κ²½κ³ |
verify_dataset.py |
νμ΅ μ μ½κΈ°μ μ© κ²μ¦ β β ν¬λ§· v3.0 β‘EE convention β’LeRobotDataset λ‘λ |
train_all.sh |
κ²μ¦ μ¬μ€ν β λ job μ GPU 2μ₯μ© λμ launch β wait β μ±κ³΅ν task λ§ Hub μ
λ‘λ |
upload_task.py |
체ν¬ν¬μΈνΈ ν΄λ μ 체 μ λ‘λ(sharded safetensors λμ) + μ λ‘λ ν κ²μ¦ |
ENVIRONMENT.txt |
μ€μ λ‘ λμν νκ²½ μ€λ μ· |
requirements-freeze.txt |
pip freeze μ 체 |
3. μ¬μ©λ²
bash setup.sh # 1ν (μ¬μ€νν΄λ μμ )
# HF μΈμ¦ (dataset private / base model μ κ·Όμ©)
source ~/miniconda3/etc/profile.d/conda.sh && conda activate lerobot_groot
hf auth login # λλ export HF_TOKEN=...
bash download.sh # λ°μ΄ν° λ ν΄λλ§
nohup bash train_all.sh > logs/train_all.log 2>&1 &
μ§ν νμΈ:
tail -f logs/gr00t_n17_cup_hang_ee.log # GPU 0,1 / port 29500
tail -f logs/gr00t_n17_pour_cup_ee.log # GPU 2,3 / port 29501
nvidia-smi
4. λ°μ΄ν°μ convention (EE μμ λ³Έ)
action[:, 0:6] tool0(EE) delta, λ‘λ΄ root νλ μ, Diff-IK λ¨μ
(Ξpos / 0.03 m, axis-angle Ξrot / 0.05 rad)
action[:, 6:19] μ 13 κ΄μ μ λ λͺ©νκ° (rad)
observation.state (24)
μμ third_person / eye_in_hand κ° (3, 480, 640)
verify_dataset.py μ EE νμ κΈ°μ€: arm 6μΆ std μ λΆ > 0, |q99| <= 3, mean νκ· μ λκ° < 1.
κ΄μ μ λκ° convention ν΄λλ mean μ΄ Β±3 rad κ·Όμ²λ‘ λμμ μ¬κΈ°μ κ±Έλ¬μ§λ€.
μ€μ κ²μ¦ κ²°κ³Ό (2026-09-08)
cup_hang_ee codebase_version=v3.0 -> OK
total_episodes=200 frames=98351
arm std = [0.067, 0.043, 0.07, 0.06, 0.153, 0.049]
arm mean = [-0.006, 0.004, -0.004, 0.008, 0.01, 0.006] |q99|max=0.702
task: 'Lift the hung cup off the holder' -> EE OK
pour_cup_ee codebase_version=v3.0 -> OK
total_episodes=150 frames=69642
arm std = [0.079, 0.16, 0.107, 0.242, 0.23, 0.285]
arm mean = [0.002, -0.012, -0.012, -0.164, -0.05, -0.058] |q99|max=0.611
task: 'Grasp the cup, lift it, and pour it out.' -> EE OK
μ°Έκ³ : cup_hang_ee μ arm std κ° pour_cup_ee λ³΄λ€ λλ ·νκ² μλ€. EE νμ κΈ°μ€μ
νμ€ν ν΅κ³Όνλ―λ‘ convention λ¬Έμ λ μλκ³ , cup_hang μ λμ μμ²΄κ° λ μμ κ²μΌλ‘ 보μΈλ€.
5. νμ΅ λ μνΌ (GR00T N1.7 native)
--policy.type=groot
--policy.base_model_path=nvidia/GR00T-N1.7-3B
--policy.embodiment_tag=new_embodiment
--policy.device=cuda
--policy.push_to_hub=false
--steps=30000 --save_freq=30000 # 체ν¬ν¬μΈνΈλ λ§μ§λ§μ ν λ²λ§
--batch_size=16 --num_workers=8 --seed=1000
--dataset.video_backend=torchcodec
--wandb.enable=false
μ€ν:
CUDA_VISIBLE_DEVICES=0,1 accelerate launch --num_processes=2 \
--mixed_precision=bf16 --main_process_port=29500 \
--module lerobot.scripts.lerobot_train <μ μΈμλ€> ...
effective batch = num_processes(2) Γ batch_size(16) = 32. steps λ optimizer update μ.
pi0.5 λ μνΌμμ λΊ κ²λ€κ³Ό μ΄μ
--policy.compile_model / --policy.gradient_checkpointing / --policy.dtype /
pi05 optimizerΒ·scheduler override / use_imagenet_stats β GrootConfig μ ν΄λΉ νλκ° μμ΄μ
draccus κ° μλ¬λ₯Ό λΈλ€. νμΈ λ°©λ²:
python -c "import dataclasses; from lerobot.policies.groot.configuration_groot import GrootConfig; \
print(sorted(f.name for f in dataclasses.fields(GrootConfig)))"
dtype λμ accelerate μ --mixed_precision=bf16 μ μ΄λ€ (FP32 master + BF16 autocast = N1.7 native).
pretrained_path λμ base_model_path + embodiment_tag λ₯Ό μ΄λ€.
6. κ²μ¦λ νκ²½
Python 3.12.14
lerobot 0.6.1 @ 81db623b4409f160901b266776e6e87a87e5b1b8
torch 2.11.0+cu128
torchvision 0.26.0+cu128 <- cu128 κ°μ μ¬μ€μΉ νμ
torchcodec 0.11.1
transformers 5.5.4
accelerate 1.14.0
peft 0.20.0
timm 1.0.29
ffmpeg 8.0.1 (conda-forge)
driver 535.230.02 / A100 80GB PCIe Γ 4
driver 535(CUDA 12.2) μμ cu128 wheel μ CUDA minor version compatibility λ‘ μ μ λμνλ€.