Я бы хотел, чтобы мне не пришлось писать статью об этом. Было бы неплохо, если бы Nvidia (полностью) открыла исходный код своих драйверов, чтобы они могли быть первоклассными гражданами Linux и Kubernetes. Однако на данный момент это не так, поэтому вот путь, который вам нужно пройти, чтобы заставить графический процессор Nvidia работать с Linux (я конкретно на Ubuntu 22.04).
Установка драйверов
Первым шагом, конечно же, является установка соответствующих драйверов. Я предполагаю, что вы хотите пропатчить драйверы. Исправление драйверов удаляет искусственное ограничение на 2 транскодирования, наложенное на них в настоящее время. Мы будем создавать драйверы, потому что почему бы и нет.
Прежде чем мы начнем, нам нужно убедиться, что драйвер nouveau отключен. Мы делаем это, потому что драйверы Nvidia совместимы с модулями K3, которые мы будем использовать позже. Если вам нужны более подробные сведения об этом шаге, вы можете посмотреть статью this linuxconfig.org, откуда были взяты эти инструкции.
# Add Nouveau to the modprobe blacklist sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" # If the module is in the kernel, disable it sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" # Persist these settings on each boot sudo update-initramfs -u
Теперь мы можем начать сборку и применение драйверов. Чтобы упростить процесс, давайте установим dkms. Это поможет собрать необходимые зависимости для сборки драйверов.
sudo apt install dkms
Далее нам нужно будет скачать и установить соответствующие драйвера. Хорошо обновленный список, в котором показаны драйверы и поддерживаемые исправления, см. keylase/nvidia-patch (откуда был взят приведенный ниже код).
# Create a driver directory sudo mkdir /opt/nvidia && cd /opt/nvidia # Download the files (this example uses driver 515.57) sudo wget https://international.download.nvidia.com/XFree86/Linux-x86_64/515.57/NVIDIA-Linux-x86_64-515.57.run # Make the build script executable sudo chmod +x ./NVIDIA-Linux-x86_64-515.57.run # Build the driver sudo ./NVIDIA-Linux-x86_64-515.57.run
После установки драйвера мы сможем проверить его с помощью nvidia-smi
, что должно дать результат, подобный следующему:
Исправление драйверов
Теперь мы можем пропатчить драйверы, чтобы лимит транскодирования был разблокирован. Для этого на вашем сервере должен быть установлен Git (sudo apt install git). Если у вас возникнут проблемы со следующими шагами, вам следует проверить исходный репозиторий: keylase/nvidia-patch.
# Optional if you want to start in your home directory cd ~ # Clone down the patch scripts git clone https://github.com/keylase/nvidia-patch.git # Navigate into the repo folder with the patches cd nvidia-patch # Ensure the patch is executable sudo chmod +x patch.sh # Execute the patch (needs to be done in a bash shell) sudo bash ./patch.sh
Установка среды выполнения контейнера Nvidia
Среда выполнения контейнеров Nvidia теперь включена в их проект инструментов. Для этого нам нужно добавить ключ подписи в менеджер пакетов нашей системы (apt).
# Adding the signing key to apt curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \ sudo apt-key add -
# Create a variable with our distribution string distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
# Install the appropriate package list for our distribution curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \ sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
Теперь, когда он добавлен в наш список подходящих источников, мы можем запустить следующие команды для его установки.
sudo apt-get update \ && sudo apt-get install -y nvidia-container-toolkit
После завершения установки вы успешно установили среду выполнения контейнера! Мы почти на финишной прямой! К этому моменту мы установили наши драйверы Nvidia, установили нашу специальную среду выполнения контейнеров, которая позволит нам использовать GPU с контейнерами. Теперь нам нужно настроить K3 для использования этой среды выполнения контейнера с CRI containerd (интерфейсом среды выполнения контейнера).
Настройка containerd для использования Nvidia-Container-Runtime
Наконец, последние шаги, чтобы заставить наш GPU работать с Kubernetes. Здесь мы собираемся внести некоторые изменения в containerd CRI, чтобы он использовал нашу новую среду выполнения nvidia-contianer. Чтобы просмотреть оригинальную документацию, ознакомьтесь с руководством Nvidia здесь.
Мы начнем с открытия /etc/containerd/config.toml в выбранном вами текстовом редакторе (например, vi, vim, nano). Открыв его, мы добавим следующий блок:
Кроме того, если есть лонг, который содержит `disabled_plugins = [“cri”]`, нам нужно будет закомментировать его, поставив перед ним #. Теперь мы можем перезапустить службу containerd, и она готова к гонкам!
sudo systemctl restart containerd
Теперь вы должны иметь возможность планировать узлы для запроса ресурсов графического процессора! Обязательно следите за дополнительными руководствами, и если вам нравится этот тип контента, загляните на мой YouTube!