
አንድ Action Chunking Transformerን በSO-100 ላይ ከለሮቦት ጋር ከመጀመሪያው ያሰልጥኑ: የ act config, chunk_size እና n_action_steps, የ 100000 እርምጃ መርሐግብር, 20 ms ግምት.
ACT ከSO-100 ፖሊሲዎች መካከል ልዩ ነው። GR00T N1.7 እና N1.5 የሚጀምሩት ከnvidia/GR00T-N1.7-3B እና nvidia/GR00T-N1.5-3B፣ Pi0.5 ከlerobot/pi05_base። ACT ከምንም አይጀምርም: የመሠረት ቼክፖይንት የለውም፣ ምክንያቱም የመሠረት ሞዴል ስላልሆነ። ይህ በግምት 80 ሚሊዮን ፓራሜትር ያለው ትራንስፎርመር ሲሆን በአንድ ተግባር ላይ፣ በእጅዎ ላይ፣ በእርስዎ ብርሃን ስር ከመጀመሪያው ጀምሮ የሚያሰለጥኑት ነው።
ለዚህም ነው የቁጥጥር እርምጃን በ20 ሚሴ ውስጥ የሚያከናውነው፣ 3 ቢሊዮን ፓራሜትር ያለው VLA ደግሞ ከ152 እስከ 485 ሚሴ የሚፈልግ ሲሆን፣ በአንድ ሩጫ ከ4 እስከ 12 ዶላር ፈንታ ከ1 እስከ 3 ዶላር ብቻ የሚያስከፍለው። ይህ መመሪያ በእጅ የሚሰራውን መንገድ ከለሮቦት በSO-100: መቅዳት፣ የact ኮንፊግ፣ ምን chunk_size እና n_action_steps እንደሚቆጣጠሩ፣ የ100000 እርምጃ መርሐግብር፣ ሮልአውት። ከዚያም ተመሳሳይ ስራ በAY-Robots ላይ፣ መድረኩ በማይረዳበት ቦታ ጭምር።
ማወቅ ያለብዎት ነገር
- •ACT ከመጀመሪያው ጀምሮ ያሰለጥናል: የመሠረት ሞዴል የለም፣ ቅድመ-ስልጠና የለም፣ የቋንቋ ግብዓት የለም። አንድ ቼክፖይንት፣ አንድ ተግባር።
- •ጥናቱ: ወደ 80 ሚሊዮን ፓራሜትሮች፣ በ11 ጊባ RTX 2080 Ti ላይ ወደ 5 ሰዓታት ያህል፣ 0.01 ሰከንድ ኢንፈረንስ።
- •ለሮቦት ነባሪዎች: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000።
- •በAY-Robots ላይ: በአንድ እርምጃ 20 ሚሴ፣ ከአምስቱ ፈጣኑ። ዝቅተኛው 50 ክፍሎች፣ LeRobot v3.0፣ 24 ጊባ ካርድ፣ በአንድ ሩጫ ከ1 እስከ 3 ዶላር።
- •ባየው ተግባር ላይ ያሸንፋል፣ እና የቋንቋ ሁኔታን በፈለጉበት ቅጽበት ይሸነፋል።
በ23 ኦገስት 2026 ከለሮቦት 0.6.x ጋር ተረጋግጧል: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 ኦገስት 2026። በpython lerobot/scripts/train.py የሚጀምር ትምህርት ከኮንሶል መግቢያ ነጥቦች lerobot-train, lerobot-record and lerobot-rollout ይቀድማል።
ACT በትክክል ምንድን ነው
Action Chunking with Transformers ከALOHA ወረቀት የመጣ ነው፣ ዝቅተኛ ወጪ ባላቸው ሃርድዌሮች ጥሩ ዝርዝር የሁለት እጅ ማኒፑሌሽን መማር፣ በዣኦ፣ ኩማር፣ ሌቪን እና ፊን፣ arXiv፣ 23 ኤፕሪል 2023። መሳሪያው በ50 Hz ይመዘግባል፣ አራት የድር ካሜራዎች 480x640 በ30 fps ያስተላልፋሉ፡ ሁለቱ በመያዣዎቹ ላይ፣ አንዱ ከላይ፣ አንዱ ከፊት። ረቂቁ ከ10 ደቂቃ ማሳያዎች ውስጥ ስድስት ክህሎቶችን ከ80 እስከ 90 በመቶ ስኬት እንዳላቸው ይናገራል፣ ከእነዚህም መካከል ግልጽ የሆነ የቅመማ ቅመም ኩባያ መክፈት እና ባትሪ ማስገባት ይገኙበታል።
የቀረጻ ክፍለ ጊዜ ሲያቅዱ ዋናው ክፍል የበለጠ ጠቃሚ ነው፡ ለእያንዳንዱ ተግባር 50 ማሳያዎች፣ Thread Velcro በ100 ከሚለው በስተቀር፣ ይህም ከ10 እስከ 20 ደቂቃ የውሂብ እና ከ30 እስከ 60 ደቂቃ የሰዓት ጊዜ ዳግም ማስጀመር ከተቆጠረ በኋላ ነው። ስኬትም ወጥ አይደለም፡ Thread Velcro በ20 በመቶ፣ Put On Shoe በ92፣ Cup Open በ84፣ Prep Tape በ64 ያበቃል።
| ሃይፐርፓራሜትር | ALOHA ወረቀት፣ ሠንጠረዥ III | lerobot በዋናው |
|---|---|---|
| የመማሪያ መጠን | 1e-5 | optimizer_lr = 1e-5 |
| የባች መጠን | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| ኢንኮደር / ዲኮደር ንብርብሮች | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| የክፍል መጠን k | 100 | chunk_size = 100 |
| የ z ድብቅ ልኬት | የለም፤ ምስል 11 ከ32 ወደ 512 ፕሮጀክሽን ያሳያል | latent_dim = 32 |
| ጊዜያዊ ስብስብ | የለም፤ --temporal_agg በማጣቀሻ ኮድ ውስጥ | temporal_ensemble_coeff = None |
ጽሑፉ 7 ዲኮደር ንብርብሮችን ይዘረዝራል፣ lerobot ሆን ብሎ 1 ብቻ ያቀርባል። በconfiguration_act.py ውስጥ ያለው አስተያየት የመጀመሪያው ትግበራ ስህተት እንዳለበት ይገልጻል፣ ይህም የመጀመሪያው ንብርብር ብቻ ጥቅም ላይ እንደሚውል ያሳያል፣ በtonyzhaozh/act ውስጥ ያለውን ጉዳይ 25 በመጥቀስ፡ የድርጊት ራስ hs[0]ን ያነባል፣ ስለዚህ ሰባቱም ንብርብሮች ቢሰሩም፣ የመጀመሪያው ውጤት ብቻ ወደ ትንበያው ይደርሳል። ይህ ጉዳይ ከኤፕሪል 23 ቀን 2024 ጀምሮ ክፍት እና ምላሽ ያልተሰጠበት ነው። lerobot የታተሙትን ውጤቶች ያመጣውን ባህሪ እንጂ የታተመውን ቁጥር አይዛመድም። --policy.n_decoder_layersን ከፍ ካደረጉ፣ ጽሑፉ ፈጽሞ ያልገመገመውን ሞዴል ያሰለጥናሉ።
የድርጊት መከፋፈል ዋናው ሀሳብ ነው
የተለመደው የባህሪ ክሎኒንግ አንድ ምልከታን ከአንድ ድርጊት ጋር ያዛምዳል፣ እና ስህተቶች ይከማቻሉ፡ መዛባት ክንዱን ከስርጭቱ ውጪ ያደርገዋል፣ የከፋ ድርጊት ያስከትላል፣ እና ከሰላሳ እርምጃዎች በኋላ ግሪፐሩ ከዕቃው አጠገብ አይሆንም። የድርጊት መከፋፈል በአንድ ጊዜ k ድርጊቶችን ይተነብያል እና ያስፈጽማል፣ ውጤታማውን አድማስ በ k እጥፍ ይቀንሳል። በተጨማሪም ከሰው መረጃ ጋር የተያያዘ ችግርን ይፈታል፡ ቴሌኦፕሬተሮች ለአፍታ ያቆማሉ፣ እና አንድ-ደረጃ ማርኮቪያን ፖሊሲ ከዚህ በፊት በነበረው ነገር ላይ የተመሰረተ ለአፍታ ማቆምን መቅረጽ አይችልም።
ጽሑፉ kን ከማረጋገጥ ይልቅ ያጠፋዋል። ጊዜያዊ ስብስብ ሲጠፋ፣ በአራት ቅንብሮች ላይ በአማካይ ሲታይ፣ ስኬት በ k = 1 ከ 1 በመቶ ወደ 44 በመቶ በ k = 100 ይጨምራል፣ ከዚያም ፖሊሲው ወደ ክፍት-ሉፕ ቁጥጥር ሲቃረብ በ 200 እና 400 ላይ ይቀንሳል። ያ ኩርባ ነባሪው 100 የሆነበት ምክንያት ነው።
- chunk_size: ዲኮደሩ በአንድ ፎርዋርድ ፓስ ምን ያህል የወደፊት ድርጊቶችን እንደሚተነብይ። ነባሪ 100።
- n_action_steps: እንደገና ከመጠየቅዎ በፊት ከእነዚህ ውስጥ ስንቱን እንደሚፈጽሙ። ነባሪ 100 ነው፣ ስለዚህ lerobot ሙሉውን ቸንክ ክፍት ሉፕ ያካሂዳል።
- lerobot
n_action_steps <= chunk_sizeመሆኑን ያረጋግጣል እና በተቃራኒው ከሆነValueErrorያነሳል።
በአሰራር ደረጃ አስፈላጊው chunk_size በ frame rate የተከፈለው ነው። lerobot's SO-100 ምሳሌዎች በሚጠቀሙት 30 fps፣ የ100 ቸንክ ከአንድ ምልከታ ወደ 3.3 ሰከንዶች ያህል ይወስዳል። ስራው በዚያ መስኮት ውስጥ እርማት የሚያስፈልገው ከሆነ፣ n_action_stepsን ይቀንሱ እንጂ chunk_sizeን አይደለም። ረጅም ትንበያውን ይዘው ብዙ ጊዜ እንደገና ይመለከታሉ።
# 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--policy.temporal_ensemble_coeff ሲያዘጋጁ lerobot n_action_steps = 1 እንዲሆን ይጠይቃል፣ ካልሆነ ግን NotImplementedError ያነሳል። ኢንሰምብሊንግ ፖሊሲውን በእያንዳንዱ የጊዜ እርምጃ ይጠይቃል እና ለዚያ የጊዜ እርምጃ የተደራረቡ ትንበያዎችን በክብደቶች w_i = exp(-m * i) ያዋህዳል፣ በጣም ጥንታዊው w_0 ያገኛል። ጽሑፉ ለ ACT 3.3 በመቶ ያደርገዋል፡ እውነት ግን መጠነኛ ነው፣ እና የመገመት ብዛትን በቸንክ ርዝመት ያባዛል። በ20 ms በአንድ እርምጃ ተመጣጣኝ ነው፣ በ485 ms ግን አይደለም። የመገመት መዘግየትን ይመልከቱ።
ACT የመሠረት ሞዴልን ሲያሸንፍ
አምስቱ የሰለጠኑ ፖሊሲዎች ጎን ለጎን፣ AY-Robots የሚለካቸው እና የሚከራየውን ጂፒዩ መጠን ለመወሰን የሚጠቀምባቸው ቁጥሮች።
| ፖሊሲ | ቤተሰብ | መለኪያዎች | በእያንዳንዱ እርምጃ | ጂፒዩ ደረጃ | ዝቅተኛ ክፍሎች | የውሂብ ስብስብ |
|---|---|---|---|---|---|---|
| ACT | ቻንኪንግ ትራንስፎርመር፣ ከመጀመሪያው | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | የታመቀ VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA መሠረት፣ ዲፍዩዥን ራስ | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA መሠረት፣ ቀዳሚ | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | ፍሎው-ማቺንግ VLA፣ ይመልከቱ ፍሎው ማቺንግ | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- በአንድ የድርጊት ደረጃ 20 ሚሊሰከንዶች፣ ከአምስቱ ፈጣኑ፣ በ24 ጂቢ ካርድ ላይ እንጂ በA100 ላይ አይደለም።
- በአንድ ሩጫ ከ1 እስከ 3 ዶላር፣ ለ3 B ክፍል ከ4 እስከ 12 ዶላር ጋር ሲነጻጸር።
- ባየው የግንኙነት-በዛ ሥራ ላይ ትክክለኛ ነው፡ በስላይድ ዚፕሎክ እና ስሎት ባትሪ ላይ 88 እና 96 በመቶ፣ ቀደምት ዘዴዎች የመጀመሪያውን ደረጃ ፈጽሞ ማለፍ አልቻሉም።
- የቋንቋ ሁኔታ የለም፡ የተግባር ሕብረቁምፊው ችላ ይባላል፣ ስለዚህ አንድ የፍተሻ ነጥብ አንድ ተግባር ነው።
- የፍቺ ቅድመ-እውቀት የለም፡ የሚያውቀው ነገር ሁሉ የመጣው ከ50 ክፍሎችዎ ነው።
- ጠባብ አጠቃላይነት፡ ካሜራን ካንቀሳቀሱ እንደገና እያሰለጠኑ ነው።
- በጸጥታ ይወድቃል፡ ኪሳራው ይቀንሳል፣ ክንዱ ምንም አያደርግም፣ ምዝግቦቹ ምንም አይሉም።
- የፍጥነት ጥቅሙ የሚረዳው ግምት ከሰርቮዎቹ አጠገብ ከሆነ ብቻ ነው።
ተግባር እና ትዕይንት ቋሚ ሲሆኑ እና እንቅስቃሴ ፈጣንና ትክክለኛ መሆን ሲኖርበት ACTን ይምረጡ። አንድ የፍተሻ ነጥብ ብዙ መመሪያዎችን መሸፈን ሲኖርበት ይምረጡ። ሁለት ገጾች ውሳኔውን ፊት ለፊት ያነጻጽራሉ፡ እና ። ለታተሙ መለኪያዎች፣ እያንዳንዱን ቁጥር ወደ ምንጩ ያገናኛል።
ከመጀመርዎ በፊት የሚያስፈልግዎ ነገር
አንድ ተከታይ ክንድ፣ አንድ መሪ ክንድ ለ፣ ቢያንስ አንድ ካሜራ፣ 24 ጂቢ ጂፒዩ። ACT ምስሎችን እና የመገጣጠሚያ ቦታዎችን ብቻ ያነባል። ሁለት ካሜራዎች ምርጥ አማራጭ ናቸው፡ ነገሮች የት እንዳሉ ለማሳየት ቋሚ የፊት እይታ፣ እና ሊነካው ያለውን ለማሳየት የእጅ አንጓ ካሜራ፣ እንደ ALOHA ላይ።
| ክንድ | ሰርቮስ | ቮልቴጅ | የክፍሎች ዋጋ | ሁኔታ |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | ሙሉ ድጋፍ፣ ማጣቀሻ ክንድ |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | ሙሉ ድጋፍ |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | ተኳሃኝ |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V ክንድ፣ 12 V ቤዝ | ~400 to 500 EUR | ተኳሃኝ |
SO-100 እና SO-101 Feetech STS3215 ሰርቮስን በ7.4 V ሬይል ላይ ያንቀሳቅሳሉ። 12 V መስጠት ያጠፋቸዋል፣ ሰዎች መጀመሪያ ሶፍትዌሩን እንዲወቅሱ በሚያደርግ ጸጥታ፣ እና የ Koch 12 V አቅርቦት በአካል ከ SO-100 ቦርድ ጋር ይገጥማል። መለያውን ያረጋግጡ። ምልክቶች: ሰርቮ ምላሽ አይሰጥም, ክንድ ይርገበገባል ከዚያም ይዝላል። እንዲሁም SO-100 ከ SO-101 ጋር።
ከባዶ ክንድ እስከ የተቀዳ የውሂብ ስብስብ
ከታች ያለው ፍሰት lerobot 0.6.x ነው። የተስተካከለ ክንድ እና የውሂብ ስብስብ ካለዎት ይዝለሉት። ያለበለዚያ SO-100 የመጀመርያ መመሪያ፣ ስብሰባን ይሸፍናል፣ የመቅጃ መመሪያ ቀረጻን ይሸፍናል እና የውሂብ ስብስብ ሰነዶች ቅርጸቱን ይሸፍናል።
- 1ለሮቦትን በትክክለኛ ተጨማሪዎች ይጫኑ
ለመቅዳት
core_scripts፣ ለማሰልጠንtraining፣ ለFeetech ሰርቮስfeetechያስፈልጋል። ፓይዘን 3.12+።bashconda 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የእያንዳንዱን ክንድ የዩኤስቢ ወደብ ያግኙ
ሁለቱንም ክንዶች ሰክተው ያሂዱት፣ ሲጠየቁ አንዱን ይንቀሉ። በሊኑክስ ላይ የኖድ ፍቃዶችን መክፈት ሊያስፈልግዎ ይችላል።
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3የሞተር መታወቂያዎችን እና ባውድሬትን ያዘጋጁ
በSO-100 ላይ ይህ የሚሆነው ከመገጣጠሙ በፊት ነው፡ ከSO-101 በተለየ መልኩ አንዴ ከተገነባ በኋላ ማገናኛዎቹ ሊደረስባቸው አይችሉም። ስክሪፕቱ ከአውቶቡሱ ላይ አንድ ሞተር በአንድ ጊዜ ከግሪፐር በመነሳት መታወቂያዎችን ወደ EEPROM ይጽፋል።
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4ሁለቱንም ክንዶች ያስተካክሉ (ካሊብሬት ያድርጉ)
እያንዳንዱን መገጣጠሚያ ወደ መካከለኛው ቦታው ያዘጋጁ፣ አስገባን ይጫኑ፣ ከዚያም እያንዳንዱን ሙሉ ክልሉን እንዲያልፍ ያድርጉ። ካሊብሬሽን በአንድ ክንድ ላይ የሰለጠነ ፖሊሲ በሌላኛው ላይ እንዲሰራ ያስችላል። ተመሳሳይ
idን እንደገና ይጠቀሙ።bashlerobot-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ካሜራዎቹ በርተው አንድ ጊዜ በቴሌኦፕሬት ያድርጉ
የለሮቦት አጠቃላይ መመሪያ፡ ስራውን የካሜራ ምስሎችን ብቻ በመመልከት ማከናወን መቻል አለብዎት። ካልቻሉ፣ ACTም አይችልም። ይህ ከኋላ ከሚደረግ ማረም (debugging) የበለጠ መጥፎ የውሂብ ስብስቦችን ይይዛል።
bashlerobot-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 - 650 ክፍሎችን ይመዝግቡ
50 የAY-Robots ዝቅተኛው እና ALOHA ለእያንዳንዱ ተግባር የተጠቀመው ነው። ለሮቦት ለእያንዳንዱ የነገር ቦታ 10፣ ካሜራዎች ቋሚ፣ መያዣው ወጥ እንዲሆን ይመክራል።
nአንድ ክፍልን ያበቃል፣rእንደገና ይመዘግባል፣qያቆማል እና ኢንኮድ ያደርጋል።bashHF_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

