
आपकी रोबोट मशीन में कोई GPU नहीं है। GR00T पॉलिसी सर्वर को किराए के क्लाउड GPU पर रखें, आर्म को एक्शन चंक्स स्ट्रीम करें, और जानें कि नेटवर्क पर आपको कितना खर्च आता है।
एक रास्पबेरी पाई एक को एक सीरियल बस पर चलाने और दो USB कैमरों से फ़्रेम खींचने के लिए पर्याप्त है। यह तीन अरब पैरामीटर वाले : NVIDIA का README GR00T N1.7 अनुमान को 16 GB या उससे अधिक VRAM वाले एक GPU पर रखता है। यह देखने के लिए कि आपका फाइन-ट्यून किया गया चेकपॉइंट बिना कार्ड खरीदे आर्म पर क्या करता है, पॉलिसी को किराए के क्लाउड GPU पर रखें, रोबोट लूप को USB पोर्ट वाली मशीन पर रखें, और नेटवर्क पर ऑब्ज़र्वेशन और एक्शन चंक्स भेजें।
यह काम करता है, यह मुफ़्त नहीं है, और कीमत सभी कार्यों में समान रूप से वितरित नहीं है। नीचे: NVIDIA का अपना पॉलिसी सर्वर, lerobot का एसिंक स्टैक, वह अंकगणित जो पहले से बताता है कि आपका अपलिंक पर्याप्त तेज़ है या नहीं, और प्लेटफ़ॉर्म रूट। यह सब 23 अगस्त 2026 को Isaac-GR00T मुख्य शाखा (N1.7 GA) और lerobot 0.6.1 के विरुद्ध जाँचा गया।
आपको क्या जानने की आवश्यकता है
- •GR00T N1.7, GR00T N1.5 और Pi0.5 मोटे तौर पर 3 अरब पैरामीटर मॉडल हैं। इनमें से कोई भी एक अलग GPU के बिना रोबोट कंट्रोलर पर फिट नहीं होता।
- •Isaac-GR00T और lerobot दोनों क्लाइंट-सर्वर स्प्लिट के साथ आते हैं। आप ट्रांसपोर्ट नहीं लिखते हैं।
- •ऑब्ज़र्वेशन वायर लागत पर हावी होते हैं, एक्शन नहीं: दो असंपीड़ित 640x480 RGB फ़्रेम 1,843,200 बाइट्स होते हैं, प्रति कॉल लगभग 14.7 Mbit, और कोई भी स्टैक उन्हें संपीड़ित नहीं करता।
- •AY-Robots मॉडल के अनुसार प्रति एक्शन स्टेप 20 से 485 ms सूचीबद्ध करता है। इंटरनेट राउंड ट्रिप इसके ऊपर आते हैं।
- •रिमोट अनुमान धीमी पिक-एंड-प्लेस के लिए उपयुक्त है, न कि तेज़ प्रतिक्रियाशील गति के लिए। एक लंबा निष्पादन क्षितिज समय बचाता है और ऑब्ज़र्वेशन की ताज़गी की कीमत चुकाता है।
- •कोई भी सर्वर शिप किए गए सार्वजनिक IP पर सुरक्षित नहीं है, और lerobot में एक अनपैच्ड RCE है। इसे टनल करें।
पॉलिसी रोबोट मशीन पर क्यों फिट नहीं होगी
AY-Robots प्रशिक्षित कर सकने वाली पाँच नीतियों में से दो वर्कस्टेशन कार्ड पर चलती हैं, तीन नहीं। नीचे दिया गया कॉलम प्रति एक्शन स्टेप है, और यह वह संख्या है जो आपके नेटवर्क राउंड ट्रिप के साथ प्रतिस्पर्धा करती है।
| नीति | पैरामीटर्स | प्रति एक्शन स्टेप अनुमान | प्रशिक्षण के लिए GPU टियर | न्यूनतम एपिसोड | डेटासेट प्रारूप |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, फाइन-ट्यूनिंग के दौरान प्रशिक्षित ~40 M | 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 बैकबोन | 485 ms | A100 80 GB or H100 80 GB | 50 | LeRobot v3.0 |
| SmolVLA | ~450 M | 245 ms | RTX 4090 या कोई भी 24 GB कार्ड | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 या कोई भी 24 GB कार्ड | 50 | LeRobot v3.0 |

