עמוד הניסיון של AY-Robots: שלוש דרכים להתחיל ללא בעלות על רובוט, כולל השכרת GPU להסקת מדיניות
GR00T N1.7הסקה מרוחקתGPU בענןLeRobotSO-100שיהוי

הפעל הסקת GR00T ללא GPU מקומי

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

למכונת הרובוט שלך אין GPU. הצב את שרת המדיניות של GR00T על GPU ענן שכור, הזרם נתחי פעולה לזרוע, ולמד בדיוק מה עלות הרשת עבורך.

Raspberry Pi מספיק כדי להניע דרך אפיק טורי ולשלוף פריימים משתי מצלמות USB. זה לא מספיק כדי להריץ מודל של שלושה מיליארד פרמטרים מסוג : קובץ ה-README של NVIDIA מציין שביצוע הסקה של GR00T N1.7 דורש GPU אחד עם 16 GB או יותר של VRAM. כדי לראות מה נקודת הבדיקה (checkpoint) המכווננת של עושה על הזרוע בלי לקנות כרטיס, שים את המדיניות על GPU ענן שכור, השאר את לולאת הרובוט על המכונה עם יציאות ה-USB, ושלח תצפיות ונתחי פעולה דרך הרשת.

זה עובד, זה לא בחינם, והמחיר אינו מתחלק באופן שווה בין המשימות. להלן: שרת המדיניות של NVIDIA עצמה, ערימת ה-async של lerobot, החישוב שקובע מראש אם ה-uplink שלך מהיר מספיק, ונתיב הפלטפורמה. כל זה נבדק מול הענף הראשי של Isaac-GR00T (N1.7 GA) ו-lerobot 0.6.1 בתאריך 23 August 2026.

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

  • GR00T N1.7, GR00T N1.5 ו-Pi0.5 הם מודלים של כ-3 B פרמטרים. אף אחד מהם לא מתאים לבקר רובוט ללא GPU נפרד.
  • גם Isaac-GR00T וגם lerobot מספקים פיצול לקוח-שרת. אינך כותב את התעבורה.
  • תצפיות שולטות בעלות התקשורת, לא פעולות: שתי תמונות RGB לא דחוסות בגודל 640x480 הן 1,843,200 bytes, כ-14.7 Mbit לכל קריאה, ואף אחת מהערימות לא דוחסת אותן.
  • AY-Robots מפרטת 20 עד 485 ms לכל שלב פעולה לפי מודל. זמני תגובה של האינטרנט מתווספים לכך.
  • הסקה מרחוק מתאימה למשימות איסוף והנחה איטיות, לא לתנועה תגובתית מהירה. אופק ביצוע ארוך יותר קונה זמן ועולה ברעננות התצפיות.
  • אף אחד מהשרתים אינו בטוח ב-IP ציבורי כפי שהוא מסופק, ושל lerobot מכיל RCE לא מתוקן. תעל אותו.

מדוע המדיניות לא תתאים למכונת הרובוט

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

מדיניותפרמטריםהסקה לכל שלב פעולהרמת GPU לאימוןמינימום פרקיםפורמט מערך נתונים
GR00T N1.7~3 B, ~40 M trained during fine-tuning152 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5~3 B165 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5~3 B, PaliGemma backbone485 msA100 80 GB or H100 80 GB50LeRobot v3.0
SmolVLA~450 M245 msRTX 4090 or any 24 GB card30LeRobot v3.0
ACT~80 M20 msRTX 4090 or any 24 GB card50LeRobot v3.0
דף המדיניות של AY-Robots המשווה את חמש המדיניות הניתנות לאימון לפי פרמטרים, רמת GPU, השהיית הסקה ומינימום פרקים
אותן חמש שורות ב-/policies. עמודת ההשהיה קובעת אם מדיניות שורדת קפיצת רשת.

קרא זאת כהחלטה, לא כטריוויה. ACT ב-20 אלפיות השנייה לכל שלב, רץ על מכונת הרובוט ואתה לא חושב על זה שוב. Pi0.5 ב-485 אלפיות השנייה, בילה שליש שנייה לפני שחבילה עוזבת את הבניין שלך. השוואת מדיניות ו-GR00T N1.7 vs Pi0.5 מוסיפים את צד הדיוק.

ל-ACT אין מודל בסיס

