מטריצת האימון של AY-Robots עם חמש מדיניות כשורות וארבע זרועות רובוטיות כעמודות, כל תא הוא קישור למדריך כוונון עדין ספציפי
Pi0.5התאמת זרימהאימון VLALeRobotכוונון עדין

איך לאמן Pi0.5 על נתוני רובוט משלך

AY-Robots ResearchAugust 23, 202616 דקות קריאה

כוונו עדין את Pi0.5, מודל ה-VLA להתאמת זרימה מבית Physical Intelligence, על נתוני רובוט משלכם. פקודות אמיתיות עבור openpi ו-lerobot pi05, מלכודות פורמט נתונים, מגבלות VRAM וחביון.

Pi0.5 הוא המודל שאליו פונים כאשר מדיניות צריכה לעבוד בחדר שמעולם לא ראתה. הוא גם המסורבל ביותר מבין חמש המדיניות ניתנות לאימון כאן כדי לבצע כוונון עדין ידנית: המאגר המקורי הוא JAX תחילה, פורט LeRobot העביר את הפריסה מ-lerobot-record בגרסה 0.6.0 והפך את ההתקנה הבסיסית לקטנה מדי לאימון, וכוונון עדין מלא אינו מתאים ל-4090. להלן: מה ש התאמת זרימה עולה בהסקה, שני נתיבי הפקודה, והמספר 485 ms שמחליט אם התוצאה שמישה.

מה שאתה צריך לדעת

  • VLA בהתאמת זרימה: VLM PaliGemma בגודל 3B בתוספת מומחה פעולה בגודל 300M המפענח מקטעי פעולה רציפים. שני נתיבים לכוונון עדין שלו, openpi ו-LeRobot pi05, בהפרש של 0.65 נקודות בממוצע LIBERO.
  • כוונון עדין מלא דורש יותר מ-70 GB של VRAM. openpi מפרט את LoRA ב-22.5 GB, בנתיב JAX שלו בלבד.
  • מערך הנתונים חייב להיות LeRobotDataset v3.0 עם קוונטילים q01 ו-q99 ב-meta/stats.json, אחרת אצווה אחת תיכשל.
  • בדוק תחילה את גרסת ה-lerobot שלך: 0.6.0 הפכה את חבילת הבסיס לקלה והעבירה את הפריסה מ-lerobot-record.
  • כאן הוא פועל ב-485 ms לכל שלב פעולה, דורש 50 אפיזודות, ועולה כ-4 עד 12 USD לריצה.

מהו Pi0.5 בפועל

Physical Intelligence פרסמה את pi0 באוקטובר 2024: מודל התאמת זרימה מודל ראייה-שפה-פעולה על VLM מאומן מראש: PaliGemma עם 3 מיליארד פרמטרים בתוספת מומחה פעולה בגודל 300M שאותחל מאפס, סך הכל 3.3 מיליארד. המאמר מדווח על אימון מוקדם של למעלה מ-10,000 שעות של נתוני רובוטים על פני 7 תצורות רובוטים ו-68 משימות. לפרטים נוספים ב מאמר ה-pi0.

Pi0.5 (arXiv 2504.16054, 22 April 2025) שומר על השלד הזה ומשנה את תזונת האימון: נתוני אינטרנט, זיהוי אובייקטים, הוראות מילוליות מבני אדם המאמנים את הרובוט, תוויות משימות משנה, נתונים חוצי-התגלמות מרובוטים בבתים רבים. התוצאה היא רובוט המנקה מטבחים בבתים שלא היו בקבוצת האימון. קובץ ה-README של openpi מוסיף פרט שהכותרת אינה כוללת: ה-pi0.5 ששוחרר אומן עם בידוד ידע (arXiv 2505.23705).

מאפייןpi0pi0.5
וריאנט עמוד שדרה VLMgemma_2b (PaliGemma)gemma_2b (PaliGemma)וריאנט מומחה פעולהgemma_300mgemma_300m
action_dim3232
action_horizon default5050
max_token_len48200
discrete_state_inputfalsetrue, מצב מפוצל לתיבות בהנחיה
נקודת בדיקה בסיסיתgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
מה שפורסם אינו כל המאמר