इसे एक निर्णय के रूप में पढ़ें, न कि सामान्य जानकारी के रूप में। ACT 20 ms प्रति चरण पर रोबोट मशीन पर चलता है और आपको इसके बारे में फिर कभी सोचने की आवश्यकता नहीं होती है। Pi0.5 485 ms पर एक पैकेट आपके भवन से निकलने से पहले एक सेकंड का एक तिहाई हिस्सा खर्च कर चुका होता है। नीति तुलना और GR00T N1.7 vs Pi0.5 सटीकता पक्ष को जोड़ते हैं।
GR00T N1.7, GR00T N1.5 और Pi0.5 एक विक्रेता चेकपॉइंट से शुरू होते हैं (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base)। ACT तब तक मौजूद नहीं होता जब तक आप इसे अपने स्वयं के कार्य पर प्रशिक्षित नहीं करते, इसलिए प्रशिक्षण कार्य चलने तक दूरस्थ रूप से सेवा करने के लिए कुछ भी नहीं होता। देखें SO-100 पर ACT।
दो क्लाइंट-सर्वर स्टैक जो पहले से मौजूद हैं
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, all interfaces | localhost |
| प्रमाणीकरण | क्लास द्वारा समर्थित api_token, CLI द्वारा पास नहीं किया गया | कोई नहीं |
| क्लाइंट टाइमआउट | 15000 ms (PolicyClient timeout_ms) | 2 s ऑब्ज़र्वेशन क्यू टाइमआउट |
| एग्जीक्यूशन मॉडल | सिंक्रोनस: ब्लॉक करें, फिर चंक को निष्पादित करें | एसिंक्रोनस: निष्पादित करें जबकि अगला चंक गणना करता है |
सीरियलाइज़ेशन पंक्ति जितना दिखती है, उससे कहीं ज़्यादा मायने रखती है। GR00T की MsgSerializer दोनों दिशाओं में ऑब्जेक्ट-डटाइप एनडी-एरे पेलोड को अस्वीकार करती है, क्योंकि msgpack_numpy अन्यथा उन्हें पिकल को सौंप देगा। लेरोबोट इसके बजाय पिकल करता है: policy_server.py अनुरोध डेटा पर pickle.loads कॉल करता है, robot_client.py भेजे गए अवलोकन को पिकल करता है। एक विश्वसनीय लैन पर बचाव योग्य, इंटरनेट से पोर्ट के पहुँच योग्य होने पर बचाव योग्य नहीं।
मार्ग A: NVIDIA का अपना GR00T पॉलिसी सर्वर
यह वह मार्ग है जिसे NVIDIA SO-100 और SO-101 हार्डवेयर के लिए दस्तावेज़ित करता है, और यदि आपका चेकपॉइंट examples/finetune.sh से --embodiment-tag NEW_EMBODIMENT के साथ आया है तो इसका उपयोग करें। ये चरण वह जोड़ते हैं जो अपस्ट्रीम README में नहीं है: पोर्ट को दूसरों के सामने उजागर किए बिना रोबोट तक पहुँचाना।
- 1किराए के GPU बॉक्स पर GR00T स्थापित करें
सबमॉड्यूल आवश्यक हैं, और क्लोन से पहले git-lfs मौजूद होना चाहिए अन्यथा
demo_dataमें पारके फ़ाइलें पॉइंटर के रूप में आती हैं। flash-attn और TensorRT डिफ़ॉल्ट इंस्टॉलेशन के साथ आते हैं। एक नए पॉड इमेज पर समस्या:torchcodec0.8.0 एकमात्र समर्थित वीडियो बैकएंड है और केवल FFmpeg 4 से 7 तक लोड करता है। Ubuntu 25.10 और 26.04 FFmpeg 8 के साथ आते हैं, इसलिए GR00TCould 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को लोड करता है। मॉडल पेज पर एक्सेस का अनुरोध करें और पॉड पर लॉग इन करें, अन्यथा लोडिंग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 को रोबोट मशीन तक टनल करें
ऊपर बताए अनुसार लूपबैक से बाइंड करें, और पोर्ट को SSH या वायरगार्ड-शैली के मेश पर ले जाएं। यह एन्क्रिप्शन और प्रमाणीकरण प्रदान करता है जो 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सर्वो के बगल में रोबोट क्लाइंट चलाएँ
क्लाइंट को अपने स्वयं के यूवी वातावरण की आवश्यकता है: इसे लेरोबोट के रोबोट ड्राइवर चाहिए, न कि प्रशिक्षण स्टैक।
eval_so100.pyso100_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 पर सेट होता है, जो हर इंटरफ़ेस को बाइंड करता है: सार्वजनिक IP वाले पॉड पर यह एक खुला अनुमान एंडपॉइंट है। और PolicyServer क्लास एक api_token स्वीकार करती है और इसे प्रति अनुरोध मान्य करती है, लेकिन run_gr00t_server.py कभी भी इसे पास नहीं करता है, इसलिए CLI सर्वर अनप्रमाणीकृत रहता है चाहे आप कुछ भी कॉन्फ़िगर करें। 127.0.0.1 पर बाइंड करें और टनल करें। एक ZMQError: Address already in use का मतलब है कि पोर्ट 5555 उपयोग में है; --port पास करें।
मार्ग B: 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 (लेरोबोट डॉक्स दूसरे को g कहते हैं, स्मोलवीएलए पेपर के बाद), और दस्तावेज़ित मान और शिप किए गए मान सहमत नहीं हैं।
| पैरामीटर | लेरोबोट 0.6.1 कोड में मान | यह क्या करता है | टिप्पणी |
|---|---|---|---|
| actions_per_chunk | no default, required | प्रति कॉल लौटाई गई क्रियाएँ | डॉक्स तालिका में 50 सूचीबद्ध हैं; डेटाक्लास फ़ील्ड का कोई डिफ़ॉल्ट नहीं है, इसलिए सीएलआई एक मान की मांग करता है |
| 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 भी शिप होते हैं। रजिस्ट्री configs.py में AGGREGATE_FUNCTIONS है, न कि robot_client.py जैसा कि डॉक्स दावा करते हैं |
CVE-2026-25874 लेरोबोट की एसिंक इन्फरेंस पाइपलाइन में एक अप्रमाणित रिमोट कोड निष्पादन है: pickle.loads() अप्रमाणित gRPC चैनल पर TLS के बिना प्राप्त डेटा पर, जो SendPolicyInstructions, SendObservations और GetActions कॉल के माध्यम से पहुंच योग्य है। CWE-502, NVD से CVSS 3.1 बेस स्कोर 9.8, असाइनिंग CNA से 4.0 बेस स्कोर 9.3। रिकॉर्ड में LeRobot 0.5.1 तक प्रभावित के रूप में सूचीबद्ध है और नीति सर्वर और रोबोट क्लाइंट दोनों का नाम है, इसलिए आपकी भुजा के बगल वाली मशीन दायरे में है। अपग्रेड करना समाधान नहीं है: रिकॉर्ड अपस्ट्रीम समस्या 3047 और पैच, PR 3048 का हवाला देता है, जो पिकल को सेफटेन्सर्स प्लस JSON से बदलता है, और 23 अगस्त 2026 को दोनों अभी भी खुले हैं। मुख्य पर policy_server.py अभी भी अनुरोध डेटा पर pickle.loads को कॉल करता है जबकि serve() add_insecure_port के साथ बाइंड होता है। लूपबैक से बाइंड करें और कभी भी पोर्ट-फॉरवर्ड 8080 न करें।
वह अंकगणित जो यह तय करता है कि आपका लिंक पर्याप्त तेज़ है या नहीं
लोग इसे छोड़ देते हैं और फिर एक दिन इस पर खर्च करते हैं . इसमें दो मिनट लगते हैं और यह लगभग हमेशा निर्णायक होता है।
NVIDIA के eval_so100.py में टिप्पणी किया गया ऑब्जरवेशन डिक्ट बताता है कि वायर पर क्या जाता है: uint8 में (480, 640, 3) आकार के दो एरे, छह जॉइंट फ्लोट, एक भाषा स्ट्रिंग। यह प्रति फ्रेम 921,600 बाइट्स, दो कैमरों के लिए 1,843,200 बाइट्स, लगभग 14.7 Mbit है, और कोई भी स्टैक इसे JPEG-कंप्रेस नहीं करता है। वापस आने वाला चंक 6 फ्लोट के कुछ दर्जन स्टेप्स का होता है। आपका अपलोड सब कुछ तय करता है, आपका डाउनलोड नहीं।
| अपलोड बैंडविड्थ | एक ऑब्जरवेशन (14.7 Mbit) भेजने का समय | 30 FPS आर्म के लिए निर्णय |
|---|---|---|
| 10 Mbit/s, सामान्य घर का अपलोड | ~1.47 s | अनुपयोगी। आर्म हर चंक के बीच रुक जाती है। |
| 25 Mbit/s | ~0.59 s | केवल धीमा पिक-एंड-प्लेस, लंबी निष्पादन अवधि के साथ। |
| 50 Mbit/s | ~0.29 s | सोचे-समझे कार्यों के लिए व्यावहारिक। |
| 100 Mbit/s | ~0.15 s | पिक-एंड-प्लेस के लिए ठीक, तेज गति पर दिखाई देता है। |
| 1 Gbit/s फाइबर या डेटासेंटर | ~0.015 s | इसके बजाय मॉडल बाधा बन जाता है। |
वह बजट जिसमें आपको फिट होना है
GR00T SO-100 क्लाइंट सिंक्रोनस है: यह कॉल करता है policy.get_action(obs), पहले action_horizon चंक के स्टेप्स को 30 FPS पर निष्पादित करता है, फिर से कॉल करता है। चंक का आकार और होराइजन अलग-अलग संख्याएँ हैं: NVIDIA की डिप्लॉयमेंट गाइड 16 के एक्शन चंक आकार की सिफारिश करती है, रियल-टाइम चंकिंग के साथ संयुक्त होने पर कम से कम 32, जबकि eval_so100.py 8 का निष्पादन होराइजन प्रदान करता है। 30 FPS पर आठ स्टेप्स प्रति कॉल 267 ms की गति है, और बाकी सब कुछ इसके भीतर फिट होना चाहिए।
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होराइजन बढ़ाना एक सीधा समाधान है और यह मुफ्त नहीं है: भुजा अब पुराने अवलोकन पर कार्य करती है। सैद्धांतिक समाधान रियल-टाइम चंकिंग है, जो वर्तमान चंक के चलने के दौरान अगले चंक की गणना करता है, निष्पादित होने की गारंटी वाली क्रियाओं को फ्रीज करता है और बाकी को इनपेंट करता है; RTC पेपर इसे बिना किसी रिट्रेनिंग के इन्फरेंस देरी के प्रति मजबूत बताता है। पहले देखें कि यह कहाँ खड़ा है। NVIDIA RTC को प्रायोगिक मानता है, एक निम्न-स्तरीय मॉडल प्रिमिटिव जो इसके माध्यम से पहुँचा जा सकता है action_head.get_action(..., options={"rtc_overlap_steps": ..., "rtc_frozen_steps": ...}), Gr00tPolicy या सर्वर-क्लाइंट पाथ में वायर्ड नहीं है, जहाँ options अप्रयुक्त है, बिना किसी परीक्षण और बिना किसी उदाहरण के। एक पॉलिसी सर्वर पर आपको एसिंक्रोनस निष्पादन मिलता है, RTC नहीं।
NVIDIA एक कैमरे के साथ 4 डीनोइजिंग स्टेप्स पर GR00T N1.7 का एंड-टू-एंड बेंचमार्क करता है। H100 80GB HBM3 पर: PyTorch ईगर में 85.8 ms (11.7 Hz), torch.compile के साथ 48.6 ms (20.6 Hz), TensorRT फुल पाइपलाइन के साथ 27.9 ms (35.9 Hz)। ईगर मोड में एक L40 को 128.3 ms (7.8 Hz) लगते हैं। NVIDIA 10 Hz को सामान्य मैनिपुलेशन के लिए अनुशंसित न्यूनतम मानता है, और 10 Hz से नीचे केवल धीमी, गैर-प्रतिक्रियाशील कार्यों के लिए उपयुक्त है। ये पुनर्नियोजन दरें हैं: एक 10 Hz पॉलिसी अभी भी एक्शन चंकिंग के माध्यम से 30 FPS भुजा को चला सकती है। एक दूसरा कैमरा आपको गलत दिशा में ले जाता है।
भरोसा करने से पहले इसे मापें
ऊपर दिया गया हर नंबर एक अनुमान है। चार कमांड इसे एक माप में बदल देते हैं, जिसे ऐसे कार्य के लिए पॉड-घंटा समर्पित करने से पहले चलाना उचित है जो कभी काम नहीं करने वाला था।
- 1कच्ची राउंड ट्रिप प्राप्त करें
पॉड के विरुद्ध, CDN के विरुद्ध नहीं। माध्य के साथ-साथ विचलन को भी बारीकी से देखें: जिटर एक आर्म को हकलाता है, औसत विलंबता नहीं।
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क्लाइंट का अपना विलंबता लॉग पढ़ें
लेरोबोट रोबोट क्लाइंट हर चंक के लिए सर्वर-टू-क्लाइंट विलंबता और डीसीरियलाइज़ेशन समय को लॉग करता है। रूट 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 बिलियन पैरामीटर पॉलिसी का वास्तविक हार्डवेयर पर मूल्यांकन कर सकते हैं, बिना किसी ऐसे कार्ड के मालिक हुए जिसकी कीमत आर्म से ज़्यादा हो।
- GPU प्रति घंटे के हिसाब से किराए पर लिया जाता है, इसलिए एक विफल चेकपॉइंट पर कुछ डॉलर का खर्च आता है।
- रोबोट साइड छोटा रहता है: लेरोबोट ड्राइवर, दो कैमरे, एक सीरियल पोर्ट, और आप इसे छुए बिना चेकपॉइंट्स बदल सकते हैं।
- असंपीड़ित अवलोकन वायर लागत पर हावी होते हैं, और आवासीय अपलोड एक बाध्यकारी बाधा है।
- विलंबता से ज़्यादा जिटर नुकसान पहुँचाता है: 40 ms औसत वाला लिंक जिसमें 300 ms तक स्पाइक्स आते हैं, वह अटकता है जबकि एक स्थिर 120 ms वाला लिंक नहीं अटकता।
- तेज़ प्रतिक्रियाशील कार्य किसी भी समय सीमा में राउंड ट्रिप में जीवित नहीं रहते।
- दोनों सर्वर CLI रूप में अप्रमाणित शिप होते हैं, इसलिए टनलिंग का काम आपका है।
- एक चंक के बीच में कनेक्शन टूटने से आर्म एक पुरानी क्रिया को पकड़े रहता है। अपनी खुद की वॉचडॉग रोबोट-साइड जोड़ें।
| कार्य | क्या सार्वजनिक इंटरनेट पर काम करता है? | क्यों |
|---|---|---|
| एक स्थिर वस्तु उठाएँ, उसे बिन में रखें | हाँ | अवलोकन और क्रिया के बीच कुछ भी नहीं हिलता। |
| ब्लॉक को जानबूझकर धीमी गति से स्टैक करें | हाँ, action_horizon 16 या उससे अधिक पर | त्रुटियाँ इतनी धीमी गति से जमा होती हैं कि अगले चंक में ठीक की जा सकें। |
| एक दराज खोलें, एक वस्तु डालें | आमतौर पर | संपर्क-समृद्ध लेकिन धीमा। संपर्क पर रुकने और चलने पर ध्यान दें। |
| एक चलती वस्तु का पीछा करें | नहीं | पॉलिसी 300 ms से 1 s पुराने अवलोकन पर कार्य करती है। |
| पकड़ें, संतुलन बनाएँ, या फिसलने से उबरें | नहीं | सुधार विंडो एक राउंड ट्रिप से छोटी है। |
| एक 30 हर्ट्ज सिंक्रोनस क्लोज्ड लूप | नहीं | बजट एंड-टू-एंड 33 ms है। यहाँ तक कि एक LAN भी संघर्ष करता है। |
यदि एक रिमोट रन हर एपिसोड में एक ही बिंदु पर अटकता है, तो नेटवर्क शायद इसका कारण नहीं है। हर बार एक ही जॉइंट एंगल पर हिचकिचाने वाली पॉलिसी आमतौर पर एक डेटा समस्या होती है; देखें विफलता-मोड पृष्ठ, विशेष रूप से एक पॉलिसी जो केवल एक सेटअप में काम करती है और लॉस गिरता है लेकिन पॉलिसी कुछ नहीं करती।
इसे स्वयं करना बनाम AY-Robots पर करना
- स्पॉट मार्केट पर एक जीपीयू किराए पर लें और अपनी पसंद की कीमत पर पर्याप्त वीआरएएम का इंतजार करें।
- CUDA, uv, एक ffmpeg torchcodec स्वीकार करता है, और सबमॉड्यूल के साथ GR00T स्टैक स्थापित करें।
- गेटेड
nvidia/Cosmos-Reason2-2Bबैकबोन तक पहुंच का अनुरोध करें और पॉड पर एक टोकन डालें। - अपने चेकपॉइंट को पॉड पर खींचें।
- सर्वर को लूपबैक पर शुरू करें, फिर रोबोट मशीन से एक SSH टनल बनाएं।
- क्लाइंट और ड्राइवरों के लिए रोबोट मशीन पर एक दूसरा वातावरण स्थापित करें।
- कैमरा कुंजियों, जॉइंट नामों और भाषा निर्देश को उस चीज़ से मिलाएं जो चेकपॉइंट ने देखी थी।
- पॉड पर नज़र रखें। रात भर चलने वाला एक भूला हुआ A100 प्रयोग से अधिक महंगा पड़ता है।
जब रोबोट रुकता है तो जीपीयू का बिल बंद नहीं होता। रिमोट इन्फरेंस पर खोया गया अधिकांश पैसा उस सर्वर पर जाता है जो सबके चले जाने के बाद भी चालू रहा। एक अलार्म सेट करें, या स्वचालित रूप से बंद करने की व्यवस्था करें।
- वह प्रशिक्षित नीति चुनें जिसे आप चलाना चाहते हैं।
/api/inference/podस्वचालित रूप से एक क्लाउड जीपीयू पॉड प्रदान करता है जो उस नीति को सेवा देता है।- स्थानीय रोबोट क्लाइंट उस एंडपॉइंट से बात करता है। बेस चेकपॉइंट विक्रेताओं के अपने हैं:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base। ACT के पास कोई नहीं है। - पॉड एक निष्क्रिय वॉचडॉग रखते हैं और एक निष्क्रिय अवधि के बाद खुद को नष्ट कर देते हैं, ताकि कुछ भी चुपचाप बिलिंग जारी न रखे।
- वही ऑपरेशन एक टर्मिनल से और एआई एजेंटों के लिए उपलब्ध हैं, ताकि लूप को स्क्रिप्ट किया जा सके।
स्वचालित प्रावधान सेटअप कार्य और भूले हुए पॉड के बिल को हटाता है, भौतिकी को नहीं। तेज़ कार्यों के लिए इन्फरेंस को अभी भी सर्वो के बगल में बैठना पड़ता है: नियंत्रण लूप मॉडल के आधार पर प्रति एक्शन स्टेप 20 से 485 ms है, और इसके ऊपर सार्वजनिक-इंटरनेट राउंड ट्रिप एक काम करने वाली नीति को एक झिझकने वाली नीति में बदल देती है।
- क्लाइंट गाइड कनेक्शन के स्थानीय पक्ष के लिए
- अपनी पहली नीति चलाएं वॉकथ्रू के लिए
- CLI और MCP सर्वर स्क्रिप्टेड संस्करण के लिए
- सुरक्षा दस्तावेज़