GR00T N1.7, GR00T N1.5 ו-Pi0.5 מתחילים מנקודת ביקורת של ספק (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT אינו קיים עד שתאמן אותו למשימה שלך, ולכן אין מה להגיש מרחוק עד להפעלת משימת אימון. ראה ACT ב-SO-100.

שתי ערימות הלקוח-שרת הקיימות

Isaac-GR00T מספק שרת ZeroMQ מסוג בקשה-תגובה; lerobot מספק שרת gRPC הבנוי סביב הסקה אסינכרונית. שניהם מקבלים נקודת ביקורת. רשימת המדיניות הנתמכת של lerobot ב-async_inference/constants.py היא act, smolvla, diffusion, tdmpc, vqbet, pi0, pi05 ו-groot; רשימת הרובוטים שלה היא so100_follower, so101_follower, bi_so_follower ו-omx_follower.

שרת מדיניות Isaac-GR00Tהסקה אסינכרונית של lerobot
נקודת כניסהgr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
תעבורהZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
סריאליזציהmsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, מסומן # nosec
פורט ברירת מחדל55558080
קשירה ברירת מחדל0.0.0.0, כל הממשקיםlocalhost
אימותapi_token נתמך על ידי המחלקה, לא מועבר על ידי ה-CLIאין
פסק זמן לקוח15000 ms (PolicyClient timeout_ms)2 s פסק זמן לתור תצפיות
מודל ביצועסינכרוני: חסימה, ואז ביצוע הנתחאסינכרוני: ביצוע בזמן שהנתח הבא מחושב

שורת הסריאליזציה חשובה יותר ממה שנראה. ה-MsgSerializer של GR00T מסרב לקבל מטעני ndarray מסוג object-dtype בשני הכיוונים, מכיוון ש-msgpack_numpy היה מעביר אותם אחרת ל-pickle. lerobot מבצעת pickle במקום זאת: policy_server.py קורא ל-pickle.loads על נתוני הבקשה, robot_client.py מבצעת pickle לתצפית שהיא שולחת. ניתן להגנה ברשת מקומית מהימנה, בלתי ניתן להגנה ברגע שהפורט נגיש מהאינטרנט.

נתיב א': שרת המדיניות GR00T של NVIDIA

זהו הנתיב ש-NVIDIA מתעדת עבור חומרת SO-100 ו-SO-101, והנתיב לשימוש אם נקודת הבדיקה שלך נוצרה מתוך examples/finetune.sh עם --embodiment-tag NEW_EMBODIMENT. השלבים מוסיפים את מה שה-README המקורי משמיט: העברת הפורט לרובוט מבלי לחשוף אותו לכל השאר.

  1. 1
    התקן את GR00T על תיבת ה-GPU השכורה

    מודולי משנה נדרשים, ו-git-lfs חייב להתקיים לפני השיבוט או שקובצי parquet ב-demo_data יגיעו כמצביעים. flash-attn ו-TensorRT מגיעים עם ההתקנה המוגדרת כברירת מחדל. המכשול בתמונת pod חדשה: torchcodec 0.8.0 הוא ה-backend היחיד הנתמך לווידאו וטוען רק FFmpeg 4 עד 7. אובונטו 25.10 ו-26.04 מגיעות עם FFmpeg 8, ולכן GR00T נכשל עם Could not load libtorchcodec. התקן FFmpeg בגרסה נמוכה מ-8 והצב את הספריות שלו ב-LD_LIBRARY_PATH.

    bash
    sudo apt install git-lfs && git lfs install
    curl -LsSf https://astral.sh/uv/install.sh | sh
    sudo apt-get update && sudo apt-get install -y ffmpeg
    
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
    uv sync --python 3.12
    uv run python -c "import gr00t; print('GR00T installed successfully')"
  2. 2
    אמת מול ה-backbone המגודר

    כל נקודת בדיקה של GR00T N1.7, כולל ה-fine-tune שלך, טוענת את nvidia/Cosmos-Reason2-2B המגודר בשימוש הראשון. בקש גישה בדף המודל והתחבר ל-pod, אחרת הטעינה תיכשל עם GatedRepoError.

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    הפעל את שרת המדיניות

    כוון את --model-path לספריית נקודות הבדיקה שלך; בנתיב זה השרת מתעלם מ---modality-config-path, הנקרא רק בנתיב ההפעלה החוזרת. השמט את --model-path והעבר במקום זאת את --dataset-path בתוספת --execution-horizon עבור ReplayPolicy שמפעיל מחדש פעולות מוקלטות, הדרך הזולה ביותר להוכיח שהחיווט עובד.

    bash
    uv run python gr00t/eval/run_gr00t_server.py \
      --model-path /workspace/so100_finetune/checkpoint-10000 \
      --embodiment-tag NEW_EMBODIMENT \
      --device cuda:0 \
      --host 127.0.0.1 --port 5555
  4. 4
    נתב פורט 5555 למכונת הרובוט

    קשור ל-loopback, כפי שצוין לעיל, והעבר את הפורט דרך SSH או רשת בסגנון WireGuard. זה מספק את ההצפנה והאימות ששקע ZeroMQ אינו מספק, למשך כמילישנייה.

    bash
    # on the robot machine
    ssh -N -L 5555:127.0.0.1:5555 root@<pod-host> -p <pod-ssh-port>
    
    # sanity check that something answers
    nc -vz 127.0.0.1 5555
  5. 5
    הפעל את לקוח הרובוט ליד הסרוואים

    הלקוח זקוק לסביבת uv משלו: הוא רוצה את מנהלי ההתקנים של lerobot, לא את ערימת האימון. eval_so100.py מייבא את so100_follower, so101_follower ו-koch_follower, לכן העבר את --robot.type התואם לזרוע שלך (ה-README המקורי משתמש ב-so101_follower). מפתחות המצלמה חייבים להתאים לאימון: המתאם קורא בדיוק front ו-wrist, והחלפתם מציגה למדיניות תצוגה שגויה.

    bash
    cd gr00t/eval/real_robot/SO100
    uv sync
    uv pip install --no-deps -e ../../../../
    
    uv run --no-sync python eval_so100.py \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.id=orange_follower \
      --robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
      --policy_host=127.0.0.1 \
      --policy_port=5555 \
      --lang_instruction="pick up the red block and put it in the bin"
שתי ברירות מחדל שיפגעו בך

run_gr00t_server.py מוגדר כברירת מחדל ל---host 0.0.0.0, מה שקושר כל ממשק: על פוד עם IP ציבורי זהו נקודת קצה פתוחה להסקה. ומחלקת ה-PolicyServer מקבלת api_token ומאמתת אותו לכל בקשה, אך run_gr00t_server.py לעולם אינו מעביר אחד כזה, כך ששרת ה-CLI אינו מאומת, לא משנה מה תגדיר. קשור ל-127.0.0.1 וצור מנהרה. ZMQError: Address already in use פירושו שפורט 5555 תפוס; העבר --port.

נתיב ב': הסקה אסינכרונית של lerobot

lerobot פותר בעיה אחרת. במקום לחסום את הרובוט בזמן שהמודל חושב, הלקוח ממשיך להתקדם בתור שכבר יש לו בזמן שהשרת מחשב את הנתח הבא. זהו חלוקת פעולות לנתחים מורחב עוד יותר, הערימה האסינכרונית שהוצגה עם SmolVLA. זה עובד גם עם נקודת בקרה של GR00T.

bash
# GPU machine
pip install -e ".[async]"
python -m lerobot.async_inference.policy_server \
     --host=127.0.0.1 \
     --port=8080

# robot machine, after tunnelling 8080
python -m lerobot.async_inference.robot_client \
    --server_address=127.0.0.1:8080 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower_so100 \
    --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}}" \
    --task="pick up the red block and put it in the bin" \
    --policy_type=groot \
    --pretrained_name_or_path=<user>/my_groot_finetune \
    --policy_device=cuda \
    --actions_per_chunk=50 \
    --chunk_size_threshold=0.5 \
    --debug_visualize_queue_size=True