קובץ ה-README של openpi מצהיר במפורש: המאגר תומך רק בראש ה-flow matching, לאימון והסקה של pi0.5 כאחד. המאמר מתאר שני שלבים והקוד מכיל רק את השני: אימון מוקדם מייצג כל פעולה כאסימונים בדידים באמצעות ה-FAST tokenizer, ובעת פריסה המודל מסיק משימת משנה ברמה גבוהה לפני כל מקטע פעולה. אף אחד מאלה אינו נמצא במאגר. כרטיס ה-lerobot/pi05_base מציג את אותה רשימה ומוסיף RL, למרות שמאמר ה-pi0.5 אינו מתאר כלל שלב למידת חיזוק. פורט ה-LeRobot יורש את ההיקף הזה, וכך גם כל מאמן מתארח עליו, כולל זה כאן. הרישוי גם מפוצל: דף התיעוד של pi05 מציין Apache 2.0, כרטיס ה-lerobot/pi05_base מתויג license: gemma.

מה ש-flow matching משנה באימון ובהסקה

מדיניות מדיניות שניתן לאמן על SO-100 מבצעת רגרסיה ישירה של פעולות (ACT) או ממירה אותן לאסימונים ומפענחת באופן אוטורגרסיבי (pi0-FAST). התאמת זרימה אינה עושה אף אחד מאלה: היא לומדת שדה וקטורי המעביר רעש לנתח פעולה, ואז משלבת אותו. מאמר ה-pi0 משתמש ב-10 שלבי אינטגרציה בגודל צעד של 0.1; תצורת ה-pi05 של LeRobot מכילה את אותו num_inference_steps: int = 10.

  • אימון: הפסד מבצע רגרסיה על נתח פעולה עם רעש. אין טוקנייזר לכוונון, אין דיסקרטיזציה של זוויות המפרקים שלך.
  • הסקה: נתח אחד עולה עשרה מעברים קדימה דרך מומחה הפעולה. זה מבני, לא בעיית כוונון.
  • פלט: פעולות רציפות במימד 32, מרופדות פנימית, הפסד נלקח על הממדים שיש לרובוט שלך. זרוע 6-DoF בתוספת תופסן משתמשת ב-7.
python
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
    dtype: str = "bfloat16"
    paligemma_variant: _gemma.Variant = "gemma_2b"
    action_expert_variant: _gemma.Variant = "gemma_300m"

    action_dim: int = 32
    action_horizon: int = 50
    max_token_len: int = None      # 200 if pi05 else 48

    pi05: bool = False             # flips discrete_state_input to True
נקרא מ-src/openpi/models/pi0_config.py בענף הראשי של openpi, 23 באוגוסט 2026.

עמוד השדרה של PaliGemma, והשער שלפניו

PaliGemma (arXiv 2407.07726) הוא מקודד ראייה SigLIP-So400m על מודל שפה Gemma-2B, עם כ-3 מיליארד פרמטרים. Pi0.5 יורש את הטוקנייזר שלו, והטוקנייזר הזה נמצא במאגר מגודר. זו הדרך הנפוצה ביותר שבה הרצה ראשונה נכשלת, לפני ה-שלב אימון.

קבלו את הרישיון המגודר לפני שאתם שוכרים GPU

תיעוד LeRobot pi05 מצהיר זאת בבירור: pi0.5 משתמש בטוקנייזר המגודר google/paligemma-3b-pt-224, לכן קבלו את הרישיון שלו ב-Hub והריצו תחילה את hf auth login. הגישה ניתנת ידנית, לא באופן מיידי. דלגו על זה, התחילו הרצת ענן בתשלום, ותשלמו על פוד שלא יכול להוריד טוקנייזר.

לפני שמתחילים: פורמט מערך נתונים, פרקים, חומרה

Pi0.5 ב-LeRobot קורא LeRobot dataset בפריסת v3.0, שהגיעה עם lerobot 0.4.0 באוקטובר 2025: פרקים רבים לכל קובץ Parquet ו-MP4 במקום קובץ אחד לכל פרק, עם גבולות ב-meta/episodes/ במקום בשמות קבצים. הקליטו עם ה-לקוח שולחני או עקבו אחר הקליטו את מערך הנתונים הראשון שלכם וכבר יש לכם את זה.

