Назад | Перейти на главную страницу

Как ограничить доступ к GPU?

Я настраиваю небольшой сервер GPU под Ubuntu 18.04. Он должен поддерживать как интерактивные, так и пакетные задания.

Он предназначен для выполнения задач машинного обучения небольшой командой. У нас также есть задачи для массовой параллельной обработки данных только на CPU.

Моя цель - избежать бесконечного захвата графических процессоров одним человеком, который может, например, запустить консоль IPython, проблема import tensorflow в нем и покинуть офис, потому что его рабочее время закончилось.

С другой стороны, желательно позволить пользователям создавать прототипы в интерактивном режиме (на CPU).

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

Теперь я хочу ограничить доступ к графическим процессорам из интерактивных сеансов и полностью передать их под контроль SLURM.

Ограничение доступа к /dev/nvidia[0-3], как было предложено Вот, не работает, поскольку SLURM изменяет пользователей процесса с root на фактических владельцев задач.

После некоторого поиска в Google я пришел к двум вариантам: cgroups и udev.

Чтение Эта тема в списке рассылки systemd-devel предполагает, что ограничение доступа с помощью cgroups можно выполнить в обход systemd, просто выполнив такие команды, как echo "c 195:*" > /sys/fs/cgroup/devices/ blah-blah-blah /device.deny

Тем не менее я читал в руководство что systemd поддерживает 3 фрагмента.

Я также обнаружил, что процессы, запущенные демоном SLURM, выполняются в system.slice, а процессы, запущенные пользователями, подключенными к серверу с помощью ssh или подключения к удаленному рабочему столу, запускаются в user.slice.

В принципе могу вручную редактировать файл /lib/systemd/system/user.slice и добавить DeviceAllow="char-nvidia-frontend" как описано Вот, но этот файл может измениться после следующего обновления пакетов.

Итак, как правильно настроить device.deny свойства в Ubuntu 18.04?

Леннарт Поттеринг, системный разработчик говорит, что еще один вариант ограничения доступа - udev.

Я начал читать руководства, но похоже, что udev в основном предназначен для жестких дисков или USB-устройств, а не для видеокарт.

Может ли кто-нибудь поделиться примером разрешений настройки конфигурации?

Думаю, я решил свою задачу с переменной окружения CUDA_VISIBLE_DEVICES.

Я вставил /etc/environment линия CUDA_VISIBLE_DEVICES=-1 и таким образом «любезно попросили» интерактивные сеансы не использовать GPU.