HelperSheets/docker/GPU.md
2024-08-26 18:09:02 +02:00

1.9 KiB
Raw Permalink Blame History

GPU-Basis-Image

Dies soll ein Basis-Image für GPU-Applikationen darstellen:

# Wir nutzen ein Image von NVIDIA
FROM nvidia/cuda:12.2.0-runtime-ubuntu20.04

# Lege für später Variablen für einen non-root User fest (mit fester UID zur besseren Zuweisung)
ENV NB_USER="gpuuser"
ENV UID=999

# Install essential packages
RUN apt-get update && apt-get install -y \
    python3.8 \
    python3-pip \
    python3.8-dev \
    python3.8-distutils \
    gcc \
    g++ \
    curl \
    wget \
    sudo \
 && rm -rf /var/lib/apt/lists/*

# Installiere hier PyTorch mit GPU support (Versionen können angepasst werden)
RUN python3.8 -m pip install --upgrade pip \
    torch==2.0.1\
    torchvision==0.15.2

# Erstellen eines non-root Users
RUN useradd -l -m -s /bin/bash -u $UID $NB_USER

# Arbeitsverzeichnis festlegen
WORKDIR /app

# und zum non-root User wechseln
USER ${NB_USER}

# Starte die Konsole wenn wir den container starten
CMD ["/bin/bash"]

Wichtig:
Es muss mind. die gleiche Cuda-Version auf dem Host-Gerät installiert sein.

Testen

Erstelle einen Container aus dem Image mit docker build -t gputest .. Anschließend starte den Container mit docker run --gpus all -it gputest.

Nun sollten wir direkt in der Konsole des Containers mit dem user gpuuser sein.

Hier starten wir die Python Shell und wir können die Bibliothek torch nutzen um unsere GPU zu suchen mit:

>>> import torch

>>> torch.cuda.is_available()
True

>>> torch.cuda.device_count()
1

>>> torch.cuda.current_device()
0

>>> torch.cuda.device(0)
<torch.cuda.device at 0x7efce0b03be0>

>>> torch.cuda.get_device_name(0)
'NVIDIA GeForce GTX 1080 Ti'

⚠️Wichtig: wenn dies nicht funktioniert, dann bitte noch einmal die Treiber auf der Host-Maschine überprüfen. Das man auch die gleiche Version im Docker Container benutzt.

Die Versionen in der Dockerfile können natürlich angepasst werden, aber auf die Treiber achten!!!