ACT የሚደገፍበት ቅድመ እውቀት የለውም፣ ስለዚህ እያንዳንዱ አለመጣጣም ቋሚ ይሆናል። ሦስቱ በጣም ውድ የሆኑት፡ በክፍል 20 እና 21 መካከል የተገፋ ካሜራ፣ ግማሹን ስብስብ ከሰዓት በኋላ ስለመዘገቡ የተቀየረ ብርሃን፣ በሁለት መንገድ የተደረገ መያዣ። እያንዳንዳቸው ፍጹም የሚመስል የኪሳራ ከርቭ እና ወደተሳሳተ ቦታ የሚሄድ ክንድ ይሰጣሉ። ይመልከቱ ኪሳራው ይወርዳል፣ ፖሊሲው ምንም አያደርግም፣ ፖሊሲው በአንድ አቀማመጥ ላይ ብቻ ይሰራል እና ከፍተኛ ጥራት ያለው የሥልጠና ውሂብ መሰብሰብ።
ከማሰልጠንዎ በፊት ቢያንስ አምስት ክፍሎችን እንደገና ያጫውቱ። የለሮቦት የውሂብ ስብስብ ቅርጸት የካሜራ ዥረቶችን፣ የመገጣጠሚያ ሁኔታዎችን እና ድርጊቶችን ለእያንዳንዱ ክፍል ያከማቻል፣ እና መልሶ ማጫወት እነዚያን ድርጊቶች ወደ ክንዱ ይመልሳል። መልሶ ማጫወቱ ስራውን ካላከናወነ፣ ውሂቡ የያዘው አይደለም እና ስልጠናው አይፈጥረውም።
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0የACT ፖሊሲን ማሰልጠን
ይህ ሙሉ ትዕዛዙ ነው። ሁሉም ACT-ተኮር ነገሮች አስቀድሞ ነባሪ ናቸው፣ ለዚህም ነው የlerobot ACT ገጽ ከእነሱ ጋር እንዲጀምሩ የሚመክረው።
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--policy.type=act የመረጃ ስብስብዎ የያዛቸውን የሞተሮች እና የካሜራዎች ብዛት የሚስማማውን ACTConfig ይጭናል፣ ስለዚህ የምልከታ ቅርፅን በጭራሽ አይገልጹም። --wandb.enable=true አማራጭ እና ጠቃሚ ነው፡ የኪሳራ ኩርባ በ100000 እርምጃ ሩጫ ውስጥ ብቸኛው ርካሽ ምልክት ነው። መርሐግብሩ የሚመጣው ከlerobot የሥልጠና ውቅር እንጂ ከACTConfig አይደለም፡ 100000 እርምጃዎች፣ ባች 8፣ ሲድ 1000፣ እና ቼክፖይንት በየ20000 እርምጃዎች፣ በየ200 ምዝገባ።
ሙሉ ሩጫ አምስት የቼክፖይንት ማውጫዎችን፣ ከ020000 እስከ 100000፣ በተጨማሪም last ሲምሊንክ ይተዋል። ሁሉንም ያስቀምጡ፡ ምርጡ ፖሊሲ ብዙውን ጊዜ የመጨረሻው አይደለም።
| ቅንብር | የlerobot ነባሪ | የAY-Robots ACT ቅጽ | አስተያየት |
|---|---|---|---|
| የባች መጠን | 8 | 8 | የVRAM ገደብ ከደረሱ መጀመሪያ ይቀንሱት። |
| የመማሪያ መጠን | 1e-5 | 1e-5 | ከALOHA ወረቀት ጋር ተመሳሳይ። |
| ከፍተኛ እርምጃዎች | 100000 | 100000 | በግምት 50 የትዕይንት ስብስብ መሻሻል የሚያቆምበት። |
| የግራዲየንት ክምችት | 1 | 1, አይተገበርም | በምትኩ የባች መጠንን ይቀይሩ። |
| ሲድ | 1000 | የተጋለጠ | የGR00T ታይሮ መግቢያ ነጥብ ሲድ የለውም፤ የACT ሩጫዎች ሊባዙ የሚችሉ ናቸው። |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, ሊስተካከል የሚችል | የትንበያ እና የአፈፃፀም አድማስ። ሁለተኛውን ይቀንሱ፣ የመጀመሪያውን አይደለም። |
| የቼክፖይንት ድግግሞሽ | 20000 | አልተጋለጠም | saveSteps እዚህ የGR00T መቆጣጠሪያ ነው። |
ACT በባች መጠን 8 ከሁለት 640x480 ካሜራዎች ጋር በ24 ጊባ ላይ ምቹ በሆነ ሁኔታ ይገጥማል። ሰዎች ፍጥነትን ለመጨመር የባች መጠንን ሲያሳድጉ፣ ወይም አንድ የlerobot ቀረጻ ምሳሌ የሚያሳየውን 1920x1080 ፍሬሞችን ሲመግቡት መገጣጠም ያቆማል። ሁለት ResNet-18 ባክቦኖች በ1080p በጣም የተለየ የማህደረ ትውስታ መገለጫ አላቸው። ትልቅ ካርድ ከመከራየትዎ በፊት --batch_size ወደ 4 ይቀንሱ። በስልጠና ወቅት የማህደረ ትውስታ እጥረት የሚለውን ይመልከቱ።
የቆይታ ጊዜ፡ በጽሁፉ ላይ ባለው 11 ጂቢ RTX 2080 Ti ላይ ወደ 5 ሰዓታት ገደማ፣ በለሮቦት ACT ገጽ መሰረት ለ100k እርምጃዎች ጥቂት ሰዓታት፣ በAY-Robots 24 ጂቢ ደረጃ ላይ ከ2 እስከ 5 ሰዓታት። አያሳጥሩት። የማጣቀሻው ሪፖ README እንደሚያመለክተው የሚንቀጠቀጥ ወይም የሚቆም ፖሊሲ ብዙውን ጊዜ ተጨማሪ ስልጠና ይፈልጋል፣ ምክንያቱም ኪሳራው ከተረጋጋ በኋላ ስኬት እና ቅልጥፍና እየተሻሻሉ ስለሚሄዱ፡ ለእውነተኛ ዓለም መረጃ ቢያንስ 5000 ኢፖክስ ወይም ከተረጋጋ በኋላ ከ3 እስከ 4 እጥፍ የሚበልጥ ርዝመት ይፈልጋል።
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueየሰለጠነውን ፖሊሲ በክንዱ ላይ ማስኬድ
ማሰማራት የሚጠቀመው lerobot-rollout ነው። የካሜራ ቁልፎች ከተመዘገቡት ጋር መዛመድ አለባቸው፡ በfront እና wrist ላይ የሰለጠነ ፖሊሲ cam0 እና cam1 አይቀበልም፣ እና rename_map አይረዳም፣ ምክንያቱም ቅድመ-የሰለጠነ የፍተሻ ነጥብ ስለሚያስፈልገው። የተግባር ሕብረቁምፊው ሊተው ይችላል፤ የለሮቦት የራሱ ምሳሌ ለACT ሊዘለል የሚችል አድርጎ ይገልጸዋል።
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ግምገማው ቀደም ሲል በlerobot-record --policy.path=... በኩል ይሰራ ነበር። በ0.6.x ውስጥ lerobot-rollout ከ--strategy.type መራጭ ጋር ነው፡ base፣ sentry (በራስ-ሰር ሰቀላ መቅዳት)፣ highlight (በቁልፍ ሰሌዳ ግቤት የሚቀመጥ ሪንግ ቡፈር)፣ dagger (ሰው በዑደት ውስጥ) እና episodic። ከኦገስት 23 ቀን 2026 ጀምሮ የACT ሰነድ ገጽ አሁንም lerobot-rollout ከሚያስኬድ ብሎክ በላይ "lerobot-record ትዕዛዙን በመጠቀም" ይላል። ዓረፍተ ነገሩን ሳይሆን ትዕዛዙን ይከተሉ።
የመጨረሻውን ሞዴል ሳይሆን ቼክፖይንትን ለመሰካት፣ ይጨምሩ --policy.pretrained_revision። ይህ ሩጫው የጀመረው በ --save_checkpoint_to_hub=true፣ በነባሪነት ጠፍቷል፡ ያለሱ lerobot የመጨረሻውን ሞዴል እንጂ ሌላ ምንም አይገፋም። በእሱ አማካኝነት እያንዳንዱ ቼክፖይንት በዜሮ በተሞላው ደረጃው ምልክት ይደረግበታል፣ ስለዚህ --policy.pretrained_revision=060000 የ60000ኛውን ደረጃ ይመልሳል። በእውነተኛው ክንድ ላይ ከ100000 ጋር ማወዳደር በጣም ርካሹ ሙከራ ነው።
ወደ አንድ አይነት ቼክፖይንት የሚወስዱ ሁለት መንገዶች
ከላይ ያለው ሁሉ በእጅ የሚሰራ መንገድ ሲሆን ይሰራል። የፕላትፎርም መንገድ ደግሞ የግራፊክስ ካርድ (GPU) ወይም የፓይዘን አካባቢ (Python environment) ባለቤት አለመሆንን በመምረጥ ቁጥጥርን ይተካል።
- lerobot 0.6.x ን ከ
core_scripts፣training፣feetech፣ ffmpeg ጋር ይጫኑ። - ፖርቶችን ያግኙ፣ የሞተር መለያዎችን ያዘጋጁ፣ ሁለቱንም ክንዶች ያስተካክሉ፣ 50 ክፍሎችን ይመዝግቡ።
- መረጃው ስራውን እንደያዘ ለማረጋገጥ ጥቂት ክፍሎችን መልሰው ያጫውቱ።
- 24 ጊባ ጂፒዩ ይከራዩ ወይም ይግዙ፣ CUDA እና PyTorch ን ያዛምዱ፣
lerobot-train --policy.type=actን ያሂዱ። - ለጥቂት ሰዓታት ይጠብቁ፣ ከዚያም
lerobot-rolloutን በክንዱ ላይ ባለው ማሽን ላይ ያሂዱ።
# 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ሙሉ ቁጥጥር፡ configuration_act.py ን ያርትዑ፣ ካሜራ ያክሉ፣ አሰልጣኙን (trainer) ፎርክ ያድርጉ። ስራን ከማቅረብ ይልቅ ለምርምር፣ ፕላትፎርም ትኩረት የሚከፋፍል ነው።
- በዴስክቶፕ ክሊየንት ይመዝግቡ፣ ወይም የHugging Face repo id ወይም የአካባቢ ዳታሴት ያምጡ።
- የ ACT on SO-100 መመሪያውን ይክፈቱ እና ሞዴልና ዳታሴት ይምረጡ። ነባሪዎቹ የlerobot ናቸው፤ chunkSize፣ nActionSteps፣ seed እና logFreq ሊስተካከሉ ይችላሉ።
- ባክኤንዱ በVRAM መጠን የተወሰነ ጂፒዩ ይከራያል እና ቼክፖይንቶችን ወደ ኦብጀክት ማከማቻ ይጽፋል።
- ከዚያም
/api/inference/podፖሊሲውን ለአካባቢው ሮቦት ክሊየንት ያቀርባል። ስራ ፈት የሆነ የጥበቃ ስርዓት (watchdog) ፖዱን ያጠፋል፣ ስለዚህ ምንም ነገር በድብቅ አይከፍልም። - ተመሳሳይ ስራዎች በCLI፣ በMCP ሰርቨር እና በየስልጠና ሰነዶች ውስጥ ይገኛሉ።
ዳታዎን አያስተካክልም፡ ካሜራው የተንቀሳቀሰበት ዳታሴት እዚህም በተመሳሳይ መልኩ መጥፎ ስልጠና ይሰጣል፣ እና ፎርሙ ሊያገኘው አይችልም። የዘገየ ምላሽ (latency) ችግርንም አያስወግድም። የቁጥጥር ዑደቱ በአንድ የድርጊት እርምጃ ከ20 እስከ 485 ሚሊሰከንድ ሲሆን፣ ከዚህም በላይ የህዝብ ኢንተርኔት የዙር ጉዞዎች አሉ፣ እና ACT በጣም የሚጎዳው እርምጃው አጭር ስለሆነ ነው፡ 60 ms በPi0.5 485 ms ላይ የ12 በመቶ መዘግየት ሲሆን፣ በACT 20 ms ላይ ግን የአራት እጥፍ እርምጃ ነው። የርቀት ግምት (remote inference) ለዝግ ያለ ማንሳት እና ማስቀመጥ እንጂ ለፈጣን ምላሽ ሰጪ እንቅስቃሴ አይመችም።

