
Ваша роботизована машина не має графічного процесора. Розмістіть сервер політик GR00T на орендованому хмарному графічному процесорі, передавайте фрагменти дій до маніпулятора і дізнайтеся, скільки саме коштує вам мережа.
Raspberry Pi достатньо, щоб керувати через послідовну шину та отримувати кадри з двох USB-камер. Цього недостатньо для запуску тримільярдного параметра : README від NVIDIA вказує, що інференс GR00T N1.7 вимагає однієї GPU з 16 ГБ або більше VRAM. Щоб побачити, що робить ваш доналаштований чекпоінт на руці без покупки карти, розмістіть політику на орендованому хмарному GPU, залиште робочий цикл робота на машині з USB-портами та надсилайте спостереження та фрагменти дій через мережу.
Це працює, це не безкоштовно, і ціна нерівномірно розподілена між завданнями. Нижче: власний сервер політик NVIDIA, асинхронний стек lerobot, арифметика, яка заздалегідь визначає, чи достатньо швидкий ваш вихідний канал, і маршрут платформи. Усе це перевірено на основній гілці Isaac-GR00T (N1.7 GA) та lerobot 0.6.1 станом на 23 серпня 2026 року.
Що потрібно знати
- •GR00T N1.7, GR00T N1.5 та Pi0.5 — це моделі приблизно з 3 мільярдами параметрів. Жодна з них не поміщається на контролері робота без дискретного GPU.
- •Isaac-GR00T та lerobot постачаються з розділенням на клієнт-сервер. Вам не потрібно писати транспорт.
- •Спостереження домінують у вартості передачі даних, а не дії: два нестиснуті кадри RGB 640x480 становлять 1 843 200 байт, близько 14.7 Мбіт за виклик, і жоден стек їх не стискає.
- •AY-Robots вказує від 20 до 485 мс на крок дії залежно від моделі. Час передачі даних через Інтернет додається до цього.
- •Віддалений інференс підходить для повільних операцій типу «взяти-покласти», а не для швидкого реактивного руху. Довший горизонт виконання виграє час і коштує свіжості спостережень.
- •Жоден із серверів не є безпечним на публічній IP-адресі в тому вигляді, в якому він постачається, а lerobot містить непатчену RCE. Тунелюйте його.
Чому політика не поміститься на машині робота
Дві з п'яти політик AY-Robots, які можна навчити, працюють на карті робочої станції, три — ні. стовпець нижче вказано для кожного кроку дії, і це число, яке конкурує з часом оберту вашої мережі.
| Політика | Параметри | Висновок за крок дії | Рівень GPU для навчання | Мін. епізодів | Формат набору даних |
|---|---|---|---|---|---|
| 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 on 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 PolicyServer | lerobot async inference | |
|---|---|---|
| Точка входу | 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 supported by the class, not passed by the CLI | none |
| Таймаут клієнта | 15000 ms (PolicyClient timeout_ms) | 2 s observation queue timeout |
| Модель виконання | синхронна: блокувати, потім виконувати фрагмент | асинхронна: виконувати, поки обчислюється наступний фрагмент |
Рядок серіалізації має більше значення, ніж здається. GR00T's MsgSerializer відмовляється від корисних навантажень ndarray типу object-dtype в обох напрямках, оскільки msgpack_numpy інакше передав би їх до pickle. lerobot натомість використовує pickle: policy_server.py викликає pickle.loads для даних запиту, robot_client.py використовує pickle для спостереження, яке він надсилає. Це прийнятно в довіреній локальній мережі, але неприйнятно, якщо порт стає доступним з інтернету.
Маршрут A: Власний сервер політик 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 постачаються зі стандартною інсталяцією. Пастка на свіжому образі пода: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при першому використанні. Запитайте доступ на сторінці моделі та увійдіть на под, інакше завантаження завершиться помилкою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, прив'язуючи кожен інтерфейс: на поді з публічною 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 (документація lerobot називає другу g, на честь статті SmolVLA), і задокументовані значення та фактичні значення не збігаються.
| Параметр | Значення в коді lerobot 0.6.1 | Що він робить | Примітка |
|---|---|---|---|
| actions_per_chunk | без значення за замовчуванням, обов'язково | Дії, що повертаються за виклик | Таблиця документації вказує 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 old + 0.7 new; 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 FPS |
|---|---|---|
| 10 Мбіт/с, типова домашня швидкість вивантаження | ~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 мс руху за виклик, і все інше має вписатися в цей час.
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), яке обчислює наступний чанк, поки виконується поточний, заморожує дії, які гарантовано будуть виконані, і доповнює решту; стаття про 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 ms (11.7 Hz) у PyTorch eager, 48.6 ms (20.6 Hz) з torch.compile, 27.9 ms (35.9 Hz) з повним конвеєром TensorRT. L40 у eager режимі займає 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Прочитайте власний журнал затримки клієнта
Клієнт робота 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 мільярдами параметрів на реальному обладнанні, не володіючи картою, яка коштує дорожче за руку.
- GPU орендується погодинно, тому невдала контрольна точка коштує кілька доларів.
- Сторона робота залишається невеликою: драйвери lerobot, дві камери, послідовний порт, і ви міняєте контрольні точки, не торкаючись її.
- Нестиснені спостереження домінують у вартості передачі даних, а домашня швидкість завантаження є обмежувальним фактором.
- Джиттер шкодить більше, ніж затримка: з'єднання із середньою затримкою 40 мс і піками до 300 мс заїкається там, де стабільне з'єднання 120 мс працює безперебійно.
- Швидкі реактивні завдання не витримують повного циклу передачі даних на будь-якому горизонті.
- Обидва сервери постачаються без автентифікації у формі CLI, тому робота з тунелюванням лягає на вас.
- Перерване з'єднання посередині фрагмента залишає руку з застарілою дією. Додайте власний сторожовий таймер на стороні робота.
| Завдання | Працює через публічний інтернет? | Чому |
|---|---|---|
| Вибрати статичний об'єкт, помістити його в контейнер | Так | Нічого не рухається між спостереженням та дією. |
| Складати блоки в розміреному темпі | Так, при action_horizon 16 або більше | Помилки накопичуються досить повільно, щоб виправити їх у наступному фрагменті. |
| Відкрити шухляду, вставити об'єкт | Зазвичай | Багато контактів, але повільно. Слідкуйте за зупинками та рухом при контакті. |
| Слідувати за рухомим об'єктом | Ні | Політика діє на основі спостереження віком від 300 мс до 1 с. |
| Ловити, балансувати або відновлюватися після ковзання | Ні | Вікно корекції коротше одного повного циклу передачі даних. |
| Синхронний замкнутий цикл 30 Гц | Ні | Бюджет становить 33 мс від початку до кінця. Навіть локальна мережа має труднощі. |
Якщо віддалений запуск заїкається в одній і тій же точці кожного епізоду, мережа, ймовірно, не є причиною. Політика, яка щоразу вагається на одному й тому ж куті суглоба, зазвичай є проблемою даних; дивіться сторінки режимів відмов, зокрема політику, яка працює лише в одній конфігурації та втрати падають, але політика нічого не робить.
Робити це самостійно проти робити це на AY-Robots
- Орендуйте GPU на спотовому ринку та дочекайтеся достатнього обсягу VRAM за прийнятною для вас ціною.
- Встановіть CUDA, uv, ffmpeg, який підтримує torchcodec, та стек GR00T із субмодулями.
- Запитайте доступ до закритої магістралі `nvidia/Cosmos-Reason2-2B` і розмістіть токен на поді.
- Завантажте ваш чекпоінт на под.
- Запустіть сервер на loopback, потім створіть SSH-тунель з робот-машини.
- Встановіть друге середовище на робот-машині для клієнта та драйверів.
- Узгодьте ключі камери, назви суглобів та мовну інструкцію з тим, що бачив чекпоінт.
- Слідкуйте за подом. Забутий A100, що працює всю ніч, коштує дорожче, ніж експеримент.
Рахунок за GPU не припиняє зростати, коли робот зупиняється. Більшість грошей, втрачених на віддаленому виведенні, йде на сервер, який залишався увімкненим після того, як усі пішли. Встановіть будильник або автоматизуйте вимкнення.
- Виберіть навчену політику, яку ви хочете запустити.
/api/inference/podавтоматично надає хмарний GPU-под, який обслуговує цю політику.- Локальний робот-клієнт спілкується з цією кінцевою точкою. Базові чекпоінти належать самим постачальникам:
nvidia/GR00T-N1.7-3B,nvidia/GR00T-N1.5-3B,lerobot/pi05_base. ACT не має жодного. - Поди мають сторожовий таймер простою і знищуються після періоду бездіяльності, тому ніщо не продовжує виставляти рахунки мовчки.
- Ті ж операції доступні з терміналу та для AI-агентів, тому цикл можна скриптувати.
Автоматичне надання ресурсів усуває роботу з налаштування та рахунок за забутий под, але не фізику. Виведення все ще має знаходитися поруч із сервоприводами для швидких завдань: цикл керування становить від 20 до 485 ms на крок дії залежно від моделі, а кругові поїздки через public-internet на додаток до цього перетворюють робочу політику на нерішучу.
- Посібник клієнта для локальної сторони з'єднання
- Запустіть свою першу політику для покрокового керівництва
- CLI та сервер MCP для скриптованої версії
- Документація з безпеки