מצבזיכרון GPU נדרשדוגמת GPU
הסקהיותר מ-8 GBRTX 4090
אימון עדין, LoRAיותר מ-22.5 GBRTX 4090
אימון עדין, מלאיותר מ-70 GBA100 80 GB או H100
מלכודת הגרסאות שעולה יום

Pi0.5 ו-SmolVLA דורשים LeRobot v3.0. GR00T N1.7 ו-GR00T N1.5 דורשים v2.0 או v2.1 וקורסים על מערך נתונים בגרסה v3.0. סשן הקלטה אחד אינו יכול להזין את שניהם ללא המרה, והשגיאה אינה אומרת "גרסת מערך נתונים שגויה". ראה מערך נתונים נדחה: נדרש v3.

bash
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>

# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ...         -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsets
מתיעוד LeRobotDataset v3.0.

הפלטפורמה דורשת לפחות 50 פרקים עבור Pi0.5, אותו סף כמו GR00T ו-ACT. אימון מקדים עושה את העבודה הקשה, כך ש-50 פרקים נקיים עדיפים על 200 מרושלים. חדש בתחום? התחל עם מדריך איסוף הנתונים.

עמוד המדיניות של AY-Robots המשווה בין חמש המדיניות הניתנות לאימון לפי פרמטרים, שכבת GPU, חביון ומספר פרקים מינימלי.
Pi0.5 ממוקם בשכבת A100 ו-H100 במהירות של 485 אלפיות השנייה לכל שלב פעולה, עם רצפה של 50 פרקים.

מסלול א': כוונון עדין עם מאגר openpi

היישום הייחוס: JAX ראשון, נבדק על Ubuntu 22.04 בלבד, מונע על ידי אובייקטי תצורה במקום דגלים. נתיב PyTorch הגיע בספטמבר 2025, מאומת על LIBERO. שלושה שלבים: המרת הנתונים שלך, הגדרת תצורה, אימון והגשה.

  1. 1
    שכפול והתקנה

    openpi משתמש ב-uv. GIT_LFS_SKIP_SMUDGE הוא מה שמאפשר ל-LeRobot להיכנס כתלות ללא אובייקטי LFS.

    bash
    git clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git
    cd openpi
    
    GIT_LFS_SKIP_SMUDGE=1 uv sync
    GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .
  2. 2
    המרת הנתונים שלך למערך נתונים של LeRobot

    ה-upstream מספק ממירים עבור LIBERO ו-DROID ומצפה שתתאים אחד מהם. העבודה היא מיפוי המפתחות.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    הוספת תצורת אימון

    תצורות הן ערכי TrainConfig בקובץ src/openpi/training/config.py. זו מתאימה את pi05_droid_finetune, כאשר טוען המשקלים מצביע על pi05_base.

    python
    TrainConfig(
        name="pi05_so100",
        model=pi0_config.Pi0Config(
            pi05=True,
            action_dim=32,        # pi05 is trained with 32-dim actions
            action_horizon=16,
        ),
        # Copy LeRobotLiberoDataConfig in the same file and rewrite the key
        # mapping for your camera names, then reference your copy here.
        data=LeRobotLiberoDataConfig(
            repo_id="your_hf_username/my_so100_dataset",
            base_config=DataConfig(prompt_from_task=True),
        ),
        weight_loader=weight_loaders.CheckpointWeightLoader(
            "gs://openpi-assets/checkpoints/pi05_base/params"
        ),
        batch_size=32,
        num_train_steps=20_000,
    )
  4. 4
    חישוב סטטיסטיקות נורמליזציה

    רץ מול שם התצורה, לא מול מערך הנתונים. דילוג עליו הוא הכשל הקלאסי הראשון כאן.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    אימון

    המשתנה מאפשר ל-JAX להשתמש ב-90 אחוז מזיכרון ה-GPU במקום ב-75 אחוז ברירת המחדל. בכרטיס של 80 GB זה קובע אם הריצה תשרוד.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    הגש אותו

    השרת מאזין בפורט 8000 ועונה לשאילתות תצפית; סביבת הריצה של הרובוט שלך היא הלקוח.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
נתיב PyTorch אינו נתיב JAX

