
SmolVLA הוא VLA עם 450 מיליון פרמטרים שניתן לבצע לו כוונון עדין על כרטיס יחיד של 24 GB. פקודות lerobot 0.6.1 אמיתיות, ברירות המחדל בפועל, המלכודות שעלו יום, ומה העלות של הרצה.
SmolVLA במסך אחד
- •450 מיליון פרמטרים, מתוכם כ-100 מיליון הם מומחה פעולה להתאמת זרימה. lerobot מאמן רק את המומחה הזה ושומר את ה-VLM קפוא, ולכן הוא מתאים לכרטיס אחד.
- •מדריך החישוב של LeRobot ממקם את קבוצת smolvla בערך ב-10 עד 16 GB של VRAM שיא באצווה 8 עם AdamW. מכאן 24 GB.
- •נקודת הכניסה היא lerobot-train. פוסט הבלוג של SmolVLA מיוני 2025 עדיין מציג python lerobot/scripts/train.py, נתיב שכבר לא קיים. כל מה שלמטה הוא lerobot 0.6.1.
- •לוח הזמנים של הקוסינוס מוגדר מראש לדעוך על פני 30000 צעדים. lerobot 0.6.1 משנה את קנה המידה כלפי מטה עבור ריצה קצרה יותר ומתעד זאת, אך לעולם לא כלפי מעלה: ריצת ה-100000 צעדים הסטנדרטית מסתיימת ברצפת 2.5e-6 למשך 70000 צעדים.
- •שלושים אפיזודות הן המינימום של AY-Robots, על שכבת 24 GB בעלות של 1 עד 3 דולר לריצה לעומת 4 עד 12 עבור מודלי ה-80 GB.
רוב האנשים שרוצים מודל פעולה שפה-חזון על זרוע אמיתית נעצרים בקו החומרה. GR00T N1.7 ו-Pi0.5 הם בסביבות שלושה מיליארד פרמטרים כל אחד ודורשים A100 80 GB או H100. אם מה שבבעלותך הוא מחשב גיימינג עם RTX 4090, זוהי סוף הדרך. SmolVLA הוא היוצא מן הכלל: 450 מיליון פרמטרים, בתוך LeRobot, בנוי לכוונון עדין על כרטיס צרכני אחד ולשרת ממעבד.
המסלול הידני תחילה: התקן את lerobot, משוך את ה-lerobot/smolvla_base נקודת ביקורת, הפעל את הפקודה האמיתית, קרא את הריצה בזמן שהיא מתרחשת. לאחר מכן את מסלול הפלטפורמה, והיכן שהוא לא עוזר.
מהו SmolVLA, במספרים שניתן לבדוק
SmolVLA היא התאמת זרימה מדיניות המחוברת למודל שפה חזותי קטן. עמוד השדרה הוא SmolVLM2-500M-Video-Instruct; המאמר שומר רק את 16 השכבות הראשונות של מודל השפה שלו, מגביל כל פריים מצלמה ל-64 אסימונים חזותיים עם ערבוב פיקסלים במקום ריצוף תמונה, ומשלב קשב צולב עם שכבת קשב עצמי בכל בלוק שני. עלות ההסקה הייתה אילוץ תכנוני, לא מחשבה שנייה.
| מאפיין | ערך | מקור |
|---|---|---|
| סך פרמטרים | about 450 M | paper |
| מומחה פעולה | about 100 M, flow matching | paper |
| עמוד שדרה VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| שכבות VLM בשימוש | first 16 of the language model | num_vlm_layers = 16 |
| אסימונים חזותיים לפריים | 64, pixel shuffle, no tiling | paper |
| אימון מקדים | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
המדדים הם הסיבה שאנשים מתעניינים במודל של 450 מיליון פרמטרים. ב-LIBERO הוא משיג ממוצע של 87.3 אחוזים לעומת 76.5 עבור OpenVLA ב-7 מיליארד ו-86.0 עבור Pi0 שאומן מראש לרובוטיקה ב-3.3 מיליארד; ב-Meta-World, 57.3 לעומת 47.9. בחומרת SO-100 אמיתית, אימון רב-משימתי מניב 75 אחוזים באיסוף והנחה, 90 בערימה, 70 במיון, בממוצע 78.3, כאשר ACT שאומן לכל משימה בנפרד השיג ממוצע של 48.3. אותן שורות מופיעות לצד כל VLA שפורסם ב-ערך זירת SmolVLA וב-השוואת ACT מול SmolVLA.
SmolVLA אינו טוב יותר ממודל של 3 מיליארד פרמטרים בכל דבר. טבלת SO-101 של המאמר עצמו היא ההוכחה: 90 אחוז הצלחה בהתפלגות, 50 אחוז מחוצה לה, על פלטפורמה שמעולם לא אומן עליה מראש. מה שהוא כן טוען, ותומך בו, הוא שבהשוואה ל-Pi0 הוא מתאמן מהר יותר בכ-40 אחוזים על פי 6 פחות זיכרון.
למה כרטיס 24 GB הוא הבחירה הנכונה להרצה ראשונה
LeRobot מספק מדריך למידות חישוב, העמוד השימושי ביותר במאגר למטרה זו. הוא מקבץ מדיניות לפי גודל עמוד שדרה ומספק מעטפת VRAM אחת לכל קבוצה, הנמדדת בגודל אצווה 8 עם AdamW, ברירת המחדל של lerobot. מצב האופטימייזר לבדו מוסיף 30 עד 100 אחוזים מעל מעבר קדימה ואחורה בלבד, כך שאלו אינם נתונים של משקלים בלבד.
| קבוצה | מדיניות | VRAM שיא (אצווה 8, AdamW) | כרטיסי מסך מומלצים להתחלה |
|---|---|---|---|
| BC קל | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| דיפוזיה | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| VLA קטן | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| VLA גדול | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| רב-מודאלי | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
עשרה עד שישה עשר גיגה-בייט בגודל אצווה 8 זו הטענה: כרטיס 24 GB מתאים לכך בתוספת טוען הנתונים (dataloader). AY-Robots ממקמת את SmolVLA על RTX 4090 או כל כרטיס 24 GB, מינימום 30 אפיזודות, LeRobot v3.0 נתונים, 245 ms לכל שלב פעולה. בהשכרה, מדובר ב-2 עד 5 שעות במחיר של 0.30 עד 0.60 דולר לשעה, בערך 1 עד 3 דולר ל-כוונון עדין הרצה, לעומת 4 עד 12 דולר בשכבת ה-80 GB ש-GR00T ו-Pi0.5 דורשים (תמחור). הרצת SmolVLA כושלת היא קפה; הרצת GR00T כושלת היא ארוחת צהריים.