שרת מדיניות על ה-GPU, לקוח רובוט על המכונה עם יציאות ה-USB

השרת מתחיל ריק: הוא אינו יודע איזו מדיניות הוא משרת עד שהלחיצת יד הראשונה של הלקוח מודיעה לו, וזה נוח על פוד שכור. שני המשתנים שקובעים אם הזרוע נעה בצורה חלקה הם actions_per_chunk ו-chunk_size_threshold (תיעוד lerobot מכנה את השני g, על שם מאמר SmolVLA), והערכים המתועדים והערכים שנשלחו אינם תואמים.

פרמטרערך בקוד lerobot 0.6.1מה הוא עושההערה
actions_per_chunkno default, requiredפעולות המוחזרות לכל קריאהטבלת התיעוד מפרטת 50; לשדה ה-dataclass אין ברירת מחדל, ולכן ה-CLI דורש ערך
chunk_size_threshold0.5יחס מילוי תור שבו או מתחתיו הלקוח שולח תצפית חדשהטבלת התיעוד אומרת 0.7; הקוד והדוגמה של התיעוד עצמו אומרים 0.5
fps30קצב שליטה של הלקוח, מגדיר environment_dt = 1/fpsהורד אותו אם התור ממשיך להתרוקן
inference_latency1/30 s (33.3 ms)זמן השהיה יעד להסקה בשרתיעד, לא מדידה
obs_queue_timeout2 sכמה זמן השרת ממתין בתור התצפיותקישור איטי יופיע כאן קודם
aggregate_fn_nameweighted_averageכיצד אזורי נתחים חופפים משולבים0.3 old + 0.7 new; latest_only, average ו-conservative גם נשלחים. הרישום הוא AGGREGATE_FUNCTIONS ב-configs.py, לא ב-robot_client.py כפי שטוען התיעוד.
לשרת המדיניות של lerobot יש RCE לא מתוקן