מימוש PyTorch של openpi אינו תומך ב-pi0-FAST, דיוק מעורב, FSDP, LoRA או משקלי EMA, ולכן ה-LoRA שמגיע ל-22.5 GB הוא JAX בלבד, באמצעות וריאנטים gemma_2b_lora ו-gemma_300m_lora. גרוע מכך: ההתקנה מעתיקה קבצים מתוקנים על גבי transformers 4.53.2 המותקן שלך, וה-README מזהיר כי עם מצב ה-hardlink ברירת המחדל של uv, זה משנה לצמיתות את transformers במטמון ה-uv ויכול לדלוף לפרויקטים אחרים. בטל זאת באמצעות uv cache clean transformers.

נתיב ב': כוונון עדין עם lerobot pi05

פורט LeRobot עוטף את אותם המשקלים בממשק שורת הפקודה שבו אתה כבר משתמש עבור ACT ו-SmolVLA. כל מה שלמטה נבדק מול lerobot 0.6.1, הגרסה שיצאה ב-3 באוגוסט 2026, ומסמכי pi05 מ-23 באוגוסט 2026. גרסאות חשובות כאן: מערכי נתונים v3.0 הגיעו עם 0.4.0 באוקטובר 2025, הבלוג 0.5.0 מ-9 במרץ 2026 מציג את pi0-FAST ו-Real-Time Chunking, ו-0.6.0 ב-6 ביולי 2026 הפך את חבילת הבסיס לקלה והעביר את הפריסה ל-lerobot-rollout.

דבר אחד לא זז: lerobot-train ו-lerobot-record כבר היו נקודות כניסה ב-0.3.2, אוגוסט 2025. מדריך שעדיין קורא ל-python -m lerobot.scripts.train קדם לשנה של שינויים ושווה לא לסמוך עליו גם בשאר.

  1. 1
    התקנה עם התוספים הנכונים

    החל מגרסה 0.6.0, ההתקנה הבסיסית כוללת רק תלויות ליבה של למידת מכונה, והתוסף 'pi' אינו מוסיף קוד נתונים או אימון, ולכן כוונון עדין דורש גם את תוסף האימון. פקודות התקנה ישנות יותר נכשלות כאן בזמן הייבוא.

    bash
    # policy dependencies plus the training stack
    pip install 'lerobot[pi,training]'
    
    # from a source checkout
    pip install -e ".[pi,training]"
    
    # driving an SO-100 afterwards needs the robot extras too
    pip install 'lerobot[core_scripts,feetech]'
  2. 2
    אימות

    אשר את רישיון paligemma-3b-pt-224 בדפדפן, ולאחר מכן התחבר למכונה המבצעת את האימון.

    bash
    hf auth login
  3. 3
    הוספת סטטיסטיקות קוונטילים

    Pi0.5 מנרמל STATE ו-ACTION באמצעות קוונטילים, ולכן meta/stats.json דורש q01 ו-q99. מערכי נתונים ישנים יותר מכילים רק min, max, mean, std.

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    כוונון עדין מ-lerobot/pi05_base

    הגדר את גודל האצווה למה שהכרטיס שלך יכול לעמוד בו; התיעוד משתמש ב-64 ב-LIBERO עם 80 GB. העבר bfloat16 במפורש, ברירת המחדל של התצורה היא float32.

    bash
    lerobot-train \
        --dataset.repo_id=${HF_USER}/my_so100_dataset \
        --policy.type=pi05 \
        --policy.pretrained_path=lerobot/pi05_base \
        --policy.gradient_checkpointing=true \
        --policy.dtype=bfloat16 \
        --policy.device=cuda \
        --policy.push_to_hub=false \
        --output_dir=./outputs/pi05_so100 \
        --job_name=pi05_so100 \
        --batch_size=4 \
        --num_workers=8 \
        --steps=30000 \
        --save_freq=5000 \
        --seed=1000
  5. 5
    הפעלת המערכת על הזרוע

    בגרסה 0.6.x זוהי הפקודה lerobot-rollout: lerobot-record מסרבת למדיניות ודוחה שמות של מערכי נתונים מסוג eval_. 'Base' מניע את הזרוע, 'sentry' מתעד את ההרצה.

    bash
    lerobot-rollout \
        --strategy.type=base \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
        --task="Put lego brick into the transparent box" \
        --duration=60
    
    # same run, recorded into an eval_ dataset
    lerobot-rollout \
        --strategy.type=sentry \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --dataset.repo_id=${HF_USER}/eval_so100 \
        --dataset.single_task="Put lego brick into the transparent box" \
        --duration=600
