Beş politika satırı ve dört robot kolu sütunu içeren AY-Robots eğitim matrisi, her hücre belirli bir model ve kol eğitim rehberine bağlanıyor
ACTSO-100lerobottaklit öğrenimipolitika eğitimi

SO-100 Üzerinde ACT'yi Sıfırdan Nasıl Eğitirsiniz

AY-Robots ResearchAugust 23, 202616 dk okuma

Bir Action Chunking Transformer'ı SO-100 üzerinde lerobot ile sıfırdan eğitin: act config, chunk_size ve n_action_steps, 100000 adımlık program, 20 ms çıkarım.

ACT, SO-100 politikaları arasında farklı olandır. GR00T N1.7 ve N1.5 şuradan başlar: nvidia/GR00T-N1.7-3B ve nvidia/GR00T-N1.5-3B, Pi0.5 şuradan: lerobot/pi05_base. ACT sıfırdan başlar: temel bir kontrol noktası yoktur, çünkü bir temel model değildir. Yaklaşık 80 milyon parametreli bir transformatördür ve onu kolunuzda, kendi aydınlatmanız altında, tek bir görev için sıfırdan eğitirsiniz.

Bu aynı zamanda, 3 milyar parametreli bir VLA'nın 152 ila 485 ms'ye ihtiyaç duyduğu ve çalıştırma başına 4 ila 12 USD yerine 1 ila 3 USD'ye mal olduğu yerde, bir kontrol adımını 20 ms'de çalıştırmasının nedenidir. Bu kılavuz, lerobot ile manuel yolu anlatır. Bir SO-100 üzerinde: kayıt, act yapılandırması, neyin chunk_size ve n_action_steps kontrol ettiğini, 100000 adımlık programı, dağıtımı. Ardından, platformun yardımcı olmadığı durumlar da dahil olmak üzere AY-Robots üzerinde aynı iş.

Bilmeniz Gerekenler

  • ACT sıfırdan eğitilir: temel model yok, ön eğitim yok, dil girişi yok. Tek kontrol noktası, tek görev.
  • Makale: yaklaşık 80 M parametre, 11 GB RTX 2080 Ti üzerinde yaklaşık 5 saat, 0.01 s çıkarım.
  • lerobot varsayılanları: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 adım, seed 1000.
  • AY-Robots üzerinde: adım başına 20 ms, beşinin en hızlısı. Minimum 50 bölüm, LeRobot v3.0, 24 GB kart, çalıştırma başına 1 ila 3 USD.
  • Gördüğü bir görevde kazanır ve dil koşullandırması istediğiniz anda kaybeder.
Hangi sürümleri açıklar

23 Ağustos 2026 tarihinde lerobot 0.6.x ile kontrol edildi: pyproject.toml üzerindeki main, version = "0.6.2" olarak okunur, en yeni etiket v0.6.1, 3 Ağustos 2026. python lerobot/scripts/train.py ile başlayan bir eğitim, konsol giriş noktalarından önce gelir: lerobot-train, lerobot-record ve lerobot-rollout.

ACT aslında nedir

Action Chunking with Transformers, ALOHA makalesinden gelmektedir: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, Zhao, Kumar, Levine ve Finn tarafından yazılan, arXiv, 23 Nisan 2023 tarihli. Kurulum, 50 Hz hızında kayıt yapar ve 480x640 çözünürlükte 30 fps yayın yapan dört web kamerası kullanır: ikisi tutucularda, biri üstte, biri önde. Özet, 10 dakikalık gösterimlerden sonra, şeffaf bir sos kabını açma ve bir pili yuvaya yerleştirme dahil olmak üzere altı beceride %80 ila %90 başarı oranı olduğunu iddia ediyor.

Kayıt oturumu planlarken makalenin ana kısmı daha faydalıdır: görev başına 50 gösterim, ancak Thread Velcro için 100 gösterim. Bu, 10 ila 20 dakikalık veri ve sıfırlamalar sayıldığında 30 ila 60 dakikalık gerçek zaman demektir. Başarı da tekdüze değildir: Thread Velcro %20, Put On Shoe %92, Cup Open %84, Prep Tape %64 ile sonuçlanır.