CVE-2026-25874 הוא ביצוע קוד מרחוק לא מאומת בצינור ההסקה האסינכרוני של lerobot: pickle.loads() על נתונים שהתקבלו דרך ערוץ gRPC לא מאומת ללא TLS, הנגיש דרך הקריאות SendPolicyInstructions, SendObservations ו-GetActions. CWE-502, ציון בסיס CVSS 3.1 של 9.8 מ-NVD, ציון בסיס 4.0 של 9.3 מה-CNA המקצה. הרישום מפרט את LeRobot עד 0.5.1 כפגוע ומציין גם את שרת המדיניות וגם את לקוח הרובוט, כך שהמכונה שליד הזרוע שלך נמצאת בטווח. שדרוג אינו הפתרון: הרישום מצטט את בעיה 3047 במעלה הזרם ואת התיקון, PR 3048, שמחליף את pickle ב-safetensors בתוספת JSON, ובתאריך 23 באוגוסט 2026 שניהם עדיין פתוחים. policy_server.py ב-main עדיין קורא ל-pickle.loads על נתוני בקשה בזמן ש-serve() נקשר עם add_insecure_port. קשור ל-loopback ולעולם אל תבצע העברת פורטים ל-8080.

האריתמטיקה שמחליטה אם הקישור שלך מהיר מספיק

אנשים מדלגים על זה ואז מבלים יום שלם ב-. זה לוקח שתי דקות וזה כמעט תמיד מכריע.

מילון התצפיות המפורט בקוד של NVIDIA ב-eval_so100.py מציין מה עובר בחיבור: שני מערכים בצורת (480, 640, 3) בפורמט uint8, שישה ערכי float של מפרקים, ומחרוזת שפה. זה 921,600 בתים לפריימים, 1,843,200 בתים לשתי מצלמות, כ-14.7 מגה-ביט, ואף ערימה לא דוחסת את זה ב-JPEG. החבילה שחוזרת היא כמה עשרות צעדים של 6 ערכי float. המהירות העלאה שלך קובעת הכל, לא המהירות הורדה שלך.

רוחב פס העלאהזמן לדחיפת תצפית אחת (14.7 מגה-ביט)פסיקה עבור זרוע ב-30 פריימים לשנייה
10 מגה-ביט/שנייה, העלאה ביתית טיפוסית~1.47 sבלתי שמיש. הזרוע עוצרת בין כל חבילה.
25 Mbit/s~0.59 sאיסוף והנחה איטיים בלבד, עם אופק ביצוע ארוך.
50 Mbit/s~0.29 sשמיש למשימות מכוונות.
100 Mbit/s~0.15 sבסדר גמור לאיסוף והנחה, מורגש בתנועה מהירה.
1 ג'יגה-ביט/שנייה סיב אופטי או דאטה-סנטר~0.015 sהמודל הופך לצוואר הבקבוק במקום זאת.

התקציב שעליך לעמוד בו

לקוח GR00T SO-100 הוא סינכרוני: הוא קורא ל-policy.get_action(obs), מבצע את ה-action_horizon הצעדים הראשונים של הנתח ב-30 פריימים לשנייה, ואז קורא שוב. גודל הנתח והאופק הם מספרים שונים: מדריך הפריסה של NVIDIA ממליץ על גודל נתח פעולה של 16, לפחות 32 בשילוב עם חלוקה לנתחים בזמן אמת, בעוד ש-eval_so100.py מספק אופק ביצוע של 8. שמונה צעדים ב-30 פריימים לשנייה הם 267 אלפיות שנייה של תנועה לכל קריאה, וכל השאר צריך להיכנס לזה.