एक रिमोट इन्फरेंस सेशन की लागत क्या है
दो संख्याएँ मायने रखती हैं: कार्ड की प्रति घंटा दर, और आप इसे कितनी देर तक चालू रखते हैं। पहली प्रकाशित होती है; दूसरी लोगों को आश्चर्यचकित करती है।
| कार्ड | रनपॉड कम्युनिटी क्लाउड | रनपॉड सिक्योर क्लाउड | इसके लिए उपयुक्त |
|---|---|---|---|
| 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 Hz ईगर आंकड़ा H100 80GB HBM3 के लिए है |
| L40S 48 GB | 0.79 USD/h | 0.99 USD/h | केवल इन्फेरेंस, 16 GB फ्लोर से ऊपर |
| RTX 4090 24 GB | 0.34 USD/h | 0.74 USD/h | SmolVLA, ACT |
ये दरें 23 अगस्त 2026 को रनपॉड के मूल्य निर्धारण पृष्ठ से ली गई थीं, और स्पॉट बाज़ार बदलते रहते हैं। AY-Robots इसके बजाय एक पूरे रन का उद्धरण देता है: A100 या H100 टियर पर 1.20 से 2.00 USD प्रति घंटे की दर से 3 से 6 घंटे, GR00T या Pi0.5 रन के लिए लगभग 4 से 12 USD; 24 GB टियर पर 0.30 से 0.60 USD प्रति घंटे की दर से 2 से 5 घंटे, SmolVLA या ACT के लिए 1 से 3 USD। एक इन्फेरेंस सत्र लागत के मामले में प्रशिक्षण रन से तभी बेहतर होता है जब आप इसे रोकते हैं, जिसके लिए आइडल वॉचडॉग होता है। देखें बिलिंग दस्तावेज़ और मूल्य निर्धारण पृष्ठ.

