Страница AY-Robots try: три способа начать работу, не владея роботом, включая аренду GPU для вывода политик
GR00T N1.7Удаленный выводОблачный GPULeRobotSO-100Задержка

Запуск вывода GR00T без локального GPU

AY-Robots ResearchAugust 23, 202619 мин чтения

Ваша роботизированная машина не имеет 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 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5~3 B165 msA100 80 GB or H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5~3 B, PaliGemma backbone485 msA100 80 GB or H100 80 GB50LeRobot v3.0
SmolVLA~450 M245 msRTX 4090 или любая карта на 24 ГБ30LeRobot v3.0
ACT~80 M20 msRTX 4090 или любая карта на 24 ГБ50LeRobot v3.0
Страница политик AY-Robots, сравнивающая пять обучаемых политик по параметрам, уровню GPU, задержке вывода и минимальному количеству эпизодов
Те же пять строк на странице /policies. Столбец задержки определяет, выживет ли политика при сетевом переходе.

Воспринимайте это как решение, а не как мелочь. со скоростью 20 мс на шаг работает на роботе, и вы больше никогда об этом не думаете. со скоростью 485 мс тратит треть секунды, прежде чем пакет покинет ваше здание. и добавляют сторону точности.

У ACT нет базовой модели

GR00T N1.7, GR00T N1.5 и Pi0.5 начинаются с контрольной точки поставщика (nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B, lerobot/pi05_base). ACT не существует, пока вы не обучите его для своей собственной задачи, поэтому нечего обслуживать удаленно, пока не будет выполнена задача обучения. См. ACT 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 PolicyServerlerobot async inference
Точка входаgr00t/eval/run_gr00t_server.pypython -m lerobot.async_inference.policy_server
ТранспортZeroMQ REQ/REPgRPC, add_insecure_port / insecure_channel
Сериализацияmsgpack + msgpack_numpy, allow_pickle=False enforcedpickle.dumps / pickle.loads, marked # nosec
Порт по умолчанию55558080
Привязка по умолчанию0.0.0.0, все интерфейсыlocalhost
Аутентификацияapi_token поддерживается классом, не передается через CLInone
Таймаут клиента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. 1
    Установка GR00T на арендованной GPU-машине

    Подмодули обязательны, и git-lfs должен быть установлен до клонирования, иначе файлы parquet в demo_data будут получены как указатели. flash-attn и TensorRT поставляются с установкой по умолчанию. Подвох на свежем образе пода: torchcodec 0.8.0 — это единственный поддерживаемый видео-бэкенд, и он загружает только FFmpeg версий от 4 до 7. Ubuntu 25.10 и 26.04 поставляются с FFmpeg 8, поэтому GR00T завершается ошибкой Could not load libtorchcodec. Установите FFmpeg версии ниже 8 и добавьте его библиотеки в LD_LIBRARY_PATH.

    bash
    sudo apt install git-lfs && git lfs install
    curl -LsSf https://astral.sh/uv/install.sh | sh
    sudo apt-get update && sudo apt-get install -y ffmpeg
    
    git clone --recurse-submodules https://github.com/NVIDIA/Isaac-GR00T
    cd Isaac-GR00T
    uv sync --python 3.12
    uv run python -c "import gr00t; print('GR00T installed successfully')"
  2. 2
    Аутентификация для закрытой базовой модели

    Каждый чекпоинт GR00T N1.7, включая ваш собственный дообученный, при первом использовании загружает закрытую модель nvidia/Cosmos-Reason2-2B. Запросите доступ на странице модели и войдите в систему на поде, иначе загрузка завершится ошибкой GatedRepoError.

    bash
    uv run huggingface-cli login
    # or:  export HF_TOKEN=<your_token>
  3. 3
    Запуск сервера политик

    Укажите --model-path на каталог вашего чекпоинта; по этому пути сервер игнорирует --modality-config-path, который считывается только на пути воспроизведения. Опустите --model-path и вместо этого передайте --dataset-path плюс --execution-horizon для ReplayPolicy, которая воспроизводит записанные действия, что является самым дешевым способом проверить работоспособность подключения.

    bash
    uv run python gr00t/eval/run_gr00t_server.py \
      --model-path /workspace/so100_finetune/checkpoint-10000 \
      --embodiment-tag NEW_EMBODIMENT \
      --device cuda:0 \
      --host 127.0.0.1 --port 5555
  4. 4
    Туннелирование порта 5555 на машину робота

    Привяжитесь к loopback, как указано выше, и перенесите порт через SSH или 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. 5
    Запуск клиента робота рядом с сервоприводами

    Клиенту требуется собственное окружение uv: ему нужны драйверы робота lerobot, а не стек для обучения. eval_so100.py импортирует so100_follower, so101_follower и koch_follower, поэтому передайте --robot.type, соответствующий вашей руке (исходный README использует so101_follower). Ключи камер должны соответствовать обучению: адаптер считывает ровно front и wrist, и их перестановка покажет политике неправильный вид.

    bash
    cd gr00t/eval/real_robot/SO100
    uv sync
    uv pip install --no-deps -e ../../../../
    
    uv run --no-sync python eval_so100.py \
      --robot.type=so100_follower \
      --robot.port=/dev/ttyACM0 \
      --robot.id=orange_follower \
      --robot.cameras="{ front: {type: opencv, index_or_path: 6, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 2, width: 640, height: 480, fps: 30}}" \
      --policy_host=127.0.0.1 \
      --policy_port=5555 \
      --lang_instruction="pick up the red block and put it in the bin"