text
observation upload   14.7 Mbit / 100 Mbit/s   = 147 ms
network round trip                            =  30 ms
model inference (AY-Robots figure, N1.7)      = 152 ms
action chunk return + deserialize             =  ~2 ms
                                                -------
total per call                                  331 ms

budget at action_horizon = 8   ->  267 ms   FAIL, arm pauses ~64 ms per chunk
budget at action_horizon = 16  ->  533 ms   fits, with headroom
budget at action_horizon = 32  -> 1067 ms   fits, observations now ~1 s stale
דוגמה מפורטת: העלאה ב-100 מגה-ביט/שנייה, זמן אחזור (round trip) של 30 אלפיות שנייה, GR00T N1.7

הגדלת האופק היא פתרון גס ולא חינמי: הזרוע פועלת על תצפית שכבר ישנה. הפתרון העקרוני הוא חלוקה לנתחים בזמן אמת (real-time chunking), שמחשבת את הנתח הבא בזמן שהנוכחי פועל, מקפיאה את הפעולות המובטחות לביצוע ומשלימה את השאר; מאמר ה-RTC מדווח עליו כעמיד בפני עיכוב הסקה ללא אימון מחדש. בדוק קודם היכן זה עומד. NVIDIA מסמנת את RTC כניסיוני, פרימיטיב מודל ברמה נמוכה הנגיש דרך action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), לא מחובר ל-Gr00tPolicy או לנתיב שרת-לקוח, כאשר options אינו בשימוש, ללא בדיקות וללא דוגמה. דרך שרת מדיניות מקבלים ביצוע אסינכרוני, לא RTC.

מה עולה המודל לפני שהרשת עושה זאת

NVIDIA בוחנת את GR00T N1.7 מקצה לקצה ב-4 שלבי הסרת רעש עם מצלמה אחת. על H100 80GB HBM3: 85.8 אלפיות שנייה (11.7 הרץ) ב-PyTorch eager, 48.6 אלפיות שנייה (20.6 הרץ) עם torch.compile, 27.9 אלפיות שנייה (35.9 הרץ) עם צינור ה-TensorRT המלא. L40 במצב eager לוקח 128.3 אלפיות שנייה (7.8 הרץ). NVIDIA מכנה 10 הרץ את המינימום המומלץ למניפולציה טיפוסית, ומתחת ל-10 הרץ מתאים רק למשימות איטיות ולא-ריאקטיביות. אלה הם תעריפי תכנון מחדש: מדיניות של 10 הרץ עדיין יכולה להניע זרוע ב-30 פריימים לשנייה באמצעות חלוקה לנתחי פעולה. מצלמה שנייה מזיזה אותך לכיוון הלא נכון.

מדוד את זה לפני שאתה סומך על זה

כל מספר לעיל הוא חיזוי. ארבע פקודות הופכות אותו למדידה, שכדאי להריץ לפני הקצאת שעת-פוד למשימה שמעולם לא הייתה עובדת.

  1. 1
    קבל את זמן הלוך-חזור הגולמי

    מול הפוד, לא מול CDN. עקוב אחר הסטייה באותה מידה כמו הממוצע: ריצוד גורם לזרוע לגמגם, לא השהיה ממוצעת.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    מדוד את ה-uplink שיש לך, לא את זה שאתה משלם עליו

    העלאה ביתית היא בדרך כלל שבריר מההורדה, וזהו המספר בטבלת רוחב הפס לעיל.

    bash
    # on the pod
    iperf3 -s
    
    # on the robot machine, -R omitted so this measures upload
    iperf3 -c <pod-host> -t 30
  3. 3
    קרא את יומן ההשהיה של הלקוח עצמו

    לקוח הרובוט lerobot מתעד את השהיית שרת-ללקוח ואת זמן הדה-סריאליזציה עבור כל חבילה. בנתיב B אינך זקוק לכלי עבודה חיצוניים.

    text
    Received action chunk for step #240 | Latest action: #232 |
      Incoming actions: 240:289 |
      Network latency (server->client): 187.44ms |
      Deserialization time: 3.10ms
  4. 4
    צפה בתור הפעולות מתרוקן

    העבר --debug_visualize_queue_size=True והלקוח ישרטט את גודל התור בזמן ריצה. אם הוא מגיע שוב ושוב לאפס, אז נגמר לך התקציב: הורד את ה-fps, הגדל את actions_per_chunk, או הגדל את chunk_size_threshold כך שתצפיות יישלחו לעיתים קרובות יותר.

    bash
    python -m lerobot.async_inference.robot_client \
        ... \
        --debug_visualize_queue_size=True