यदि आप नहीं चाहते कि नेटवर्क लूप में हो
रिमोट इन्फेरेंस हार्डवेयर की समस्या को हल करता है और विलंबता (latency) की समस्या पैदा करता है। कभी-कभी बेहतर जवाब एक ऐसी नीति होती है जो आपके पास मौजूद हार्डवेयर के अनुकूल हो।
- ACT, लगभग 80 M पैरामीटर और प्रति एक्शन स्टेप 20 ms, न्यूनतम 50 एपिसोड, कोई भी 24 GB कार्ड। एक दोहराव वाले एकल-कार्य सेटअप पर यह अक्सर एक रिमोट 3 B मॉडल को हरा देता है, क्योंकि यह कभी भी पैकेट का इंतजार नहीं करता।
- SmolVLA, लगभग 450 M पैरामीटर और प्रति एक्शन स्टेप 245 ms, न्यूनतम 30 एपिसोड। यह भाषा कंडीशनिंग को बरकरार रखता है जिसकी ACT में कमी है, और lerobot डॉक्स इसे इन्फेरेंस समय पर लगभग 2 GB पर रखते हैं, जबकि PI0 के लिए यह लगभग 14 GB है।
- ACT vs GR00T N1.7 व्यापार के सटीकता वाले आधे हिस्से के लिए।
एक मध्य मार्ग भी है: क्लाउड में प्रशिक्षित करें, स्थानीय रूप से मूल्यांकन करें। फाइन-ट्यूनिंग को 80 GB कार्ड की आवश्यकता होती है और उसे विलंबता की परवाह नहीं होती, इसलिए SO-100 पर GR00T N1.7 को दूरस्थ रूप से प्रशिक्षित करना निर्विवाद है। केवल मूल्यांकन लूप में वास्तविक समय की बाधा होती है; प्रशिक्षण दस्तावेज़ और मॉडल-और-आर्म मैट्रिक्स उस आधे हिस्से को कवर करते हैं।
अभी तक डेस्क पर कोई आर्म नहीं है?
बिना साइनअप के ब्राउज़र में एक वास्तविक SO-100 चलाएं, पांच प्रशिक्षित करने योग्य नीतियों की उनकी वास्तविक विलंबता संख्याओं के साथ तुलना करें, या एक GPU किराए पर लें और एक को प्रशिक्षित करें। शुरू करने के तीन तरीके, जिनमें से किसी को भी ऐसे हार्डवेयर की आवश्यकता नहीं है जो आपके पास नहीं है।
बिना हार्डवेयर के इसे आज़माएंअक्सर पूछे जाने वाले प्रश्न
क्या मैं GR00T N1.7 को Raspberry Pi पर चला सकता हूँ यदि GPU दूरस्थ है?▾
हाँ, क्लाइंट-सर्वर विभाजन इसी के लिए है। Pi लेरोबोट ड्राइवर चलाता है, दो कैमरे और एक सीरियल बस पढ़ता है, और ऑब्जरवेशन को पॉलिसी सर्वर पर भेजता है; यह कभी भी मॉडल को लोड नहीं करता। बाधा VRAM से अपलोड बैंडविड्थ पर स्थानांतरित हो जाती है: दो असंपीड़ित 640x480 RGB फ्रेम प्रति कॉल 1,843,200 बाइट्स होते हैं, और कोई भी स्टैक उन्हें संपीड़ित नहीं करता।
नेटवर्क वास्तव में कितनी विलंबता जोड़ता है?▾
राउंड-ट्रिप समय प्लस ऑब्जरवेशन ट्रांसफर समय। ट्रांसफर समय 14.7 Mbit को आपकी अपलोड बैंडविड्थ से विभाजित करने पर मिलता है: 100 Mbit/s लिंक पर लगभग 147 ms, 10 Mbit/s लिंक पर 1.47 s। दोनों मॉडल के अपने इन्फरेंस समय के ऊपर आते हैं, जिसे AY-Robots GR00T N1.7 के लिए 152 ms और Pi0.5 के लिए 485 ms सूचीबद्ध करता है। पॉड के खिलाफ पिंग और iperf3 से मापें, न कि स्पीड-टेस्ट सर्वर से।
क्या दूरस्थ इन्फरेंस एक वास्तविक कार्य के लिए पर्याप्त है?▾
धीमे, जानबूझकर पिक-एंड-प्लेस के लिए, हाँ। किसी भी प्रतिक्रियाशील कार्य के लिए, नहीं। NVIDIA की डिप्लॉयमेंट गाइड सिंक्रोनस सिंगल-स्टेप आवश्यकता को 30 FPS पर एंड-टू-एंड लगभग 33 ms बताती है, और यह नोट करती है कि कैप्चर, नेटवर्क, इन्फरेंस और पोस्ट-प्रोसेसिंग बिना इंटरनेट के भी नियमित रूप से इससे अधिक हो जाते हैं।
सर्वर कौन सा पोर्ट उपयोग करते हैं और क्या इसे खोलना सुरक्षित है?▾
Isaac-GR00T का PolicyServer ZeroMQ पर पोर्ट 5555 पर डिफ़ॉल्ट होता है और अपने CLI में 0.0.0.0 को बाइंड करता है। लेरोबोट gRPC पर पोर्ट 8080 पर डिफ़ॉल्ट होता है और लोकलहोस्ट को बाइंड करता है। दोनों को उजागर करना सुरक्षित नहीं है: GR00T क्लास एक api_token का समर्थन करती है लेकिन run_gr00t_server.py कभी भी एक पास नहीं करता, और लेरोबोट एक असुरक्षित gRPC चैनल पर डेटा को पिक्ल करता है, जो CVE-2026-25874 है। लूपबैक से बाइंड करें और एक SSH टनल का उपयोग करें।
क्या लेरोबोट को अपग्रेड करने से CVE-2026-25874 ठीक हो जाता है?▾
23 अगस्त 2026 तक नहीं। CVE रिकॉर्ड 0.5.1 तक के LeRobot को प्रभावित के रूप में सूचीबद्ध करता है और PyPI 0.6.1 भेजता है, लेकिन पुल रिक्वेस्ट जो एसिंक पाइपलाइन से पिक्ल को हटा देगा, अभी भी खुला है, और मेन पर policy_server.py अभी भी रिक्वेस्ट डेटा पर pickle.loads को कॉल करता है। नेटवर्क आइसोलेशन को शमन के रूप में मानें, न कि वर्जन बंप को, और मान लें कि रोबोट-साइड क्लाइंट भी दायरे में है।
क्या मैं GR00T चेकपॉइंट के साथ लेरोबोट के एसिंक क्लाइंट का उपयोग कर सकता हूँ?▾
हाँ। लेरोबोट 0.6.1 SUPPORTED_POLICIES में groot को act, smolvla, diffusion, tdmpc, vqbet, pi0 और pi05 के साथ सूचीबद्ध करता है, और so100_follower और so101_follower दोनों SUPPORTED_ROBOTS में हैं। --policy_type=groot पास करें और --pretrained_name_or_path को अपने चेकपॉइंट पर इंगित करें। आपको एसिंक्रोनस निष्पादन मिलता है, जिसे GR00T SO-100 उदाहरण लागू नहीं करता है, पिक्ल ट्रांसपोर्ट की कीमत पर।
संक्षिप्त संस्करण
3 B के लिए दूरस्थ इन्फरेंस पॉलिसी एक हल की गई इंजीनियरिंग समस्या है जिसके साथ एक अनसुलझी भौतिकी समस्या जुड़ी हुई है। इंजीनियरिंग दो कमांड और एक SSH टनल है। भौतिकी यह है कि एक 1.8 MB ऑब्जरवेशन को दूसरे देश में एक GPU तक पहुंचना होता है और हाथ के एक्शन खत्म होने से पहले वापस आना होता है। कुछ भी किराए पर लेने से पहले अंकगणित करें, एक ऐसा कार्य चुनें जो बासी ऑब्जरवेशन को सहन करता हो, और लिंक में सुधार की उम्मीद करने के बजाय निष्पादन क्षितिज को बढ़ाएं।
यदि आपने अभी तक कोई डेटासेट रिकॉर्ड नहीं किया है, अपना पहला डेटासेट रिकॉर्ड करें और SO-100 सेटअप गाइड पहले आते हैं, और LeRobot डेटासेट प्रारूप प्रविष्टि बताती है कि रिकॉर्डर क्या लिखता है। पृष्ठभूमि विजन-लैंग्वेज-एक्शन मॉडल और फ्लो-मैचिंग पॉलिसी कार्य में है; अखाड़ा प्रविष्टि प्रत्येक बेंचमार्क संख्या को एक स्रोत से जोड़ता है।
Sources
- NVIDIA Isaac-GR00T: N1.7 रिपॉजिटरी और README (16 GB इन्फरेंस फ्लोर, इंस्टॉल, गेटेड Cosmos-Reason2-2B बैकबोन, FFmpeg बाधा)
- run_gr00t_server.py: GR00T पॉलिसी सर्वर CLI, ServerConfig डिफ़ॉल्ट (होस्ट 0.0.0.0, पोर्ट 5555) और ReplayPolicy पाथ
- server_client.py: PolicyServer और PolicyClient, MsgSerializer की allow_pickle=False बाउंड्री, api_token, timeout_ms
- eval_so100.py: SO-100 पॉलिसी क्लाइंट, EvalConfig डिफ़ॉल्ट और सिंक्रोनस कंट्रोल लूप
- Isaac-GR00T SO100/SO101 उदाहरण: डेटासेट रूपांतरण, फाइन-ट्यून और क्लोज्ड-लूप इवैल्यूएशन कमांड
- Isaac-GR00T रियल-वर्ल्ड डिप्लॉयमेंट गाइड: 33 ms सिंक्रोनस बजट, स्टॉप-एंड-गो, एक्शन चंक साइज, RTC स्थिति
- Isaac-GR00T हार्डवेयर रिकमेंडेशन: प्रति GPU इन्फरेंस फ्रीक्वेंसी और 10 Hz न्यूनतम
- 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 ट्रांसपोर्ट, पिक्ल सीरियलाइज़ेशन, लेटेंसी लॉगिंग
- CVE-2026-25874: LeRobot असुरक्षित डीसीरियलाइज़ेशन gRPC के माध्यम से रिमोट कोड निष्पादन, 0.5.1 तक प्रभावित
- Black, Galliker and Levine, Real-Time Execution of Action Chunking Flow Policies (रियल-टाइम चंकिंग)
- 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