Два значения по умолчанию, которые вас подведут

run_gr00t_server.py по умолчанию использует --host 0.0.0.0, привязывая каждый интерфейс: на поде с публичным 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.

bash
# GPU machine
pip install -e ".[async]"
python -m lerobot.async_inference.policy_server \
     --host=127.0.0.1 \
     --port=8080

# robot machine, after tunnelling 8080
python -m lerobot.async_inference.robot_client \
    --server_address=127.0.0.1:8080 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=follower_so100 \
    --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
    --task="pick up the red block and put it in the bin" \
    --policy_type=groot \
    --pretrained_name_or_path=<user>/my_groot_finetune \
    --policy_device=cuda \
    --actions_per_chunk=50 \
    --chunk_size_threshold=0.5 \
    --debug_visualize_queue_size=True
Сервер политики на GPU, клиент робота на машине с USB-портами

Сервер запускается пустым: он не знает, какую политику обслуживает, пока первый хендшейк клиента не сообщит ему об этом, что удобно на арендованном поде. Две настройки, которые определяют, плавно ли движется рука, это actions_per_chunk и chunk_size_threshold (документация lerobot называет вторую g, в честь статьи SmolVLA), и задокументированные значения не совпадают с фактическими.

ПараметрЗначение в lerobot 0.6.1 codeЧто делаетПримечание
actions_per_chunkнет значения по умолчанию, обязательноДействия, возвращаемые за вызовВ таблице документации указано 50; поле dataclass не имеет значения по умолчанию, поэтому CLI требует значение
chunk_size_threshold0.5Коэффициент заполнения очереди, при котором или ниже которого клиент отправляет новое наблюдениеВ таблице документации указано 0.7; код и собственный пример документации указывают 0.5
fps30Частота управления клиентом, устанавливает environment_dt = 1/fpsУменьшите, если очередь постоянно опустошается
inference_latency1/30 s (33.3 ms)Целевая задержка вывода на сервереЦель, а не измерение
obs_queue_timeout2 sКак долго сервер ожидает в очереди наблюденийМедленный восходящий канал проявляется здесь в первую очередь
aggregate_fn_nameweighted_averageКак смешиваются перекрывающиеся области чанков0.3 старого + 0.7 нового; также поставляются latest_only, average и conservative. Реестр находится в AGGREGATE_FUNCTIONS в configs.py, а не в robot_client.py, как утверждается в документации
Сервер политик lerobot имеет неустраненную RCE

CVE-2026-25874 — это неаутентифицированное удаленное выполнение кода в асинхронном конвейере вывода lerobot: pickle.loads() на данных, полученных по неаутентифицированному каналу gRPC без TLS, доступное через вызовы SendPolicyInstructions, SendObservations и GetActions. CWE-502, базовая оценка CVSS 3.1 9.8 от NVD, базовая оценка 4.0 9.3 от назначающей CNA. Запись указывает, что LeRobot до 0.5.1 включительно затронут, и называет как сервер политик, так и клиент робота, поэтому машина рядом с вашей рукой находится в зоне риска. Обновление не является решением: запись ссылается на вышестоящую проблему 3047 и патч, PR 3048, который заменяет pickle на safetensors плюс JSON, и по состоянию на 23 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 мс движения за вызов, и все остальное должно уложиться в это время.