דגלמה הוא עושההערה
--policy.type=pi05בוחר את Pi0.5נדרש עם pretrained_path, השמט עם --policy.path
--policy.pretrained_pathטוען משקלים בלבדשמות תכונות ממערך הנתונים שלך, הגדרות שמורות מאופסות
--policy.pathמשקלים בתוספת קובץ config.json של נקודת הבדיקההגדרות שמורות כגון n_action_steps עוברות בירושה
--policy.n_action_stepsצעדים הנצרכים לכל חבילהחוזר ל-50, לעולם לא מעל chunk_size (ברירת מחדל 50)
--policy.train_expert_onlyמקפיא את ה-VLM, מאמן את המומחהברירת מחדל false, פחות זיכרון, עלות מסוימת בהצלחה
--policy.gradient_checkpointingחישוב מחדש במקום אחסון אקטיבציותברירת מחדל false, המנוף הראשון כאשר הרצה לא מתאימה
--peft.method_type=LORAמתאמי LoRA במקום משקלים מלאיםדורש את תוסף peft, דוגמה מתועדת היא SmolVLA
--policy.rtc_training_max_delayהתניה של קידומת פעולה עבור RTCענף ראשי בלבד, לא ב-0.6.1, חייב להישאר מתחת ל-chunk_size
--rename_mapממפה עמודות מערך נתונים לתכונות מדיניותנדרש כאשר מפתחות המצלמה שלך שונים
השגיאה שרוב ההרצות הראשונות נתקלות בה

ללא קוונטילים תקבלו ValueError: QUANTILES normalization mode requires q01 and q99 stats באצווה הראשונה. חשבו מחדש את הסטטיסטיקות, אך התוצאה נוחתת ב-$HF_LEROBOT_HOME/your_dataset, לא במטמון ש---dataset.repo_id קורא ממנו, לכן אמן עם --dataset.root המצביע לשם או דחו ל-Hub. לחלופין, דלגו על קוונטילים עם --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', כפי שעושה פקודת הייחוס של LIBERO.

שלוש קבוצות של ברירות מחדל, ואילו מהן מגיעות למאמן

TrainConfig של openpi הוא ההתייחסות, PI05Config של LeRobot הוא מה ש-lerobot-train משתמש בו כשלא אומרים כלום, והטופס כאן שולח סט שלישי. ההפתעה היא קצב הלמידה: ברירות המחדל של שניהם מגיעות לשיא של 2.5e-5, בעוד שתצורת pi05_libero של openpi עצמה ופלטפורמה זו מעלות אותו ל-5e-5.

הגדרהopenpi TrainConfiglerobot pi05 and lerobot-trainAY-Robots שולח
גודל אצווה3281
קצב למידה שיא2.5e-5, דעיכת קוסינוסoptimizer_lr 2.5e-55e-5
שלבי אימון30,000100,00030,000
מרווח נקודת ביקורת1,000 שלבים20,000 שלביםלא בטופס
גרעין421,000בטופס
נתח פעולהaction_horizon 50chunk_size 50, n_action_steps 50לא בטופס
סוג נתונים של משקלbfloat16float32 עד שתעביר --policy.dtypeלא בטופס
צבירת גרדיאנטאין כזה כפתור, fsdp_devices במקוםנעדר מכל מהדורה עד כה16, והוא מושמט

האם הפורט נאמן? צוות LeRobot כייל עדין את מודל הבסיס LIBERO ל-6k שלבים נוספים והשווה עם מספרי הייחוס של openpi בארבע חבילות: ממוצע של 97.5 אחוזים לעומת 96.85, מוביל ב-Libero 10, מאחור ב-Spatial. המסלול הוא בחירת כלי עבודה, לא בחירת איכות.

