صفحة تجربة AY-Robots: ثلاث طرق للبدء بدون امتلاك روبوت، بما في ذلك استئجار وحدة معالجة رسوميات لاستدلال السياسة
GR00T N1.7الاستدلال عن بعدوحدة معالجة رسوميات سحابيةLeRobotSO-100الكمون

تشغيل استدلال GR00T بدون وحدة معالجة رسوميات محلية

AY-Robots ResearchAugust 23, 202619 دقيقة قراءة

جهاز الروبوت الخاص بك لا يحتوي على وحدة معالجة رسوميات. ضع خادم سياسة 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-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 تقارن السياسات الخمس القابلة للتدريب حسب المعلمات، فئة وحدة معالجة الرسوميات، زمن استجابة الاستدلال، والحد الأدنى للحلقات
الصفوف الخمسة نفسها على /policies. يحدد عمود زمن الاستجابة ما إذا كانت السياسة تنجو من قفزة شبكة.

اقرأ ذلك كقرار، وليس معلومات تافهة. بسرعة 20 مللي ثانية لكل خطوة يعمل على آلة الروبوت ولن تفكر فيه مرة أخرى. بسرعة 485 مللي ثانية يكون قد استغرق ثلث ثانية قبل أن تغادر الحزمة مبناك. و تضيف جانب الدقة.

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 مبني حول الاستدلال غير المتزامن. كلاهما يقبل 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.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, marked # nosec
المنفذ الافتراضي55558080
الربط الافتراضي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. 1
    تثبيت GR00T على صندوق GPU المستأجر

    الوحدات الفرعية مطلوبة، ويجب أن يكون git-lfs موجودًا قبل الاستنساخ وإلا ستصل ملفات parquet في demo_data كمؤشرات. يأتي flash-attn و TensorRT مع التثبيت الافتراضي. المشكلة في صورة pod جديدة: torchcodec 0.8.0 هو الواجهة الخلفية الوحيدة للفيديو المدعومة ويقوم بتحميل FFmpeg من الإصدار 4 إلى 7 فقط. تأتي Ubuntu 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
    المصادقة ضد الواجهة الخلفية المحمية

    تقوم كل نقطة تحقق من GR00T N1.7، بما في ذلك التعديل الدقيق الخاص بك، بتحميل 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، لربط كل الواجهات: على 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.

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 قديم + 0.7 جديد؛ يتم شحن 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.

الحساب الذي يقرر ما إذا كان اتصالك سريعًا بما يكفي

يتجاهل الناس هذا ثم يقضون يومًا في . يستغرق الأمر دقيقتين وهو حاسم دائمًا تقريبًا.

يصف قاموس الملاحظات المعلق في 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 مللي ثانية من الحركة لكل استدعاء، ويجب أن يتناسب كل شيء آخر داخل ذلك.

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 ميجابت/ثانية، زمن انتقال ذهابًا وإيابًا 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). راقب الانحراف بنفس دقة المتوسط: التذبذب (jitter) هو ما يجعل الذراع يتلعثم، وليس متوسط زمن الاستجابة.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    قِس سرعة الرفع المتوفرة لديك، لا تلك التي تدفع مقابلها

    سرعة الرفع السكنية عادة ما تكون جزءًا من سرعة التنزيل، وهي الرقم المذكور في جدول النطاق الترددي أعلاه.

    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

ما هي الفوائد الحقيقية للاستدلال عن بعد

السياسة على وحدة معالجة رسوميات مستأجرة، الذراع على مكتبك
المزايا
  • يمكنك تقييم سياسة بمعاملات 3 مليار على أجهزة حقيقية دون امتلاك بطاقة تكلف أكثر من الذراع.
  • يتم استئجار وحدة معالجة الرسوميات بالساعة، لذا فإن نقطة تحقق فاشلة تكلف بضعة دولارات.
  • يبقى جانب الروبوت صغيرًا: برامج تشغيل lerobot، كاميرتان، منفذ تسلسلي، ويمكنك تبديل نقاط التحقق دون لمسه.
المقايضات
  • الملاحظات غير المضغوطة تهيمن على تكلفة النقل، وسرعة الرفع المنزلية هي القيد الأساسي.
  • الارتعاش (Jitter) يضر أكثر من زمن الاستجابة (Latency): اتصال بمتوسط 40 مللي ثانية مع ارتفاعات إلى 300 مللي ثانية يتسبب في تقطع، بينما اتصال ثابت بـ 120 مللي ثانية لا يفعل ذلك.
  • المهام التفاعلية السريعة لا تنجو من رحلة الذهاب والإياب في أي أفق.
  • يتم شحن كلا الخادمين غير مصادق عليهما بصيغة سطر الأوامر (CLI)، لذا فإن عمل النفق يقع على عاتقك.
  • الاتصال المقطوع في منتصف الكتلة يترك الذراع في حالة تنفيذ إجراء قديم. أضف نظام مراقبة (watchdog) خاص بك على جانب الروبوت.