text
observation upload   14.7 Mbit / 100 Mbit/s   = 147 ms
network round trip                            =  30 ms
model inference (AY-Robots figure, N1.7)      = 152 ms
action chunk return + deserialize             =  ~2 ms
                                                -------
total per call                                  331 ms

budget at action_horizon = 8   ->  267 ms   FAIL, arm pauses ~64 ms per chunk
budget at action_horizon = 16  ->  533 ms   fits, with headroom
budget at action_horizon = 32  -> 1067 ms   fits, observations now ~1 s stale
Рабочий пример: восходящий канал 100 Мбит/с, задержка туда-обратно 30 мс, GR00T N1.7

Увеличение горизонта — это грубое и не бесплатное решение: рука действует на основе уже устаревшего наблюдения. Принципиальное решение — это чанкинг в реальном времени (real-time chunking, RTC), который вычисляет следующий чанк, пока выполняется текущий, замораживает действия, гарантированно подлежащие выполнению, и дорисовывает остальное; в статье по 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. 1
    Получите необработанное время кругового пути

    Против пода, а не CDN. Следите за отклонением так же внимательно, как и за средним значением: дрожание вызывает задержку движения манипулятора, а не средняя задержка.

    bash
    ping -c 50 <pod-host>
    # the mdev column is the number that predicts stutter
  2. 2
    Измерьте имеющуюся пропускную способность восходящего канала, а не ту, за которую вы платите

    Скорость загрузки в жилых сетях обычно составляет долю от скорости скачивания, и это число указано в таблице пропускной способности выше.

    bash
    # on the pod
    iperf3 -s
    
    # on the robot machine, -R omitted so this measures upload
    iperf3 -c <pod-host> -t 30
  3. 3
    Прочитайте собственный лог задержки клиента

    Клиент робота lerobot регистрирует задержку от сервера к клиенту и время десериализации для каждого чанка. На маршруте B вам не нужны внешние инструменты.

    text
    Received action chunk for step #240 | Latest action: #232 |
      Incoming actions: 240:289 |
      Network latency (server->client): 187.44ms |
      Deserialization time: 3.10ms
  4. 4
    Наблюдайте за опустошением очереди действий

    Передайте --debug_visualize_queue_size=True, и клиент будет строить график размера очереди во время выполнения. Если она неоднократно достигает нуля, значит, вы вышли за пределы бюджета: уменьшите fps, увеличьте actions_per_chunk или увеличьте chunk_size_threshold, чтобы наблюдения отправлялись чаще.

    bash
    python -m lerobot.async_inference.robot_client \
        ... \
        --debug_visualize_queue_size=True

Для чего на самом деле подходит удаленный вывод

Политика на арендованном GPU, манипулятор на вашем столе
Преимущества
  • Вы можете оценить политику с 3 миллиардами параметров на реальном оборудовании, не владея картой, которая стоит дороже манипулятора.
  • GPU арендуется почасово, поэтому неудачная контрольная точка стоит пару долларов.
  • Сторона робота остается небольшой: драйверы lerobot, две камеры, последовательный порт, и вы меняете контрольные точки, не прикасаясь к ней.
Компромиссы
  • Несжатые наблюдения доминируют в стоимости передачи данных, а пропускная способность домашнего интернета является ограничивающим фактором.
  • Джиттер вредит больше, чем задержка: соединение со средним значением 40 мс и пиками до 300 мс прерывается, тогда как стабильное соединение в 120 мс — нет.
  • Быстрые реактивные задачи не выдерживают кругового пути на любом горизонте.
  • Оба сервера поставляются без аутентификации в форме CLI, поэтому работа по туннелированию ложится на вас.
  • Обрыв соединения в середине блока оставляет манипулятор с устаревшим действием. Добавьте свой собственный сторожевой таймер на стороне робота.
