Без внешних API, без облака и без бюджета на дорогое железо. Автор взял Gemma-3 270M — одну из самых компактных открытых LLM от Google — и научил её управлять гусеничным роботом с робо-клешнёй в физическом симуляторе MuJoCo. Модель принимает команды на естественном языке и возвращает валидный JSON: движение вперёд-назад, повороты на заданный угол, захват и опускание предметов. Без файнтюнинга разговор с моделью превращался в диалог уровня Тарантино — ни одной корректной JSON-команды на первые три попытки.
Контекст
Gemma-3 270M — публичная модель от Google с открытыми весами, спроектированная для работы в условиях жёстких ограничений по памяти и вычислениям. По оценке автора, она без проблем влезает в Raspberry Pi Zero 2 W — микрокомпьютер ценой в несколько десятков долларов. Это ключевой момент: мозг робота размещается прямо на борту, без сетевого запроса и зависимости от облака.
MuJoCo — стандарт симуляций в академической робототехнике. Физика там проще, чем в Isaac Sim от NVIDIA, зато работает на обычном ноутбуке. Здесь автор строил среду поэтапно: сначала гусеничный корпус на дифференциальном приводе (два ведущих колеса с раздельными актуаторами — классическая tank-drive схема), потом добавил конечность-клешню. По ходу сборки пришлось победить несколько физических багов — робот-катапульта на старте улетал на высоту больше метра, колёса буксовали из-за неправильного распределения веса.
Синтетический датасет — 2505 пар «инструкция → JSON» — собирался через OpenRouter: ~70 ручных seed-примеров расширялись моделями gpt-oss-120b (OpenAI) и nemotron-super-120b (NVIDIA) с жёсткой валидацией по JSON Schema. Каждый батч видел случайную выборку примеров — для разнообразия фраз. Обучение велось на одной карте NVIDIA T4 через бесплатный Kaggle (30 часов в неделю).
Аналитика
Эксперимент показывает важный паттерн: 270 млн параметров достаточно там, где задача формально ограничена. Модель не занимается открытым reasoning — она работает как классификатор намерений с фиксированным выходным форматом. Всё «умное» вынесено в систему вокруг: JSON Schema для валидации, разнообразный датасет (императив, вежливый тон, слова-числа вместо цифр, многошаговые команды, заведомо бессмысленные запросы, которые маппятся в пустой список).
Это часть широкого тренда на edge inference — запуск моделей прямо на устройстве без сетевого вызова. Для промышленного применения это снижение задержки, независимость от провайдера и работа в изолированных средах без интернета. Для независимого разработчика — возможность собрать рабочий прототип интеллектуального робота за несколько недель и практически нулевой бюджет.
Ещё один вывод: качество данных важнее размера модели. Первый запуск без файнтюнинга — нулевой результат. После обучения на 2500+ разнообразных примерах модель стабильно транслирует команды в корректный JSON. В задачах с чётко определённым выходом небольшие специализированные модели часто выигрывают у гигантов общего назначения — при условии, что датасет составлен грамотно.
Кейсы применения в бизнесе
Производственный стартап или IoT-компания. Если стоит задача управления несложным манипулятором или мобильным роботом, не обязательно покупать готовый SDK за десятки тысяч долларов. Сценарий: берёте open-source модель класса Gemma или Qwen, генерируете синтетический датасет под свой набор команд через бесплатные API, файнтюните на Kaggle, разворачиваете на одноплатнике. Итог — рабочий NL-интерфейс для управления оборудованием при бюджете в сотни, а не сотни тысяч долларов.
Компания с legacy-оборудованием. Если есть парк станков с управлением через CAN, RS-485 или любой API — такой подход позволяет добавить слой NL-интерфейса без переписывания контроллера. Оператор вводит команду, модель переводит в JSON, JSON исполняет существующий контроллер. Модель работает офлайн — данные не уходят наружу, что критично для производств с требованиями по информационной безопасности.
Малый бизнес в КР/СНГ: складская логистика. Небольшой склад с одним-двумя мобильными роботами-перевозчиками — реальный сценарий. Управление текстом или голосом вместо специализированного пульта снижает порог обучения персонала. Потребуется дополнительный файнтюнинг под русский язык команд или промежуточный слой перевода, но архитектура позволяет это добавить без переделки ядра.
Кейсы в личной жизни
Разработчик и хакатонщик. Стек из статьи полностью воспроизводим за выходные: MuJoCo с Python-биндингами, бесплатный Kaggle для обучения, HuggingFace для весов. Можно адаптировать под управление дроном в симуляции или настольным DIY-манипулятором. Рабочий edge-AI робот в портфолио — это не CRUD-проект, это разговор на другом уровне на любом техническом интервью.
Студент-исследователь. Вся цепочка — от генерации датасета до деплоя — задокументирована и воспроизводима. Готовая база для курсовой или дипломной по теме «NLP + управление роботами». Бесплатные ресурсы (Kaggle, OpenRouter free tier) делают эксперимент доступным без университетского бюджета на вычисления.
DIY-энтузиаст. Автор прямо называет конечную цель — загрузить модель в реального домашнего робота на гусеницах. Раньше это требовало либо дорогих проприетарных решений, либо глубокой экспертизы в embedded ML. Сейчас: открытые веса на HuggingFace, исходники на Codeberg, рабочая схема в статье. Порог входа — наличие одноплатника и свободного вечера.
Как применить сегодня
- Запустите Gemma-3 270M без файнтюнинга на задаче генерации JSON — убедитесь сами, что модель не справляется. Это лучший способ понять, зачем нужен специализированный датасет.
- Определите JSON-схему команд для своей задачи, напишите 20-30 seed-примеров и попросите сильную модель через OpenRouter расширить их до 500+ пар с вариациями фраз — тerse, вежливо, с единицами и без, многошагово.
- Зарегистрируйтесь на Kaggle и запустите файнтюнинг через Unsloth или TRL — обе библиотеки работают на T4 в пределах бесплатного лимита для моделей до 1B параметров.
- Установите MuJoCo (бесплатен с 2022 года) и начните с готовых MJCF-примеров из официальных туториалов, прежде чем трогать физические параметры — это сэкономит несколько часов отладки.
- Для русскоязычных команд добавьте параллельные пары на русском в датасет или запустите автоперевод seed-примеров перед инфляцией крупной моделью.