Хакатон, который не просидит в симуляторе
AMD затеяла Open Robotics Hackathon. Это не про презентации и кофе-брейки. Это про железо SO-101, про LeRobot и про то, чтобы за 48 часов заставить робота делать что-то осмысленное. Если вы думали, что робототехника - это удел гигантов вроде NVIDIA с их Isaac или Cosmos, то сейчас самое время доказать обратное. Но готовьтесь: путь от коробки с железом до работающего прототипа будет тернистым.
Главная проблема участников - не алгоритмы, а инфраструктура. 80% времени уйдет на то, чтобы заставить LeRobot видеть вашу видеокарту AMD, а SO-101 - отвечать на команды. Эта статья сэкономит вам эти 80%.
Что в коробке и почему это важно
Вам дадут SO-101 robotics kit. Это не игрушка. Это полноценный встраиваемый компьютер на AMD Ryzen AI с камерами, манипуляторами и датчиками. Плюс доступ к кластерам с MI300X для тренировки моделей. Звучит круто, пока не пытаешься установить PyTorch с поддержкой ROCm.
1 Подготовка окружения: Linux, Python и боль
Забудьте про Windows. Забудьте про macOS. Вам нужен Linux. Ubuntu 22.04 LTS - безопасный выбор. Первое, что сделаете - установите драйверы ROCm. И вот тут начинается веселье.
sudo apt update
sudo apt install wget gnupg2 -y
wget https://repo.radeon.com/amdgpu-install/6.2/ubuntu/jammy/amdgpu-install_6.2.60202-1_all.deb
sudo dpkg -i amdgpu-install_6.2.60202-1_all.deb
sudo amdgpu-install --usecase=rocm,hiplibsdk,mllib --no-dkmsПочему эти флаги? --usecase=rocm ставит основную платформу. hiplibsdk и mllib - для машинного обучения. А --no-dkms потому что с DKMS иногда ломается ядро, и вам не до этого на хакатоне.
После перезагрузки проверьте, что ROCm видит железо: rocm-smi. Если видит - вы счастливчик. Если нет - готовьтесь к долгой отладке. Частая ошибка - неправильные права доступа к /dev/kfd. Решается так: sudo chmod 666 /dev/kfd.
2 Установка LeRobot: не просто pip install
LeRobot - это фреймворк от Hugging Face для Embodied AI. Тот самый, о котором мы писали в обзоре LeRobot v0.4.0. Установка кажется простой:
pip install lerobotНо это установит версию для CPU. Вам же нужна поддержка GPU через ROCm. Значит, сначала ставим PyTorch с правильными флагами:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.2А теперь самое важное: LeRobot зависит от библиотек, которые могут конфликтовать с ROCm. Если упадет ошибка про hipBLAS - не паникуйте. Скорее всего, нужно явно указать путь к библиотекам ROCm:
export LD_LIBRARY_PATH=/opt/rocm/lib:$LD_LIBRARY_PATHПроверяем установку:
import torch
print(torch.cuda.is_available()) # Должно быть True
print(torch.cuda.get_device_name(0)) # Должно показать вашу AMD карту3 Знакомство с SO-101: из коробки в реальность
Распаковываете SO-101. Подключаете питание, Ethernet, камеры. Включаете. По умолчанию на нем уже стоит Ubuntu с предустановленным ROS 2 Humble. Но вам нужно свое окружение. Подключаемся по SSH:
ssh robot@so-101.local # Пароль обычно 'robot'Первое, что делаем - обновляем систему и ставим те же драйверы ROCm, что и на основной машине. Но помните: на SO-101 стоит Ryzen AI - это встроенный NPU, не путать с дискретной графикой. Драйверы для него идут отдельным пакетом.
amd-hiptorch. Установите его: pip install amd-hiptorch. Потом в коде инициализируйте устройство как torch.device("xpu").4 Интеграция: заставляем LeRobot управлять железом
LeRobot по умолчанию работает с симуляторами. Но вам нужен реальный робот. Пишем простой бridge между LeRobot и ROS 2 на SO-101.
import rclpy
from rclpy.node import Node
from lerobot.embodied.policies import DiffusionPolicy # Пример политики
class SO101Bridge(Node):
def __init__(self):
super().__init__('lerobot_bridge')
self.policy = DiffusionPolicy.from_pretrained("lerobot/diffusion_policy_calvin")
# Инициализация подписчиков и издателей ROS 2
# ...
def inference_step(self, observation):
# Преобразование данных с датчиков в формат LeRobot
action = self.policy(observation)
# Отправка действий на исполнительные механизмы SO-101
return actionОсновная сложность - синхронизация потоков данных. Камеры SO-101 выдают 30 FPS, а модель LeRobot может обрабатывать кадры медленнее. Придется либо буферизировать, либо понижать частоту. Не пытайтесь сделать идеально с первого раза. Работающий прототип лучше идеального чертежа.
5 Подготовка проекта для хакатона: что评委 хотят видеть
Жюри хакатона AMD будут смотреть не на чистоту кода, а на работоспособность и оригинальность. Ваш проект должен:
- Использовать LeRobot для решения конкретной задачи (манипуляция, навигация).
- Задействовать возможности железа SO-101 (камеры, NPU Ryzen AI).
- Показывать, что вы понимаете, как работает ROCm и оптимизация под AMD.
Не пытайтесь воспроизвести робота Грин или офисного R2D2. Придумайте что-то свое. Например, сортировку объектов с помощью диффузионной политики LeRobot.
Нюансы, которые сведут с ума
| Ошибка | Причина | Решение |
|---|---|---|
| HIP_ERROR_OUT_OF_MEMORY | Нехватка VRAM на карте AMD | Уменьшите batch size в модели LeRobot. Используйте mixed precision. |
| ROS 2 не видит топики с камер | Не запущены драйверы устройств SO-101 | Запустите sudo systemctl start so101-camera-driver |
| Модель LeRobot работает медленно на Ryzen AI | Модель не оптимизирована под XDNA | Конвертируйте веса в формат ONNX и используйте компилятор Ryzen AI. |
И главный нюанс: время. У вас его мало. Не тратьте час на настройку идеального CI/CD, как в гайде по AI-серверу. Сделайте простой скрипт, который запускает все необходимое. И обязательно напишите README, как будто его будет читать человек, который не спал двое суток.
Неочевидный совет от того, кто прошел через это
За 24 часа до окончания хакатона зафиксируйте версии всех библиотек. Создайте requirements.txt с точными номерами версий. Потому что последнее обновление PyTorch или LeRobot может сломать все, что вы строили. И еще: не гонитесь за сложной моделью. Иногда простая политика, но хорошо отлаженная на железе, бьет навороченный диффузионный трансформер, который тормозит. Помните, что оптимизация под слабое железо - это искусство. Ваше железо не слабое, но время ограничено.
Удачи. И помните: главное - не победить, а заставить SO-101 сделать хоть что-то осмысленное. Если получится - вы уже герой.