Установка и настройка графического процессора NVIDIA (GPU) на виртуальной машине Ubuntu (VM) может быть сложной задачей, особенно для тех, кто плохо знаком с этим процессом. Однако, проявив немного терпения и выполнив правильные действия, вы сможете быстро настроить и запустить свой графический процессор NVIDIA. В этой статье мы рассмотрим процесс установки и настройки графического процессора NVIDIA на компьютере с Ubuntu для моделей глубокого обучения, охватывая все, начиная от загрузки необходимых драйверов и заканчивая настройкой графического процессора для использования.

Чтобы установить и настроить среду виртуальной машины для обнаружения вашего графического процессора, а также заставить графический процессор работать с набором инструментов CUDA, можно выполнить следующие шаги:

Шаг 1. Проверьте и удалите существующие драйверы

Перед установкой новых драйверов для графического процессора NVIDIA важно проверить, установлены ли уже существующие драйверы на вашем компьютере с Ubuntu. Откройте окно терминала и введите следующую команду: lspci | grep -i nvidia

Эта команда выяснит, присутствуют ли какие-либо графические устройства NVIDIA на виртуальной машине. Если они есть в списке, удалите драйверы, а также CUDA, используя:

sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*"
sudo apt-get --purge remove "*nvidia*"

Если вы установили CUDA через исходные файлы, найдите место установки (например, /usr/local) и удалите его, используя:

sudo rm -rf /usr/local/cuda*

Затем перейдите к строке, содержащей ссылку на репозиторий NVIDIA.

sudo vim /etc/apt/sources.list

и прокомментируйте это

#deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ 

Наконец, запустите:

sudo apt update

Шаг 2: Начните установку

Поскольку мы успешно удалили все следы существующих NVIDIA и CUDA на виртуальной машине, давайте приступим к новой установке. Первое действие, которое нужно выполнить, — это добавить персональный архив пакетов (PPA), что позволит нам создать собственный репозиторий для распространения программного обеспечения. Следовательно, мы запускаем:

sudo add-apt-repository ppa:graphics-drivers/ppa --yes
sudo apt update

Затем драйвер NVIDIA можно установить, используя:

sudo apt install nvidia-driver-450-server

На этом этапе важно получить некоторое представление о том, какие драйверы следует устанавливать, проверив эту матрицу совместимости: https://docs.nvidia.com/deploy/cuda-compatibility/index.html.

Для нашей задачи мы выбрали nvidia-driver-450, потому что он совместим. Далее мы установим CUDA, что обычно можно сделать с помощью:

sudo apt install nvidia-cuda-toolkit

Однако, поскольку нас интересует конкретная версия (11.3), необходимо перейти на страницу разработчика NVIDIA, чтобы загрузить нужную сборку CUDA.

На странице можно заметить, что простое нажатие на предоставленные кнопки приведет вас к правильной архитектуре ОС, дистрибутиву, версии и что более важно, тип установщика интересующего вас CUDA. Можно выбрать любой из типов установщика, однако мы просто выберем файл runfile (local) для облегчить установку.

Следовательно, для этой настройки мы используем эту ссылку, которая найдет CUDA версии 11.3 для машины Ubuntu 20.04:

Нам нужно следовать инструкциям по установке с небольшой модификацией, т.е. запустить:

wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run

sudo sh cuda_11.3.0_465.19.01_linux.run --toolkit --silent --override

Флаги --toolkit --silent --override гарантируют, что будут установлены только пакеты, принадлежащие CUDA, а не NVIDIA. Без флагов вы можете получить эту ошибку:

Теперь, когда установка завершена, сервер можно перезапустить sudo rebootдля правильной настройки всех конфигураций.

Чтобы подтвердить это, эти две команды nvidia-smi и nvcc --version можно запустить для проверки драйверов графического процессора и версии CUDA соответственно.

Если вы не перезагрузите компьютер, вы можете получить эту ошибку для nvidia-smi:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

Кроме того, если nvcc --version продолжает выдавать ошибку, вам может потребоваться добавить путь CUDA к bashrc.

Сначала откройте bashrc

sudo nano /home/$USER/.bashrc

Внутри добавляем следующее:

export PATH="/usr/local/cuda-11.3/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH"

Наконец, запустите source .bashrc и откройте новый терминал, чтобы снова протестировать nvcc --version.

Наши вернули следующую информацию:

Шаг 3. Установите драйверы Torch для DNN

Torch — одна из основных библиотек, используемых для построения глубоких нейронных сетей, и есть несколько ресурсов о том, как ее использовать.

Последний набор настроек, который необходимо выполнить, — это установка torch, torchvision и torchaudio (если требуется).

Это можно выполнить, просто запустив:

pip3 install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra
-index-url https://download.pytorch.org/whl/cu113

Это установит torch версии 1.11.0, созданной с помощью CUDA 11.3 и torchvision версии 0.12с аналогичной версией CUDA, и torchaudio

Допустим, нужна другая torchверсия, проверить совместимость CUDA и Torch можно здесь и выбрать нужную.

Наконец, давайте выполним тест, чтобы проверить, прошла ли наша установка успешно. Мы попробуем код ниже:

import torch 
from torch import nn

class BuildSimpleNet(nn.Module):
    def __init__(self):        
        super().__init__()        
        self.l1 = nn.Linear(1,2)

    def forward(self, x):                      
        x = self.l1(x)
        return x


if __name__ == "__main__":
    print(torch.cuda.is_available()) 
    print(torch.cuda.device_count()) 
    print(torch.cuda.current_device())  
    print(torch.cuda.get_device_name(0)) 

    device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
    model = BuildSimpleNet()
    model.to(device) 
    print(next(model.parameters()).is_cuda)

Вот результаты:

True
1
0
Tesla V100-SXM2-16GB
True

В заключение в этой статье продемонстрировано пошаговое руководство по установке драйверов графического процессора NVIDIA, CUDA и Torch для обучения моделей глубокого обучения. Кроме того, выполняется простой тест, чтобы убедиться, что вся установка прошла успешно. В последующих статьях мы покажем, как настроить графический процессор NVIDIA для бесперебойной работы с Docker, в основном для логического вывода.