
אמן Action Chunking Transformer מאפס על SO-100 עם lerobot: הגדרות ה-act, ה-chunk_size וה-n_action_steps, לוח הזמנים של 100000 צעדים, הסקה ב-20 אלפיות השנייה.
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 אלפיות השנייה, בעוד ש-VLA עם 3 מיליארד פרמטרים זקוק ל-152 עד 485 אלפיות השנייה, ועולה 1 עד 3 דולר להרצה במקום 4 עד 12. מדריך זה מציג את המסלול הידני עם לרובוט על SO-100: הקלטה, תצורת ה-act, מה ש-chunk_size ו-n_action_steps שולטים, לוח הזמנים של 100000 צעדים, וההפצה. לאחר מכן אותה עבודה על AY-Robots, כולל היכן שהפלטפורמה אינה עוזרת.
מה שאתה צריך לדעת
- •ACT מתאמן מאפס: ללא מודל בסיס, ללא אימון מקדים, ללא קלט שפה. נקודת בדיקה אחת, משימה אחת.
- •המאמר: כ-80 מיליון פרמטרים, כ-5 שעות על RTX 2080 Ti עם 11 GB, הסקה ב-0.01 שניות.
- •ברירות מחדל של lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
- •על AY-Robots: 20 אלפיות השנייה לכל צעד, המהיר ביותר מבין החמישה. מינימום 50 אפיזודות, LeRobot v3.0, כרטיס 24 GB, 1 עד 3 דולר להרצה.
- •הוא מנצח במשימה שראה, ומפסיד ברגע שאתה רוצה התניה שפתית.
נבדק ב-23 באוגוסט 2026 מול lerobot 0.6.x: pyproject.toml ב-main מציג version = "0.6.2", התגית החדשה ביותר v0.6.1, 3 באוגוסט 2026. מדריך שמתחיל עם python lerobot/scripts/train.py קדם לנקודות הכניסה לקונסולה lerobot-train, lerobot-record ו-lerobot-rollout.
מהו ACT למעשה
Action Chunking with Transformers מגיע מהמאמר ALOHA, למידת מניפולציה דו-ידנית עדינה עם חומרה בעלות נמוכה, מאת זאו, קומאר, לוין ופין, arXiv, 23 באפריל 2023. המתקן מקליט ב-50 הרץ עם ארבע מצלמות רשת המזרמות 480x640 ב-30 פריימים לשנייה: שתיים על התופסנים, אחת עליונה, אחת קדמית. התקציר טוען לשש מיומנויות עם 80 עד 90 אחוזי הצלחה, ביניהן פתיחת כוס רוטב שקופה והכנסת סוללה, מתוך 10 דקות של הדגמות.
גוף המאמר שימושי יותר בעת תכנון סשן הקלטה: 50 הדגמות למשימה, למעט Thread Velcro ב-100, שהם 10 עד 20 דקות של נתונים ו-30 עד 60 דקות של זמן שעון קיר לאחר ספירת איפוסים. ההצלחה אינה אחידה גם כן: Thread Velcro מסתיים ב-20 אחוז, Put On Shoe ב-92, Cup Open 84, Prep Tape 64.
| היפרפרמטר | מאמר ALOHA, טבלה III | lerobot ב-main |
|---|---|---|
| קצב למידה | 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 מציינת שליישום המקורי יש באג שמשמעותו היא שרק השכבה הראשונה משמשת, תוך ציון issue 25 ב-tonyzhaozh/act: ראש הפעולה קורא את hs[0], כך שכל שבע השכבות פועלות אך רק הפלט הראשון מגיע לחיזוי. נושא זה פתוח וללא מענה מאז 23 באפריל 2024. lerobot תואמת את ההתנהגות שהפיקה את התוצאות שפורסמו, לא את המספר המודפס. העלה את --policy.n_decoder_layers ותאמן מודל שהמאמר מעולם לא העריך.
קיבוץ פעולות הוא כל הרעיון
שיבוט התנהגותי רגיל ממפה תצפית אחת לפעולה אחת, ושגיאות מצטברות: סטייה מוציאה את הזרוע מחוץ להתפלגות, מייצרת פעולה גרועה יותר, ושלושים צעדים מאוחר יותר התופסן אינו קרוב לאובייקט. קיבוץ פעולות חוזה k פעולות בבת אחת ומבצע אותן, ומקטין את האופק האפקטיבי בפקטור של k. הוא גם מטפל במטרד ספציפי לנתונים אנושיים: מפעילים מרחוק עוצרים, ומודל מרקובי חד-שלבי מדיניות אינו יכול למדל הפסקה התלויה במה שקדם לה.
המאמר מבצע אבלאציה ל-k במקום לקבוע אותו. כאשר איגום זמני כבוי, בממוצע על פני ארבע הגדרות, ההצלחה עולה מ-1 אחוז ב-k = 1 ל-44 אחוז ב-k = 100, ואז מתייצבת ב-200 ו-400 ככל שהמדיניות מתקרבת לבקרת לולאה פתוחה. עקומה זו היא הסיבה לכך שברירת המחדל היא 100.
- chunk_size: כמה פעולות עתידיות המפענח חוזה בכל מעבר קדימה. ברירת מחדל 100.
- n_action_steps: כמה מהן אתה מבצע לפני שליחה חוזרת של שאילתה. ברירת מחדל 100, כך ש-lerobot מריץ את כל ה-chunk בלולאה פתוחה.
- lerobot מאמת ש-
n_action_steps <= chunk_sizeומעלהValueErrorאם אתה מזין אותם הפוך.
מה שחשוב מבחינה תפעולית הוא chunk_size חלקי קצב הפריימים. בקצב של 30 פריימים לשנייה שבו משתמשות הדוגמאות של SO-100 ב-lerobot, chunk של 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. המאמר מציין זאת ב-3.3 אחוז עבור ACT: אמיתי אך צנוע, וזה מכפיל את ספירת ההסקה באורך ה-chunk. משתלם ב-20 אלפיות השנייה לכל צעד, לא ב-485 אלפיות השנייה. ראה זמן השהיה של הסקה.
כאשר ACT עולה על מודל יסוד
חמשת המדיניות הניתנות לאימון זו לצד זו, עם המספרים ש-AY-Robots מודדת ומשתמשת בהם כדי לקבוע את גודל ה-GPU שהיא שוכרת.
| מדיניות | משפחה | פרמטרים | לכל צעד | רמת GPU | מינימום פרקים | מערך נתונים |
|---|---|---|---|---|---|---|
| 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 GB ולא A100.
- 1 עד 3 דולר לריצה לעומת 4 עד 12 עבור מחלקת 3 B.
- מדויק בעבודות עשירות במגע שראה: 88 ו-96 אחוזים ב-Slide Ziploc וב-Slot Battery, היכן ששיטות קודמות מעולם לא עברו את שלב אחד.
- אין התניה שפתית: מחרוזת המשימה מתעלמת, כך שנקודת בקרה אחת היא משימה אחת.
- אין ידע מוקדם סמנטי: כל מה שהמודל יודע הגיע מ-50 הפרקים שלך.
- הכללה צרה: הזז מצלמה ואתה מאמן מחדש.
- הוא נכשל בשקט: ההפסד יורד, הזרוע לא עושה כלום, הרישומים לא אומרים כלום.
- יתרון המהירות עוזר רק אם ההסקה יושבת ליד הסרוואים.
בחר ACT כאשר המשימה והסצנה קבועות והתנועה חייבת להיות מהירה ומדויקת. בחר כאשר נקודת בקרה אחת חייבת לכסות מספר הוראות. שני עמודים עובדים על ההחלטה ראש בראש: ו-. עבור מדדי ביצועים שפורסמו, מקשר כל מספר למקורו.
מה שאתה צריך לפני שאתה מתחיל
זרוע עוקבת אחת, זרוע מובילה אחת עבור , לפחות מצלמה אחת, GPU של 24 GB. 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 arm, 12 V base | ~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התקן את lerobot עם התוספות הנכונות
הקלטה דורשת
core_scripts, אימוןtraining, סרוו Feetechfeetech. פייתון 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מצא את יציאת ה-USB של כל זרוע
הפעל אותו כששתי הזרועות מחוברות, נתק אחת כאשר תתבקש. בלינוקס ייתכן שתצטרך לפתוח את הרשאות הצומת.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3הגדר את מזהי המנועים וקצב ה-baud
ב-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כייל את שתי הזרועות
הגדר כל מפרק לאמצע הטווח שלו, לחץ Enter, ולאחר מכן סרוק כל אחד מהם לאורך הטווח המלא שלו. כיול מאפשר למדיניות שאומנה על זרוע אחת לרוץ על אחרת. השתמש שוב באותו
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הפעל טל-אופרציה פעם אחת כשהמצלמות פועלות
כלל האצבע של lerobot: עליך להיות מסוגל לבצע את המשימה רק על ידי התבוננות בתמונות המצלמה. אם אינך יכול, גם ACT לא יכול. זה תופס יותר מערכי נתונים גרועים מאשר ניפוי באגים מאוחר יותר.
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 - 6הקלט 50 פרקים
50 הוא המינימום של AY-Robots ומה ש-ALOHA השתמשה בו לכל משימה. lerobot ממליץ על 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 הוא כבר ברירת מחדל, ולכן דף ה-ACT של lerobot ממליץ להתחיל איתם.
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 | טופס ACT של AY-Robots | הערה |
|---|---|---|---|
| גודל אצווה | 8 | 8 | הורד אותו קודם אם אתה נתקל במגבלות VRAM. |
| קצב למידה | 1e-5 | 1e-5 | זהה למאמר ALOHA. |
| מספר צעדים מקסימלי | 100000 | 100000 | בערך הנקודה שבה סט של 50 פרקים מפסיק להשתפר. |
| צבירת גרדיאנטים | 1 | 1, לא רלוונטי | שנה את גודל האצווה במקום זאת. |
| גרעין | 1000 | חשוף | נקודת הכניסה של tyro ב-GR00T אינה כוללת גרעין; הרצות ACT הן אלו שניתנות לשחזור. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, ניתן לעריכה | אופק חיזוי וביצוע. הורד את השני, לא את הראשון. |
| תדירות נקודות שמירה | 20000 | לא חשוף | saveSteps הוא בורר של GR00T כאן. |
ACT בגודל אצווה 8 עם שתי מצלמות 640x480 מתאים בנוחות ל-24 GB. הוא מפסיק להתאים כאשר אנשים מעלים את גודל האצווה למהירות, או מזינים לו את פריימי 1920x1080 שדוגמת הקלטה אחת של lerobot מציגה. שני עורקי ResNet-18 ב-1080p הם בעלי פרופיל זיכרון שונה מאוד. הורד את --batch_size ל-4 לפני השכרת כרטיס גדול יותר. ראה חוסר זיכרון באימון.
משך: כ-5 שעות על RTX 2080 Ti בנפח 11 GB במאמר, מספר שעות עבור 100k צעדים לפי עמוד ה-ACT של lerobot, 2 עד 5 שעות על שכבת ה-24 GB של AY-Robots. אל תקצרו. קובץ ה-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 לא עוזר, מכיוון שהיא זקוקה לנקודת בדיקה מאומנת מראש. מחרוזת המשימה ניתנת להשמטה; הדוגמה של lerobot עצמה מסמנת אותה כניתנת לדילוג עבור 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 עדיין מציין "using the lerobot-record command" ישירות מעל בלוק שמריץ lerobot-rollout. עקוב אחר הפקודה, לא אחר המשפט.
כדי לקבע נקודת ביקורת (checkpoint) ולא את המודל הסופי, הוסף --policy.pretrained_revision. לשם כך, הריצה צריכה הייתה להתחיל עם --save_checkpoint_to_hub=true, כבוי כברירת מחדל: בלעדיו lerobot דוחף את המודל הסופי ורק אותו. איתו, כל נקודת ביקורת מתויגת עם מספר הצעד שלה מרופד באפסים, כך ש---policy.pretrained_revision=060000 משחזר את נקודת הביקורת של צעד 60000. השוואתה מול 100000 על הזרוע האמיתית היא הניסוי הזול ביותר הזמין.
שני מסלולים לאותה נקודת ביקורת
כל מה שלמעלה הוא המסלול הידני והוא עובד. מסלול הפלטפורמה מחליף שליטה באי-בעלות על GPU או סביבת פייתון.
- התקן את lerobot 0.6.x עם
core_scripts,training,feetech, ffmpeg. - מצא פורטים, הגדר מזהי מנועים, כייל את שתי הזרועות, הקלט 50 פרקים.
- הפעל מחדש כמה פרקים כדי לוודא שהנתונים מכילים את המשימה.
- שכור או רכוש GPU בגודל 24 GB, התאם את 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, הוסף מצלמה, בצע Fork למאמן. למחקר ולא למסירת משימה, פלטפורמה היא הסחת דעת.
- הקלט עם לקוח שולחן העבודה, או הבא מזהה מאגר Hugging Face או מערך נתונים מקומי.
- פתח את מדריך ACT על SO-100 ובחר מודל ומערך נתונים. ברירות המחדל הן של lerobot; chunkSize, nActionSteps, seed ו-logFreq ניתנים לעריכה.
- ה-backend שוכר GPU בגודל VRAM וכותב נקודות ביקורת לאחסון אובייקטים.
/api/inference/podמשרת אז את המדיניות ללקוח הרובוט המקומי. Watchdog לא פעיל הורס את ה-pod, כך ששום דבר לא מחויב בשקט.- אותן פעולות קיימות ב-CLI, ב-שרת MCP וב-תיעוד האימון.
זה לא מתקן את הנתונים שלך: מערך נתונים עם מצלמה שהוזזה מתאמן רע באותה מידה כאן, והטופס לא יכול לזהות זאת. וגם לא מסיר את בעיית ההשהיה. לולאת הבקרה היא 20 עד 485 אלפיות השנייה לכל שלב פעולה, עם נסיעות הלוך ושוב באינטרנט הציבורי בנוסף, ו-ACT נפגעת הכי הרבה מכיוון שהשלב שלה הוא הקצר ביותר: 60 אלפיות השנייה הן האטה של 12 אחוזים על 485 אלפיות השנייה של Pi0.5, אך פי ארבעה מהשלב על 20 אלפיות השנייה של ACT. הסקה מרחוק מתאימה לפעולות איסוף והנחה איטיות, לא לתנועה תגובתית מהירה.

