Skip to main content
Before you start: schedule a maintenance window at least 48 hours in advance.You are responsible for the maintenance and any resulting interruption. Work performed outside the scheduled maintenance window may be treated as an operational failure.If you are unsure whether this operation could cause data loss, stop here.
Vast asks hosts to run at least a minimum NVIDIA driver version, set by GPU generation and, on Turing and newer, by the driver the machine runs now. When Vast raises a minimum, this table is updated; follow this page again to move to it. The steps are the same every time. A machine at or above its minimum needs nothing from this page. For a machine below it, this page installs the minimum version from NVIDIA’s apt repository, has DKMS build its kernel module, and holds it so nothing upgrades it. With DKMS, a kernel update rebuilds the same driver for the new kernel instead of changing the driver.
Driver branches newer than the ones in the table, such as 620, are not directly supported yet, though a machine on one may still run on the platform. Hosts on an unlisted branch are expected to keep the driver on the newest release of that branch, for its latest security fixes. This page does not change it.
Before step 3, unlist the machine and make sure it has no instances; a maintenance window does neither. From step 3 until the reboot in step 6 the GPUs are unusable, and the reboot stops every instance.

1. Check the current driver

The second column is the compute capability and the third is the current driver. Set the minimum from the table row that matches both; it is also the version this page installs. The later commands read these two variables, so if you log out, set them again before you continue. Compute capability 7.5 or higher, current driver 595.xx:
Compute capability 7.5 or higher, any other driver:
Below 7.5:
Check whether the machine already meets the minimum:
If it prints nothing to do, stop here.

2. Prepare the build and the repository

Each command in this step installs only what is missing. Kernel headers for the running kernel and for kernels installed later. DKMS needs them to build the driver:
The compilers your kernels were built with. DKMS builds with the same one, and on Ubuntu 22.04 the HWE kernel needs GCC 12, which is not installed by default:
NVIDIA’s repository (NVIDIA driver installation guide):
apt-get update must finish without E: lines. For a Signed-By error, see If apt-get update reports a Signed-By conflict. Confirm NVIDIA publishes the version for this machine:
If it prints nothing, stop: nothing has been removed yet, and the machine keeps its current driver.

3. Remove the current driver

This removes a driver installed with NVIDIA’s .run installer, and does nothing otherwise:
List the installed driver packages from Ubuntu or NVIDIA, including prebuilt modules and the pin for a previous version. The NVIDIA container toolkit is not in the list:
If a name in the list contains fabricmanager, the machine has NVSwitch; step 4 installs Fabric Manager again. Remove them:
Before you answer, read the REMOVED list. Every name must contain nvidia, cuda, nvlink or nvsdm, or be libxnvctrl0, and the list must not include nvidia-container-toolkit, nvidia-container-toolkit-base, libnvidia-container1 or libnvidia-container-tools. If either rule is broken, answer n and stop.

4. Install the driver

Pin the version first. NVIDIA’s pinning package makes apt install exactly that version of every driver package (NVIDIA: version locking):
Then the driver:
On NVSwitch machines (HGX and DGX), install the NVSwitch components in the same command instead (NVIDIA: optional components). Fabric Manager must match the driver version (Fabric Manager user guide), and the pin keeps all of them there. On ARM64, leave out libnvsdm, which NVIDIA publishes for x86_64 only:
DKMS builds the module during the install:
If the output contains Error!, see If the DKMS build fails. Check the module the reboot will load. A reboot normally starts the newest kernel in /boot, and this prints the driver version built for it:
It must print your DRIVER_VERSION. modinfo: ERROR: Module nvidia not found. means DKMS did not build for that kernel; see If the DKMS build fails. Do not reboot until it prints the version.

5. Hold the driver

6. Reboot and verify

If the machine does not come back, see If the machine does not come back.
Every line must show the minimum you set in step 1.
Every GPU on the minimum driver version, module built by DKMS, driver held.

Kernel upgrades

When a kernel upgrade installs new headers, DKMS builds the held driver for the new kernel as part of the upgrade. Before rebooting into the new kernel, check:
The new kernel must have a line ending in installed. If it has none, do not reboot. Run the two install commands at the start of step 2, then build for the new kernel, using its version in place of 7.0.0-38-generic:

Recovery

If the DKMS build fails

When the kernel’s headers are missing, DKMS says so:
Otherwise the build log has the cause:
That line means the kernel’s compiler is missing. For either cause, run the two install commands at the start of step 2. Once they install what was missing, apt finishes the interrupted driver install and builds the module. Then repeat the modinfo check at the end of step 4.

If nvidia-smi fails after the reboot

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver means no module loaded for the running kernel:
If no line for the kernel printed first ends in installed, build it and reboot:
Until it is fixed the machine shows as offline; see Offline Machine.

If apt-get update reports a Signed-By conflict

NVIDIA’s repository was already configured with another key file. Find both definitions:
Keep cuda-ubuntu2404-x86_64.list (ubuntu2204 on 22.04, sbsa on ARM64), which cuda-keyring installed. Move the other file out of /etc/apt/sources.list.d/, or comment out the line if it is in /etc/apt/sources.list, then run sudo apt-get update again.