Скільки коштує віддалена сесія інференсу
Важливі два показники: погодинна ставка картки та час, протягом якого ви її використовуєте. Перший опублікований; другий дивує людей.
| Карта | Runpod community cloud | Runpod secure cloud | Підходить для |
|---|---|---|---|
| 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 USD за годину на рівні A100 або H100, приблизно від 4 до 12 USD за запуск GR00T або Pi0.5; від 2 до 5 годин за 0.30 до 0.60 USD за годину на рівні 24 ГБ, від 1 до 3 USD для SmolVLA або ACT. Сесія висновків перевершує тренувальний запуск за вартістю лише тоді, якщо ви її зупините, для чого й призначений сторожовий таймер простою. Дивіться документацію з виставлення рахунків та сторінку цін.

Якщо ви не бажаєте, щоб мережа була в циклі
Віддалений висновок вирішує проблему з обладнанням і створює проблему затримки. Іноді кращою відповіддю є політика, яка відповідає наявному у вас обладнанню.
- ACT, приблизно 80 млн параметрів і 20 мс на крок дії, мінімум 50 епізодів, будь-яка карта на 24 ГБ. У повторюваній однозадачній конфігурації він часто перевершує віддалену модель 3 B, оскільки ніколи не чекає на пакет.
- 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, якщо графічний процесор віддалений?▾
Так, для цього і існує розділення клієнт-сервер. Pi запускає драйвери lerobot, зчитує дві камери та послідовну шину, і надсилає спостереження на сервер політик; він ніколи не завантажує модель. Обмеження переходить від VRAM до пропускної здатності завантаження: два нестиснуті кадри RGB 640x480 становлять 1 843 200 байт за виклик, і жоден стек їх не стискає.
Скільки затримки насправді додає мережа?▾
Час туди-назад плюс час передачі спостережень. Час передачі становить 14.7 Мбіт, поділені на вашу пропускну здатність завантаження: приблизно 147 мс на каналі 100 Мбіт/с, 1.47 с на каналі 10 Мбіт/с. Обидва додаються до власного часу висновку моделі, який AY-Robots вказує як 152 мс для GR00T N1.7 та 485 мс для Pi0.5. Вимірюйте за допомогою ping та iperf3 проти пода, а не сервера тесту швидкості.
Чи достатньо віддаленого висновку для реального завдання?▾
Для повільного, обережного захоплення та розміщення — так. Для будь-чого реактивного — ні. Посібник з розгортання NVIDIA встановлює вимогу синхронного однокрокового виконання приблизно в 33 мс від початку до кінця при 30 FPS, і зазначає, що захоплення, мережа, висновок та постобробка регулярно перевищують цей показник без залучення інтернету.
Який порт використовують сервери і чи безпечно його відкривати?▾
PolicyServer Isaac-GR00T за замовчуванням використовує порт 5555 через ZeroMQ і прив'язується до 0.0.0.0 у своєму CLI. lerobot за замовчуванням використовує порт 8080 через gRPC і прив'язується до localhost. Жоден з них не є безпечним для відкриття: клас GR00T підтримує api_token, але run_gr00t_server.py ніколи його не передає, а lerobot серіалізує дані через незахищений канал gRPC, що є CVE-2026-25874. Прив'яжіться до loopback і використовуйте SSH-тунель.
Чи виправляє оновлення lerobot CVE-2026-25874?▾
Станом на 23 серпня 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 МБ має досягти графічного процесора в іншій країні та повернутися до того, як рука вичерпає дії. Зробіть розрахунки, перш ніж щось орендувати, оберіть завдання, яке толерує застаріле спостереження, і збільште горизонт виконання, замість того, щоб сподіватися на покращення зв'язку.
Якщо ви ще не записали набір даних, запишіть свій перший набір даних та посібник з налаштування SO-100 є першочерговими, а формат набору даних LeRobot запис пояснює, що записує реєстратор. Довідкова інформація міститься в моделях "зір-мова-дія" та роботі з політиками зіставлення потоків; запис арени посилається на джерело для кожного показника бенчмарку.
Sources
- NVIDIA Isaac-GR00T: репозиторій N1.7 та README (мінімальний обсяг пам'яті для висновку 16 ГБ, встановлення, закритий бекбон Cosmos-Reason2-2B, обмеження FFmpeg)
- run_gr00t_server.py: CLI сервера політик 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: частота висновку на GPU та мінімум 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 включно
- Блек, Галлікер та Левін, Виконання політик потоку з розбиттям дій у реальному часі (розбиття на блоки в реальному часі)
- Ціни на GPU Runpod: погодинні тарифи спільноти та безпечної хмари для 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