Установка драйверов для видеокарт от Nvidia с одной стороны сейчас не вызывает столько проблем, как было еще 10-15 лет назад, с другой стороны если с драйверами еще как-то народ управляется, то вот работоспособную CUDA получить могут не все. У себя в HOSTKEY мы создали специальный скрипт, который пользователь может запустить самостоятельно и получить рабочее окружение для запуска всего — от PyTorch до Stable Diffusion и Ollama с поддержкой GPU.
Что делает этот скрипт?
Он обновляет систему, определяя тип видеокарты по ее DeviceID и устанавливая ядро Linux 6-й версии, которое нужно для A100/H100 серии на Ubuntu 22.04;
Устанавливает рекомендованные Ubuntu драйвера на вашу видеокарту;
Подключает репозитории Nvidia и устанавливает CUDA;
Прописывает необходимые переменные окружения для ее работы, попутно восстанавливая пути к /bin и /usr/bin, которые вы гарантированно поломаете, если будете следовать официальной инструкции;
Если у вас установлен Docker, то добавляет поддержку GPU в контейнеры.
Скрипт должен корректно отрабатывать на любых видеокартах старше 10xx версии и до последних моделей. Мы проверяли его у себя на GTX 1080, A4000, A5000, RTX 4090 и H100.
Сам скрипт
#!/bin/bash
# Update and upgrade the system using apt
sudo apt update
sudo apt upgrade -y
#Check Ubuntu 22.04 and update kernel
lsb_release=$(lsb_release -a | grep "22.04")
if [[ -n "$lsb_release" ]]; then
# Check if there's a video card with Nvidia (10de) H100 model (23xx)
lspci_output=$(lspci -nnk | awk '/\[10de:23[0-9a-f]{2}\]/ {print $0}')
if [[ -n "$lspci_output" ]]; then
echo "A100 detected"
# If yes install the necessary kernel package
sudo apt install -y linux-generic-hwe-22.04
fi
# Check if there's a video card with Nvidia (10de) A100 model (20xx)
lspci_output=$(lspci -nnk | awk '/\[10de:20[0-9a-f]{2}\]/ {print $0}')
if [[ -n "$lspci_output" ]]; then
echo "A100 detected"
# If yes install the necessary kernel package
sudo apt install -y linux-generic-hwe-22.04
fi
fi
# Install Ubuntu drivers common package
sudo apt install ubuntu-drivers-common -y
recommended_driver=$(ubuntu-drivers devices | grep 'nvidia' | cut -d ',' -f 1 | grep 'recommended')
package_name=$(echo $recommended_driver | awk '{print $3}')
sudo apt install $package_name -y
# Install GCC compiler for CUDA install
sudo apt install gcc -y
# Get the release version of Ubuntu
RELEASE_VERSION=$(lsb_release -rs | sed 's/\([0-9]\+\)\.\([0-9]\+\)/\1\2/')
# Download and install CUDA package for Ubuntu
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${RELEASE_VERSION}/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
# Update and upgrade the system again to ensure all packages are installed correctly
sudo apt update
sudo apt install cuda -y
sudo apt install nvidia-cuda-toolkit -y
# Add PATH and LD_LIBRARY_PATH environment variables for CUDA in .bashrc file
echo 'export PATH="/usr/bin:/bin:$PATH/usr/local/cuda/bin\${PATH:+:\${PATH}}"' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
#Installing Docker binding for Nvidia
if command -v docker &> /dev/null; then
echo "Docker is installed."
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
else
echo "Docker is not installed."
fi
#Reboot the system for enable kernel modules
reboot
Сохраните его у себя в домашней директории как nvidia_install.sh, не забудьте задать через chmod +x nvidia_install.sh права на запуск и запустите через sudo nvidia_install.sh. Через 5-10 минут (в зависимости от скорости вашего интернета) вы получите работающую систему, на которой можно дальше экспериментировать с теми же нейросетями.
Закажите виртуальный или выделенный сервер с предустановленным корпоративным мессенджером Rocket.Chat! Вы можете выбрать сервер в дата-центре в России или в дата-центрах в Европе, США или Турции. Оплата в рублях по счету от российской компании.
Комментарии (7)
vassabi
09.08.2024 17:02echo 'export PATH="/usr/bin:/bin:$PATH/usr/local/cuda/bin\${PATH:+:\${PATH}}"' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64\${LD_LIBRARY_PATH:+:\${LD_LIBRARY_PATH}}' >> ~/.bashrc
тогда уж делали чтобы оба на
/usr/local/cuda/
указывали
/usr/local/cuda/bin в путяхи
/usr/local/cuda/lib64 в либах
akdengi Автор
09.08.2024 17:02Это из инструкций NVIDIA, тут только если харкод 12.2 версии поправить в либах.
SlavikF
09.08.2024 17:02Мой скрипт на Ubuntu 22 для nVidia Quadro P5000:
##### NVIDIA Drivers # https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html sudo apt-get install linux-headers-$(uname -r) sudo apt-key del 7fa2af80 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update sudo apt-get install cuda-toolkit cuda-drivers-550 nvtop sudo reboot
И Docker c toolkit:
nvidia-smi ##### NVIDIA toolkit for Docker # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit ###### Docker sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi
da-nie
09.08.2024 17:02то вот работоспособную CUDA получить могут не все.
Что под этим подразумевается? :) Просто я обновил Mint до 21.3, поставил CUDA 11 и... всё, что было откомпилировано в предыдущей системе с CUDA версией младше работает. Всё, что компилирую с новой не работает. Запускается, но GPU плевать на программу, оно её явно не выполняет. Вот и думаю, с чего бы такая печаль?
S-trace
09.08.2024 17:02+1Если уж так серьёзно подошли к вопросу - почему тогда сделали всё скриптом на bash а не yml для ansible?
McStar
09.08.2024 17:02Я добавляю этот репозиторий https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa и всё работает.
antirek
залил на гитхаб https://github.com/antirek/nvidia-cuda.sh