Fix: PyTorch CUDA Version Mismatch
Resolve the "CUDA version mismatch" or "PyTorch was compiled with CUDA X.X but CUDA Y.Y is installed" error
Error Message
RuntimeError: The NVIDIA driver on your system is too old
or
RuntimeError: CUDA error: no kernel image is available for execution on the device
or
PyTorch was compiled with CUDA 12.1 but CUDA 11.8 is installed
Root Cause
This error occurs when there's a mismatch between:
- PyTorch CUDA version - The CUDA version PyTorch was compiled against
- Container CUDA version - The CUDA runtime in your Docker base image
- Host NVIDIA driver - The driver version on your host machine
Key insight: PyTorch binaries are compiled for specific CUDA versions. Installing PyTorch with pip's default will likely give you a version that doesn't match your setup.
Solution
Use DockerFit to generate a Dockerfile with verified compatible versions:
- Check your host driver version:
nvidia-smi - Select the matching CUDA version based on your driver (see table below)
- Generate a Dockerfile with compatible PyTorch + CUDA combination
CUDA & Driver Compatibility
| CUDA Version | Min Driver (Linux) | Recommended GPU |
|---|---|---|
| CUDA 12.4 | >=550 | H100, A100, L4 |
| CUDA 12.1 | >=530 | A100, A10G, T4 |
| CUDA 11.8 | >=450 | T4, V100, RTX 30xx |
Generate Fixed Dockerfile
Select your target configuration below to generate a verified Dockerfile:
Configuration
Local GPU or CPU environment
稳定版本,广泛兼容
1# syntax=docker/dockerfile:12# ^ Required for BuildKit cache mounts and advanced features34# Generated by DockerFit (https://tools.eastondev.com/docker)5# PYTORCH 2.4.1 + CUDA 12.1 | Python 3.116# Multi-stage build for optimized image size78# ==============================================================================9# Stage 1: Builder - Install dependencies and compile10# ==============================================================================11FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 AS builder1213# Build arguments14ARG DEBIAN_FRONTEND=noninteractive1516# Environment variables17ENV PYTHONUNBUFFERED=118ENV PYTHONDONTWRITEBYTECODE=119ENV TORCH_CUDA_ARCH_LIST="8.0;8.6;9.0"2021# Install Python 3.11 from deadsnakes PPA (Ubuntu 22.04)22RUN apt-get update && apt-get install -y --no-install-recommends \23 software-properties-common \24 && add-apt-repository -y ppa:deadsnakes/ppa \25 && apt-get update && apt-get install -y --no-install-recommends \26 python3.11 \27 python3.11-venv \28 python3.11-dev \29 build-essential \30 git31 && rm -rf /var/lib/apt/lists/*3233# Create virtual environment34ENV VIRTUAL_ENV=/opt/venv35RUN python3.11 -m venv $VIRTUAL_ENV36ENV PATH="$VIRTUAL_ENV/bin:$PATH"3738# Upgrade pip39RUN pip install --no-cache-dir --upgrade pip setuptools wheel4041# Install PyTorch with BuildKit cache42RUN --mount=type=cache,target=/root/.cache/pip \43 pip install torch torchvision torchaudio \44 --index-url https://download.pytorch.org/whl/cu1214546# Install project dependencies47COPY requirements.txt .48RUN --mount=type=cache,target=/root/.cache/pip \49 pip install -r requirements.txt5051# ==============================================================================52# Stage 2: Runtime - Minimal production image53# ==============================================================================54FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 AS runtime5556# Labels57LABEL maintainer="Generated by DockerFit"58LABEL version="2.4.1"59LABEL description="PYTORCH 2.4.1 + CUDA 12.1"6061# Environment variables62ENV PYTHONUNBUFFERED=163ENV PYTHONDONTWRITEBYTECODE=164ENV NVIDIA_VISIBLE_DEVICES=all65ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility6667# Install Python 3.11 runtime from deadsnakes PPA (Ubuntu 22.04)68RUN apt-get update && apt-get install -y --no-install-recommends \69 software-properties-common \70 && add-apt-repository -y ppa:deadsnakes/ppa \71 && apt-get update && apt-get install -y --no-install-recommends \72 python3.11 \73 libgomp174 && apt-get remove -y software-properties-common \75 && apt-get autoremove -y \76 && rm -rf /var/lib/apt/lists/*7778# Create non-root user for security79ARG USERNAME=appuser80ARG USER_UID=100081ARG USER_GID=$USER_UID82RUN groupadd --gid $USER_GID $USERNAME \83 && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME8485# Copy virtual environment from builder86COPY --from=builder --chown=$USERNAME:$USERNAME /opt/venv /opt/venv87ENV VIRTUAL_ENV=/opt/venv88ENV PATH="$VIRTUAL_ENV/bin:$PATH"8990# Set working directory91WORKDIR /app9293# Copy application code94COPY --chown=$USERNAME:$USERNAME . .9596# Switch to non-root user97USER $USERNAME9899# Expose port100EXPOSE 8000101102# Default command103CMD ["python", "main.py"]
High-Performance GPU Cloud
Deploy your Docker containers with powerful NVIDIA GPUs. A100/H100 available, 32+ global locations.
- NVIDIA A100/H100 GPU instances
- Hourly billing, starting at $0.004/h
- 32+ global data centers
- One-click container & bare metal deployment