ЗадачаРаботает через публичный интернет?Почему
Выбрать статический объект, поместить его в контейнерДаНичего не движется между наблюдением и действием.
Складывать блоки в размеренном темпеДа, при action_horizon 16 или болееОшибки накапливаются достаточно медленно, чтобы их можно было исправить в следующем блоке.
Открыть ящик, вставить объектОбычноМногоконтактно, но медленно. Следите за остановками и движениями при контакте.
Следовать за движущимся объектомНетПолитика действует на основе наблюдения, которому от 300 мс до 1 с.
Поймать, сбалансировать или восстановиться после проскальзыванияНетОкно коррекции короче одного кругового пути.
Синхронный замкнутый цикл 30 ГцНетБюджет составляет 33 мс от начала до конца. Даже локальная сеть испытывает трудности.

Если удаленный запуск прерывается в одной и той же точке в каждом эпизоде, сеть, вероятно, не является причиной. Политика, колеблющаяся при одном и том же угле сустава каждый раз, обычно является проблемой данных; см. страницы режимов отказа, в частности политика, которая работает только в одной конфигурации и потери падают, но политика ничего не делает.

Сделать это самому против сделать это на AY-Robots

  1. Арендуйте GPU на спотовом рынке и дождитесь достаточного объема VRAM по устраивающей вас цене.
  2. Установите CUDA, uv, ffmpeg, который принимает torchcodec, и стек GR00T с подмодулями.
  3. Запросите доступ к закрытой магистрали `nvidia/Cosmos-Reason2-2B` и разместите токен на поде.
  4. Загрузите ваш чекпоинт на под.
  5. Запустите сервер на loopback, затем создайте SSH-туннель с робота.
  6. Установите второе окружение на роботе для клиента и драйверов.
  7. Сопоставьте ключи камер, названия суставов и языковую инструкцию с тем, что видел чекпоинт.
  8. Следите за подом. Забытый A100, работающий всю ночь, стоит дороже, чем эксперимент.
Простаивающий под — это реальная стоимость

Счет за GPU не перестает расти, когда робот останавливается. Большая часть денег, потерянных на удаленном инференсе, уходит на сервер, который остался включенным после того, как все ушли. Установите будильник или автоматизируйте отключение.

Страница сервера MCP AY-Robots, перечисляющая операции платформы, представленные как инструменты для ИИ-агентов
Страница MCP: операции по выделению ресурсов и инференсу, представленные как инструменты, которые может вызывать агент.

Стоимость сеанса удаленного вывода

Важны два показателя: почасовая ставка карты и время ее работы. Первый показатель опубликован; второй часто удивляет пользователей.

КартаОблако Runpod CommunityЗащищенное облако RunpodПодходит для
A100 PCIe 80 GB1.19 USD/h1.39 USD/hGR00T N1.7, GR00T N1.5, Pi0.5
A100 SXM 80 GB1.39 USD/h1.59 USD/hТо же самое, немного быстрее
H100 PCIe 80 GB1.99 USD/h2.89 USD/hСамый быстрый уровень; показатель NVIDIA 11.7 Гц для H100 80GB HBM3
L40S 48 GB0.79 USD/h0.99 USD/hТолько инференс, выше порога в 16 ГБ
RTX 4090 24 GB0.34 USD/h0.74 USD/hSmolVLA, ACT

Эти тарифы были взяты со страницы цен Runpod 23 августа 2026 года, и спотовые рынки меняются. AY-Robots вместо этого предлагает полную сессию: от 3 до 6 часов по 1.20–2.00 USD в час на уровне A100 или H100, около 4–12 USD за запуск GR00T или Pi0.5; от 2 до 5 часов по 0.30–0.60 USD в час на уровне 24 ГБ, 1–3 USD за SmolVLA или ACT. Сессия инференса превосходит сессию обучения по стоимости только в том случае, если вы ее остановите, для чего и предназначен сторожевой таймер простоя. См. документацию по оплате и страницу с ценами.

Таблица стоимости AY-Robots, показывающая, какой GPU нужен каждой политике, типичное время выполнения и цена, а также количество эпизодов до того, как политика станет полезной
Таблица стоимости на /try: какая карта нужна каждой модели и сколько обычно стоит запуск.

Если вы предпочитаете не использовать сеть в цикле

Удаленный вывод решает проблему с оборудованием и создает проблему с задержкой. Иногда лучшим решением является политика, соответствующая имеющемуся у вас оборудованию.

  • 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

Sources

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started