HiperparametreALOHA makalesi, Tablo IIIlerobot ana dalında
öğrenme oranı1e-5optimizer_lr = 1e-5
toplu iş boyutu8batch_size = 8, in TrainPipelineConfig not ACTConfig
kodlayıcı / kod çözücü katmanları4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
parça boyutu k100chunk_size = 100
z'nin gizli boyutuyok; Şekil 11, 32 ila 512'lik bir projeksiyon gösteriyorlatent_dim = 32
zamansal topluluk oluşturmayok; referans kodda --temporal_aggtemporal_ensemble_coeff = None
Kod çözücü katman satırı bir yazım hatası değildir

Makale 7 kod çözücü katmanı listeler, lerobot ise bilerek 1 tane gönderir. `configuration_act.py` dosyasındaki yorum, orijinal uygulamanın yalnızca ilk katmanın kullanıldığı anlamına gelen bir hata içerdiğini belirtir ve tonyzhaozh/act'teki 25 numaralı sorunu referans gösterir: eylem başlığı `hs[0]` değerini okur, bu nedenle yedi katmanın tümü çalışır ancak yalnızca ilk çıktı tahmine ulaşır. Bu sorun 23 Nisan 2024'ten beri açık ve yanıtsızdır. lerobot, basılı sayıyı değil, yayınlanmış sonuçları üreten davranışı eşleştirir. `--policy.n_decoder_layers` değerini artırırsanız, makalenin hiç değerlendirmediği bir model eğitmiş olursunuz.

Eylem öbekleme tüm fikirdir

Sıradan davranışsal klonlama, bir gözlemi bir eyleme eşler ve hatalar birikir: bir sapma kolu dağılım dışına çıkarır, daha kötü bir eylem üretir ve otuz adım sonra tutucu nesnenin hiçbir yerinde değildir. Eylem öbekleme aynı anda k eylemi tahmin eder ve bunları yürütür, böylece etkin ufku k faktörü kadar düşürür. Ayrıca insan verilerine özgü bir rahatsızlığı da ele alır: teleoperatörler duraklar ve tek adımlı Markovcu bir ilke daha önce ne olduğuna bağlı olan bir duraklamayı modelleyemez.

Makale, k'yi iddia etmek yerine ablasyon yapar. Zamansal topluluk kapalıyken, dört ayar üzerinden ortalama alındığında, başarı k = 1'de yüzde 1'den k = 100'de yüzde 44'e yükselir, ardından ilke açık döngü kontrole yaklaştıkça 200 ve 400'de azalır. Bu eğri, varsayılanın 100 olmasının nedenidir.

  • chunk_size: kod çözücünün her ileri geçişte kaç gelecek eylem tahmin ettiği. Varsayılan 100.
  • n_action_steps: tekrar sorgulamadan önce bunlardan kaçını yürüttüğünüz. Varsayılan 100, bu nedenle lerobot tüm bloğu açık döngüde çalıştırır.
  • lerobot, n_action_steps <= chunk_size değerini doğrular ve tersini yaparsanız bir ValueError hatası verir.

Operasyonel olarak önemli olan, chunk_size'ın kare hızına bölünmesidir. lerobot'un SO-100 örneklerinin kullandığı 30 fps'de, 100'lük bir blok, tek bir gözlemden yaklaşık 3.3 saniye taahhüt eder. Görev bu pencere içinde bir düzeltme gerektiriyorsa, n_action_steps, değil chunk_size: uzun tahmini korur ve daha sık yeniden gözlemlersiniz.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Tahmini kısaltmadan bloğun yürütülen kısmını kısaltma.
Zamansal Topluluk Oluşturma Tuzağı

--policy.temporal_ensemble_coeff ayarlandığında, lerobot n_action_steps = 1 gerektirir, aksi takdirde bir NotImplementedError hatası verir. Topluluk oluşturma, politikayı her zaman adımında sorgular ve o zaman adımı için çakışan tahminleri w_i = exp(-m * i) ağırlıklarıyla harmanlar, en eski olan w_0'ı alır. Makale, ACT için bunu %3.3 olarak belirtir: gerçek ama mütevazı ve çıkarım sayısını blok uzunluğuyla çarpar. Adım başına 20 ms'de uygun fiyatlı, 485 ms'de değil. Bkz. çıkarım gecikmesi.

