
Ваша роботизированная машина не имеет GPU. Разместите сервер политик GR00T на арендованном облачном GPU, передавайте фрагменты действий на манипулятор и точно узнайте, во что вам обходится сеть.
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 обучено во время дообучения | 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 или любая карта на 24 ГБ | 30 | LeRobot v3.0 |
| ACT | ~80 M | 20 ms | RTX 4090 или любая карта на 24 ГБ | 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-сервер, построенный на асинхронном выводе. Оба принимают контрольную точку. Список поддерживаемых политик 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 поддерживается классом, не передается через CLI | none |
| Таймаут клиента | 15000 мс (PolicyClient timeout_ms) | таймаут очереди наблюдений 2 с |
| Модель выполнения | синхронная: блокировка, затем выполнение фрагмента | асинхронная: выполнение, пока вычисляется следующий фрагмент |
Строка сериализации имеет большее значение, чем кажется. GR00T's MsgSerializer отклоняет полезные данные ndarray с типом объекта в обоих направлениях, поскольку msgpack_numpy в противном случае передал бы их в pickle. lerobot вместо этого использует pickle: policy_server.py вызывает pickle.loads для данных запроса, robot_client.py сериализует наблюдение, которое он отправляет. Защитимо в доверенной локальной сети, незащитимо, как только порт становится доступным из интернета.
Маршрут 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 или mesh-сеть в стиле 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 code | Что делает | Примечание |
|---|---|---|---|
| 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 старого + 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 August 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 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 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Увеличение горизонта — это грубое и не бесплатное решение: рука действует на основе уже устаревшего наблюдения. Принципиальное решение — это чанкинг в реальном времени (real-time chunking, 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 мс (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 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 их нет.
- Поды оснащены сторожевым таймером простоя и самоуничтожаются после периода бездействия, поэтому ничего не продолжает незаметно выставлять счета.
- Те же операции доступны из терминала и для ИИ-агентов, поэтому цикл можно скриптовать.
Автоматическое выделение ресурсов устраняет работу по настройке и счета за забытые поды, но не физику. Инференс все еще должен находиться рядом с сервоприводами для быстрых задач: цикл управления составляет от 20 до 485 ms на шаг действия в зависимости от модели, а задержки публичного интернета поверх этого превращают работающую политику в нерешительную.
- Руководство клиента для локальной стороны соединения
- Запуск вашей первой политики для пошагового руководства
- CLI и сервер MCP для скриптовой версии
- Документация по безопасности

Стоимость сеанса удаленного вывода
Важны два показателя: почасовая ставка карты и время ее работы. Первый показатель опубликован; второй часто удивляет пользователей.
| Карта | Облако Runpod Community | Защищенное облако 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 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 ГБ и не заботится о задержке, поэтому удаленно является бесспорным. Только цикл оценки имеет ограничение реального времени; и охватывают эту половину.
Еще нет манипулятора на столе?
Управляйте настоящим 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 по отношению к поду, а не к серверу для проверки скорости.
Достаточно ли удаленного инференса для реальной задачи?▾
Для медленных, обдуманных операций типа «взять и положить» — да. Для чего-либо реактивного — нет. Руководство по развертыванию NVIDIA устанавливает требование к синхронному одношаговому выполнению примерно в 33 ms от начала до конца при 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 August 2026 — нет. Запись CVE указывает LeRobot до версии 0.5.1 как затронутую, а PyPI поставляет 0.6.1, но запрос на слияние, который удалил бы pickle из асинхронного конвейера, все еще открыт, и policy_server.py в main по-прежнему вызывает 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 в другой стране и вернуться до того, как у манипулятора закончатся действия. Выполните расчеты, прежде чем что-либо арендовать, выберите задачу, которая допускает устаревшее наблюдение, и увеличьте горизонт выполнения, вместо того чтобы надеяться на улучшение связи.
Если вы еще не записали набор данных, запишите свой первый набор данных и руководство по настройке 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