למה הסקת מסקנות מרחוק באמת טובה

מדיניות על GPU מושכר, זרוע על שולחנך
יתרונות
  • ניתן להעריך מדיניות עם 3 B פרמטרים על חומרה אמיתית מבלי להחזיק כרטיס שעולה יותר מהזרוע.
  • ה-GPU מושכר לפי שעה, כך שנקודת בדיקה שנכשלה עולה כמה דולרים.
  • צד הרובוט נשאר קטן: דרייברים של lerobot, שתי מצלמות, יציאה טורית, ואתה מחליף נקודות בדיקה מבלי לגעת בו.
פשרות
  • תצפיות לא דחוסות שולטות בעלות התעבורה, והעלאה ביתית היא האילוץ המגביל.
  • ריצוד (Jitter) מזיק יותר מחביון (Latency): קישור עם ממוצע של 40 אלפיות השנייה וקפיצות ל-300 אלפיות השנייה מגמגם, בעוד שקישור יציב של 120 אלפיות השנייה אינו.
  • משימות תגובתיות מהירות אינן שורדות את זמן ההלוך-חזור בכל אופק.
  • שני השרתים נשלחים ללא אימות בצורת CLI, כך שעבודת המנהור היא באחריותך.
  • חיבור שנפל באמצע חבילת נתונים משאיר את הזרוע עם פעולה מיושנת. הוסף כלב שמירה משלך בצד הרובוט.
משימהעובד על גבי האינטרנט הציבורי?למה
Pick a static object, place it in a binכןשום דבר לא זז בין התצפית לפעולה.
Stack blocks at a deliberate paceכן, באופק פעולה של 16 ומעלהשגיאות מצטברות לאט מספיק כדי לתקן בחבילת הנתונים הבאה.
Open a drawer, insert an objectבדרך כללעשיר במגע אך איטי. שים לב לעצירות והתחלות במגע.
Follow a moving objectלאהמדיניות פועלת על תצפית בת 300 אלפיות השנייה עד שנייה אחת.
Catch, balance, or recover from a slipלאחלון התיקון קצר יותר מזמן הלוך-חזור אחד.
A 30 Hz synchronous closed loopלאהתקציב הוא 33 אלפיות השנייה מקצה לקצה. אפילו רשת מקומית מתקשה.

אם הרצה מרוחקת מגמגמת באותה נקודה בכל פרק, הרשת כנראה אינה הגורם. מדיניות המהססת באותה זווית מפרק בכל פעם היא בדרך כלל בעיית נתונים; ראה את דפי מצבי כשל, בפרט מדיניות שעובדת רק בהגדרה אחת ו-ההפסד יורד אך המדיניות לא עושה כלום.

לעשות זאת בעצמך מול לעשות זאת ב-AY-Robots

  1. שכור GPU בשוק ספוט והמתן לכמות VRAM מספקת במחיר שמתאים לך.
  2. התקן CUDA, uv, ffmpeg torchcodec תואם, ואת ערימת GR00T עם תת-מודולים.
  3. בקש גישה ל-backbone המוגבל `nvidia/Cosmos-Reason2-2B` והצב אסימון על ה-pod.
  4. משוך את נקודת הביקורת שלך אל ה-pod.
  5. הפעל את השרת ב-loopback, ולאחר מכן בנה מנהרת SSH ממכונת הרובוט.
  6. התקן סביבה שנייה על מכונת הרובוט עבור הלקוח והדרייברים.
  7. התאם את מפתחות המצלמה, שמות המפרקים והוראת השפה למה שנקודת הביקורת ראתה.
  8. עקוב אחר ה-pod. A100 שנשכח פועל לילה שלם עולה יותר מהניסוי.
ה-pod הלא פעיל הוא העלות האמיתית

חשבון ה-GPU אינו נפסק כשהרובוט עוצר. רוב הכסף שאובד בהסקה מרחוק הולך לשרת שנשאר פעיל לאחר שכולם עזבו. הגדר אזעקה, או בצע אוטומציה לפירוק.