ACT bir temel modeli yendiğinde

Beş eğitilebilir politika yan yana, AY-Robots'un kiraladığı GPU'nun boyutunu belirlemek için ölçtüğü ve kullandığı sayılarla birlikte.

PolitikaAileParametrelerAdım başınaGPU seviyesiMin. bölümVeri kümesi
ACTParçalama transformeri, sıfırdan~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAKompakt VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA temeli, difüzyon kafası~3 B (~40 M eğitilmiş)152 msA100 / H100 80 GB50LeRobot v2.0 veya v2.1
GR00T N1.5VLA temeli, öncül~3 B165 msA100 / H100 80 GB50LeRobot v2.0 veya v2.1
Pi0.5Akış eşleştirme VLA, bkz. flow matching~3 B, PaliGemma omurgası485 msA100 / H100 80 GB50LeRobot v3.0
The AY-Robots policies page showing a comparison table of ACT, SmolVLA, GR00T N1.5, GR00T N1.7 and Pi0.5 with parameter counts, GPU requirements, inference latency and minimum episode counts
The /policies table: ACT has the smallest parameter count and the shortest step time.
ACT'yi sıfırdan eğitme
Avantajlar
  • Beşinin en hızlısı olan, A100 değil 24 GB'lık bir kartta eylem adımı başına 20 ms.
  • 3 B sınıfı için 4 ila 12 USD'ye karşılık, çalıştırma başına 1 ila 3 USD.
  • Gördüğü temas yoğun işlerde hassas: Slide Ziploc ve Slot Battery'de %88 ve %96, önceki yöntemlerin birinci aşamayı asla geçemediği yerlerde.
Dezavantajlar
  • Dil koşullandırması yok: görev dizisi göz ardı edilir, bu nedenle bir kontrol noktası bir görevdir.
  • Semantik ön bilgiler yok: bildiği her şey 50 bölümünüzden geldi.
  • Dar genelleme: bir kamerayı hareket ettirirseniz yeniden eğitim yapmanız gerekir.
  • Sessizce başarısız olur: kayıp düşer, kol hiçbir şey yapmaz, loglar hiçbir şey söylemez.
  • Hız avantajı yalnızca çıkarım servoların yanında yer alıyorsa yardımcı olur.

Görev ve sahne sabit olduğunda ve hareketin hızlı ve hassas olması gerektiğinde ACT'yi seçin. Bir bir kontrol noktasının birden fazla talimatı kapsaması gerektiğinde seçin. İki sayfa kararı başa baş ele alır: ve . Yayınlanmış karşılaştırmalar için, her sayıyı kaynağına bağlar.

Başlamadan önce ihtiyacınız olanlar

Bir takipçi kol, için bir lider kol, en az bir kamera, 24 GB GPU. ACT yalnızca görüntüleri ve eklem pozisyonlarını okur. İki kamera idealdir: nesnelerin nerede olduğunu gösteren sabit bir ön görünüm, 'ın neye dokunmak üzere olduğunu gösteren bir bilek kamerası, ALOHA'da olduğu gibi.

KolServolarVoltajParça maliyetiDurum
SO-100Feetech STS32157.4 V~110 ila 150 EURTam destek, referans kol
SO-101Feetech STS32157.4 V~130 ila 170 EURTam destek
Koch v1.1Dynamixel XL330 / XL4305 V ve 12 V raylar~250 ila 350 EURUyumlu
LeKiwiFeetech STS3215 (kol)7.4 V kol, 12 V taban~400 ila 500 EURUyumlu
7.4 V, 12 V değil