כוונון עדין Pi0.5 על הנתונים שלך
יתרונות
  • יותר מ-10,000 hours של אימון מוקדם של רובוטים מאחוריו, כך ש-50 episodes של המשימה שלך יכולים להספיק.
  • פעולות רציפות: אין טוקנייזר לכוונון, אין רצפת דיסקרטיזציה על זוויות המפרקים שלך.
  • הפורט של LeRobot משיג 97.5 percent בממוצע LIBERO לעומת 96.85 של openpi, כך שה-CLI הידידותי יותר לא עולה דבר מדיד.
  • נתיבים יעילים בפרמטרים משני הצדדים: openpi's JAX LoRA variants, LeRobot's PEFT integration.
פשרות
  • כוונון עדין מלא דורש יותר מ-70 GB. ה-22.5 GB LoRA נתון הוא מספר JAX של openpi; אף אחד לא פורסם עבור pi05 תחת PEFT.
  • 485 ms לשלב פעולה, האיטי ביותר מבין החמישה כאן: פי שניים מ-SmolVLA, פי עשרים וארבע מ-ACT.
  • LeRobot v3.0 נדרש, כך שערכת נתונים שהוקלטה עבור GR00T הרצה דורשת המרה, ולהיפך.
  • אפשרויות חדשות נוחתות קודם ב-main: זמן אימון RTC ו-MEM זיכרון אינם ב-0.6.1, כך שתיעוד חדש ביותר יכול להיות התקנה מ-git.

מציאות ה-485 מילישניות, והיכן היא מפסיקה להיות שמישה

זה קובע את הפרויקט שלך, ולכן הוא מופיע לפני טבלת העלויות. ה- לכל שלב פעולה שנמדדה כאן עבור Pi0.5 היא 485 מילישניות. לעומת ארבעת האחרים:

מדיניותהסקה לכל שלב פעולהפרמטריםרמת GPUמינימום פרקים
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
עמוד ההשוואה ראש בראש של AY-Robots עבור GR00T N1.7 מול Pi0.5, עם פרמטרים, רמת GPU, השהיה ופורמט נתונים
אותה רמת GPU, אותה רצפת פרקים, גרסת נתונים שונה, פער השהיה של פי שלושה.
הסקת מסקנות (Inference) חייבת להיות צמודה למנועים (Servos)

לולאת הבקרה בחמשת המודלים הללו פועלת בטווח של 20 עד 485 אלפיות השנייה לכל שלב פעולה. זמני תגובה (round trips) באינטרנט ציבורי, בנוסף ל-485 אלפיות השנייה, הופכים מדיניות עבודה למדיניות מהוססת. הסקת מסקנות מרחוק (Remote inference) אפשרית עבור פעולות איסוף והנחה איטיות (slow pick-and-place), אך לא עבור תנועה תגובתית מהירה. אנו מעדיפים לומר זאת מאשר למכור הדגמה שעובדת רק ברשת מקומית (LAN). אם הזרוע שלך עוצרת בין מקטעים (chunks), התחל ב-מדיניות קופאת באמצע תנועה.

ל-Upstream יש תשובה, וחצי ממנה כבר נמצא במהדורה שתוכל להתקין. Real-Time Chunking מייצר את המקטע הבא בזמן שהזרוע עדיין מבצעת את המקטע הנוכחי, ולאחר מכן מנחה את השלבים החופפים של המקטע החדש להישאר קרובים לחלק שכבר בוצע, כך שהזרוע לא תיתקע או תזעזע בנקודת החיבור. הצורה בזמן הסקת המסקנות (inference-time form) נכללה ביומן השינויים 0.4.2 עבור Pi0, Pi0.5 ו-SmolVLA והיא דגל פריסה (rollout flag), לא אימון מחדש (retrain):

bash
lerobot-rollout \
    --strategy.type=base \
    --policy.path=${HF_USER}/my_policy \
    --inference.type=rtc \
    --inference.rtc.execution_horizon=10 \
    --inference.rtc.max_guidance_weight=10.0 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM1 \
    --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
    --task="Put lego brick into the transparent box" \
    --duration=60
execution_horizon הוא מספר הצעדים מהמקטע הקודם שהמקטע החדש צריך להתאים להם; תיעוד RTC מציין 8 עד 12 כטווח הרגיל. ברירת המחדל של ה-backend להסקת מסקנות היא --inference.type=sync.