מה באמת משתבש
כמעט כל הקושי אינו בפקודת האימון. הוא בדברים שמסביב לה, מסודרים לפי תדירות הבעיות בפעם הראשונה.
| תסמין | גורם נפוץ | עמוד |
|---|---|---|
| lerobot-find-port לא מציג כלום | הרשאות דרייבר, כבל או צומת | זרוע לא מזוהה |
| מצלמה חסרה בזמן הקלטה | אינדקס השתנה באתחול, או שתי מצלמות בבקר USB אחד | מצלמה לא מזוהה |
| האימון דוחה את מערך הנתונים | ACT דורש v3.0, GR00T צריך v2.1 | מערך נתונים נדחה כ-v3 |
| CUDA אזל הזיכרון | גודל אצווה הוגדל, או פריימים של 1080p במקום 480p | אזל הזיכרון באימון |
| ה-loss נראה מצוין, הזרוע לא עושה כלום | הנתונים חסרים את המשימה, או שמצלמה זזה | ה-loss יורד, המדיניות לא עושה כלום |
| תנועה קופצנית או הפסקה באמצע פרק | לא אומן מספיק, עצירה בגבול מקטע, או קריאת הסקה שפג תוקפה | המדיניות קופאת באמצע תנועה |
שתי שורות ראויות להדגשה. ACT מתאמן על LeRobot v3.0 בעוד שהטוען של GR00T קורס עליו ודורש v2.1, כך שמערך נתונים שמאמן ACT יכול לגרום לכשל בהרצת GR00T. והשורה האחרונה כוללת שני תיקונים: מחברי ACT עונים לתנועה קופצנית עם יותר אימון, בעוד שעם n_action_steps ב-100 עצירה אמיתית נוחתת בגבול מקטע, הפסקה גלויה כל 3.3 שניות ב-30 פריימים לשנייה. שני דברים נוספים שכדאי לדעת: מפרק אחד מת הוא בדרך כלל מזהה סרוו שמעולם לא נכתב, ו-תופסן שמתקרב אך לעולם לא נסגר פירושו טווח תופסן קטן מדי בהדגמות. אינדקס מלא: דפי מצבי הכשל.
כמה עולה הרצה
| רמה | מודלים | זמן ריצה | מחיר לשעה | עלות לריצה |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 עד 5 שעות | 0.30 עד 0.60 דולר ארה"ב | כ-1 עד 3 דולר ארה"ב |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 עד 6 שעות | 1.20 עד 2.00 דולר ארה"ב | כ-4 עד 12 דולר ארה"ב |
זוהי הטענה להתחיל עם ACT גם אם תרצו VLA מאוחר יותר. ריצת ACT כושלת עולה כמחיר של קפה ואומרת לכם תוך שעות אם מערך הנתונים שלכם מכיל את המשימה. ריצת GR00T כושלת עולה פי ארבעה עבור אותו שיעור. המעבר ל-GR00T N1.7 או SmolVLA לאחר מכן הוא שינוי צורה, לא בנייה מחדש. רקע: מודלי ראייה-שפה-פעולה, ה-מדריך SO-100 המלא, אמנו את המדיניות הראשונה שלכם ו-למידת חיקוי. אין זרוע? העמוד החי מזרים SO-100 אמיתי לנהיגה ללא הרשמה.
אמנו ACT על ה-SO-100 שלכם
המדריך לשילוב המדויק הזה: ברירות מחדל, רמת GPU ומה עולה ריצה. בחרו את מערך הנתונים, ה-backend שוכר את הכרטיס וכותב את נקודות הבדיקה.
פתחו את מדריך האימוןהאם יש מודל ACT מאומן מראש שאני יכול לכוונן במקום זאת?▾
לא. ל-ACT אין מודל בסיס; הוא קיים רק לאחר שאתם מאמנים אותו. זה לא פער בכלי העבודה, זה מה ש-ACT הוא: המאמר מאמן מדיניות מאפס לכל משימה. עבור נקודת בדיקה של ספק, השתמשו ב-GR00T N1.7 או Pi0.5.
כמה פרקים אני באמת צריך?▾
50: מה ש-ALOHA הקליטה לכל משימה (100 עבור Thread Velcro, הקשה ביותר שלה) והמינימום של AY-Robots. lerobot ממליץ על כ-10 למיקום אובייקט, מצלמות קבועות, אחיזה עקבית. חמישים פרקים נקיים עדיפים על מאה שבהם המצלמה זזה.
האם עלי לשנות את chunk_size מ-100?▾
בדרך כלל לא. האבלציה עולה מ-1 אחוז ב-k = 1 ל-44 אחוז ב-k = 100 ומתייצבת לאחר מכן, כך ש-100 יושב קרוב לפסגה. אם הזרוע מתחייבת זמן רב מדי, הורידו את n_action_steps במקום זאת: ב-30 פריימים לשנייה, 25 שאילתות חוזרות כל 0.8 שניות.
כמה זמן אורכת ריצת אימון, והאם אני יכול לעצור אותה מוקדם?▾
שעתיים עד חמש שעות על כרטיס 24 GB עבור 100000 צעדים. נקודות בדיקה נוחתות כל 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