דף שרת ה-MCP של AY-Robots המפרט פעולות פלטפורמה החשופות ככלים לסוכני AI
דף ה-MCP: פעולות הקצאה והסקה חשופות ככלים שסוכן יכול לקרוא להם.

מה עולה סשן הסקה מרחוק

שני מספרים חשובים: התעריף השעתי של הכרטיס, וכמה זמן אתה משאיר אותו פועל. הראשון מפורסם; השני מפתיע אנשים.

כרטיסענן קהילתי של Runpodענן מאובטח של Runpodמתאים ל
A100 PCIe 80 GB1.19 USD/h1.39 USD/hGR00T N1.7, GR00T N1.5, Pi0.5
A100 SXM 80 GB1.39 USD/h1.59 USD/hאותו הדבר, קצת מהיר יותר
H100 PCIe 80 GB1.99 USD/h2.89 USD/hשכבה מהירה ביותר; נתון ה-11.7 הרץ של NVIDIA מתייחס ל-H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hהסקה בלבד, מעל רף ה-16 GB
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, ACT

מחירים אלו נקראו מדף התמחור של Runpod ב-23 באוגוסט 2026, ושוקי הספוט משתנים. AY-Robots מצטטת ריצה שלמה במקום זאת: 3 עד 6 שעות ב-1.20 עד 2.00 דולר לשעה בשכבת A100 או H100, כ-4 עד 12 דולר לריצת GR00T או Pi0.5; 2 עד 5 שעות ב-0.30 עד 0.60 דולר לשעה בשכבת 24 GB, 1 עד 3 דולר עבור SmolVLA או ACT. סשן הסקה עולה פחות מריצת אימון רק אם עוצרים אותו, ולשם כך נועד ה-idle watchdog. ראו את תיעוד החיובים ואת דף התמחור.

טבלת העלויות של AY-Robots המציגה איזה GPU כל מדיניות דורשת, זמן ריצה ומחיר אופייניים, ומספר פרקים לפני שמדיניות שימושית
טבלת העלויות ב-/try: איזה כרטיס כל מודל דורש ומהי העלות האופיינית לריצה.

אם אתם מעדיפים שלא תהיה הרשת בלולאה

הסקה מרחוק פותרת בעיית חומרה ויוצרת בעיית חביון. לפעמים התשובה הטובה יותר היא מדיניות שמתאימה לחומרה הקיימת.

  • ACT, בערך 80 מיליון פרמטרים ו-20 אלפיות השנייה לצעד פעולה, מינימום 50 אפיזודות, כל כרטיס 24 GB. בהגדרה של משימה יחידה חוזרת, הוא מנצח לעיתים קרובות מודל 3 B מרוחק, מכיוון שהוא לעולם אינו ממתין לחבילה.
  • SmolVLA, בערך 450 מיליון פרמטרים ו-245 אלפיות השנייה לצעד פעולה, מינימום 30 אפיזודות. הוא שומר על התניית השפה שחסרה ל-ACT, ותיעוד ה-lerobot מציג אותו בכ-2 GB בזמן הסקה לעומת כ-14 GB עבור PI0.
  • ACT vs GR00T N1.7 עבור מחצית הדיוק של הפשרה.

יש גם דרך ביניים: אימון בענן, הערכה מקומית. כוונון עדין דורש כרטיס 80 GB ואינו מתייחס לחביון, ולכן אימון GR00T N1.7 על SO-100 מרחוק אינו שנוי במחלוקת. רק ללולאת ההערכה יש אילוץ זמן אמת; התיעוד האימון ו-מטריצת מודל-וזרוע מכסים את החצי הזה.

עדיין אין זרוע על השולחן?

הפעל SO-100 אמיתי בדפדפן ללא הרשמה, השווה את חמש המדיניות הניתנות לאימון עם מספרי החביון האמיתיים שלהן, או שכר GPU ואמן אחת. שלוש דרכים להתחיל, אף אחת מהן לא דורשת חומרה שאינה בבעלותך.

נסה זאת ללא חומרה

שאלות נפוצות

האם אוכל להריץ את GR00T N1.7 על Raspberry Pi אם ה-GPU מרוחק?

