AY-Robots'un GR00T N1.7'yi bir SO-100 kolunda eğitmek için hazırladığı rehber sayfası, gerekli GPU katmanını, veri kümesi formatını ve eğitici varsayılanlarını gösteriyor
GR00T N1.7SO-100İnce AyarLeRobotVLA

GR00T N1.7 Kendi SO-100 Veri Kümenizde Nasıl Eğitilir

AY-Robots ResearchAugust 23, 202628 dk okuma

NVIDIA GR00T N1.7'ye bir SO-100 LeRobot veri kümesi üzerinde ince ayar yapmak için test edilmiş bir rehber: gerçek bayraklar, modality.json, v2.1 gereksinimi, bir çalıştırmanın maliyeti ve tuzaklar.

NVIDIA, muhtemelen sahip olduğunuz kol için tam olarak bir ince ayar örneği sunar. İçinde Isaac-GR00T deposu adında bir klasör bulunur: demo_data/cube_to_bowl_5: beş bölüm, 30 fps'de 4.148 kare, LeRobot v2.1 olarak yazılmış ve altında eşleşen bir modalite yapılandırmasıyla birlikte examples/SO100/. Onun meta/info.json şunu bildirir: robot_type: so101_follower, LeRobot'ta so100_follower ile aynı yapılandırma sınıfıdır. Bu gerçekten faydalıdır, çünkü GR00T N1.7 için referans yolunun altı-serbestlik dereceli hobi kolunda, modeli yazan kişiler tarafından sürdürüldüğü anlamına gelir. Bu, küçültülmüş bir insansı demo değil, aynı koldur.

Kötü haber şu ki, 60 bölüm kaydettim ile kol görevi yapıyor arasındaki mesafe oldukça fazladır. Bu işlem hattının yüksek sesle değil, sessizce başarısız olduğu yaklaşık altı yer vardır ve bunların dördü çoğu kişinin asla açmadığı dosyalarda bulunur: meta/modality.json, Python veri yapılandırması, meta/relative_stats.json ve veri kümesinin kendi sürüm dizesi. Bu kılavuz, gerçek komutlarla manuel yolu baştan sona anlatır, ardından aynı işi AY-Robots üzerinde bir form olarak gösterir. Aşağıdaki her şey, 20 Ağustos 2026 itibarıyla Isaac-GR00T ana dalına (n1.7-release hattı) ve 3 Ağustos 2026'da PyPI'da yayınlanan lerobot 0.6.1'e göre kontrol edilmiştir. Üst akış hızlı hareket eder ve bir bayrak yeniden adlandırıldığında bu makale bunu belirtir.

Başlamadan önce bilmeniz gerekenler

  • GR00T N1.7 ince ayarı 40 GB veya daha fazla VRAM gerektirir. NVIDIA, H100 veya L40 düğümlerini önerir. 24 GB RTX 4090 bu işi yapamaz, ancak SmolVLA ve ACT'yi eğitebilir.
  • Veri kümesi LeRobot v2 (v2.0 veya v2.1) ve GR00T'ye özel bir meta/modality.json içermelidir. Bir LeRobot v3.0 veri kümesi yüklenmez ve aşağı dönüştürülmesi gerekir.
  • Giriş noktası gr00t/experiment/launch_finetune.py, bir tyro CLI'dır. --seed bayrağı yoktur, bu nedenle çalıştırmalar bit-for-bit tekrarlanabilir değildir.
  • Özel bir kol için embodiment etiketi NEW_EMBODIMENT'tır ve bu etiket --modality-config-path'i zorunlu kılar.
  • Gönderilen SO-100 tarifi, kol eklemlerini RELATIVE deltalar ve tutucuyu ABSOLUTE bir hedef olarak tahmin eder. Bu eşleşmeyi tersine çevirmek bir hata değil, sessiz bir başarısızlıktır.
  • AY-Robots'ta aynı iş bir formdur: 20000 adım, 32'lik parti, 1e-4 öğrenme oranı, A100 80 GB veya H100 katmanında yaklaşık 4 ila 12 USD.

GR00T N1.7 aslında nedir

GR00T N1.7, orijinal GR00T N1 makalesinde açıklanan çift sistemli düzene sahip bir görsel-dil-eylem modeli: kameraları ve talimatı okuyan bir görsel-dil modülü ve bunu sürekli motor komutları yığınına dönüştüren bir difüzyon transformatörüdür. N1.7 ilk yarıyı değiştirdi. N1.6'daki Eagle omurgası kaldırıldı ve yerine nvidia/Cosmos-Reason2-2B Qwen3-VL mimarisi üzerine kuruldu ve model, robot verilerine ek olarak yaklaşık 20.000 saatlik egosantrik insan videosu üzerinde önceden eğitildi. NVIDIA'nın kendi yazısında bu rakam 20.854 saat olarak belirtiliyor ve 1k'dan 20k saate çıkmanın ortalama görev tamamlama süresini iki kattan fazla artırdığı rapor ediliyor.

İkinci yarı da, çalışmanız için önemli olan şekillerde değişti. Eylem başlığı 32 difüzyon katmanından 16'ya düştü, tahmin edilen eylem öbeği 16 adımdan 40'a çıktı ve maksimum durum ve eylem genişliği 29'dan 132'ye yükseldi. Bu üç sayı, depo README'sindeki değişiklik günlüğünden alınmıştır; NVIDIA'nın kendi lansman gönderisi hala Sistem 1'i 32 katmanlı bir DiT olarak tanımlamaktadır, bu nedenle ikisi arasında bir anlaşmazlık olduğunda, klonlamak üzere olduğunuz depoya güvenin. Eylemler varsayılan olarak göreceli bir uç efektör uzayında, mutlak hedefler yerine mevcut pozdan deltalar olarak ifade edilir, bu da insan videosundan öğrenilen manipülasyon ön bilgilerinin robot kontrolüne aktarılmasını sağlar. Başlığın kendisi bir akış eşleştirme difüzyon transformatörüdür, Pi0.5 ile aynı aileden ancak önünde farklı bir omurga ile. Hala önceki nesildeyseniz, N1.7'nin N1.5'e karşı yükseltmenin boru hattınızı yeniden yapmaya değip değmeyeceğini kapsar.

