
جهاز الروبوت الخاص بك لا يحتوي على وحدة معالجة رسوميات. ضع خادم سياسة GR00T على وحدة معالجة رسوميات سحابية مستأجرة، وبث أجزاء الإجراءات إلى الذراع، وتعرف بالضبط على تكلفة الشبكة عليك.
جهاز Raspberry Pi كافٍ لتشغيل عبر ناقل تسلسلي وسحب الإطارات من كاميرتي USB. لكنه ليس كافيًا لتشغيل نموذج : يذكر ملف README الخاص بـ NVIDIA أن استدلال GR00T N1.7 يتطلب وحدة معالجة رسوميات واحدة بسعة 16 جيجابايت أو أكثر من ذاكرة الفيديو. لمعرفة ما يفعله نقطة التحقق الخاص بك والمُعدّل بدقة على الذراع دون شراء بطاقة، ضع السياسة على وحدة معالجة رسوميات سحابية مستأجرة، واحتفظ بحلقة الروبوت على الجهاز المزود بمنافذ USB، وأرسل الملاحظات وأجزاء الإجراءات عبر الشبكة.
إنه يعمل، لكنه ليس مجانيًا، والسعر لا يتوزع بالتساوي عبر المهام. أدناه: خادم سياسة NVIDIA الخاص، ومكدس lerobot غير المتزامن، والحساب الذي يحدد مسبقًا ما إذا كان رابط التحميل الخاص بك سريعًا بما يكفي، ومسار المنصة. تم التحقق من كل ذلك مقابل الفرع الرئيسي لـ Isaac-GR00T (N1.7 GA) و lerobot 0.6.1 في 23 أغسطس 2026.
ما تحتاج لمعرفته
- •GR00T N1.7 و GR00T N1.5 و Pi0.5 هي نماذج تحتوي على حوالي 3 مليارات معلمة. لا يمكن لأي منها أن يعمل على وحدة تحكم روبوت بدون وحدة معالجة رسوميات منفصلة.
- •يقدم كل من Isaac-GR00T و lerobot تقسيمًا بين العميل والخادم. لست بحاجة لكتابة طبقة النقل.
- •تهيمن الملاحظات على تكلفة الاتصال، وليس الإجراءات: إطاران RGB غير مضغوطين بحجم 640x480 يبلغ حجمهما 1,843,200 بايت، أي حوالي 14.7 ميجابت لكل استدعاء، ولا يقوم أي من المكدسين بضغطهما.
- •تدرج AY-Robots من 20 إلى 485 مللي ثانية لكل خطوة إجراء حسب النموذج. تضاف رحلات الذهاب والإياب عبر الإنترنت فوق ذلك.
- •الاستدلال عن بعد يناسب مهام الالتقاط والوضع البطيئة، وليس الحركة التفاعلية السريعة. أفق التنفيذ الأطول يكسب الوقت ويكلف نضارة الملاحظات.
- •لا يوجد أي من الخادمين آمنًا على عنوان IP عام كما يتم شحنه، ويحتوي خادم lerobot على ثغرة RCE غير مصححة. قم بإنشاء نفق إليه.
لماذا لن تتناسب السياسة مع جهاز الروبوت
اثنتان من السياسات الخمس التي يمكن لـ AY-Robots تدريبها تعملان على بطاقة محطة عمل، وثلاث لا تعمل. عمود أدناه هو لكل خطوة إجراء، وهذا هو الرقم الذي يتنافس مع زمن الذهاب والإياب لشبكتك.
| السياسة | المعلمات | الاستدلال لكل خطوة إجراء | فئة وحدة معالجة الرسوميات للتدريب | الحد الأدنى للحلقات | تنسيق مجموعة البيانات |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M trained during fine-tuning | 152 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | ~3 B | 165 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | ~3 B, PaliGemma backbone | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090 or any 24 GB card | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 or any 24 GB card | 50 | LeRobot v3.0 |