SO-100 ve SO-101, Feetech STS3215 servolarını 7.4 V bir ray üzerinde çalıştırır. Onlara 12 V beslemek onları bozar, bu o kadar sessiz olur ki insanlar önce yazılımı suçlar ve bir Koch 12 V güç kaynağı fiziksel olarak bir SO-100 kartına uyar. Etiketi kontrol edin. Belirtiler: servo yanıt vermiyor, kol seğiriyor sonra sarkıyor. Ayrıca SO-100 ve SO-101 karşılaştırması.

Çıplak koldan kaydedilmiş veri setine

Aşağıdaki akış lerobot 0.6.x'tir. Kalibre edilmiş bir kolunuz ve bir veri setiniz varsa bunu atlayın. Aksi takdirde SO-100 başlangıç kılavuzu, montajı kapsar, kayıt kılavuzu yakalamayı ve veri seti belgeleri formatı kapsar.

  1. 1
    lerobot'u doğru ekstralarla kurun

    Kayıt için core_scripts, eğitim için training, Feetech servolar için feetech gerekir. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Her kolun USB bağlantı noktasını bulun

    Her iki kol takılıyken çalıştırın, istendiğinde birini çıkarın. Linux'ta düğüm izinlerini açmanız gerekebilir.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Motor kimliklerini ve baud hızını ayarlayın

    SO-100'de bu, montajdan önce gerçekleşir: SO-101'in aksine, konektörlere bir kez yapıldıktan sonra ulaşılamaz. Komut dosyası, tutucudan başlayarak veri yolunu her seferinde bir motor olacak şekilde tarar ve kimlikleri EEPROM'a yazar.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Her iki kolu kalibre edin

    Her eklemi menzilinin ortasına ayarlayın, Enter tuşuna basın, ardından her birini tam menzili boyunca hareket ettirin. Kalibrasyon, bir kol üzerinde eğitilmiş bir politikanın başka bir kol üzerinde çalışmasını sağlar. Aynı id'yi yeniden kullanın.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Kameralar açıkken bir kez teleoperasyon yapın

    lerobot'un genel kuralı: görevi yalnızca kamera görüntülerine bakarak yapabilmelisiniz. Eğer yapamıyorsanız, ACT de yapamaz. Bu, sonraki hata ayıklamadan daha fazla kötü veri kümesini yakalar.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    50 bölüm kaydedin

    50, AY-Robots minimumudur ve ALOHA'nın görev başına kullandığı miktardır. lerobot, nesne konumu başına 10, kameralar sabit, kavrama tutarlı olmasını önerir. n bir bölümü sonlandırır, r yeniden kaydeder, q durdurur ve kodlar.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
Bir teleoperasyon oturumundan LeRobot formatında bir veri kümesinin nasıl yakalanacağını açıklayan AY-Robots kayıt eğitim sayfası
Kayıt eğitimi. Masaüstü istemcisi, lerobot-record ile aynı düzeni yazar.
Bir günü yiyip bitiren tuzak: tutarsız bir veri kümesi

ACT'nin dayanacak ön bilgisi yoktur, bu nedenle her tutarsızlık kalıcı hale gelir. En maliyetli üçü: 20. ve 21. bölümler arasında hafifçe hareket ettirilmiş bir kamera, setin yarısını öğleden sonra kaydettiğiniz için değişen ışık, iki farklı şekilde yapılan bir kavrama. Her biri mükemmel görünen bir kayıp eğrisi ve yanlış yere giden bir kol verir. Bkz. kayıp düşüyor, politika hiçbir şey yapmıyor, politika yalnızca tek bir kurulumda çalışıyor ve yüksek kaliteli eğitim verisi toplama.

Eğitimden önce en az beş bölümü tekrar oynatın. LeRobot veri kümesi formatı kamera akışlarını, eklem durumlarını ve eylemleri her bir bölüm, olarak depolar ve tekrar oynatma bu eylemleri kola geri gönderir. Eğer tekrar oynatma görevi yapmıyorsa, veri bunu içermiyor demektir ve eğitim bunu icat etmeyecektir.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
0. bölüm tekrar oynatılıyor. Eğer bu başarısız olursa, durdurun ve yeniden kaydedin.

ACT politikasını eğitme