ÖzellikDeğerKaynak
Parametreler3,000,000,000Hugging Face model kartı
Görsel-dil omurgasınvidia/Cosmos-Reason2-2B (Qwen3-VL), Hugging Face üzerinde geçitlirepo README
Eylem başlığıAkış eşleştirme difüzyon transformatörü, 16 katman (N1.6'da 32 vardı)repo README
Tahmini eylem ufkuTemel kontrol noktası için 40 adım (N1.6'da 16 vardı)getting_started/policy.md ve repo README
Maksimum durum ve eylem genişliği132 (N1.6'da 29 vardı)repo README
Kod lisansıApache 2.0Isaac-GR00T repository
Ağırlıklar lisansıNVIDIA Open Model License Agreementmodel kartı
Gecikme, H100 80 GB, PyTorch eager, 4 gürültü giderme adımı, 1 kamera85.8 ms uçtan uca, 11.7 Hzmodel kartı zamanlama tablosu
Aynı donanım, TensorRT tam boru hattı27.9 ms uçtan uca, 35.9 Hzmodel kartı zamanlama tablosu
AY-Robots'un sunduğu GR00T N1.7 için belirttiği gecikme152 ms eylem adımı başınaAY-Robots policy catalog

Son üç satır, insanların bildirdiği hayal kırıklığının çoğunu açıklıyor. Manşet 27.9 ms, tek bir kamera ve dört gürültü giderme adımıyla H100 üzerinde çalışan bir TensorRT motorudur. Aynı karttaki düz PyTorch 85.8 ms'dir ve model kartı farkı 3.08 kat olarak belirtir. Bu sayılardan hiçbiri bir sunum katmanı, ikinci bir kamera veya bir ağ atlaması içermez. AY-Robots'un sunduğu GR00T N1.7 için belirttiği eylem adımı başına 152 ms, döngüde sunumun da dahil olduğu rakamdır ve bunun üzerine bir de genel internet gidiş-dönüş süresi eklenir. Bununla ilgili daha fazla bilgi sonda. Diğer modellerin yanındaki sayılar için, GR00T N1.7'nin Pi0.5'e karşı ve GR00T N1.7'nin SmolVLA'ya karşı karşılaştırmaları onları yan yana sergiler.

The AY-Robots model page for GR00T N1.7 showing parameter count, GPU tier, inference latency and the model's stated strengths and limits
The /policies/groot-n1-7 page carries the same spec strip you would otherwise assemble by hand from the model card and the repo README.

Herhangi bir şey yazmadan önce çalıştırmanın ihtiyaç duydukları

Gereksinimİnce AyarÇıkarım
VRAM, NVIDIA rehberliği40 GB veya daha fazla, H100 veya L40 önerilir16 GB veya daha fazla, bir RTX 4090 çalışır
dGPU üzerinde Python ve CUDA3.12 and CUDA 12.83.12 and CUDA 12.8
Video arka ucutorchcodec 0.8.0, FFmpeg 4 ila 7 sadeceaynı
Veri kümesi formatıLeRobot v2 plus meta/modality.jsonuygulanamaz
Hugging Face erişiminvidia/Cosmos-Reason2-2B için onaylandıaynı
Diğer araçlargit-lfs and uvuv
groot1.7 eğitmeni için AY-Robots GPU katmanıA100 80 GB or H100 80 GBpod otomatik olarak sağlanır
Kilitli omurga ilk çalıştırmada sizi durduracaktır

Her GR00T kontrol noktası, temel nvidia/GR00T-N1.7-3B dahil, ilk kullanımda nvidia/Cosmos-Reason2-2B yükler ve bu depo kilitlidir. README hatayı tam olarak belirtir: model yükleme, bir GatedRepoError / 401 Client Error ile başarısız olur. Bahsetmediği şey ise bunun ne zaman olduğu, yani kartı kiraladıktan ve çalıştırma başladıktan sonra gerçekleştiğidir. Model sayfasında erişim talep edin, ardından herhangi bir şey kiralamadan önce uv run huggingface-cli login komutunu çalıştırın veya HF_TOKEN'i dışa aktarın.

Adım 0: Bölümlerin kendisi

Aşağıdaki her şey, kaydedilmiş bölümleriniz olduğunu varsayar. Eğer yoksa, asıl ilk adım budur ve sonucun ne kadar iyi olabileceğini belirleyen de budur, çünkü taklit öğrenme veride olmayan bilgiyi kurtaramaz. Önce her iki kolu da kalibre edin, ardından takipçiyi bir lider kol ile sürün, bu sırada lerobot-record parquet dosyalarını ve kamera akışlarını yazar. Eğer kalibrasyon kapalıysa, veri setinizdeki eklem değerleri, daha sonra politikayı uygulayacak robottan biraz farklı bir robotu tanımlar ve hiçbir eğitim miktarı bunu düzeltemez.

bash
lerobot-record \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower_arm \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
    --teleop.type=so100_leader \
    --teleop.port=/dev/ttyACM1 \
    --teleop.id=my_leader_arm \
    --dataset.repo_id=${HF_USER}/cube-into-bowl \
    --dataset.num_episodes=60 \
    --dataset.single_task="put the cube in the yellow bowl" \
    --display_data=true
Güncel bir LeRobot üzerinde lerobot-record. Bölüm uzunluğu varsayılan olarak 60 s ve sıfırlama süresi 60 s'dir. so100_follower ve so101_follower, aynı LeRobot yapılandırma sınıfına kayıtlıdır, bu yüzden Isaac-GR00T SO100 örneği so101 adlarını kullanır; her ikisi de bir SO-100 üzerinde çalışır. Burada seçtiğiniz kamera adları (front, wrist), modality.json dosyasında yeniden görünmesi gereken adlardır.

LeRobot'un kendi tavsiyesi, her nesne konumu için yaklaşık 10 olmak üzere en az 50 bölüm kaydetmek, kameraları sabit tutmak ve kavrama davranışını tutarlı tutmaktır. Varyasyonu daha sonra ekleyin, başlangıçta değil. Unutulması gereken genel kural: Eğer görevi sadece kamera görüntülerinden kendiniz yapamıyorsanız, politika da yapamaz. Kola özel kurulum için, SO-100 başlangıç ve SO-100 LeRobot sayfası portları, kalibrasyonu ve kamera indekslerini kapsar. AY-Robots üzerinde bunu internet üzerinden tarayıcı kullanarak teleoperasyon ile yapabilir ve doğrudan oturumdan kaydedebilirsiniz.

Adım 1: veri kümesi LeRobot v2.1 olmalıdır

Bu, en yaygın engeldir. LeRobot'un mevcut CODEBASE_VERSION ana dalındaki v3.0, bu nedenle bugün güncel bir araç zinciriyle kaydettiğiniz her şey v3.0 olarak çıkar. GR00T'un yükleyicisi v2 bekler. Depo nedenini açıkça belirtir: DROID, LIBERO ve Bridge gibi birçok yukarı akış veri kümesi v2'de yayınlanmıştır ve her ikisi için de yerel destek planlanmış ancak henüz gönderilmemiştir. Bu nedenle dönüştürme size aittir ve somut bir nedenle kendi sanal ortamında çalışır: scripts/lerobot_conversion Python 3.10 veya 3.11 isteyen ve lerobot'u tek bir git commit'ine sabitleyen kendi pyproject'ini taşırken, Isaac-GR00T'un kendisi Python 3.12 gerektirir. Dönüştürücüyü depo kökünden yüklerseniz, bunun yerine gr00t paketini alırsınız ki bu, README'sinin uyardığı hatadır. Biçime yeniyseniz, LeRobot veri kümesi sözlük girişi, içinde ne olduğunu açıklar.

bash
# from the Isaac-GR00T repo root
cd scripts/lerobot_conversion
uv venv
source .venv/bin/activate
uv pip install -e . --verbose

# pulls the dataset from the Hub and writes a v2.1 copy into the default cache
python convert_v3_to_v2.py --repo-id <your-hf-user>/<your-dataset>

# or, back in the repo root, keep it next to the SO-100 example
uv run --project scripts/lerobot_conversion \
  python scripts/lerobot_conversion/convert_v3_to_v2.py \
  --repo-id <your-hf-user>/<your-dataset> \
  --root examples/SO100/my_dataset_lerobot
Dönüştürücü --repo-id, isteğe bağlı bir --root ve mevcut yerel anlık görüntüleri silip yeniden indiren --force-conversion parametrelerini alır. codebase_version: v2.1 değerini meta/info.json dosyasına yazar.
Dönüştürme yerinde üzerine yazar

Eğer v3.0 veri kümesi yerel olarak zaten mevcutsa, betik yanına v2.1 düzenini oluşturur ve sonra yer değiştirir: orijinali, sürüm eklenmiş bir kardeş klasöre taşınır, <name>_v3.0, ve dönüştürülmüş kopya orijinal yolu alır. (Betiğin kendi docstring'i bu klasöre _v30 der; kod sürüm dizesini ekler, bu yüzden aslında elde ettiğiniz _v3.0'dır.) İkinci sürpriz: çıktı her zaman <root>/<repo-id> altına iner, bu nedenle --root examples/SO100/my_dataset_lerobot size examples/SO100/my_dataset_lerobot/<your-hf-user>/<your-dataset> verir ve bu daha uzun yol, --dataset-path'in daha sonra istediği yoldur. Bir eğitim işi, sürüm nedenleriyle veri kümenizi reddettiğinde, v3 olarak reddedilen veri kümesi sayfası tam semptomları listeler.

GR00T'un dönüşümden sonra istediği yapı klasik v2 düzenidir: meta/info.json, meta/episodes.jsonl, meta/tasks.jsonl, data/chunk-000/ altında parquet dosyaları, videos/chunk-000/observation.images./ altında MP4 dosyaları ve standart LeRobot'un sahip olmadığı fazladan bir dosya. Kalan hataların çoğu bu fazladan dosyada bulunur.

Adım 2: modality.json, her şeyi belirleyen altı sayı

Bir LeRobot veri kümesinde, robot durumu ve eylem düz float32 dizileri olarak saklanır. Bir SO-100 için her ikisi de şu şekle sahiptir: [6]: beş kol eklemi ve bir tutucu. Demo veri kümesi bunları şöyle adlandırır: shoulder_pan.pos, shoulder_lift.pos, elbow_flex.pos, wrist_flex.pos, wrist_roll.pos, gripper.pos, ancak bu isimler şurada bulunur: info.json ve parquet dosyasında hangi indeksin ne olduğu belirtilmez. meta/modality.json bu eşlemeyi sağlar ve GR00T bu olmadan eğitim yapmaz. İşte deponun SO-100 için sağladığı, kelimesi kelimesine olanı.

json
{
  "state": {
    "single_arm": {
      "start": 0,
      "end": 5
    },
    "gripper": {
      "start": 5,
      "end": 6
    }
  },
  "action": {
    "single_arm": {
      "start": 0,
      "end": 5
    },
    "gripper": {
      "start": 5,
      "end": 6
    }
  },
  "video": {
    "front": {
      "original_key": "observation.images.front"
    },
    "wrist": {
      "original_key": "observation.images.wrist"
    }
  },
  "annotation": {
    "human.task_description": {
      "original_key": "task_index"
    }
  }
}
examples/SO100/modality.json. İndeksler sıfır tabanlıdır ve Python dilimlemesini takip eder, bu nedenle single_arm [0:5] ve gripper [5:6] şeklindedir.

Dönüştürülmüş veri setinize kopyalayın: meta/modality.json ve video anahtarlarını kameralarınızın gerçek adlarına göre yeniden adlandırın. Eğer tek bir tepe kamerasıyla kayıt yaptıysanız, adı top, o zaman original_key şudur: observation.images.top ve kolay ad, veri yapılandırmanızın referans alacağı addır. İkisi birbiriyle uyumlu olmalı ve hiçbiri diğerini sizin için kontrol etmez. Dil açıklaması daha da kötü, çünkü aynı anahtarın üç yerde görünmesi gerekiyor.

KatmanDosyaDepoda kullanılan SO-100 formu
Parquet sütunudata/chunk-*/episode_*.parquetannotation.human.task_description
modality.json anahtarımeta/modality.json, "annotation" altında, annotation. öneki olmadanhuman.task_description
Veri yapılandırmasındaki modality_keysyour so100_config.pyannotation.human.task_description
Dil anahtarı neden sorun yaratır?

annotation. sonrasındaki segmentler, veri setini oluşturan kişi tarafından seçilir. SO-100 demo verileri annotation.human.task_description kullanır; LIBERO ve SimplerEnv ise annotation.human.action.task_description kullanır. Her ikisi de geçerlidir. Eğer bir LIBERO örneğinden bir yapılandırma kopyalayıp kendi SO-100 kaydınıza yönlendirdiyseniz, dil kanalı hiçbir şeye çözümlenmez ve model boş bir talimat üzerinde eğitilir. Kayıp yine de düşer. Politika yine de bir şeyler yapar. Sadece ona ne yapmasını söylediğinizi görmezden gelir.

Adım 3: veri yapılandırması, göreceli kol ve mutlak tutucu

Modalite yapılandırması, her eylem grubunun nasıl temsil edildiğine de karar verdiği için JSON yerine bir Python dosyasıdır. Bu, N1.7 iş akışının N1.5'te aynı biçimde bulunmayan ve iki kez okunmaya değer kısmıdır. Gönderilen SO-100 yapılandırması, beş kol eklemini RELATIVE mevcut durumdan göreli deltalar ve tutucuyu ABSOLUTE mutlak hedef konum olarak tahmin eder, çünkü ikili açık-kapalı sinyali bir delta yerine hedef olarak daha iyi davranır.

python
from gr00t.configs.data.embodiment_configs import register_modality_config
from gr00t.data.embodiment_tags import EmbodimentTag
from gr00t.data.types import (
    ActionConfig, ActionFormat, ActionRepresentation, ActionType, ModalityConfig,
)

so100_config = {
    "video": ModalityConfig(
        delta_indices=[0],                       # current frame only
        modality_keys=["front", "wrist"],        # must match modality.json
    ),
    "state": ModalityConfig(
        delta_indices=[0],
        modality_keys=["single_arm", "gripper"],
    ),
    "action": ModalityConfig(
        delta_indices=list(range(0, 16)),        # predict 16 future steps
        modality_keys=["single_arm", "gripper"],
        action_configs=[
            ActionConfig(rep=ActionRepresentation.RELATIVE,   # arm joints
                         type=ActionType.NON_EEF,
                         format=ActionFormat.DEFAULT),
            ActionConfig(rep=ActionRepresentation.ABSOLUTE,   # gripper
                         type=ActionType.NON_EEF,
                         format=ActionFormat.DEFAULT),
        ],
    ),
    "language": ModalityConfig(
        delta_indices=[0],
        modality_keys=["annotation.human.task_description"],
    ),
}

register_modality_config(so100_config, embodiment_tag=EmbodimentTag.NEW_EMBODIMENT)
examples/SO100/so100_config.py, temel kısımlarına indirgenmiştir. NON_EEF eklem uzayı anlamına gelir; EEF, x, y, z artı 6D bir rotasyondan oluşan dokuz boyutlu bir vektör beklerdi.

Buradaki iki ayrıntıyı bilmezseniz size bir güne mal olur. Birincisi, action_configs konumsaldır: belgeler, modality_keys ile aynı uzunlukta ve aynı sırada olmasını gerektirir ve yanlış yapmanın sonucu hakkında açıkça belirtirler ki bu, yanlış temsilin sessizce uygulanmasıdır. Tutucunuz bir delta olarak, kolunuz ise mutlak bir hedef olarak eğitilir ve hiçbir hata mesajı olmaz. İkincisi, register_modality_config etiketin zaten kayıtlı olmadığını doğrular, bu nedenle aynı Python sürecindeki ikinci bir NEW_EMBODIMENT yapılandırması Embodiment tag ... already registered hatasıyla sonlanır. Bunlardan ikisini tek bir betiğe aktaramazsınız. Üçüncü bir kural daha sonra, dağıtım sırasında uygulanır: eylem delta_indices sıfırdan başlayan bitişik bir aralık olmalıdır. [0, 4, 8] gibi seyrek bir pencere reddedilir, çünkü aşağı akışta her şey tahmin edilen bloğu doğrusal olarak indeksler ve aksi takdirde yanlış satırları yürütür.

delta_indices'i değiştirirseniz istatistikleri yeniden oluşturmalısınız

Normalleştirme istatistikleri, özellikle meta/relative_stats.json, onları oluşturduğunuzdaki ufuk uzunluğu için hesaplanır. Eylem ufuk uzunluğunu yeniden oluşturmadan 16'dan 8'e kısaltırsanız, eğitim IndexError: boolean index did not match indexed array ... dimension is 8 but corresponding boolean dimension is 16 hatasıyla durur. Çözüm tek bir komuttur: python gr00t/data/stats.py --dataset-path <path> --embodiment-tag NEW_EMBODIMENT --modality-config-path examples/SO100/so100_config.py. delta_indices üzerinde herhangi bir değişiklik yaptıktan sonra çalıştırın.

Adım 4: ortam

N1.7 depoyu şuraya taşıdı: ve Python 3.12'ye. Eski conda artı pip install -e . yolu hala README'nin daraltılmış bir bölümünde mevcut, ancak flash-attn ve TensorRT dahil GPU bağımlılıklarının manuel kurulum gerektirebileceği konusunda uyarıyor. Özel bir nedeniniz yoksa uv kullanın. flash-attn cephesinde, bir ayrıntı karışıklığı önler: her Installing flash-attn çıktısını göreceksiniz. uv run. Yeniden derlenmiyor. uv, zaten önbelleğe alınmış bir URL'ye sabitlenmiş bir tekerleği yeniden doğruluyor ve bu iki veya üç saniye sürüyor.

  1. 1
    git-lfs'yi kurun, ardından alt modüllerle klonlayın

    git-lfs zorunludur, isteğe bağlı değildir. Onsuz demo_data/ içindeki parquet dosyaları işaretçi taslakları olarak iner ve demo çalıştırması, dosya listesinde mevcut görünen bir veri kümesinde başarısız olur.

    bash
    sudo apt install git-lfs && git lfs install
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
  2. 2
    uv'yi kurun ve ortamı senkronize edin

    Varsayılan kurulum, flash-attn ve TensorRT dahil GPU bağımlılıklarını çeker. Yeni bir A100 veya H100 görüntüsünde bu, en uzun tek adımdır, bu yüzden başka hiçbir şeye dikkat etmeye başlamadan önce bunu yapın.

    bash
    curl -LsSf https://astral.sh/uv/install.sh | sh
    sudo apt-get update && sudo apt-get install -y ffmpeg
    uv sync --python 3.12
    uv run python -c "import gr00t; print('GR00T installed successfully')"
  3. 3
    Hugging Face'e karşı kimlik doğrulayın

    Bunu ilk eğitim başlatmasından önce yapın, sekiz dakika sonra başarısız olduktan sonra değil.

    bash
    uv run huggingface-cli login   # or: export HF_TOKEN=<your_token>
  4. 4
    Gönderilen SO-100 demo verileri üzerinde sağlamlık kontrolü

    Kendi kaydınıza dokunmadan önce, demo_data/cube_to_bowl_5 üzerinde 2000 adım çalıştırın. Bu beş bölümdür, hızlı biter ve verilerinizden ziyade ortamı kanıtlar. Bu çalıştırma başarısız olursa, veri kümenize yapacağınız hiçbir şey yardımcı olacaktır.

    bash
    CUDA_VISIBLE_DEVICES=0 uv run python \
        gr00t/experiment/launch_finetune.py \
        --base-model-path nvidia/GR00T-N1.7-3B \
        --dataset-path demo_data/cube_to_bowl_5 \
        --embodiment-tag NEW_EMBODIMENT \
        --modality-config-path examples/SO100/so100_config.py \
        --num-gpus 1 \
        --output-dir /tmp/test_finetune \
        --max-steps 2000 \
        --global-batch-size 32 \
        --dataloader-num-workers 4
Model hataları gibi görünen iki ortam tuzağı

FFmpeg 8. torchcodec 0.8.0 yalnızca FFmpeg 4 ila 7'yi destekler ve Ubuntu 25.10 ve sonrası sürüm 8 ile gelir. Hata Could not load libtorchcodec şeklindedir, bu da bir sürüm çakışmasından ziyade bozuk bir kurulum gibi okunur. Örneğin conda install -c conda-forge 'ffmpeg<8' komutuyla daha eski bir çalışma zamanı kurun ve kütüphanelerini LD_LIBRARY_PATH üzerine yerleştirin. CUDA_HOME ayarlanmamış. İnce ayar tamamen başarısız olur. bash scripts/deployment/dgpu/install_deps.sh komutunu bir kez çalıştırın veya sadece export CUDA_HOME=/usr/local/cuda komutunu kullanın.

Adım 5: ince ayar komutu ve bayraklarının gerçek varsayılan değerleri

Demo veri setini kendinizinkiyle değiştirin ve istediğiniz ayarları ekleyin. Aşağıda, depoda kendi yeni-gövdeleme eğitiminde kullanılan, kısa README örneğinin atladığı artırma ve kontrol noktası bayraklarını içeren tam biçim bulunmaktadır. Bu, dar anlamda: dil omurgası ve görsel kodlayıcı donmuş kalır ve eğitilen şey projektör ve difüzyon eylem başlığıdır.

bash
export NUM_GPUS=1
CUDA_VISIBLE_DEVICES=0 uv run python \
    gr00t/experiment/launch_finetune.py \
    --base-model-path nvidia/GR00T-N1.7-3B \
    --dataset-path ./my_dataset_lerobot \
    --embodiment-tag NEW_EMBODIMENT \
    --modality-config-path examples/SO100/so100_config.py \
    --num-gpus $NUM_GPUS \
    --output-dir /tmp/so100 \
    --save-total-limit 5 \
    --save-steps 2000 \
    --max-steps 20000 \
    --use-wandb \
    --global-batch-size 32 \
    --color-jitter-params brightness 0.3 contrast 0.4 saturation 0.5 hue 0.08 \
    --dataloader-num-workers 4
Tek GPU. Sekiz kart için başlatıcıyı uv run torchrun --nproc_per_node=8 --master_port=29500 ile değiştirin ve --num-gpus 8 olarak ayarlayın. Yanlış ortamı almamak için sadece torchrun yerine uv run torchrun kullanın.
FlagFinetuneConfig'deki Varsayılan DeğerNe İşe Yarar
--global-batch-size64Gradyan birikiminden önce tüm GPU'lardaki toplam parti boyutu. Sağlanan örnekler 32 kullanır.
--learning-rate1e-4AY-Robots'un groot1.7 eğitmeni için gönderdiği aynı değer.
--max-steps10000Toplam optimize edici adımları. examples/finetune.sh sarmalayıcısı da varsayılan olarak 10000'e ayarlanmıştır.
--gradient-accumulation-steps1Etkili parti boyutunu çarpar. 1'in üzerindeki değerler, biriken boyutu bildiren bir uyarı verir.
--save-steps and --save-total-limit1000 and 5Kontrol noktası sıklığı ve kaç tanesinin saklandığı. Eskileri silinir.
--weight-decay and --warmup-ratio1e-5 and 0.05examples/finetune.sh tarafından da açıkça ayarlanır.
--state-dropout-prob0.2 in the CLI, 0.8 in the model configEğitim sırasında propriyoseptif durumu rastgele düşürür. Göreviniz duruma dayanıyorsa bunu düşürün.
--tune-llm and --tune-visualFalse and FalseOmurga varsayılan olarak donmuş kalır.
--tune-projector and --tune-diffusion-modelTrue and TrueProjektör ve difüzyon eylem başlığı aslında eğitilenlerdir.
--use-percentilesTrueHam minimum ve maksimum yerine q01 ve q99 ile normalleştirin.
--dataloader-num-workers2Yükleyici tasarıma göre CPU tabanlıdır. Örnekler bunu 4'e çıkarır.
--seeddoes not existBu CLI'da bir seed bayrağı yoktur.

Bu son satır bir yazım hatası değildir. launch_finetune.py bir veri sınıfından oluşturulmuş bir tyro CLI'dır ve bu veri sınıfının bir seed alanı yoktur. README, deterministik olmayan görüntü artırmanın neden olduğu çalıştırmalar arasında %5 ila %6'lık bir varyans olduğunu ayrıca belirtir. Aynı bayraklara sahip iki çalıştırma, aynı kontrol noktalarını üretmeyecektir; bu, bir hiperparametre değişikliğinin yardımcı olup olmadığını veya şanslı olup olmadığınızı belirlemeye çalışırken çok önemlidir. Karşılaştırma için, lerobot'un kendi eğiticisi varsayılan olarak seed 1000 kullanır ve LeRobot GR00T tarifi --seed=42 açıkça geçirir.

Doğrulama varsayılan olarak kapalıdır ve belgelenmiş bayrak bu CLI'da yoktur

İnce ayar, eval_strategy="no" ile çalışır, bu nedenle hiçbir doğrulama kaybı eğrisi yoktur. Sadece eğitim kaybı elde edersiniz, başka hiçbir şey değil. Yeni-gövde kılavuzu, bunu --eval-strategy steps --eval-steps 500 ile açmanızı söyler, ancak bu bayrak launch_finetune.py üzerinde mevcut değildir: CLI, tyro tarafından FinetuneConfig veri sınıfından oluşturulur ve eval_strategy, eval_steps ve eval_batch_size bunun yerine TrainingConfig alanlarıdır. Oradaki varsayılanları "no", 500 ve 2'dir. Bunlara ulaşmak için, iç içe bayrağın --training.eval-strategy olduğu daha kapsamlı giriş noktası gr00t/experiment/launch_train.py'yi kullanın. Her iki durumda da, tek başına düşen bir eğitim kaybı genelleme hakkında çok az şey söyler; bu da tam olarak kayıp düşüyor ama politika hiçbir şey yapmıyor bölümünde açıklanan durumdur.

20000 adımlık bir çalıştırmanın maliyeti nedir

GR00T N1.7, 80 GB'lık bir karta ihtiyaç duyar, bu nedenle maliyet sorusunun dar bir cevabı vardır. AY-Robots'ta groot1.7 eğiticisi, A100 80 GB veya H100 80 GB katmanında çalışır; burada bir çalıştırma, spot piyasada saatte 1.20 ila 2.00 USD karşılığında 3 ila 6 saat sürer. Bu, varsayılan 20000 adımlık iş için yaklaşık 4 ila 12 USD'dir. Aynı görev SmolVLA veya ACT saatte 0.30 ila 0.60 USD ve çalıştırma başına 1 ila 3 USD karşılığında 24 GB'lık bir kartta çalışır. Gerçek takas budur: GR00T deneme başına yaklaşık dört kat daha pahalıdır ve onu masanızın altındaki 4090'da çalıştıramazsınız.

ModelGPU KatmanıTipik Çalışma SüresiTipik MaliyetMinimum Bölüm Sayısı
GR00T N1.7A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
GR00T N1.5A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
Pi0.5A100 80 GB or H100 80 GB3 to 6 hours4 to 12 USD50
SmolVLARTX 4090 or any 24 GB card2 to 5 hours1 to 3 USD30
ACTRTX 4090 or any 24 GB card2 to 5 hours1 to 3 USD50

50-bölüm minimumu bir tabandır, bir hedef değil. NVIDIA'nın kendi SSS'i daha talepkardır: basit, sabit konumlu bir alma ve yerleştirme için yaklaşık 100 yörünge, karmaşık veya çok adımlı sahneler için 500 veya daha fazla ve hassas manipülasyon için 100 ila 500. Eğer 20 bölümde takılı kaldıysanız, akşam ayarlama yapmak yerine öğleden sonrayı kayıt yaparak geçirin. veri toplama rehberi faydalı bir bölümü boşa harcanmış bir bölümden neyin ayırdığını kapsar, ilk veri setinizi kaydedin kısa versiyonudur ve SO-100 veri toplama kola özel olandır.

AY-Robots'un GR00T N1.7 için SO-100 üzerindeki eğitim kılavuzu, GPU katmanı, gerekli veri kümesi formatı ve eğitici varsayılanlarını gösteren özellik şeridini sunar.
Aksi takdirde elle yeniden oluşturacağınız gerçekleri /train/groot-n1-7-on-so-100 kılavuzu sunar: GPU katmanı, veri kümesi formatı ve eğitici tarafından gönderilen varsayılan ayarlar.

Adım 6: Kola dokunmadan önce açık döngü değerlendirmesi

Eğitimin işe yarayıp yaramadığını öğrenmek için fiziksel bir kola yeni bir kontrol noktası yüklemeyin. Önce açık döngü değerlendirmesini çalıştırın. Kaydedilmiş bir bölümü tekrar oynatır, modelden her adımda eylemler ister ve tahmini gerçek değere karşı MSE ve MAE ile çizer. Hiçbir maliyeti yoktur ve 2. ve 3. adımlardaki eşleme hatalarını yakalar.

bash
uv run python gr00t/eval/open_loop_eval.py \
    --dataset-path ./my_dataset_lerobot \
    --embodiment-tag NEW_EMBODIMENT \
    --model-path /tmp/so100/checkpoint-20000 \
    --traj-ids 0 \
    --execution-horizon 16 \
    --steps 400 \
    --modality-keys single_arm gripper
--save-plot-path parametresini belirtmediğiniz sürece çizimler /tmp/open_loop_eval/traj_<id>.jpeg konumuna kaydedilir. Varsayılanlar: --execution-horizon 16, --steps 200, --denoising-steps 4, --traj-ids 0.

Depo, özel veriler için hedef bir MSE yayınlamayı kasıtlı olarak reddeder ve bu doğru bir karardır: çünkü bu sayı eylem birimlerinize, görevinize ve veri kümenizin boyutuna bağlıdır, bu nedenle başkasının kolundan kopyalanan bir eşik hiçbir anlam ifade etmez. Anlamlı olan eğilimdir. İşte deponun tek bir H100 üzerinde, beş bölümlük demo veri kümesi ve 2000 adımla belgelediği referans çalıştırma.

Kontrol Noktasıtraj 0 üzerinde Ortalama MSEtraj 0 üzerinde Ortalama MAE
50087.55.63
100025.43.30
150013.22.18
200010.01.76

Şekil sinyaldir, mutlak değerler değil. Hata, eğitim adımları biriktikçe istikrarlı bir şekilde düşmelidir. Yalnızca yörünge 0 yerine beş eğitim bölümünün tamamı üzerinden ortalama alındığında, deponun son kontrol noktası yaklaşık 7.5 MSE ve 1.5 MAE puanı aldı, bu nedenle referans çalıştırması bile hangi bölümleri ortaladığınıza bağlı olarak farklı okunur. Kendi verilerinizde herhangi bir değişiklik yapmadan önce değiştirilmemiş demo komutunda kendi temel hattınızı kaydedin: bilinen iyi bir çalıştırmayı yeniden üretemiyorsanız, bir kurulum hatasını bir veri sorunundan ayırt edemezsiniz. Depo ayrıca yaygın semptomları nedenlerle eşleştirir ve bunların her biri bir model hatası yerine operasyoneldir.

BelirtiOlası neden
MSE kontrol noktaları arasında sabit veya yükseliyorÖğrenme oranı çok düşük veya veriler hiç yüklenmiyor. --dataset-path ve dataloader çalışanlarını kontrol edin.
Tahmin eğrisi düz veya sabitmodality.json anahtarları veya --modality-config-path eşleşmiyor. Eylem anahtarları eşlenmemiş.
MSE çok büyük veya eğitim sırasında NaN kaybıEylem ve durum normalizasyonu. meta/stats'ı ve eylem aralıklarının fiziksel olarak makul olduğunu doğrulayın.
traj 0'da iyi, ayrılmış bölümlerde kötüVeri kıtlığı, bir hata değil. Beş demo bölümü genelleme yapamaz.

Diğer yol: Isaac-GR00T yerine lerobot-train

LeRobot'un 3 Ağustos 2026'dan beri PyPI'da bulunan mevcut sürümü 0.6.1, aynı temel ağırlıkları ince ayar yapmak için ikinci ve oldukça farklı bir yol sunar. LeRobot, GR00T N1.7'yi bir politika türü olarak sunar ve kendi lerobot-train giriş noktası aracılığıyla eğitir. Burada iki şey önemlidir. LeRobot CLI bir konsol betikleri kümesidir, bu nedenle python lerobot/scripts/train.py diyen herhangi bir şey güncel değildir ve çalışmayacaktır. Ve LeRobot, GR00T N1.5 desteğini tamamen kaldırdı, N1.5 kontrol noktalarını ve yapılandırmalarını bir geçiş notuyla reddetti, bu nedenle LeRobot aracılığıyla N1.5'e ihtiyacınız varsa, onu destekleyen son sürüm olan ve 7 Nisan 2026'da yayınlanan lerobot==0.5.1 sürümünü sabitlemeniz gerekir.

bash
pip install "lerobot[groot]" "lerobot[training]"
hf auth login

lerobot-train \
  --dataset.repo_id=$HF_USER/$DATASET_NAME \
  --dataset.image_transforms.enable=true \
  --policy.type=groot \
  --policy.device=cuda \
  --policy.base_model_path=nvidia/GR00T-N1.7-3B \
  --policy.embodiment_tag=new_embodiment \
  --policy.chunk_size=16 \
  --policy.n_action_steps=16 \
  --policy.use_relative_actions=true \
  --policy.relative_exclude_joints='["gripper"]' \
  --policy.use_bf16=true \
  --seed=42 \
  --batch_size=64 \
  --steps=20000 \
  --save_freq=5000 \
  --output_dir=$OUTPUT_DIR
LeRobot-yerel GR00T N1.7 tarifi. relative_exclude_joints'e dikkat edin: tutucu, so100_config.py'nin ActionRepresentation.ABSOLUTE ile aldığı kararla aynı olan göreceli eylemlerden hariç tutulmuştur.
YönIsaac-GR00T launch_finetune.pylerobot-train --policy.type=groot
Veri seti sürümüYalnızca LeRobot v2, dönüştürme gerekliYerel LeRobot veri seti, sürüm düşürme yok
Modalite eşlemesimeta/modality.json artı bir Python veri yapılandırmasımodality.json yok; davranış, komut satırındaki --policy.* bayrakları tarafından belirlenir
Tohumhiçbir tohum bayrağı yok--seed, LeRobot varsayılanı 1000
Göreceli eylemlerveri yapılandırmasındaki anahtar başına ActionConfig--policy.use_relative_actions artı --policy.relative_exclude_joints
Yayınlanan referans sonuçlarDemo verilerinde SO-100 açık döngü MSE eğilimiLIBERO paketleri, dört pakette ortalama yüzde 96,5
Dağıtım yoluZMQ üzerinden run_gr00t_server.py artı eval_so100.pylerobot-rollout, gerçek zamanlı parçalama ile (queue_threshold 5 veya altında kalmalıdır)
İnce ayarı kendiniz çalıştırma
Avantajlar
  • Her bayrak görünür ve değiştirilebilir. Görsel kodlayıcıyı dondurmayı kaldırabilir, state_dropout_prob'u taşıyabilir veya eylem ufkunu kısaltabilirsiniz.
  • Açık döngü çizimleri yerel dosyalardır. checkpoint-5000'i checkpoint-20000 ile karşılaştırmak bir kabuk komutudur.
  • Herhangi bir platformun çevrimiçi kalmasına bağlı değilsiniz ve kontrol noktası diskinizde standart bir biçimde durur.
  • Deponun LIBERO, SimplerEnv ve DROID için kıyaslama örnekleri, kendi verilerinize güvenmeden önce yeniden üretmeniz için bilinen iyi çalışmalar sunar.
Dezavantajlar
  • Ortam işin çoğunu oluşturur. FFmpeg sürümü, CUDA_HOME, git-lfs, kapılı omurga, torchcodec: bunların hiçbiri model sorunu değildir ve her biri çalışmayı durdurur.
  • v3.0'dan v2.1'e dönüştürme, kendi kurulum adımıyla ayrı bir virtualenv gerektirir ve veri seti dizininizi yerinde yeniden yazar.
  • GPU kiralama, eğitim başladığında değil, hata ayıklamaya başladığınızda faturalandırılmaya başlar ve çalışma bittiğinde hiçbir şey örneği durdurmaz.
  • Tohum olmaması, yalnızca artırmadan kaynaklanan %5 ila %6'lık çalışma-çalışma varyansının yanı sıra bit-bit tekrarlanabilirlik olmaması anlamına gelir.

Aynı kontrol noktasını elde etmenin iki yolu

GPU'yu kiralarsınız ve her adımın sahibi siz olursunuz. Gerçekçi olmak gerekirse, ilk seferde bir öğleden sonra, sonraki her seferde ise yirmi dakika sürer.

  1. SO-100 üzerinde lerobot-record ile bölümleri kaydedin. Bir LeRobot v3.0 veri seti elde edersiniz.
  2. Kendi virtualenv'inizde scripts/lerobot_conversion/convert_v3_to_v2.py ile v2.1'e dönüştürün.
  3. meta/modality.json dosyasını ve EmbodimentTag.NEW_EMBODIMENT altında kayıtlı bir Python modalite yapılandırması yazın.
  4. 80 GB'lık bir kart kiralayın, alt modüllerle klonlayın, uv sync yapın, Hugging Face'e karşı kimlik doğrulayın.
  5. launch_finetune.py'yi, ardından birkaç kontrol noktasında open_loop_eval.py'yi çalıştırın ve donanıma dokunmadan önce MSE eğilimini karşılaştırın.
  6. Örneği yok etmeden önce kontrol noktasını makineden çekin, ardından kola hizmet yolunu oluşturun.
Herkesin Unuttuğu Adım

Kiralanan örnekten kontrol noktasını kapatmadan önce kopyalayın. --save-total-limit 5 ayrıca eğitim ilerledikçe eski kontrol noktalarının silindiği anlamına gelir, bu nedenle 5000. adımda istediğiniz kontrol noktası 20000. adımda artık mevcut olmayabilir.

The AY-Robots training matrix with five policy models as rows and four robot arms as columns, each cell linking to a specific training guide
The /train matrix: five models against four arms. The GR00T N1.7 row also covers the SO-101, Koch v1.1 and LeKiwi.

Kontrol Noktasını Kola Geri Yükleme

Isaac-GR00T, ZMQ üzerinden bir sunucu-istemci ayrımı kullanır. Politika GPU üzerinde çalışır ve robot makinesindeki ince bir istemci gözlemleri gönderir ve eylem parçalarını alır. SO-100 örneği kopyalamak için yeterince eksiksizdir: run_gr00t_server.py dosyasını kontrol noktanız ve --embodiment-tag NEW_EMBODIMENT ile başlatın, ardından robot tarafında seri port, robot kimliği, kamera indeksleri ve dil talimatı ile eval_so100.py dosyasını çalıştırın. Bu komuttaki kamera adları, işletim sistemi cihaz numaralarıyla değil, modality.json dosyanızdaki kullanıcı dostu adlarla eşleşmelidir.

bash
# GPU side
uv run python gr00t/eval/run_gr00t_server.py \
  --model-path /tmp/so100/checkpoint-20000 \
  --embodiment-tag NEW_EMBODIMENT \
  --device cuda:0 \
  --host 0.0.0.0 --port 5555

# robot side, from gr00t/eval/real_robot/SO100
uv run --no-sync python eval_so100.py \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM2 \
  --robot.id=orange_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
  --policy_host=localhost --policy_port=5555 \
  --lang_instruction="put the cube in the yellow bowl"
--execution-horizon, yeniden planlamadan önce tahmin edilen adımların kaçının yürütüleceğini kontrol eder. Bu değer, politikanın action_horizon değerinden fazla olmamalıdır ve bu sayı, temel modelin değil, modalite yapılandırmanızdaki action delta_indices'in uzunluğudur. Gönderilen SO-100 yapılandırması 16 tahmin eder, bu nedenle 16 sizin tavanınızdır; temel nvidia/GR00T-N1.7-3B kontrol noktası 40 için yapılandırılmıştır ve policy.md, ince ayarlı kontrol noktalarının farklılık gösterebileceğini açıkça belirtir. Bu değeri aşarsanız, her iki sayıyı da belirten bir ValueError alırsınız. Belgelerin gerçek zamanlı dağıtım için önerdiği değer 8'dir. Eski bayrak adı --action-horizon hala çalışır ancak uyarı verir.
7.4 V, 12 V değil

Kolu tekrar bağlarken: SO-100, 7.4 V'luk bir ray üzerinde Feetech STS3215 bus servolarını çalıştırır. Onlara 12 V beslemek onları bozar ve eğer tabanı 12 V ile çalışırken kolu çalışmayan bir LeKiwi'ye de sahipseniz bu kolay bir hatadır. İlk çalıştırmadan önce beslemeyi kontrol edin, duman çıktıktan sonra değil. Bkz. SO-100 donanım sayfası ve SO-100 ile LeKiwi karşılaştırması. Eğer kol çalışır ancak hiçbir şey hareket etmezse, servo yanıt vermiyor başlangıç noktasıdır.

Politikanın nerede çalıştığına dair dürüst kısım şimdi geliyor, çünkü eğitim ve sunum farklı donanım hikayelerine sahip. İnce ayar 40 GB veya daha fazlasını ister. Çıkarım istemez: README bunu 16 GB veya daha fazla olarak belirtir ve RTX 4090'ı açıkça adlandırır, bu nedenle zaten sahip olduğunuz bir kart, asla üretemeyeceği bir kontrol noktasını sunabilir. Politikanın duyarlı hissedip hissetmediğini belirleyen VRAM değil, sunucunun nerede bulunduğudur. AY-Robots GR00T N1.7 yalnızca bulut tabanlıdır, bu nedenle kontrol döngüsü, eylem adımı başına 152 ms'nin üzerine bir genel internet gidiş-dönüş süresi öder ve yalnızca SmolVLA ve ACT yerel olarak da çalışır. Yavaş alma ve yerleştirme için uzak bir pod idare edilebilir. Ancak reaktif herhangi bir şey için bu mümkün değildir: politika, tam olarak bir eğitim hatası gibi görünen ancak öyle olmayan bir şekilde tereddütlü hale gelir. Eylem adımı başına 20 ms ile ACT, en sıkı döngüyü tolere eden modeldir, SmolVLA 245 ms'de yer alır ve hiçbir miktarda gecikme ayarı zaten harcanmış bir gidiş-dönüş süresini geri kazandıramaz. İlk politikanızı çalıştırın sunum tarafını baştan sona anlatır.

Gerçekte ne yanlış gidiyor

  • İlk çalıştırmada GatedRepoError. nvidia/Cosmos-Reason2-2B'ye erişim izniniz verilmemiş veya kimlik doğrulaması yapmamışsınız. Bu, GPU saati zaten başladıktan sonra gerçekleşir.
  • Yüklemede veri kümesi reddedildi. Neredeyse her zaman bir v3.0 veri kümesidir. Daha düşük bir sürüme dönüştürün. Bkz. v3 olarak reddedilen veri kümesi.
  • Uyuşmayan boolean boyutları hakkında IndexError. delta_indices'i değiştirdiniz ve istatistikleri yeniden oluşturmadınız.
  • 32. toplu işlemde bellek yetersizliği. --global-batch-size değerini azaltın ve --gradient-accumulation-steps değerini artırın veya VRAM sınırlı olduğunda yapılandırmanın açıkça önerdiği --num-shards-per-epoch değerini azaltın. Bkz. eğitim sırasında bellek yetersizliği.
  • Kayıp düşüyor, politika hiçbir şey yapmıyor. Varsayılan olarak bir doğrulama ayrımı yoktur, bu nedenle temiz bir eğitim eğrisi çok az şey kanıtlar. Bu sayfa teşhisi kapsar.
  • Sizin kurulumunuzda çalışıyor ve başka hiçbir yerde çalışmıyor. Tek bir aydınlatma koşulunda çekilmiş küçük bir veri kümesiyle beklenen bir durumdur. NVIDIA, renk titremesi artırma ve farklı aydınlatmalarda 20 ila 50 bölüm önermektedir. Daha fazlası burada.
  • Tutucu asla düzgün kapanmıyor. action_configs'te tutucu eyleminin ABSOLUTE ve kol eklemlerinin RELATIVE olduğundan emin olun, bu sırayla. Tutucu kapanmıyor diğer nedenleri listeler.
  • Bir kamera kayıt sırasında sessizce düşüyor. Bölüm hala kaydediliyor ve video anahtarı hala mevcut, bu yüzden bu durum can sıkıcı. Kamera algılanmadı bunu kapsar.

Tüm hata modları dizini şurada bulunur: . Bir modeli hata ayıklamak yerine modeller arasında seçim yapıyorsanız, ve ekli kaynaklarla karşılaştırma sayılarına sahiptir ve çoğu insanın gerçekten ihtiyaç duyduğu karşılaştırmadır, çünkü masanızın altındaki kartta eğitebileceğiniz bir model ile ince ayar yapmak için 80 GB'lık bir düğüm kiralamanız gereken bir model arasındaki seçimdir. Bu modellerin neden bu şekilde davrandığına dair arka plan için, ve önce okunmaya değerdir. Ve henüz bir kola sahip değilseniz, kayıtsız fiziksel bir SO-100 yayınlar.

GR00T N1.7'ye ince ayar yapmaya değmesi için kaç bölüme ihtiyacım var?

AY-Robots, groot1.7 eğitmeni için 50 bölümden oluşan katı bir alt sınır belirler. NVIDIA'nın kendi SSS'si daha talepkardır: sabit bir konumda basit bir alma ve yerleştirme için yaklaşık 100 yörünge, karmaşık veya çok adımlı sahneler için 500 veya daha fazla, ince manipülasyon için ise 100 ila 500. 50'nin altında, hiperparametreleri ayarlamaktan ziyade daha fazla veri kaydetmek neredeyse her zaman daha iyidir. Başarı bundan sonra plato yaparsa, NVIDIA HG-DAgger'ı önerir: politikayı çalıştırın, başarısız olduğunda müdahale edin ve bu düzeltmeleri veri kümesine ekleyin.

Veri kümem neden yüklenemiyor ve hangi sürüm olduğunu nasıl anlarım?

meta/info.json dosyasını açın ve codebase_version'ı okuyun. LeRobot'un ana dalındaki mevcut CODEBASE_VERSION v3.0'dır, bu nedenle yeni bir araç zinciriyle kaydedilen her şey v3.0'dır ve GR00T yükleyicisi v2 bekler. Isaac-GR00T deposundaki scripts/lerobot_conversion/convert_v3_to_v2.py ile dönüştürün; bu betik, dönüştürülen veri kümesine codebase_version: v2.1 yazar. Betik, GR00T'nin sabitlediği lerobot sürümünden farklı bir lerobot sürümüne ihtiyaç duyduğu için kendi sanal ortamında çalışır.

GR00T N1.7'ye bir RTX 4090 üzerinde ince ayar yapabilir miyim?

Hayır. NVIDIA, ince ayar için 40 GB veya daha fazla VRAM önerir ve H100 veya L40 düğümlerini belirtir; diğer kartlar çalışır ancak çok daha uzun sürer. Bir 4090'ın 24 GB'ı vardır. AY-Robots, aynı nedenle GR00T N1.7'yi yalnızca A100 80 GB ve H100 80 GB katmanında sunar. Çıkarım farklı bir hikaye: modeli sunmak için 16 GB yeterlidir, bu nedenle bir 4090 eğitemediği bir politikayı çalıştırabilir. 24 GB'ta eğitebileceğiniz bir VLA istiyorsanız, bu yaklaşık 450 M parametreli SmolVLA veya yaklaşık 80 M parametreli ACT'dir.

Neden aynı bayraklarla yapılan iki çalıştırma farklı kontrol noktaları verir?

Çünkü launch_finetune.py'nin bir seed'i yoktur. Bu, seed alanı içermeyen bir veri sınıfından oluşturulmuş bir tyro CLI'dır, bu nedenle hiçbir şey RNG'yi sabitlemez. Depo, deterministik olmayan görüntü artırmanın neden olduğu çalıştırmalar arasında %5 ila %6'lık bir varyansı ayrıca belirtir. Tekrarlanabilirlik önemliyse, bunun yerine LeRobot yolunu kullanın: lerobot-train --seed alır ve yayınlanan GR00T tarifi --seed=42'yi geçirir.

Isaac-GR00T mi yoksa lerobot-train mi kullanmalıyım?

Referans uygulamayı, eylem temsilinde anahtar başına kontrolü, TensorRT dışa aktarımını veya kendi verilerinize güvenmeden önce yeniden üretmek için karşılaştırma örneklerini istiyorsanız Isaac-GR00T'yi kullanın. Veri kümeniz zaten LeRobot v3.0 ise ve dönüştürmek istemiyorsanız, bir seed istiyorsanız veya yığınınızın geri kalanı zaten LeRobot ise lerobot-train'i kullanın. Her ikisi de aynı nvidia/GR00T-N1.7-3B ağırlıklarına ince ayar yapar. LeRobot'un GR00T N1.5 desteğini tamamen bıraktığını unutmayın: N1.5 kontrol noktaları bir geçiş notuyla reddedilir ve bunları kullanmaya devam etmek için lerobot==0.5.1'i sabitlemeniz gerekir.

Ön kameranın yanı sıra bir bilek kamerasına da gerçekten ihtiyacım var mı?

Gönderilen SO-100 yapılandırması her ikisini de kullanır ve modality.json ön ve bileği ayrı video anahtarları olarak eşler. Tek bir kamera ile eğitim yapabilir ve model kartının gecikme tablosu tek bir kamera ile ölçülür, ancak bilek görünümü, temas anında politikaya tutucu hakkında kullanılabilir bilgi veren şeydir. Eğer tutucu, çalıştırmalarınızda yanlış zamanda kapanıyorsa, eksik veya kötü hedeflenmiş bir bilek kamerası kontrol edilecek ilk şeylerden biridir.

Ortamı önce kurmadan SO-100'ünüzde GR00T N1.7'ye ince ayar yapın

Bir formda model, veri kümesi ve hiperparametreleri seçin. Arka uç, spot piyasadan bir A100 80 GB veya H100 kiralar, eğiticiyi 32'lik toplu işlem, 1e-4 öğrenme oranı ve 20000 adım ile çalıştırır ve kontrol noktalarını nesne depolamaya yazar. Çalıştırma başına yaklaşık 4 ila 12 USD.

GR00T N1.7 eğitim kılavuzunu açın

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started