اقرأ ذلك كقرار، وليس معلومات تافهة. بسرعة 20 مللي ثانية لكل خطوة يعمل على آلة الروبوت ولن تفكر فيه مرة أخرى. بسرعة 485 مللي ثانية يكون قد استغرق ثلث ثانية قبل أن تغادر الحزمة مبناك. و تضيف جانب الدقة.
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 مبني حول الاستدلال غير المتزامن. كلاهما يقبل GR00T نقطة تحقق. قائمة السياسات المدعومة في 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.py | python -m lerobot.async_inference.policy_server |
| البروتوكول | ZeroMQ REQ/REP | gRPC, add_insecure_port / insecure_channel |
| التسلسل | msgpack + msgpack_numpy, allow_pickle=False enforced | pickle.dumps / pickle.loads, marked # nosec |
| المنفذ الافتراضي | 5555 | 8080 |
| الربط الافتراضي | 0.0.0.0، جميع الواجهات | localhost |
| المصادقة | api_token مدعوم من الفئة، لا يتم تمريره بواسطة سطر الأوامر | لا يوجد |
| مهلة العميل | 15000 مللي ثانية (PolicyClient timeout_ms) | مهلة قائمة انتظار المراقبة 2 ثانية |
| نموذج التنفيذ | متزامن: حظر، ثم تنفيذ الجزء | غير متزامن: تنفيذ بينما يتم حساب الجزء التالي |
صف التسلسل أهم مما يبدو. مكتبة GR00T MsgSerializer ترفض حمولات ndarray من نوع الكائن في كلا الاتجاهين، لأن msgpack_numpy سيسلمها إلى pickle بخلاف ذلك. بدلاً من ذلك، تقوم lerobot بعملية pickle: policy_server.py يستدعي pickle.loads على بيانات الطلب، robot_client.py يقوم بعملية pickle للملاحظة التي يرسلها. يمكن الدفاع عن ذلك على شبكة LAN موثوقة، ولكن لا يمكن الدفاع عنه بمجرد أن يصبح المنفذ قابلاً للوصول من الإنترنت.
المسار أ: خادم سياسة GR00T الخاص بـ NVIDIA
هذا هو المسار الذي توثقه NVIDIA لأجهزة SO-100 و SO-101، وهو المسار الذي يجب استخدامه إذا كانت نقطة التحقق الخاصة بك قد نتجت عن examples/finetune.sh مع --embodiment-tag NEW_EMBODIMENT. تضيف هذه الخطوات ما يغفله ملف README الأصلي: توصيل المنفذ بالروبوت دون تعريضه للجميع.
- 1تثبيت GR00T على صندوق GPU المستأجر
الوحدات الفرعية مطلوبة، ويجب أن يكون git-lfs موجودًا قبل الاستنساخ وإلا ستصل ملفات parquet في
demo_dataكمؤشرات. يأتي flash-attn و TensorRT مع التثبيت الافتراضي. المشكلة في صورة pod جديدة:torchcodec0.8.0 هو الواجهة الخلفية الوحيدة للفيديو المدعومة ويقوم بتحميل FFmpeg من الإصدار 4 إلى 7 فقط. تأتي Ubuntu 25.10 و 26.04 مع FFmpeg 8، لذلك يفشل GR00T برسالةCould not load libtorchcodec. قم بتثبيت FFmpeg بإصدار أقل من 8 وضع مكتباته فيLD_LIBRARY_PATH.bashsudo 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المصادقة ضد الواجهة الخلفية المحمية
تقوم كل نقطة تحقق من GR00T N1.7، بما في ذلك التعديل الدقيق الخاص بك، بتحميل
nvidia/Cosmos-Reason2-2Bالمحمي عند الاستخدام الأول. اطلب الوصول على صفحة النموذج وقم بتسجيل الدخول على الـ pod، وإلا سيفشل التحميل برسالةGatedRepoError.bashuv run huggingface-cli login # or: export HF_TOKEN=<your_token> - 3بدء تشغيل خادم السياسة
وجه
--model-pathإلى دليل نقطة التحقق الخاص بك؛ في هذا المسار، يتجاهل الخادم--modality-config-path، والذي يُقرأ فقط على مسار الإعادة. احذف--model-pathومرر--dataset-pathبالإضافة إلى--execution-horizonبدلاً من ذلك لسياسة إعادة تشغيل (ReplayPolicy) تعيد تشغيل الإجراءات المسجلة، وهي أرخص طريقة لإثبات أن التوصيلات تعمل.bashuv 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نفق المنفذ 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تشغيل عميل الروبوت بجانب المحركات
يحتاج العميل إلى بيئة uv خاصة به: فهو يريد برامج تشغيل الروبوت الخاصة بـ lerobot، وليس حزمة التدريب. يستورد
eval_so100.pyكل من so100_follower و so101_follower و koch_follower، لذا مرر--robot.typeالمطابق لذراعك (يستخدم ملف README الأصلي so101_follower). يجب أن تتطابق مفاتيح الكاميرا مع التدريب: يقرأ المحول بالضبطfrontوwrist، وتبديلها يظهر للسياسة المنظر الخاطئ.bashcd 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، لربط كل الواجهات: على pod بعنوان IP عام، يكون هذا نقطة نهاية استدلال مفتوحة. وتقبل فئة `PolicyServer` `api_token` وتتحقق منه لكل طلب، لكن `run_gr00t_server.py` لا يمرر واحدًا أبدًا، لذا فإن خادم CLI غير مصادق عليه مهما كانت إعداداتك. اربط بـ `127.0.0.1` وقم بإنشاء نفق. تعني `ZMQError: Address already in use` أن المنفذ 5555 مشغول؛ مرر `--port`.
المسار ب: استدلال lerobot غير المتزامن
يحل lerobot مشكلة مختلفة. فبدلاً من حظر الروبوت بينما يفكر النموذج، يستمر العميل في التقدم عبر قائمة الانتظار التي لديه بالفعل بينما يحسب الخادم الجزء التالي. هذا هو تقسيم الإجراءات إلى أجزاء، وهو ما تم تطويره بشكل أكبر، المكدس غير المتزامن الذي تم تقديمه مع SmolVLA. وهو يعمل أيضًا مع نقطة تحقق GR00T.
# 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يبدأ الخادم فارغًا: لا يعرف أي سياسة يقدمها حتى تخبره أول مصافحة من العميل، وهو أمر مناسب على خادم مستأجر. المقبضان اللذان يحددان ما إذا كان الذراع يتحرك بسلاسة هما actions_per_chunk و chunk_size_threshold (تسمي وثائق lerobot الثاني g، نسبةً إلى ورقة SmolVLA)، والقيم الموثقة والقيم المشحونة لا تتفق.
| المعلمة | القيمة في كود lerobot 0.6.1 | ماذا تفعل | ملاحظة |
|---|---|---|---|
| actions_per_chunk | no default, required | الإجراءات المعادة لكل استدعاء | يسرد جدول الوثائق 50؛ حقل dataclass ليس له قيمة افتراضية، لذا يطلب CLI قيمة |
| chunk_size_threshold | 0.5 | نسبة امتلاء قائمة الانتظار التي عندها أو أقل منها يرسل العميل ملاحظة جديدة | يقول جدول الوثائق 0.7؛ ويقول الكود ومثال الوثائق نفسه 0.5 |
| fps | 30 | معدل تحكم العميل، يضبط environment_dt = 1/fps | اخفضه إذا استمرت قائمة الانتظار في التفريغ |
| inference_latency | 1/30 s (33.3 ms) | زمن انتقال الاستدلال المستهدف على الخادم | هدف، وليس قياسًا |
| obs_queue_timeout | 2 s | كم من الوقت ينتظر الخادم على قائمة انتظار الملاحظات | يظهر الارتباط الصاعد البطيء هنا أولاً |
| aggregate_fn_name | weighted_average | كيف يتم مزج مناطق الأجزاء المتداخلة | 0.3 قديم + 0.7 جديد؛ يتم شحن latest_only و average و conservative أيضًا. السجل هو AGGREGATE_FUNCTIONS في configs.py، وليس robot_client.py كما تدعي الوثائق |
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.
الحساب الذي يقرر ما إذا كان اتصالك سريعًا بما يكفي
يتجاهل الناس هذا ثم يقضون يومًا في . يستغرق الأمر دقيقتين وهو حاسم دائمًا تقريبًا.
يصف قاموس الملاحظات المعلق في eval_so100.py من NVIDIA ما يتم إرساله عبر الشبكة: مصفوفتان بحجم (480, 640, 3) من نوع uint8، وستة أرقام عائمة للمفاصل، وسلسلة نصية للغة. هذا يعني 921,600 بايت لكل إطار، و1,843,200 بايت لكاميرتين، أي حوالي 14.7 ميجابت، ولا تقوم أي من المكدسات بضغطها بصيغة JPEG. الجزء الذي يعود هو بضع عشرات من الخطوات من 6 أرقام عائمة. سرعة الرفع لديك هي التي تحدد كل شيء، وليس سرعة التنزيل.
| عرض النطاق الترددي للرفع | الوقت اللازم لدفع ملاحظة واحدة (14.7 ميجابت) | الحكم لذراع يعمل بسرعة 30 إطارًا في الثانية |
|---|---|---|
| 10 Mbit/s, typical home upload | ~1.47 s | غير قابل للاستخدام. يتوقف الذراع بين كل جزء. |
| 25 Mbit/s | ~0.59 s | التقاط ووضع بطيء فقط، مع أفق تنفيذ طويل. |
| 50 Mbit/s | ~0.29 s | قابل للعمل للمهام المتعمدة. |
| 100 Mbit/s | ~0.15 s | جيد للالتقاط والوضع، وملحوظ في الحركة السريعة. |
| 1 Gbit/s fibre or datacentre | ~0.015 s | يصبح النموذج هو عنق الزجاجة بدلاً من ذلك. |
الميزانية التي يجب أن تلتزم بها
عميل GR00T SO-100 متزامن: يستدعي policy.get_action(obs)، وينفذ أول action_horizon خطوة من الكتلة بمعدل 30 إطارًا في الثانية، ثم يستدعي مرة أخرى. حجم الكتلة والأفق أرقام مختلفة: يوصي دليل نشر NVIDIA بحجم كتلة إجراء يبلغ 16، و32 على الأقل عند دمجه مع التقطيع في الوقت الفعلي، بينما يشحن eval_so100.py أفق تنفيذ يبلغ 8. ثماني خطوات بمعدل 30 إطارًا في الثانية تعادل 267 مللي ثانية من الحركة لكل استدعاء، ويجب أن يتناسب كل شيء آخر داخل ذلك.
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زيادة الأفق هو الحل المباشر وليس مجانيًا: يتصرف الذراع بناءً على ملاحظة أصبحت قديمة الآن. الحل المبدئي هو التقطيع في الوقت الفعلي (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احصل على زمن الذهاب والإياب الخام
ضد البود، وليس شبكة توصيل المحتوى (CDN). راقب الانحراف بنفس دقة المتوسط: التذبذب (jitter) هو ما يجعل الذراع يتلعثم، وليس متوسط زمن الاستجابة.
bashping -c 50 <pod-host> # the mdev column is the number that predicts stutter - 2قِس سرعة الرفع المتوفرة لديك، لا تلك التي تدفع مقابلها
سرعة الرفع السكنية عادة ما تكون جزءًا من سرعة التنزيل، وهي الرقم المذكور في جدول النطاق الترددي أعلاه.
bash# on the pod iperf3 -s # on the robot machine, -R omitted so this measures upload iperf3 -c <pod-host> -t 30 - 3اقرأ سجل زمن الاستجابة الخاص بالعميل
يسجل عميل الروبوت lerobot زمن الاستجابة من الخادم إلى العميل ووقت إلغاء التسلسل لكل جزء. على المسار B، لا تحتاج إلى أي أدوات خارجية.
textReceived action chunk for step #240 | Latest action: #232 | Incoming actions: 240:289 | Network latency (server->client): 187.44ms | Deserialization time: 3.10ms - 4راقب استنزاف قائمة انتظار الإجراءات
مرر
--debug_visualize_queue_size=Trueوسيقوم العميل برسم حجم قائمة الانتظار في وقت التشغيل. إذا وصل إلى الصفر بشكل متكرر، فهذا يعني أنك تجاوزت الميزانية: قم بتخفيض معدل الإطارات (fps)، أو زيادة `actions_per_chunk`، أو زيادة `chunk_size_threshold` بحيث يتم إرسال الملاحظات بشكل متكرر.bashpython -m lerobot.async_inference.robot_client \ ... \ --debug_visualize_queue_size=True
ما هي الفوائد الحقيقية للاستدلال عن بعد
- يمكنك تقييم سياسة بمعاملات 3 مليار على أجهزة حقيقية دون امتلاك بطاقة تكلف أكثر من الذراع.
- يتم استئجار وحدة معالجة الرسوميات بالساعة، لذا فإن نقطة تحقق فاشلة تكلف بضعة دولارات.
- يبقى جانب الروبوت صغيرًا: برامج تشغيل lerobot، كاميرتان، منفذ تسلسلي، ويمكنك تبديل نقاط التحقق دون لمسه.
- الملاحظات غير المضغوطة تهيمن على تكلفة النقل، وسرعة الرفع المنزلية هي القيد الأساسي.
- الارتعاش (Jitter) يضر أكثر من زمن الاستجابة (Latency): اتصال بمتوسط 40 مللي ثانية مع ارتفاعات إلى 300 مللي ثانية يتسبب في تقطع، بينما اتصال ثابت بـ 120 مللي ثانية لا يفعل ذلك.
- المهام التفاعلية السريعة لا تنجو من رحلة الذهاب والإياب في أي أفق.
- يتم شحن كلا الخادمين غير مصادق عليهما بصيغة سطر الأوامر (CLI)، لذا فإن عمل النفق يقع على عاتقك.
- الاتصال المقطوع في منتصف الكتلة يترك الذراع في حالة تنفيذ إجراء قديم. أضف نظام مراقبة (watchdog) خاص بك على جانب الروبوت.
| المهمة | هل يعمل عبر الإنترنت العام؟ | السبب |
|---|---|---|
| التقاط جسم ثابت ووضعه في سلة | نعم | لا شيء يتحرك بين الملاحظة والإجراء. |
| تكدس الكتل بوتيرة متعمدة | نعم، عند action_horizon 16 أو أكثر | تتراكم الأخطاء ببطء كافٍ لإصلاحها في الكتلة التالية. |
| فتح درج، إدخال جسم | عادةً | غني بالاتصال ولكنه بطيء. راقب التوقف والانطلاق عند الاتصال. |
| تتبع جسم متحرك | لا | تتصرف السياسة بناءً على ملاحظة عمرها من 300 مللي ثانية إلى 1 ثانية. |
| الإمساك، الموازنة، أو التعافي من الانزلاق | لا | نافذة التصحيح أقصر من رحلة ذهاب وإياب واحدة. |
| حلقة مغلقة متزامنة بتردد 30 هرتز | لا | الميزانية هي 33 مللي ثانية من البداية إلى النهاية. حتى الشبكة المحلية (LAN) تواجه صعوبة. |
إذا تعثر تشغيل عن بعد في نفس النقطة في كل حلقة، فمن المحتمل أن الشبكة ليست السبب. السياسة التي تتردد عند نفس زاوية المفصل في كل مرة عادة ما تكون مشكلة بيانات؛ راجع صفحات أوضاع الفشل، على وجه الخصوص سياسة تعمل فقط في إعداد واحد و الخسارة تنخفض لكن السياسة لا تفعل شيئًا.
القيام بذلك بنفسك مقابل القيام بذلك على AY-Robots
- استأجر وحدة معالجة رسوميات (GPU) من سوق فوري وانتظر توفر ذاكرة وصول عشوائي للفيديو (VRAM) كافية بسعر يناسبك.
- ثبّت CUDA، وuv، وffmpeg torchcodec الذي يقبله، ومكدس GR00T مع الوحدات الفرعية.
- اطلب الوصول إلى العمود الفقري المقيد `nvidia/Cosmos-Reason2-2B` وضع رمزًا مميزًا على الـ pod.
- اسحب نقطة التحقق الخاصة بك إلى الـ pod.
- ابدأ تشغيل الخادم على الواجهة المحلية (loopback)، ثم أنشئ نفق SSH من جهاز الروبوت.
- ثبّت بيئة ثانية على جهاز الروبوت للعميل والمشغلات.
- طابق مفاتيح الكاميرا، وأسماء المفاصل، وتعليمات اللغة مع ما رأته نقطة التحقق.
- راقب الـ pod. تشغيل A100 منسية طوال الليل يكلف أكثر من التجربة.
فاتورة وحدة معالجة الرسوميات (GPU) لا تتوقف عندما يتوقف الروبوت. معظم الأموال المفقودة على الاستدلال عن بعد تذهب إلى خادم ظل يعمل بعد أن غادر الجميع. اضبط منبهًا، أو أتمتة عملية الإغلاق.
- اختر السياسة المدربة التي تريد تشغيلها.
- `/api/inference/pod` يقوم بالتوفير التلقائي لـ pod وحدة معالجة رسوميات (GPU) سحابي يخدم تلك السياسة.
- يتحدث عميل الروبوت المحلي إلى نقطة النهاية هذه. نقاط التحقق الأساسية هي خاصة بالبائعين: `nvidia/GR00T-N1.7-3B`، `nvidia/GR00T-N1.5-3B`، `lerobot/pi05_base`. ACT ليس لديها أي منها.
- تحمل الـ pods مراقبًا للخمول وتدمر نفسها بعد فترة خمول، لذلك لا يستمر أي شيء في الفوترة بصمت.
- تتوفر نفس العمليات من طرفية ولعملاء الذكاء الاصطناعي، بحيث يمكن برمجة الحلقة.
التوفير التلقائي يزيل عمل الإعداد وفاتورة الـ pod المنسية، وليس الفيزياء. لا يزال الاستدلال يجب أن يكون بجانب المحركات المؤازرة للمهام السريعة: حلقة التحكم تتراوح من 20 إلى 485 مللي ثانية لكل خطوة عمل اعتمادًا على النموذج، والرحلات ذهابًا وإيابًا عبر الإنترنت العام بالإضافة إلى ذلك تحول السياسة العاملة إلى سياسة مترددة.
- دليل العميل للجانب المحلي من الاتصال
- شغّل سياستك الأولى للدليل التفصيلي
- CLI وخادم MCP للنسخة المبرمجة
- وثائق الأمان

تكلفة جلسة الاستدلال عن بعد
رقمان يهمان: السعر بالساعة للبطاقة، ومدة تركها تعمل. الأول منشور؛ والثاني يفاجئ الناس.
| البطاقة | سحابة مجتمع Runpod | سحابة Runpod الآمنة | مناسب لـ |
|---|---|---|---|
| A100 PCIe 80 GB | 1.19 USD/h | 1.39 USD/h | GR00T N1.7, GR00T N1.5, Pi0.5 |
| A100 SXM 80 GB | 1.39 USD/h | 1.59 USD/h | نفس الشيء، أسرع قليلاً |
| H100 PCIe 80 GB | 1.99 USD/h | 2.89 USD/h | الفئة الأسرع؛ رقم NVIDIA البالغ 11.7 هرتز هو لبطاقة H100 80GB HBM3 |
| L40S 48 GB | 0.79 USD/h | 0.99 USD/h | للاستدلال فقط، فوق الحد الأدنى 16 جيجابايت |
| RTX 4090 24 GB | 0.34 USD/h | 0.74 USD/h | SmolVLA, 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 جيجابايت، من 1 إلى 3 دولارات أمريكية لـ SmolVLA أو ACT. تتفوق جلسة الاستدلال على تشغيل التدريب من حيث التكلفة فقط إذا أوقفتها، وهذا هو الغرض من مراقب الخمول. انظر وثائق الفوترة و صفحة التسعير.

إذا كنت تفضل عدم وجود الشبكة في الحلقة
يحل الاستدلال عن بعد مشكلة في الأجهزة ويخلق مشكلة زمن انتقال. أحيانًا يكون الحل الأفضل هو سياسة تتناسب مع الأجهزة المتوفرة لديك.
- ACT، حوالي 80 مليون معلمة و20 مللي ثانية لكل خطوة إجراء، 50 حلقة كحد أدنى، أي بطاقة 24 جيجابايت. في إعداد مهمة واحدة متكررة، غالبًا ما يتفوق على نموذج 3 مليار معلمة عن بعد، لأنه لا ينتظر حزمة أبدًا.
- SmolVLA، حوالي 450 مليون معلمة و245 مللي ثانية لكل خطوة إجراء، 30 حلقة كحد أدنى. يحتفظ بتكييف اللغة الذي يفتقر إليه ACT، وتضعه وثائق lerobot عند حوالي 2 جيجابايت في وقت الاستدلال مقابل حوالي 14 جيجابايت لـ PI0.
- ACT vs GR00T N1.7 للنصف المتعلق بالدقة من المقايضة.
هناك أيضًا مسار وسطي: التدريب في السحابة، والتقييم محليًا. الضبط الدقيق يحتاج إلى بطاقة 80 جيجابايت ولا يهتم بزمن الانتقال، لذا فإن تدريب GR00T N1.7 على SO-100 عن بعد أمر غير مثير للجدل. حلقة التقييم فقط هي التي لديها قيد زمني حقيقي؛ وثائق التدريب ومصفوفة النموذج والذراع تغطي هذا النصف.
لا توجد ذراع على المكتب بعد؟
قم بقيادة SO-100 حقيقي في المتصفح بدون تسجيل، قارن السياسات الخمس القابلة للتدريب بأرقام زمن الانتقال الحقيقية الخاصة بها، أو استأجر وحدة معالجة رسوميات (GPU) وقم بتدريب واحدة. ثلاث طرق للبدء، لا تتطلب أي منها أجهزة لا تملكها.
جربها بدون أجهزةالأسئلة الشائعة
هل يمكنني تشغيل GR00T N1.7 على Raspberry Pi إذا كانت وحدة معالجة الرسوميات (GPU) بعيدة؟▾
نعم، هذا هو الغرض من تقسيم العميل والخادم. يقوم Pi بتشغيل برامج تشغيل lerobot، ويقرأ كاميرتين وناقلًا تسلسليًا، ويرسل الملاحظات إلى خادم السياسة؛ ولا يقوم أبدًا بتحميل النموذج. ينتقل القيد من ذاكرة الفيديو (VRAM) إلى عرض النطاق الترددي للتحميل: إطاران RGB غير مضغوطين بحجم 640x480 يبلغ حجمهما 1,843,200 بايت لكل استدعاء، ولا تقوم أي من المكدسات بضغطها.
ما مقدار التأخير الذي تضيفه الشبكة فعليًا؟▾
وقت الذهاب والإياب بالإضافة إلى وقت نقل الملاحظات. وقت النقل هو 14.7 Mbit مقسومًا على عرض النطاق الترددي للتحميل لديك: حوالي 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 بتخزين البيانات (pickles data) عبر قناة gRPC غير آمنة، وهو ما يمثل CVE-2026-25874. اربط بـ loopback واستخدم نفق SSH.
هل يؤدي ترقية lerobot إلى إصلاح CVE-2026-25874؟▾
ليس اعتبارًا من 23 August 2026. يسرد سجل CVE أن LeRobot حتى الإصدار 0.5.1 متأثر، ويشحن PyPI الإصدار 0.6.1، لكن طلب السحب الذي من شأنه إزالة pickle من مسار العمل غير المتزامن لا يزال مفتوحًا، ولا يزال policy_server.py في الفرع الرئيسي يستدعي pickle.loads على بيانات الطلب. تعامل مع عزل الشبكة كإجراء تخفيف، وليس ترقية إصدار، وافترض أن العميل من جانب الروبوت مشمول أيضًا.
هل يمكنني استخدام عميل 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
- NVIDIA Isaac-GR00T: مستودع N1.7 وملف README (حد أدنى للاستدلال 16 جيجابايت، تثبيت، بنية Cosmos-Reason2-2B الخلفية المحمية، قيود FFmpeg)
- run_gr00t_server.py: واجهة سطر الأوامر لخادم سياسة GR00T، الإعدادات الافتراضية لـ ServerConfig (المضيف 0.0.0.0، المنفذ 5555) ومسار ReplayPolicy
- server_client.py: PolicyServer و PolicyClient، حدود allow_pickle=False لـ MsgSerializer، api_token، timeout_ms
- eval_so100.py: عميل سياسة SO-100، الإعدادات الافتراضية لـ EvalConfig وحلقة التحكم المتزامنة
- مثال Isaac-GR00T SO100/SO101: تحويل مجموعة البيانات، الضبط الدقيق وأوامر التقييم ذات الحلقة المغلقة
- دليل نشر Isaac-GR00T في العالم الحقيقي: الميزانية المتزامنة 33 مللي ثانية، التوقف والانطلاق، حجم كتلة الحركة، حالة RTC
- توصية أجهزة Isaac-GR00T: تردد الاستدلال لكل وحدة معالجة رسوميات والحد الأدنى 10 هرتز
- دليل نشر واستدلال Isaac-GR00T: نتائج معيار زمن الاستجابة لكل مكون
- LeRobot: برنامج تعليمي للاستدلال غير المتزامن (PolicyServer, RobotClient, جدول المعلمات الموثق)
- lerobot async_inference/configs.py: الإعدادات الافتراضية لـ PolicyServerConfig و RobotClientConfig، سجل AGGREGATE_FUNCTIONS
- lerobot async_inference/policy_server.py: pickle.loads على بيانات الطلب، add_insecure_port، أسماء استدعاءات gRPC
- lerobot robot_client.py: نقل gRPC، تسلسل pickle، تسجيل زمن الاستجابة
- CVE-2026-25874: تنفيذ تعليمات برمجية عن بعد غير آمنة لـ LeRobot عبر gRPC، متأثرة حتى الإصدار 0.5.1
- Black, Galliker و Levine، التنفيذ في الوقت الفعلي لسياسات تدفق تقسيم الإجراءات (تقسيم في الوقت الفعلي)
- تسعير Runpod GPU: أسعار السحابة المجتمعية والآمنة بالساعة لـ A100, H100, L40S و RTX 4090
Sources
- NVIDIA Isaac-GR00T: N1.7 repository and README (16 GB inference floor, install, gated Cosmos-Reason2-2B backbone, FFmpeg constraint)
- run_gr00t_server.py: the GR00T policy server CLI, ServerConfig defaults (host 0.0.0.0, port 5555) and the ReplayPolicy path
- server_client.py: PolicyServer and PolicyClient, MsgSerializer's allow_pickle=False boundary, api_token, timeout_ms
- eval_so100.py: the SO-100 policy client, EvalConfig defaults and the synchronous control loop
- Isaac-GR00T SO100/SO101 example: dataset conversion, finetune and closed-loop eval commands
- Isaac-GR00T Real-World Deployment Guide: the 33 ms synchronous budget, stop-and-go, action chunk size, RTC status
- Isaac-GR00T Hardware Recommendation: inference frequency per GPU and the 10 Hz minimum
- Isaac-GR00T Deployment and Inference Guide: per-component latency benchmark results
- LeRobot: Asynchronous Inference tutorial (PolicyServer, RobotClient, the documented parameter table)
- lerobot async_inference/configs.py: PolicyServerConfig and RobotClientConfig defaults, AGGREGATE_FUNCTIONS registry
- lerobot async_inference/policy_server.py: pickle.loads on request data, add_insecure_port, the gRPC call names
- lerobot robot_client.py: gRPC transport, pickle serialization, latency logging
- CVE-2026-25874: LeRobot unsafe deserialization remote code execution via gRPC, affected through 0.5.1
- Black, Galliker and Levine, Real-Time Execution of Action Chunking Flow Policies (real-time chunking)
- Runpod GPU pricing: community and secure cloud hourly rates for A100, H100, L40S and RTX 4090
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started