Bu komutun tamamıdır. ACT'ye özgü her şey zaten varsayılandır, bu yüzden lerobot ACT sayfası onlarla başlamanızı önerir.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
lerobot 0.6.x belgelerindeki SO-100 veri kümesi üzerindeki eğitim komutu.

--policy.type=act ACTConfig'i yükler, bu, veri setinizin kaydettiği motor ve kamera sayısına uyum sağlar, böylece gözlem şeklini asla belirtmezsiniz. --wandb.enable=true isteğe bağlıdır ve buna değerdir: kayıp eğrisi, 100000 adımlık bir çalıştırmadaki tek ucuz sinyaldir. Zamanlama, ACTConfig'ten değil, lerobot'un eğitim yapılandırmasından gelir: 100000 adım, toplu iş 8, çekirdek 1000, her kontrol noktası 20000 adımda bir, her 200 adımda bir günlük kaydı.

Tam bir çalıştırma, 020000'den 100000'e kadar beş kontrol noktası dizini ve bir last sembolik bağlantı bırakır. Hepsini saklayın: en iyi politika genellikle sonuncusu değildir.

Ayarlerobot varsayılanıAY-Robots ACT formuYorum
toplu iş boyutu88VRAM sınırlarına ulaşırsanız önce bunu düşürün.
öğrenme oranı1e-51e-5ALOHA makalesiyle aynı.
maksimum adım100000100000Yaklaşık olarak 50 bölümlük bir setin iyileşmeyi durdurduğu yer.
gradyan birikimi11, geçerli değilBunun yerine toplu iş boyutunu değiştirin.
çekirdek1000açıktaGR00T'nin tyro giriş noktasında çekirdek yok; ACT çalıştırmaları tekrarlanabilir olanlardır.
parça boyutu / eylem adımı sayısı100 / 100100 / 100, düzenlenebilirTahmin ve yürütme ufku. İkincisini düşürün, birincisini değil.
kontrol noktası sıklığı20000açıkta değilsaveSteps burada bir GR00T ayarıdır.
Bellek yetersizliği bir toplu iş boyutu sorunudur, kart sorunu değil

İki adet 640x480 kamera ile 8 toplu iş boyutunda ACT, 24 GB'a rahatça sığar. İnsanlar hızı artırmak için toplu iş boyutunu yükselttiğinde veya bir lerobot kayıt örneğinin gösterdiği 1920x1080 kareleri beslediğinde sığmamaya başlar. 1080p'de iki ResNet-18 omurgası çok farklı bir bellek profiline sahiptir. Daha büyük bir kart kiralamadan önce --batch_size değerini 4'e düşürün. Bkz. eğitimde bellek yetersizliği.

Süre: makalede 11 GB RTX 2080 Ti üzerinde yaklaşık 5 saat, lerobot'un ACT sayfasına göre 100 bin adım için birkaç saat, AY-Robots 24 GB katmanında 2 ila 5 saat. Süreyi kısaltmayın. Referans deposunun README'si, sarsıntılı veya duraklayan bir politikanın genellikle daha fazla eğitim gerektirdiğini belirtir, çünkü kayıp platosundan sonra başarı ve akıcılık artmaya devam eder: gerçek dünya verileri için en az 5000 epoch veya platodan sonra 3 ila 4 kat daha fazla süre ister.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Kesintiye uğramış bir çalıştırmayı son kontrol noktasından devam ettirme.

Eğitilmiş politikayı kola uygulama

Dağıtım lerobot-rollout kullanır. Kamera anahtarları kaydedilenlerle eşleşmelidir: front ve wrist üzerinde eğitilmiş bir politika cam0 ve cam1'i kabul etmeyecektir, ve rename_map yardımcı olmaz, çünkü önceden eğitilmiş bir kontrol noktasına ihtiyaç duyar. Görev dizisi atlanabilir; lerobot'un kendi örneği bunu ACT için atlanabilir olarak işaretler.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Kaydedilmeyen otonom dağıtım. Değerlendirme bölümlerini kaydetmek için --strategy.type=sentry kullanın.
Bu komut yakın zamanda yeniden adlandırıldı, bu yüzden eski eğitimler farklılık gösteriyor