כן, לשם כך נועד הפיצול בין הלקוח לשרת. ה-Pi מריץ את מנהלי ההתקנים של lerobot, קורא שתי מצלמות ואפיק טורי, ושולח תצפיות לשרת המדיניות; הוא לעולם אינו טוען את המודל. האילוץ עובר מ-VRAM לרוחב פס העלאה: שתי פריימים לא דחוסים של 640x480 RGB הם 1,843,200 בתים לכל קריאה, ואף אחד מהערימות אינו דוחס אותם.

כמה השהיה הרשת מוסיפה בפועל?

זמן הלוך ושוב בתוספת זמן העברת תצפיות. זמן ההעברה הוא 14.7 מגה-ביט חלקי רוחב פס ההעלאה שלך: בערך 147 ms בקישור של 100 Mbit/s, ו-1.47 s בקישור של 10 Mbit/s. שניהם מתווספים לזמן ההסקה של המודל עצמו, ש-AY-Robots מפרטת כ-152 ms עבור GR00T N1.7 ו-485 ms עבור Pi0.5. מדוד באמצעות ping ו-iperf3 מול ה-pod, לא מול שרת בדיקת מהירות.

האם הסקה מרוחקת טובה מספיק למשימה אמיתית?

עבור משימות איסוף והנחה איטיות ומדויקות, כן. עבור כל דבר תגובתי, לא. מדריך הפריסה של NVIDIA קובע את דרישת הצעד היחיד הסינכרוני בכ-33 ms מקצה לקצה ב-30 FPS, ומציין כי לכידה, רשת, הסקה ועיבוד לאחר מכן חורגים באופן שגרתי מכך גם ללא מעורבות אינטרנט.

באיזו יציאה משתמשים השרתים והאם בטוח לפתוח אותה?

PolicyServer של Isaac-GR00T מוגדר כברירת מחדל ליציאה 5555 מעל ZeroMQ וקושר 0.0.0.0 בממשק שורת הפקודה שלו. lerobot מוגדר כברירת מחדל ליציאה 8080 מעל gRPC וקושר localhost. אף אחד מהם אינו בטוח לחשיפה: מחלקת GR00T תומכת ב-api_token אך run_gr00t_server.py לעולם אינו מעביר אחד, ו-lerobot מבצע pickle לנתונים על ערוץ gRPC לא מאובטח, שהוא CVE-2026-25874. קשור ל-loopback והשתמש במנהרת SSH.

האם שדרוג lerobot מתקן את CVE-2026-25874?

לא נכון ל-23 באוגוסט 2026. רשומת ה-CVE מפרטת את LeRobot עד 0.5.1 כפגועה ו-PyPI שולחת את 0.6.1, אך בקשת המשיכה שתסיר את ה-pickle מצינור ה-async עדיין פתוחה, ו-policy_server.py ב-main עדיין קורא ל-pickle.loads על נתוני בקשה. התייחס לבידוד רשת כפתרון, לא לעדכון גרסה, והנח שגם הלקוח בצד הרובוט נמצא בתחום ההשפעה.

האם אוכל להשתמש בלקוח ה-async של lerobot עם נקודת ביקורת של GR00T?

כן. lerobot 0.6.1 מפרט את groot ב-SUPPORTED_POLICIES לצד act, smolvla, diffusion, tdmpc, vqbet, pi0 ו-pi05, וגם so100_follower וגם so101_follower נמצאים ב-SUPPORTED_ROBOTS. העבר --policy_type=groot והפנה את --pretrained_name_or_path לנקודת הביקורת שלך. תקבל ביצוע אסינכרוני, שהדוגמה של GR00T SO-100 אינה מיישמת, במחיר של העברת ה-pickle.

הגרסה הקצרה

הסקה מרוחקת עבור 3 B מדיניות היא בעיה הנדסית פתורה עם בעיית פיזיקה בלתי פתורה צמודה. ההנדסה היא שתי פקודות ומנהרת SSH. הפיזיקה היא שתצפית של 1.8 MB צריכה להגיע ל-GPU במדינה אחרת ולחזור לפני שהזרוע נגמרת מפעולות. בצע את החישובים לפני השכרת כל דבר, בחר משימה הסובלת תצפית מיושנת, והרחב את אופק הביצוע במקום לקוות שהקישור ישתפר.

אם עדיין לא הקלטתם מערך נתונים, ו- קודמים, ו- מסביר מה המקליט כותב. הרקע נמצא ב- ו-; ה- מקשר כל מספר ביצועים למקור.

Sources

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started