זה לא מאיץ את המודל. זה מסתיר את הפער: 485 אלפיות השנייה עדיין מושקעות, אך מחוץ לנתיב הקריטי, כך שהתור לא מתרוקן בין מקטעים. הגרסה בזמן האימון (training-time variant) מ-arXiv 2512.05964 הולכת רחוק יותר: המודל לומד להתנות על קידומת פעולה נקייה, כך שבזמן הסקת המסקנות החפיפה נצבעת מחדש באופן קשיח עם צעדי זמן זרימה לכל פעולה במקום להיות מונחית, ומעבר ההכוונה לאחור נעלם. במהלך האימון הוא דוגם אורך קידומת לכל דוגמה ולוקח את אובדן הזרימה על הסיומת הנותרת. דגל זה קיים רק ב-main, לא ב-0.6.1, והעיכוב שעבורו אתה מאמן חייב להישאר מתחת ל-chunk_size.

שתי דרכים להשיג נקודת ביקורת (checkpoint) של Pi0.5

אתה שוכר או רוכש כרטיס 80 GB, מתקין אחת מהערימות לעיל, ממיר את מערך הנתונים שלך ומפקח על הריצה. אתה שומר על כל כפתור: JAX LoRA של openpi, מתאמי PEFT של LeRobot, פעולות יחסיות, מיפויי מקשים מותאמים אישית. אתה גם שומר על כל כשל.

  • חומרה: A100 80 GB או H100, או כרטיס 24 GB בנתיב JAX LoRA של openpi.
  • התקנה: אחר צהריים עבור הריצה הראשונה, בעיקר מיפוי מקשים והטוקנייזר המגודר.
  • לא בטופס המתארח: מתאמי PEFT, פעולות יחסיות, RTC בזמן אימון, זיכרון MEM.
bash
lerobot-train \
    --dataset.repo_id=${HF_USER}/my_so100_dataset \
    --policy.type=pi05 \
    --policy.pretrained_path=lerobot/pi05_base \
    --policy.rtc_training_max_delay=10 \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --batch_size=4 --steps=30000 --seed=1000
הפקודה שאף טופס מתארח לא מריץ, ו-pip לא יכול להתקין: RTC בזמן אימון הוא דגל של הענף הראשי.

כאשר זה לא עובד

תסמיןהסיבה הסבירה ביותר
ריצה נדחתה לפני שהחלהמערך נתונים v2.1 אבל Pi0.5 רוצה v3.0, או ההפך עבור GR00T
ImportError, חבילת datasets חסרהlerobot 0.6.x ללא התוספת של האימון
ValueError לגבי q01 ו-q99 באצווה אחתאין קוונטילים ב-meta/stats.json; חשב מחדש או השתמש ב-MEAN_STD
CUDA אזל הזיכרון בשלב 0כוונון עדין מלא מתחת ל-70 GB; נסה checkpointing או train_expert_only
שגיאת 401 או gated repoרישיון טוקנייזר PaliGemma לא התקבל
הפסד יורד, הרובוט לא עושה כלוםאי התאמה בנורמליזציה, או שהמדיניות מעתיקה את המצב
הזרוע עוצרת בין חתיכותהשהיה לכל שלב בתוספת זמן הלוך ושוב; תור החתיכות מתרוקן
עובד בהגדרה אחת, נכשל באחרתמעט מדי אפיזודות, או כולן בתצורה אחת

עלות הרצה אחת

Pi0.5 נמצא בשכבה היקרה מכיוון שהוא דורש כרטיס 80 GB, ומחירי ספוט משתנים, כך שהנתון הוא טווח ולא מחיר. עבור משימות SO-100 רבות, אמן SmolVLA או ACT בשכבת ה-24 GB תחילה, וודא שהמשימה ניתנת ללמידה בכלל, ולאחר מכן הקדש לה שעות A100. אמן את המדיניות הראשונה שלך מציג את הלולאה הזולה יותר, ו-תמחור מפרט את השכבות הנוכחיות.