- מתאים לחומרה שאולי כבר בבעלותך: בערך 10 עד 16 GB ב-batch 8.
- ריצה מבוזבזת עולה שעות ודולרים בודדים, כך שאתה יכול להרשות לעצמך לטעות לגבי מערך הנתונים.
- אומן מראש על מערכי נתונים קהילתיים ששותפו תחת התגית lerobot, עם תוצאות SO-100 ו-SO-101 אמיתיות.
- הוא נמצא ב-lerobot עצמו: אין מאגר ספק, ו-smolvla_base אינו חסום.
- 450 M זה עדיין 450 M: הצלחה מחוץ להפצה יורדת מ-90 ל-50 אחוז בטבלת SO-101 של המאמר.
- הוא דורש נתוני LeRobot v3.0; הקלטת v2.1 צריכה להיות מומרת (dataset rejected v3).
- 245 אלפיות השנייה לכל שלב פעולה הוא בקר 'הרם והנח' מוכשר, לא בקר תגובתי.
- דוגמת התיעוד מריצה batch 64 על A100; ב-24 GB אתה מחליף batch בזמן שעון קיר.
שלב 0: מערך הנתונים קובע את הריצה, לא הדגלים
שום דבר להלן לא משנה אם ההקלטה גרועה. עמוד ה-LeRobot SmolVLA בוטה: מערך הנתונים הייחוס היה 50 פרקים על פני 5 מיקומי קוביות, 10 לכל מיקום, ואותה משימה ב-25 פרקים בוצעה בצורה גרועה. חזרה לכל וריאציה מכלילה, ספירת פרקים גולמית אינה מכלילה. מעולם לא הקלטתם אחד? התחילו ב-הקליטו את מערך הנתונים הראשון שלכם עם ה-לקוח שולחן העבודה, אשר כותב פורמט LeRobot מתוך סשן טלאופרציה , או שאלו אחד מ-ספריית מערכי הנתונים.
- לפחות 30 פרקים ב-AY-Robots, כ-50 עבור מתכון הייחוס של LeRobot.
- כל וריאציה שאתה מצפה לה בפריסה, חוזרת על עצמה מספר פעמים.
- מחרוזת משימה אחת, מאויתת באופן זהה בזמן ההקלטה והפריסה. המודל מותנה בטקסט זה.
- מצלמות קבועות. מצלמה שהוזזה בין ההקלטה לפריסה היא הסיבה הנפוצה ביותר לכך שעקומת הפסד נקייה מניבה זרוע חסרת תנועה.
- וריאציה שלא אומנה עליה מעולם, כך שיש לך משהו כנה לבדוק מולו.
SmolVLA, Pi0.5 ו-ACT דורשים LeRobot v3.0. GR00T N1.7 ו-N1.5 דורשים v2.0 או v2.1 והטוען שלהם קורס ב-v3.0. הקלט פעם אחת, תכנן להשוות מודלים מאוחר יותר, ותמיר בדרך זו או אחרת: dataset rejected v3.
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_placeעוד על כך ב-כיצד לאסוף נתוני אימון VLA באיכות גבוהה. בקיצור: 30 עד 50 פרקים נקיים של משימה אחת עם וריאציה מכוונת עולים על 200 פרקים מרושלים של שלוש, בפער שאף היפרפרמטר לא סוגר.
התקן את lerobot 0.6.1
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-infoההתקנה הבסיסית של lerobot היא דקה וחוסמת תלויות כבדות מאחורי תוספים (extras): smolvla מוסיף transformers, num2words ו-accelerate, training את ערימת הנתונים (dataset stack) ו-wandb, core_scripts את תלויות החומרה והוויזואליזציה. בלינוקס, נתיב ההתקנה גם קובע את גלגל ה-CUDA שלך: ברירת המחדל של PyPI היא גלגל cu130 עם דריבר מינימלי של 580.65, לכן על דריבר ישן יותר התקן את torch מאינדקס cu128 תחילה, ולאחר מכן את lerobot.
--policy.path=lerobot/smolvla_base loads the pretrained 450 M checkpoint and fine-tunes it. --policy.type=smolvla builds a fresh SmolVLA, and the config default load_vlm_weights = False means it does not even pull the SmolVLM2 backbone weights unless you ask. Get it wrong and the run trains happily, costs the same, and learns nothing transferable.
הרצת האימון, פקודה אחר פקודה
- 1אימות מול ה-Hub
נקודת הבסיס (checkpoint) מגיעה מה-Hub, וכנראה שגם מערך הנתונים שלך.
bashhf auth login - 2קרא את האפשרויות פעם אחת
כל שדה בתצורת ה-pipeline וה-policy הוא דגל (flag). עיין בו במהירות לפני שתצלול לקוד המקור.
bashlerobot-train --help - 3התחל את הכוונון העדין (fine-tune)
הדוגמה בתיעוד מריצה אצווה (batch) של 64 על A100 יחיד; עוגן ה-A100 40 GB של מדריך החישוב הוא אצווה 16, ו-8 הוא המקביל ל-24 GB. אין כאן דגל scheduler בכוונה, ראה להלן.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4קרא את שורת הלוג, לא רק את ההפסד
בכל --log_freq צעדים, LeRobot מדפיס loss, grdn, lr, updt_s, data_s, smp/s ו, ב-CUDA, mem_gb. ה-mem_gb מציין אם האצווה מתאימה, ה-lr אם לוח הזמנים דועך, ו-data_s המתקרב ל-updt_s אומר שה-dataloader הוא צוואר הבקבוק, לא ה-GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5אסוף נקודות בקרה שתוכל להשוות
save_freq מוגדר כברירת מחדל ל-20000, כך שהרצה של 20000 צעדים משאירה נקודת בקרה אחת ואין מה להשוות אליה. הגדר 2000. דחיפה ל-Hub דורשת --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6המשך אם המכונה קורסת
כוון את --config_path אל train_config.json שליד נקודת הבקרה. LeRobot מסרב להתחיל לתוך output_dir קיים אלא אם אתה ממשיך (resuming), כך שלא תוכל לדרוס הרצה בטעות.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
הדגלים שבאמת משנים את התוצאה
| דגל | מה הוא עושה | ב-24 GB |
|---|---|---|
| --batch_size | דגימות לכל צעד, בקירוב ליניארי ב-VRAM | 4 עד 8 |
| --steps | סה"כ צעדי אופטימיזציה | 20000 מעבר ראשון |
| --policy.scheduler_decay_steps | אורך דעיכת קוסינוס, מוגדר מראש 30000 | משפיע רק מעל 30000 |
| --policy.use_amp | דיוק מעורב (mixed precision); ל-SmolVLA אין שדה dtype | true כשהזיכרון מצומצם |
| --num_workers | תהליכי Dataloader, ברירת מחדל 4 | העלה עד ש-data_s מפסיק לטפס |
| --dataset.eval_split | שבר הפרקים המוחזקים בצד לכל משימה | 0.1, עם --eval_steps |
| --policy.freeze_vision_encoder | משאיר את מגדל הראייה קפוא | true ב-24 GB |
| --policy.train_expert_only | רק המומחה של כ-100 מיליון מקבל גרדיאנטים | true בהתחלה |
SmolVLA מגדיר מראש לוח זמנים קוסינוסי: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. עצה ישנה יותר טוענת שריצה של 20000 צעדים נתקעת באמצע הדעיכה. בגרסה 0.6.1 זה לא קורה: `CosineDecayWithWarmupSchedulerConfig.build()` מקבל את `--steps`, ומתחת ל-`num_decay_steps` הוא משנה את קנה המידה של שניהם, חימום מ-1000 ל-666 ודעיכה מ-30000 ל-20000, ומדפיס מתזמן LR בקנה מידה אוטומטי תוך כדי. הוא לעולם לא משנה את קנה המידה כלפי מעלה: הדעיכה נחתכת עם `min(current_step, decay_steps)`, כך שה-`--steps=100000` הסטנדרטי יושב על הרצפה מצעד 30000 ועד הסוף, 70 אחוז מהריצה. רק הצד הארוך הזה עדיין זקוק ל-`--policy.scheduler_decay_steps`. עמודת ה-`lr` היא המקום לבדוק.
ברירות המחדל שאתה יורש אם אינך נוגע בדבר
קונפיגורציית ב-LeRobot נושאת את קביעות האופטימייזר והמתזמן שלה, ואלא אם תגדיר use_policy_training_preset=false קביעות אלו יגברו. מחצית מהשאלות שאנשים שואלים על אימון SmolVLA נענות על ידי ברירת מחדל שלא ידעו על קיומה.
| הגדרה | ברירת מחדל ב-LeRobot 0.6.1 | מוגדר ב- |
|---|---|---|
| גודל מקטע / מספר צעדי פעולה | 50 / 50 | SmolVLAConfig |
| מספר צעדים (הסרת רעש בהתאמת זרימה) | 10 | SmolVLAConfig |
| קצב למידה של אופטימייזר | 1e-4 | SmolVLAConfig |
| צעדי חימום של המתזמן | 1000 | SmolVLAConfig |
| צעדי דעיכה של המתזמן | 30000 | SmolVLAConfig |
| קצב למידה דועך של המתזמן | 2.5e-6 | SmolVLAConfig |
| הקפאת מקודד ראייה | true | SmolVLAConfig |
| אימון מומחה בלבד | true | SmolVLAConfig |
| גודל אצווה / צעדים | 8 / 100000 | TrainPipelineConfig |
| זרע / תדירות שמירה / מספר עובדים | 1000 / 20000 / 4 | TrainPipelineConfig |
שתי השורות שמפתיעות אנשים הן freeze_vision_encoder ו-train_expert_only, שתיהן נכונות. מחוץ לקופסה מאמנים בערך 100 מיליון פרמטרים, לא 450 מיליון, ולכן זה מתאים ל-24 GB. הרצת הייחוס של LeRobot עצמה על אשכול H100 עם ארבעה כרטיסי GPU הופכת את שניהם ל-false; על כרטיס אחד של 24 GB זה הופך הרצה תקינה ל-קריסת חוסר זיכרון.
העצה במדריך כאשר אתם מוגבלים בזיכרון היא להוריד את גודל ה-batch ולהשתמש בצבירת גרדיאנטים (gradient accumulation) כדי לשחזר את ה-batch האפקטיבי. אין צבירת גרדיאנטים ב-lerobot 0.6.1: ל-TrainPipelineConfig אין שדה כזה והמחרוזת אינה מופיעה בשום מקום בחבילה המשוחררת. טופס AY-Robots מציג ערך צבירת גרדיאנטים של 8 עבור SmolVLA ואינו מיישם אותו גם כן. המנופים שלכם על 24 GB הם --batch_size, שתי ברירות המחדל של ה-freeze, ו---policy.use_amp.
כמה זמן אורכת ההרצה, וכמה צעדים מספיקים
LeRobot מפרסם עוגני זמן שעון קיר (wall-clock anchors) לחמש אֶפּוֹכוֹת (epochs) על פני מערך נתונים של כ-50 פרקים, כ-45000 פריימים ב-30 פריימים לשנייה. אלו נתונים בסדר גודל, כך נאמר בתיעוד, אך הם ההבדל בין ציפייה לשעה לבין ציפייה ליום.
| הגדרה | מדיניות | אצווה | זמן שעון קיר |
|---|---|---|---|
| Single L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| Single A100 40 GB | smolvla | 16 | about 1 to 2 h |
| 4 x H100 80 GB with accelerate | smolvla | 32 | about 1 to 2 h |
| Single RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
הכלל הוא 5 עד 10 אפוקות על פני מערך הנתונים, לא ספירת צעדים קבועה: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). במערך הנתונים הייחוס שהתיעוד מצביע עליו, lerobot/svla_so100_pickplace, מטא הנתונים מדווחים על 50 אפיזודות ו-19631 פריימים: אצווה 8 נותנת כ-2454 צעדים לאפוקה, כך ש-20000 צעדים הם בערך 8 אפוקות. חצה את האצווה והתקציב זהה יקנה חצי מהאפוקות, אז חזור על כך בכל פעם שאתה נוגע ב---batch_size.
הפעלת המדיניות המכווננת בחזרה על הזרוע
lerobot-rollout \
--strategy.type=base \
--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}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_placeקל לטעות בקריאת 245 המילישניות לכל שלב פעולה: המדיניות פולטת chunk_size = 50 פעולות לכל מעבר קדימה ומבצעת n_action_steps = 50 מהן, כך שתדירות תשלום העלות נקבעת על ידי בקרים אלו, ולא על ידי תדירות קבלת פקודה על ידי הסרווים. זה מה שקיבוץ פעולות משיג, ולמה מודל של 245 מילישניות יכול להניע זרוע של 30 הרץ. מה שנשאר הוא זמן השהיה של הסקה בסוף הנתח.
| מדידה (SmolVLA, SO-100 אמיתי) | סינכרוני | אסינכרוני |
|---|---|---|
| זמן השלמה, איסוף והנחה, 10 ניסיונות | 13.75 s | 9.70 s |
| מחזורי איסוף והנחה בחלון זמן קבוע | 9 | 19 |
| שיעור הצלחה ממוצע על פני שלוש המשימות | 78.3 % | 73.3 % |
השורה השלישית הזו היא מה שרוב הכתבות מדלגות עליו. הסקה אסינכרונית מהירה בכ-30 אחוז ומכפילה בערך את התפוקה בחלון זמן קבוע, והמאמר מכנה את שיעורי ההצלחה דומים, וכך הם בממוצע. מתחת לכך, המיון ירד מ-70 ל-50 אחוז בעוד שאיסוף והנחה עלו ב-5. lerobot 0.6.1 נושא את המנוף השני באותו קובץ בינארי: --inference.type=rtc מעביר את הפריסה לקיבוץ בזמן אמת, אשר בלוק השימוש של הסקריפט עצמו ממליץ עליו עבור ה-VLAs האיטיים, Pi0, Pi0.5 ו-SmolVLA.
לולאת הבקרה היא 20 עד 485 מילישניות לכל שלב פעולה בהתאם למודל, ונסיעות הלוך ושוב באינטרנט הציבורי הופכות מדיניות עובדת למדיניות מהוססת. הסקה מרחוק אפשרית עבור איסוף והנחה איטיים, לא עבור תנועה תגובתית מהירה: אם המשימה דורשת תיקונים מהירים, ה-GPU צריך להיות באותה רשת מקומית (LAN) כמו הזרוע.
שני מסלולים לאותה נקודת שמירה
אתה הבעלים של המכונה, הסביבה והדיבוג. התלות היחידה בענן היא הורדת נקודת השמירה הבסיסית מה-Hub. זהו המסלול הנכון אם ברצונך לשנות את המדיניות, אם הנתונים אינם יכולים לעזוב את הרשת שלך, או אם הכרטיס אינו בשימוש.
- אתה שולט בגלגל ה-CUDA, במנהל ההתקן, בבניית ffmpeg ובטוען הנתונים (dataloader).
- אתה יכול לתקן את configuration_smolvla.py ולאמן מחדש באותו אחר הצהריים.
- אתה משלם בחשמל ובזמן, לא לפי הרצה, ומבצע דיבוג ל-TorchCodec בעצמך.
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=trueאותה הרצה מאחורי טופס: אתה בוחר מודל ומערך נתונים, ה-backend שוכר GPU לפי VRAM נדרש, מריץ את המאמן וכותב נקודות שמירה לאחסון אובייקטים. מערך הנתונים יכול להגיע מ-Hugging Face repo id, מהמדריך, או מהמכונה שלך. התחל ב-SmolVLA ב-SO-100, או במטריצה ב-דף האימון.
| שדה | ברירת המחדל שהפלטפורמה שולחת עבור SmolVLA | הערה |
|---|---|---|
| גודל אצווה | 2 | שמרני עבור שכבת 24 GB |
| קצב למידה | 1e-4 | ההגדרה המוקדמת של lerobot |
| מקסימום צעדים | 20000 | ההרצה המומלצת בתיעוד LeRobot |
| צבירת גרדיאנט | 8 | מוצג בטופס, לא מיושם |
| כפתורים נוספים | seed, logFreq | Seed הופך את ההרצה לניתנת לשחזור |
- 2 עד 5 שעות בשכבת 24 GB, כ-1 עד 3 דולר להרצה.
- אותן פעולות ממסוף ב-/cli ומסוכני AI ב-/mcp.
- פודים של הסקה נושאים כלב שמירה סרק, כך שפוד שנשכח הורס את עצמו במקום לחייב בשקט.
- אין לך זרוע עדיין? /live משדר SO-100 פיזי שתוכל להפעיל ללא הרשמה.
עבודה שנתקעה בתור היא סימפטום של שוק ספוט, לא באג: עבודת אימון תקועה בתור. צעד אחר צעד: אמן את המדיניות הראשונה שלך ו-תיעוד האימון.
כאשר SmolVLA היא הבחירה הלא נכונה
המבחן לשאלה האם SmolVLA הייתה הריצה הראשונה הנכונה אינו אם היא עבדה, אלא אם הכישלון אמר לך משהו. הגיעו ל-60 או 70 אחוזים ומודל גדול יותר הוא השקעה סבירה הבאה: הנתונים נושאים אות. הגיעו ל-10 אחוזים ומודל 3 B ככל הנראה גם יגיע ל-10 אחוזים, מה שלמדתם זה עתה בשלושה דולרים במקום שנים עשר.

