i4h-workflow-finetune

작성자: nvidia

GR00T 또는 openpi PI0 정책을 LeRobot 데이터셋에서 미세 조정합니다. 데모에 대한 정책 미세 조정, 학습 또는 사후 학습 요청 시 사용합니다. 평가용이 아닙니다…

npx skills add https://github.com/nvidia/skills --skill i4h-workflow-finetune

i4h Workflow — Finetune

Purpose

Fine-tune a GR00T or openpi PI0 policy on an existing LeRobot dataset. Use when asked to finetune, train, or post-train a policy on recorded demos.

Base Code

These steps drive the i4h-workflows base code (the workflows/agentic/ tree). To reuse an existing checkout, set I4H_WORKFLOWS to its path (no clone happens). Otherwise this resolves the current repo, or clones to ~/i4h-workflows — pick that default without prompting. Run every command below from the resolved root:

# Resolve the i4h-workflows base code (provides workflows/agentic/).
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/agentic" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
  [ -d "$ROOT/workflows/agentic" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"

Basics

  • The dataset path must be an existing LeRobot directory with meta/info.json.
  • Train support is determined by policy.train_module in workflows/agentic/config/environments/<env>.yaml. A null value means inference-only.
  • assemble_trocar is inference-only.

Stack Map

EnvStackCLI
scissor_pick_and_placegr00t_n15i4h-agentic-gr00t-n15-train
locomanip_tray_pick_and_placegr00t_n16i4h-agentic-gr00t-n16-train
locomanip_push_cartgr00t_n16i4h-agentic-gr00t-n16-train
ultrasound_liver_scanopenpi_pi0i4h-agentic-openpi-pi0-train

N1.6 locomanip envs share policy.locomanip.train.

Preflight

test -f "${DATASET_PATH}/meta/info.json"
nvidia-smi --query-gpu=name --format=csv,noheader | wc -l
workflows/agentic/policy/<stack>/run.sh --list-envs

Run

Run the steps below in order. Each step is a separate bash call; variables persist in the local agent's tmux session.

Step 1 — setup and resolve dataset

REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/agentic" ] || REPO_ROOT="$HOME/i4h-workflows"
ENV_ID=scissor_pick_and_place
STACK_DIR=gr00t_n15
TRAIN_CLI=i4h-agentic-gr00t-n15-train
RUNS_ROOT="${REPO_ROOT}/workflows/agentic/runs"

# Point DATASET_PATH at a converted LeRobot dataset dir (absolute; must contain meta/info.json),
# produced by [[i4h-workflow-dataset-convert]]. List candidates:
#   find "${RUNS_ROOT}" "${HF_LEROBOT_HOME:-$HOME/.cache/huggingface/lerobot}" -name info.json -path '*/meta/*' -printf '%h\n' | sed 's#/meta$##' | sort -u
DATASET_PATH="${DATASET_PATH:-}"
if [ ! -f "${DATASET_PATH%/}/meta/info.json" ]; then
  echo "finetune: set DATASET_PATH to a LeRobot dataset dir with meta/info.json (got '${DATASET_PATH:-<unset>}'). Candidates:" >&2
  find "${RUNS_ROOT}" "${HF_LEROBOT_HOME:-$HOME/.cache/huggingface/lerobot}" -name info.json -path '*/meta/*' -printf '%h\n' 2>/dev/null | sed 's#/meta$##' | sort -u | head
  exit 1
fi

RUN_DIR="${RUNS_ROOT}/finetune_${ENV_ID}_$(date +%Y%m%d_%H%M%S)"
OUT="${RUN_DIR}/checkpoint"
export TMPDIR=/tmp   # short path: torch DataLoader FD-sharing socket must fit AF_UNIX's 108-byte limit
mkdir -p "${OUT}" "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${RUNS_ROOT}/.latest"

Step 2 — train

uv --directory "${REPO_ROOT}/workflows/agentic/policy/${STACK_DIR}" run "${TRAIN_CLI}" \
  --env "${ENV_ID}" \
  --dataset-path "${DATASET_PATH}" \
  --output-dir "${OUT}" \
  --max-steps 1000 \
  --save-steps 1000 \
  --num-gpus 1 \
  2>&1 | tee "${RUN_DIR}/logs/finetune.log"

Tyro flags use kebab case (--max-steps, not --max_steps).

Common Flags

  • --dataset-path PATH (required)
  • --output-dir PATH
  • --base-model-path PATH_OR_REPO overrides YAML policy.model_repo
  • --max-steps N, --save-steps N
  • --batch-size N, --learning-rate FLOAT
  • --no-tune-visual — freeze the vision backbone (trains the action head + projector only): ~2× faster, ~half the memory, less overfitting. Good default for small datasets; unfreeze only with lots of data + a real visual domain gap.
  • --num-gpus N — must not exceed visible GPUs
  • --report-to tensorboard|wandb

Verify

  • Checkpoint directory ${OUT}/checkpoint-<N> contains model-0000*-of-*.safetensors, experiment_cfg/, processor/.
  • Log contains train_loss lines and a final 'train_runtime': ... summary.

Prerequisites

  • Workflow set up via [[i4h-workflow-setup]] (the stack's .venv must exist).
  • An existing LeRobot dataset directory with meta/info.json.
  • A train-capable env: policy.train_module non-null in workflows/agentic/config/environments/<env>.yaml (assemble_trocar is inference-only).
  • At least one visible GPU (--num-gpus must not exceed visible GPUs).

Limitations

  • Inference-only envs (null policy.train_module, e.g. assemble_trocar) cannot be fine-tuned.
  • Requires GPU(s); --num-gpus must not exceed the count from nvidia-smi.
  • N1.6 locomanip envs share policy.locomanip.train.
  • Each env maps to one stack/CLI (see Stack Map); the dataset must match that env.

Troubleshooting

  • Error: train CLI / module import fails - Cause: workflow not set up, stack .venv missing. Fix: run [[i4h-workflow-setup]] first.
  • Error: dataset path rejected / missing meta/info.json - Cause: --dataset-path is not a valid LeRobot directory. Fix: point to a converted LeRobot dataset (see Preflight test -f).
  • Error: env is inference-only / no train support - Cause: policy.train_module is null for that env. Fix: choose a train-capable env from the Stack Map.
  • Error: unrecognized flag like --max_steps - Cause: Tyro flags use kebab case. Fix: use --max-steps form.

Final Response

Report env, stack, dataset path, output checkpoint path, train_loss summary, and blockers.

nvidia의 다른 스킬

compileiq-debug
nvidia
무언가 잘못되었을 때 사용: Search()가 멈추거나, 모든 평가가 INVALID_SCORE를 반환하거나, 점수가 개선되지 않거나, 모든 설정이 동일한 숫자를 반환하거나, ptxas 오류 등이 발생할 때
create-github-pr
nvidia
gh CLI를 사용하여 GitHub 풀 리퀘스트를 생성합니다. 사용자가 새 PR을 만들거나, 코드 리뷰를 제출하거나, 풀 리퀘스트를 열고자 할 때 사용합니다. 트리거 키워드 -…
nemoclaw-maintainer-cross-issue-sweep
nvidia
다른 열린 이슈들을 스캔하여 주어진 PR이 함께 수정하거나 실수로 망가뜨릴 수 있는 이슈를 찾습니다. 인접 수정 기회와 모순 위험을 file:line…과 함께 출력합니다.
fhir-basics
nvidia
에이전트에게 FHIR R4 API의 작동 방식, 사용 가능한 리소스, 검색 매개변수를 사용한 쿼리 방법, 모든 응답 형식을 올바르게 파싱하는 방법을 가르칩니다…
compileiq-validate-result
nvidia
검색이 완료된 후, 속도 향상을 청구하거나 ACF를 발송하기 전에 사용합니다. dump_results CSV를 로드하고, 상위 K개 후보(단일 목표)를 추출합니다…
changelog-audit
nvidia
릴리스 전에 Warp CHANGELOG.md를 감사합니다: 누락된 항목 복구, 사용자 영향별 정렬, 항목 언어 다듬기, 줄 바꿈, (릴리스 브랜치 모드) 비교 업데이트…
maintain-dynamic-plugins
nvidia
NeMo Relay 동적 플러그인 로더, 매니페스트, Rust 네이티브 SDK, gRPC 워커 프로토콜, Python 워커 SDK, 문서, 테스트 및 릴리스 워크플로 커버리지를 유지 관리합니다.
dgx-diagnose
nvidia
일반적인 DGX Station GB300 문제 진단 — CUDA 충돌, 잘못된 GPU 타겟팅, vLLM/SGLang 컨테이너 버그, MIG 상태 문제, NVLink/Fabric Manager 오류,…