Değerlendirme eskiden lerobot-record --policy.path=... aracılığıyla çalıştırılırdı. 0.6.x sürümünde ise lerobot-rollout, --strategy.type seçicisi ile kullanılır: base, sentry (otomatik yüklemeli kayıt), highlight (tuş vuruşuyla kaydedilen halka arabellek), dagger (döngüde insan) ve episodic. 23 Ağustos 2026 itibarıyla, ACT dokümantasyon sayfası, lerobot-rollout komutunu çalıştıran bir bloğun hemen üzerinde hala "lerobot-record komutunu kullanarak" demektedir. Cümleyi değil, komutu takip edin.

Son model yerine bir kontrol noktasını sabitlemek için --policy.pretrained_revision ekleyin. Bunun için çalıştırmanın --save_checkpoint_to_hub=true ile başlaması gerekir, varsayılan olarak kapalıdır: bu olmadan lerobot sadece son modeli iter. Bununla birlikte, her kontrol noktası sıfırla doldurulmuş adımıyla etiketlenir, bu yüzden --policy.pretrained_revision=060000 60000 adımlık olanı kurtarır. Bunu gerçek kol üzerinde 100000 ile karşılaştırmak, mevcut en ucuz deneydir.

Aynı kontrol noktasına iki yol

Yukarıdakilerin hepsi manuel yoldur ve çalışır. Platform yolu, bir GPU veya Python ortamına sahip olmama karşılığında kontrolü feda eder.

  1. core_scripts, training, feetech, ffmpeg ile lerobot 0.6.x'i kurun.
  2. Portları bulun, motor kimliklerini ayarlayın, her iki kolu da kalibre edin, 50 bölüm kaydedin.
  3. Verilerin görevi içerdiğini doğrulamak için birkaç bölümü tekrar oynatın.
  4. 24 GB'lık bir GPU kiralayın veya satın alın, CUDA ve PyTorch'u eşleştirin, lerobot-train --policy.type=act komutunu çalıştırın.
  5. Birkaç saat bekleyin, ardından kolun bulunduğu makinede lerobot-rollout komutunu çalıştırın.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Bu yol size ne sağlar

Tam kontrol: configuration_act.py dosyasını düzenleyin, bir kamera ekleyin, eğiticiyi çatallayın. Bir görevi göndermek yerine araştırma için bir platform dikkat dağıtıcıdır.

The AY-Robots training matrix with five policy rows and four robot arm columns, where every cell links to the specific training guide for that model and arm combination
The matrix on /train. The ACT row against the SO-100 column is this article's guide.

Gerçekte ne yanlış gidiyor

Acının neredeyse hiçbiri eğitim komutunda değildir. İlk seferde ne sıklıkla sorun çıkardıklarına göre sıralanmış, etrafındaki şeylerde yatar.

BelirtiOlağan nedenSayfa
lerobot-find-port hiçbir şey göstermiyorSürücü, kablo veya düğüm izinlerikol algılanmadı
Kayıt sırasında kamera eksikYeniden başlatmada dizin değişti veya tek bir USB denetleyicide iki kamera varkamera algılanmadı
Eğitim veri kümesini reddediyorACT v3.0 istiyor, GR00T v2.1'e ihtiyaç duyuyorveri kümesi v3 olarak reddedildi
CUDA bellek yetersizliğiYükseltilmiş yığın boyutu veya 480p yerine 1080p karelereğitimde bellek yetersizliği
Kayıp harika görünüyor, kol hiçbir şey yapmıyorVeri görevi eksik veya bir kamera hareket ettikayıp düşüyor, politika hiçbir şey yapmıyor
Sarsıntılı hareket veya bölüm ortasında duraklamaYetersiz eğitim, bir öbek sınırı takılması veya zaman aşımına uğramış bir çıkarım çağrısıpolitika hareket ortasında donuyor