በእርግጥ ምን ስህተት ይፈጠራል
ከስልጠና ትዕዛዙ ጋር የተያያዘው ችግር እምብዛም አይደለም። ችግሩ በዙሪያው ባሉ ነገሮች ላይ ነው፣ ለመጀመሪያ ጊዜ ምን ያህል ጊዜ እንደሚያስቸግሩ በቅደም ተከተል ተዘርዝሯል።
| ምልክት | የተለመደ መንስኤ | ገጽ |
|---|---|---|
| lerobot-find-port ምንም አያሳይም | ድራይቨር፣ ኬብል ወይም ኖድ ፈቃዶች | ክንድ አልተገኘም |
| በመቅረጫ ጊዜ ካሜራ ጠፍቷል | ዳግም ሲጀመር ኢንዴክስ ተቀይሯል፣ ወይም ሁለት ካሜራዎች በአንድ ዩኤስቢ መቆጣጠሪያ ላይ | ካሜራ አልተገኘም |
| ስልጠናው የውሂብ ስብስቡን አይቀበልም | ACT v3.0 ይፈልጋል፣ GR00T ደግሞ v2.1 ያስፈልገዋል | የውሂብ ስብስብ እንደ v3 ውድቅ ተደርጓል |
| CUDA ማህደረ ትውስታ አልቋል | የባች መጠን ጨምሯል፣ ወይም 480p ፍሬሞች ፋንታ 1080p ፍሬሞች | በስልጠና ወቅት ማህደረ ትውስታ አልቋል |
| ኪሳራው ጥሩ ይመስላል፣ ክንዱ ግን ምንም አያደርግም | ውሂቡ ተግባሩን ይጎድለዋል፣ ወይም ካሜራ ተንቀሳቅሷል | ኪሳራው ይወርዳል፣ ፖሊሲው ምንም አያደርግም |
| የሚንቀጠቀጥ እንቅስቃሴ ወይም በክፍል መካከል ለአፍታ ማቆም | በቂ ስልጠና ያልተሰጠው፣ የቁራጭ ወሰን መቆም፣ ወይም ጊዜው ያለፈበት የኢንፈረንስ ጥሪ | ፖሊሲው በእንቅስቃሴ መካከል ይቆማል |
ሁለት ረድፎች ትኩረት ሊሰጣቸው ይገባል። ACT በLeRobot v3.0 ላይ ሲሰለጥን የGR00T ሎደር ግን በእሱ ላይ ይበላሻል እና v2.1 ያስፈልገዋል፣ ስለዚህ ACTን የሚያሰለጥን የውሂብ ስብስብ የGR00Tን አሂድ ሊያበላሽ ይችላል። እና የመጨረሻው ረድፍ ሁለት መፍትሄዎች አሉት፡ የACT ደራሲዎች የሚንቀጠቀጥ እንቅስቃሴን በበለጠ ስልጠና ይመልሳሉ፣ በ n_action_steps በ100 ላይ እውነተኛ መቆም በቁራጭ ወሰን ላይ ያርፋል፣ በ30 fps በየ3.3 ሰከንዱ የሚታይ ለአፍታ ማቆም ይኖራል። ሌላ ሁለት ማወቅ ያለብዎት፡ አንድ የሞተ መገጣጠሚያ ብዙውን ጊዜ በፍፁም ያልተፃፈ የሰርቮ መለያ፣ እና የሚቀርብ ግን በፍፁም የማይዘጋ ግሪፐር ማለት በማሳያዎቹ ውስጥ በጣም ትንሽ የግሪፐር ክልል ማለት ነው። ሙሉ ማውጫ: የውድቀት ሁነታ ገጾች.
አንድ አሂድ ምን ያህል ያስከፍላል
| ደረጃ | ሞዴሎች | የሩጫ ጊዜ | ዋጋ በሰዓት | የአንድ ሩጫ ዋጋ |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | ከ 2 እስከ 5 ሰዓታት | 0.30 to 0.60 USD | ከ 1 እስከ 3 ዶላር ገደማ |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | ከ 3 እስከ 6 ሰዓታት | 1.20 to 2.00 USD | ከ 4 እስከ 12 ዶላር ገደማ |
በኋላ VLA ቢፈልጉም በACT ለመጀመር ይህ ምክንያት ነው። ያልተሳካ የACT ሩጫ የቡና ዋጋ ያስከፍላል እና የውሂብ ስብስብዎ ስራውን እንደያዘ በሰዓታት ውስጥ ይነግርዎታል። ያልተሳካ የGR00T ሩጫ ለተመሳሳይ ትምህርት አራት እጥፍ ያስከፍላል። ወደ GR00T N1.7 ወይም SmolVLA በኋላ መሄድ የቅርጽ ለውጥ እንጂ እንደገና መገንባት አይደለም። ዳራ: የእይታ-ቋንቋ-ድርጊት ሞዴሎች, የ ሙሉ የSO-100 መመሪያ, የመጀመሪያ ፖሊሲዎን ያሰልጥኑ እና የመኮረጅ ትምህርት። ክንድ የለም? የቀጥታ ገጹ እውነተኛ SO-100ን ያለምዝገባ ለመንዳት ያስችላል።
ACTን በSO-100ዎ ላይ ያሰልጥኑ
ለዚህ ትክክለኛ ጥምረት መመሪያው: ነባሪዎች፣ የጂፒዩ ደረጃ እና አንድ ሩጫ ምን ያህል እንደሚያስወጣ። የውሂብ ስብስቡን ይምረጡ፣ የኋላ ስርዓቱ ካርዱን ተከራይቶ ቼክፖይንቶችን ይጽፋል።
የስልጠና መመሪያውን ይክፈቱበምትኩ ማስተካከል የምችል አስቀድሞ የሰለጠነ የACT ሞዴል አለ?▾
አይ. ACT ምንም መሰረታዊ ሞዴል የለውም፤ የሚያገኘው እርስዎ ካሰለጠኑት በኋላ ብቻ ነው። ይህ በመሳሪያዎቹ ውስጥ ክፍተት አይደለም፣ ACT ማለት ይህ ነው: ወረቀቱ ለእያንዳንዱ ተግባር ፖሊሲን ከባዶ ያሰለጥናል። ለአቅራቢ ቼክፖይንት፣ GR00T N1.7 ወይም Pi0.5 ይጠቀሙ።
በእርግጥ ስንት ክፍሎች ያስፈልጉኛል?▾
50: ALOHA ለእያንዳንዱ ተግባር (ለ Thread Velcro፣ በጣም ከባዱ 100) እና የAY-Robots ዝቅተኛው የሰበሰበው። lerobot ለእያንዳንዱ የነገር ቦታ 10 ያህል ይመክራል፣ ካሜራዎች ተስተካክለው፣ መያዣው ወጥ። ሃምሳ ንጹህ ክፍሎች ካሜራው ከተንቀሳቀሰባቸው መቶ ክፍሎች ይበልጣሉ።
chunk_sizeን ከ 100 መቀየር አለብኝ?▾
ብዙውን ጊዜ አይደለም። ቅነሳው በ k = 1 ላይ ከ 1 በመቶ ወደ k = 100 ላይ 44 በመቶ ይወጣል እና ከዚያ በኋላ ይቀንሳል፣ ስለዚህ 100 ከላይኛው ክፍል አጠገብ ይቀመጣል። ክንዱ በጣም ረጅም ጊዜ ከወሰደ፣ በምትኩ n_action_stepsን ይቀንሱ: በ 30 fps፣ 25 ዳግም መጠይቆች በየ 0.8 ሰከንዶች።
የስልጠና ሩጫ ምን ያህል ጊዜ ይወስዳል፣ እና ቀድሞ ማቆም እችላለሁ?▾
ለ 100000 እርምጃዎች በ 24 ጂቢ ካርድ ላይ ከሁለት እስከ አምስት ሰዓታት። ቼክፖይንቶች በየ 20000 እርምጃዎች ይወርዳሉ እና --resume=true ሩጫን እንደገና ያስጀምራል፣ ስለዚህ ቀድሞ ማቆም ደህንነቱ የተጠበቀ ነው። በመጀመሪያው ጠፍጣፋ ክፍል ላይ ብቻ አይደለም: ኪሳራው ከተረጋጋ በኋላ ቅልጥፍና ይሻሻላል።
ኪሳራው ቀንሷል እና ክንዱ አሁንም አይሰራም። አሁን ምን ይደረግ?▾
ሁልጊዜ ማለት ይቻላል የውሂብ ስብስቡ። የተቀዱ ክፍሎችን በክንዱ ላይ እንደገና ያጫውቱ: መልሶ ማጫወቱ ስራውን ካልሰራ፣ ውሂቡ አልያዘውም። ከዚያ ምንም ነገር እንዳልተንቀሳቀሰ ያረጋግጡ፣ በተለይም ካሜራ። ACT ምንም ቅድመ እውቀት የለውም፣ ስለዚህ በክፍል 21 ላይ የሚደረግ ትንሽ ግፊት ቋሚ ነው።
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started