כדאי לקרוא לפני שמוציאים יותר: Pi0.5 מול SmolVLA לקיבולת רבה יותר על אותו רעיון, וגם GR00T N1.7 מול SmolVLA עבור מסלול NVIDIA, שניהם ברמת 80 GB בעלות של 4 עד 12 דולר לריצה. בדרך אחרת, ACT הוא קו הבסיס הזול יותר: 80 מיליון פרמטרים, 20 אלפיות שנייה לכל שלב פעולה, ללא התניה לשונית. כל החמישה נמצאים ב-דף המדיניות; הזירה כוללת 85 מודלים ו-332 תוצאות בנצ'מרק.

רשימת הבדיקה לפני שאתה מרחיב משהו
- האם ה-
lrהגיע לרצפת ה-2.5e-6 שלו? מתחת ל-30000 צעדים, lerobot משנה את קנה המידה של הדעיכה ומציין זאת בהפעלה; מעל לכך, הגדר את--policy.scheduler_decay_stepsבעצמך. - יותר מנקודת ביקורת אחת, ופרקים שהוצאו עם
--dataset.eval_splitכך שהפסד ההערכה אומר משהו. - האם המדיניות זזה בכלל? הפסד יורד עם זרוע חסרת תנועה יש לו סיבות ספציפיות: הפסד יורד, מדיניות לא עושה כלום.
- האם זה שורד שינוי סצנה? אם לא: מדיניות עובדת רק בהגדרה אחת.
- האם רשמת את ה-seed? lerobot מוגדר כברירת מחדל ל-1000, כך ששתי הרצות שלא נגעו בהן נשארות ניתנות להשוואה.
- רק אז: יותר פרקים, יותר וריאציה, או מודל גדול יותר. בסדר הזה.
לגבי הסיבה לקיומם של מודלים אלה ומה הם עושים עם קלט השפה, הוא הרקע; מריץ הרכבה דרך ועד להרצת הראשונה. עבור נקודת הביקורת המוגמרת, ; אם הזרוע לא מופיעה, .
אמן את SmolVLA על הזרוע שלך
בחר את המודל והזרוע והמדריך יספק לך את ברירות המחדל המדויקות, פורמט מערך הנתונים ועלויות ההרצה. SmolVLA פועל בשכבת 24 GB בעלות של 1 עד 3 דולר להרצה.
פתח את מדריכי האימוןהאם אני באמת יכול לכוונן עדין את SmolVLA על RTX 4090?▾
כן. מדריך החישוב של LeRobot ממקם את SmolVLA בערך ב-10 עד 16 GB של VRAM שיא ב-batch 8 עם AdamW ומציין שכרטיסי צרכנים של 24 GB נוחים עבורו. ה-batch 64 בדוגמת התיעוד משויך ל-A100 יחיד. הזיכרון גדל באופן ליניארי בערך עם ה-batch, אז השתמש ב-4 או 8 ועקוב אחר mem_gb.
כמה פרקים אני באמת צריך?▾
AY-Robots קובעת את המינימום על 30. תיעוד LeRobot ממליץ על כ-50 ומדווח ש-25 פרקים של אותה משימה בוצעו בצורה גרועה. מבנה עדיף על כמות: סט הייחוס כלל 5 מיקומי קוביות עם 10 פרקים לכל אחד, והחזרה הזו היא מה שמכליל.
התיעוד אומר batch 64, הפלטפורמה שולחת batch 2. מה נכון?▾
שניהם, עבור חומרה שונה. דוגמת התיעוד משתמשת ב-batch 64 ומציינת כ-4 שעות עבור 20000 צעדים על A100 יחיד; עוגן ה-A100 40 GB של מדריך החישוב הוא batch 16. Batch 2 הוא מה ש-AY-Robots שולחת בשכבת ה-24 GB. מקומית 4 עד 8 הוא האמצע, וחשבון האפוקים משתנה בהתאם.
SmolVLA או ACT להרצה ראשונה על SO-100?▾
ACT אם המשימה היא תנועה חוזרת אחת ואתה רוצה את הלולאה המהירה ביותר: 20 ms לכל שלב פעולה, 80 M פרמטרים, ללא התניה שפתית. SmolVLA אם אתה רוצה התניה שפתית, מספר מחרוזות משימה בנקודת שמירה אחת, ובסיס מאומן מראש. שניהם יושבים על שכבת ה-24 GB, כך שהבחירה היא המשימה, לא התקציב.
האם אני צריך להגדיר את --policy.scheduler_decay_steps?▾
רק כאשר --steps מעל 30000. SmolVLA מגדיר מראש את דעיכת הקוסינוס ב-30000 צעדים, ו-lerobot 0.6.1 משנה את קנה המידה שלו כלפי מטה בעצמו עבור הרצה קצרה יותר, ומתעד "Auto-scaling LR scheduler" כאשר הוא עושה זאת. הוא לעולם לא מגדיל את קנה המידה, כך שה- --steps=100000 הסטנדרטי משאיר את 70000 הצעדים האחרונים על רצפת ה-2.5e-6.
Sources
- SmolVLA: מודל ראייה-שפה-פעולה לרובוטיקה במחיר סביר ויעילה
- SmolVLA: מודל ראייה-שפה-פעולה יעיל (בלוג Hugging Face)
- כרטיס מודל lerobot/smolvla_base
- תיעוד LeRobot: SmolVLA
- תיעוד LeRobot: מדריך חומרת מחשוב לאימון LeRobot
- תיעוד LeRobot: התקנה
- תיעוד LeRobot: LeRobotDataset v3.0 והממיר v2.1
- תיעוד LeRobot: הסקה אסינכרונית
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (אסטרטגיות והסקה RTC)
- lerobot v0.6.1: pyproject.toml (תוספות ונקודות כניסה לקונסולה)
- lerobot ב-PyPI
- ערכת נתונים lerobot/svla_so100_pickplace (50 פרקים, 19631 פריימים, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started