المهمةهل يعمل عبر الإنترنت العام؟السبب
التقاط جسم ثابت ووضعه في سلةنعملا شيء يتحرك بين الملاحظة والإجراء.
تكدس الكتل بوتيرة متعمدةنعم، عند action_horizon 16 أو أكثرتتراكم الأخطاء ببطء كافٍ لإصلاحها في الكتلة التالية.
فتح درج، إدخال جسمعادةًغني بالاتصال ولكنه بطيء. راقب التوقف والانطلاق عند الاتصال.
تتبع جسم متحركلاتتصرف السياسة بناءً على ملاحظة عمرها من 300 مللي ثانية إلى 1 ثانية.
الإمساك، الموازنة، أو التعافي من الانزلاقلانافذة التصحيح أقصر من رحلة ذهاب وإياب واحدة.
حلقة مغلقة متزامنة بتردد 30 هرتزلاالميزانية هي 33 مللي ثانية من البداية إلى النهاية. حتى الشبكة المحلية (LAN) تواجه صعوبة.

إذا تعثر تشغيل عن بعد في نفس النقطة في كل حلقة، فمن المحتمل أن الشبكة ليست السبب. السياسة التي تتردد عند نفس زاوية المفصل في كل مرة عادة ما تكون مشكلة بيانات؛ راجع صفحات أوضاع الفشل، على وجه الخصوص سياسة تعمل فقط في إعداد واحد و الخسارة تنخفض لكن السياسة لا تفعل شيئًا.

القيام بذلك بنفسك مقابل القيام بذلك على AY-Robots

  1. استأجر وحدة معالجة رسوميات (GPU) من سوق فوري وانتظر توفر ذاكرة وصول عشوائي للفيديو (VRAM) كافية بسعر يناسبك.
  2. ثبّت CUDA، وuv، وffmpeg torchcodec الذي يقبله، ومكدس GR00T مع الوحدات الفرعية.
  3. اطلب الوصول إلى العمود الفقري المقيد `nvidia/Cosmos-Reason2-2B` وضع رمزًا مميزًا على الـ pod.
  4. اسحب نقطة التحقق الخاصة بك إلى الـ pod.
  5. ابدأ تشغيل الخادم على الواجهة المحلية (loopback)، ثم أنشئ نفق SSH من جهاز الروبوت.
  6. ثبّت بيئة ثانية على جهاز الروبوت للعميل والمشغلات.
  7. طابق مفاتيح الكاميرا، وأسماء المفاصل، وتعليمات اللغة مع ما رأته نقطة التحقق.
  8. راقب الـ pod. تشغيل A100 منسية طوال الليل يكلف أكثر من التجربة.
الـ pod الخامل هو التكلفة الحقيقية

فاتورة وحدة معالجة الرسوميات (GPU) لا تتوقف عندما يتوقف الروبوت. معظم الأموال المفقودة على الاستدلال عن بعد تذهب إلى خادم ظل يعمل بعد أن غادر الجميع. اضبط منبهًا، أو أتمتة عملية الإغلاق.

صفحة خادم AY-Robots MCP التي تسرد عمليات المنصة المكشوفة كأدوات لعملاء الذكاء الاصطناعي
صفحة 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الفئة الأسرع؛ رقم NVIDIA البالغ 11.7 هرتز هو لبطاقة H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hللاستدلال فقط، فوق الحد الأدنى 16 جيجابايت
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 جيجابايت، من 1 إلى 3 دولارات أمريكية لـ SmolVLA أو ACT. تتفوق جلسة الاستدلال على تشغيل التدريب من حيث التكلفة فقط إذا أوقفتها، وهذا هو الغرض من مراقب الخمول. انظر وثائق الفوترة و صفحة التسعير.

جدول تكلفة AY-Robots الذي يوضح أي وحدة معالجة رسوميات (GPU) تحتاجها كل سياسة، ووقت التشغيل والسعر النموذجيين، وعدد الحلقات قبل أن تصبح السياسة مفيدة
جدول التكلفة على /try: البطاقة التي يحتاجها كل نموذج وما هي التكلفة النموذجية للتشغيل.

إذا كنت تفضل عدم وجود الشبكة في الحلقة

يحل الاستدلال عن بعد مشكلة في الأجهزة ويخلق مشكلة زمن انتقال. أحيانًا يكون الحل الأفضل هو سياسة تتناسب مع الأجهزة المتوفرة لديك.

  • 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

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started