İki satır vurguyu hak ediyor. ACT, LeRobot v3.0 üzerinde eğitim yaparken, GR00T'un yükleyicisi üzerinde çöküyor ve v2.1'e ihtiyaç duyuyor, bu nedenle ACT'yi eğiten bir veri kümesi GR00T çalışmasını başarısız kılabilir. Ve son satırda iki düzeltme var: ACT yazarları sarsıntılı hareketi daha fazla eğitimle yanıtlıyor, oysa n_action_steps 100'de gerçek bir takılma bir öbek sınırına denk gelir, 30 fps'de her 3.3 saniyede bir görünür bir duraklama. Bilmeniz gereken iki şey daha: tek bir ölü eklem genellikle bir hiç yazılmamış bir servo kimliği, ve yaklaşan ama asla kapanmayan bir tutucu gösterilerde çok az tutucu aralığı anlamına gelir. Tam dizin: hata modu sayfaları.

Bir çalıştırmanın maliyeti nedir

KatmanModellerÇalışma süresiSaatlik fiyatÇalışma başına maliyet
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Bu, daha sonra bir VLA isteseniz bile ACT ile başlamak için bir argümandır. Başarısız bir ACT çalıştırması bir kahve fiyatına mal olur ve veri kümenizin görevi içerip içermediğini size saatler içinde söyler. Başarısız bir GR00T çalıştırması aynı ders için bunun dört katına mal olur. Daha sonra GR00T N1.7 veya SmolVLA yükseltmek bir yeniden inşa değil, bir form değişikliğidir. Arka plan: görsel-dil-eylem modelleri, eksiksiz SO-100 kılavuzu, ilk politikanızı eğitin ve taklit öğrenimi. Kolunuz yok mu? Canlı sayfa gerçek bir SO-100'ü kaydolmadan sürmek için yayınlar.

SO-100'ünüzde ACT Eğitin

Bu tam kombinasyon için kılavuz: varsayılanlar, GPU katmanı ve bir çalıştırmanın maliyeti. Veri kümesini seçin, arka uç kartı kiralar ve kontrol noktalarını yazar.

Eğitim kılavuzunu aç
Bunun yerine ince ayar yapabileceğim önceden eğitilmiş bir ACT modeli var mı?

Hayır. ACT'nin temel bir modeli yoktur; yalnızca siz onu eğittikten sonra var olur. Bu, araç setinde bir eksiklik değil, ACT'nin kendisidir: makale, her görev için sıfırdan bir politika eğitir. Bir satıcı kontrol noktası için GR00T N1.7 veya Pi0.5 kullanın.

Gerçekten kaç bölüme ihtiyacım var?

50: ALOHA'nın görev başına kaydettiği (en zoru olan Thread Velcro için 100) ve AY-Robots minimumu. lerobot, nesne konumu başına yaklaşık 10, kameralar sabit, kavrama tutarlı olmasını önerir. Elli temiz bölüm, kameranın hareket ettiği yüz bölümden daha iyidir.

chunk_size'ı 100'den değiştirmeli miyim?

Genellikle hayır. Ablasyon, k = 1'de yüzde 1'den k = 100'de yüzde 44'e çıkar ve sonra azalır, bu nedenle 100 zirveye yakındır. Kol çok uzun süre bağlı kalırsa, bunun yerine n_action_steps'i düşürün: 30 fps'de, her 0.8 saniyede bir 25 yeniden sorgulama.

Bir eğitim çalıştırması ne kadar sürer ve erken durdurabilir miyim?

100000 adım için 24 GB'lık bir kartta iki ila beş saat. Kontrol noktaları her 20000 adımda bir kaydedilir ve --resume=true bir çalıştırmayı kaldığı yerden devam ettirir, bu nedenle erken durdurmak güvenlidir. Sadece ilk düzlükte değil: kayıp plato çizdikten sonra pürüzsüzlük artar.

Kayıp azaldı ve kol hala başarısız oluyor. Şimdi ne olacak?

Neredeyse her zaman veri kümesi. Kaydedilen bölümleri kolda tekrar oynatın: eğer tekrar oynatma görevi yapmıyorsa, veriler onu içermiyordur. Ardından, özellikle bir kamera olmak üzere herhangi bir şeyin hareket edip etmediğini kontrol edin. ACT'nin ön bilgileri yoktur, bu nedenle 21. bölümdeki bir dürtme kalıcıdır.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started