שכבהמדיניותהרצה טיפוסיתמחיר לשעהעלות להרצה
A100 80 GB or H100Pi0.5, GR00T N1.7, GR00T N1.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD
RTX 4090 or any 24 GB cardSmolVLA, ACT2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
טבלת העלויות של AY-Robots המציגה איזה GPU כל מדיניות דורשת, זמן הריצה והמחיר הטיפוסיים, וכמה אפיזודות נדרשות לפני שמדיניות שימושית.
אותן שתי רמות בדף המוצר: Pi0.5 שוכר את כרטיס ה-80 GB, SmolVLA ו-ACT מתאימים ל-4090.

לפני שמתחייבים לערב שלם: GR00T N1.7 מול Pi0.5 ו-Pi0.5 מול SmolVLA מציגים את אותם נתונים זה מול זה. ה-זירה מכילה 85 מודלי VLA עם 332 תוצאות בנצ'מרק, כל אחת מקושרת למקור שלה, ורקע על המשפחה נמצא ב-סקירת ה-VLA שלנו.

אמנו את Pi0.5 ללא בניית הערימה

בחרו את מערך הנתונים ואת ההיפרפרמטרים בטופס. ה-backend שוכר כרטיס 80 GB בשוק הספוט, מריץ את המאמן וכותב את נקודות הבקרה לאחסון אובייקטים. מדריכים עבור SO-100, SO-101, Koch v1.1 ו-LeKiwi.

פתחו את מדריכי האימון
האם אוכל לכוונן עדין את Pi0.5 על RTX 4090?

לא כוונון עדין מלא: openpi מפרט יותר מ-70 GB לכך, כך שנדרש A100 80 GB או H100. נתון ה-LoRA של 22.5 GB שייך לנתיב JAX; ליישום PyTorch אין LoRA. אינטגרציית PEFT של LeRobot קיימת, אך הדוגמה המתועדת שלה היא SmolVLA ולא פורסם נתון VRAM עבור pi05.

כמה אפיזודות אני צריך?

חמישים, אותה רמה כמו GR00T ו-ACT; רק SmolVLA יורד נמוך יותר, ל-30. נקודת הבקרה הבסיסית נושאת יותר מ-10,000 שעות של אימון מקדים, כך שהכוונון העדין מסתגל במקום ללמוד מאפס: 50 אפיזודות נקיות ומגוונות עדיפות על מאתיים מאותה תצורה.

מה ההבדל בין --policy.path לבין --policy.pretrained_path?

--policy.path טוען משקלים ואת config.json של נקודת הבקרה, כך שהגדרות שמורות כגון n_action_steps עוברות בירושה ויש להשמיט את --policy.type. --policy.pretrained_path טוען משקלים בלבד: שמות התכונות מגיעים ממערך הנתונים שלכם, הגדרות שמורות מתאפסות, ונדרש --policy.type. זו הסיבה שהפקודה LIBERO מעבירה במפורש n_action_steps=10 ו-empty_cameras=1; אחרת הם חוזרים לברירת המחדל של 50 ו-0.

האם הגרסה הפתוחה נותנת לי את Pi0.5 המלא מהמאמר?

לא. שניהם תומכים רק בראש הפעולה של flow matching. שלב האימון המקדים של אסימונים בדידים עם ה-FAST action tokenizer וחיזוי תת-משימות ברמה גבוהה לא שוחררו, וכרטיס lerobot/pi05_base מוסיף RL לרשימה זו למרות שמאמר pi0.5 אינו מתאר שלב למידת חיזוק. אתם מאמנים מדיניות ברמה נמוכה המותנית במחרוזת שפה שאתם מספקים, לא מודל שמפרק משימה ארוכה בעצמו.

נגד אילו גרסאות נכתב מדריך זה?

openpi ב-main ו-lerobot 0.6.1, הגרסה שיצאה מאז 3 באוגוסט 2026, שניהם נקראו ב-23 באוגוסט 2026. מערכי נתונים v3.0 הגיעו עם 0.4.0 באוקטובר 2025. 0.6.0 הפך את חבילת הבסיס לקלה, כך ש-lerobot[pi] לבדו כבר לא מתקין ערימת אימון, והעביר את הפריסה ל-lerobot-rollout. RTC בזמן אימון נמצא רק ב-main; המאמן המתארח כאן מריץ 0.5.1.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started