Что делает агент
Агент — программа Quilmo, которая работает на вашем сервере и сообщает платформе, что у вас за оборудование и в каком оно состоянии. Исходный код агента закрыт, поэтому это единственное описание его поведения. Если что-то здесь не совпадает с тем, что вы видите на своей машине, напишите нам.
Агент работает от имени root
Ему нужно управлять Docker, а доступ к Docker равен root-доступу к машине. Установщик тоже запускается через sudo. Не ставьте агент на компьютер, на котором лежат данные, которыми вы не готовы рисковать.
Что агент делает в этой версии
- Работает как служба systemd
gpum-agentи каждые около 10 секунд связывается с платформой. Соединение только исходящее по HTTPS: входящие порты открывать не нужно, ваш роутер настраивать не нужно. - Определяет оборудование и сообщает его платформе при регистрации и при каждом изменении (смена драйвера, видеокарты, системы).
- Передаёт показатели состояния (список ниже), по ним платформа понимает, что сервер онлайн.
- Сам запускает короткий тест: контейнер с доступом к GPU, чтобы убедиться, что видеокарта работает внутри Docker (подробнее ниже).
- Удаляет контейнеры с меткой
gpum.managed=true, о которых платформа не знает. Контейнеры без этой метки агент не видит и не трогает. - Выполняет команды платформы из короткого фиксированного списка: повторить проверку, перезапустить агент.
Что агент отправляет на платформу
| Когда | Что |
|---|---|
| При регистрации и изменении | Имя компьютера, ОС и ядро, модель процессора, число ядер и потоков, объём ОЗУ, размер, свободное место и тип диска, на котором лежит Docker, у каждой видеокарты: UUID, модель, объём памяти и PCI-шина, версии драйвера NVIDIA, CUDA и Docker |
| Каждые около 10 секунд | Загрузка и занятая память GPU, температура, потребляемая мощность, загрузка процессора, свободная ОЗУ и диск, список контейнеров агента, время ответа платформы |
Арендаторам показываются только характеристики объявления (модель карты, видеопамять, процессор, ОЗУ, диск), состояние «онлайн/офлайн» и результат проверки. Имя компьютера, UUID видеокарт и версии программ видите только вы. Платформа не записывает ваш IP-адрес в данные сервера; как у любого веб-сервиса, он виден хостинг-провайдеру в служебных журналах соединений.
Агент не читает ваши файлы, не отправляет список процессов и установленных программ, не смотрит содержимое ваших контейнеров и не собирает данные о других устройствах в вашей сети.
Тестовый контейнер с GPU
Агент запускает его сам: один раз после первого подключения и снова после изменения оборудования, драйвера, системы или версии Docker.
- Запускается контейнер с доступом к видеокартам и выполняет nvidia-smi.
- У контейнера отключена сеть. После проверки он удаляется вместе с данными.
- Docker один раз скачивает образ для проверки из публичного реестра.
- Если проверка пройдена, у сервера появляется отметка «Оборудование проверено». Это проверка, что GPU виден в Docker, а не тест производительности.
- Пока образ для проверки не выбран, тест не запускается, а сервер показывается как «Ожидает проверки». Это не ошибка.
Чего агент не делает
- Не читает и не меняет файлы вне своих каталогов:
/opt/gpum-agent,/etc/gpum-agent,/var/lib/gpum-agent. - Не устанавливает, не обновляет и не удаляет драйвер NVIDIA.
- Не открывает входящие порты и не меняет настройки файрвола.
- Не назначает цену: её задаёте только вы.
- Не имеет административных ключей платформы: использует только публичный ключ и токен вашего сервера.
Что установщик ставит на машину
- Docker Engine и NVIDIA Container Toolkit из официальных репозиториев, только если их нет. Подписи репозиториев проверяются по заранее известным отпечаткам ключей.
- Установка настраивает Docker на работу с NVIDIA и перезапускает его. Контейнеры без политики автозапуска при этом остановятся; установщик предупредит заранее и спросит подтверждение.
- Службу systemd и сам агент.
Перед первым запуском можно добавить к команде --dry-run: установщик только проверит машину и ничего не изменит.
Что нужно и что проверено
- Права root: установщик запускается через sudo.
- Ubuntu 22.04 (x86_64), systemd, работающий драйвер NVIDIA, не менее 50 ГБ свободного места под Docker, выход в интернет.
- Каталог
/tmpдолжен разрешать запуск программ. Если он смонтирован с запретом запуска (noexec), установщик остановится с сообщением об этом и покажет команду с другим каталогом.
Команду установки берите в личном кабинете. Если /tmp запрещает запуск, замените в ней sudo bash на sudo env TMPDIR=/var/tmp bash. Проверено на Ubuntu 22.04 в виртуальной машине дата-центра с видеокартой Tesla T4. На Ubuntu 24.04 проверялся только запуск программы без видеокарты; установка с видеокартой ещё не проверена.
Как обновить агент
Обновления на месте нет. Чтобы перейти на новую версию, удалите сервер в личном кабинете (кнопка «Удалить»), создайте новый код подключения и запустите установщик снова: будет создан новый сервер. Если запустить установщик, не удалив прежний сервер, он остановится с сообщением «Эта видеокарта уже зарегистрирована на другом сервере»: сначала удалите тот сервер в личном кабинете.
Если что-то пошло не так
Установщик пишет, что случилось и что делать. Ниже случаи, когда нужно действие от вас; в скобках код выхода, его видно по $?.
- «Установщик нужно запускать от имени root» (код 13): повторите команду с sudo.
- «Код подключения выглядит неверно» (код 2): скопируйте команду из личного кабинета целиком, вместе с кодом. Тот же код 2 у остальных сообщений о параметрах команды («Не указан код подключения», «Неизвестный параметр»): в каждом сказано, что исправить.
- «Проверка машины не пройдена» (код 10): исправьте отмеченное выше и запустите установщик снова.
- «На этой машине не запущен systemd» (код 14): контейнеры, WSL и системы без systemd не поддерживаются.
- «Не удалось запустить скачанный агент» (код 10): скорее всего, /tmp смонтирован с запретом запуска; замените в команде установки sudo bash на sudo env TMPDIR=/var/tmp bash, как описано выше.
- «Не удалось скачать или проверить агент» (код 20): повторите попытку; если ошибка повторяется, напишите нам.
- «Видеокарта не видна внутри контейнера» (код 31): проверьте
nvidia-smiна машине, затем выполнитеsudo nvidia-ctk runtime configure --runtime=dockerиsudo systemctl restart docker. - «Код подключения недействителен, истёк или уже использован» (код 40): создайте новый код в личном кабинете.
- «Эта видеокарта уже зарегистрирована на другом сервере» (код 40): удалите тот сервер в личном кабинете и запустите установщик снова.
- «Служба не запустилась» (код 50): посмотрите
journalctl -u gpum-agent -n 50иsudo /opt/gpum-agent/gpum-agent status. - Агент остановился сам и не запускается снова (код 78 у службы; systemd такую остановку не перезапускает). Команда
sudo /opt/gpum-agent/gpum-agent statusпокажет причину. «Агент остановлен: сервер удалён или токен заменён» — создайте новый код и запустите установщик. «Агент остановлен: ошибка конфигурации» — проверьте/etc/gpum-agent/config.tomlили запустите установщик с новым кодом. Контейнеры при этом не удаляются. - Команда
statusбез root отвечает «Для чтения состояния агента нужны права root (sudo)» и выходит с кодом 13: запустите её через sudo.
Где что лежит
| /opt/gpum-agent/gpum-agent | программа агента |
| /etc/gpum-agent/config.toml | настройки и токен сервера, права 0600 (только root) |
| /var/lib/gpum-agent/ | состояние агента |
| /var/log/gpum-agent-install.log | журнал установки, без токенов и кодов |
| journalctl -u gpum-agent | журнал работы агента; токены и коды в нём скрыты |
Платформа хранит только хэш токена, не сам токен. Состояние агента и ход работы можно посмотреть командой sudo /opt/gpum-agent/gpum-agent status. Если /tmp смонтирован с noexec, любой команде агента, набранной вручную, нужен тот же префикс: sudo env TMPDIR=/var/tmp /opt/gpum-agent/gpum-agent status. Служба этого не требует: она задаёт каталог сама.
Как остановить и удалить
- Остановить:
sudo systemctl stop gpum-agent. Агент закончит текущий шаг и выйдет. Через минуту сервер на сайте станет офлайн. - Удалить полностью:
sudo /opt/gpum-agent/gpum-agent uninstall --yes. Удаляются служба, файлы агента и его контейнеры; Docker, драйверы и образы остаются. - Удалить сервер в кабинете: агент при следующем обращении получит отказ, остановится и не будет перезапускаться сам. Файлы при этом остаются на машине до команды удаления.
Кому вы доверяете
Доверие здесь в двух местах: откуда скачивается программа и как она собрана.
Установщик и агент скачиваются с этого сайта, контрольная сумма программы берётся оттуда же. Это значит, что тот, кто управляет сайтом, фактически управляет root-доступом на машинах, где стоит агент. Подпись программы отдельным ключом пока не реализована, это следующий шаг после закрытой беты. Хотите убедиться сами — сначала посмотрите скрипт и запустите его с --dry-run.
Программа собрана нашим скриптом. Версии Nuitka (компилятор), zstandard и ordered-set закреплены, но средства сборки (pip, setuptools, wheel) берутся актуальных версий, и ни один пакет сборки пока не проверяется по контрольной сумме; Python и компилятор C ставятся из репозиториев Ubuntu и PPA deadsnakes. Закрепление пакетов сборки по контрольным суммам будет сделано до того, как программу установит кто-либо, кроме владельца Quilmo.
Что появится позже (ещё не реализовано)
Автоматическая аренда ещё не включена: в этой версии агент не запускает чужие контейнеры. Когда мы её включим, изменится следующее, и мы опишем это на этой странице до включения:
- Агент будет запускать контейнеры арендаторов с доступом к назначенным GPU, с ограничениями по процессору, памяти и числу процессов.
- Арендатор получит root внутри своего контейнера на вашем оборудовании. Изоляция контейнеров не идеальна, и мы не обещаем обратного.
- Для изоляции контейнеров от вашей локальной сети агенту понадобятся правила сетевого экрана, относящиеся к трафику контейнеров.
- Доступ арендатора будет проходить через исходящий туннель, входящие порты по-прежнему открывать не придётся.
- По окончании аренды контейнер и его данные удаляются. Мы обещаем удаление, а не сертифицированное затирание диска.
- События агента (запуск, смена оборудования, удаление контейнеров, команды платформы) записываются на платформе; просмотр журнала в кабинете появится позже.
Готовы подключить сервер? Перейти к серверам