Zum Hauptinhalt springen
Zurück zur Kategorie

AI-Modell-Deployment auf GPU-Servern: NVIDIA CUDA Anleitung

NVIDIA-Treiberinstallation, CUDA-Toolkit, nvidia-container-toolkit, Modell-Serving mit vLLM, GPU-Monitoring und AI-Modell-Deployment mit Docker Anleitung.

Lesezeit: 18 Min. KI & ML Self-Hosting
gpunvidiacudakünstliche intelligenzvllmdockermodel serving
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

AI-Modell-Deployment auf GPU-Servern: NVIDIA CUDA Anleitung

GPU-Server sind für den Betrieb von KI-Modellen in Produktionsumgebungen unverzichtbar. Diese Anleitung behandelt alles von der NVIDIA-Treiberinstallation über die CUDA-Konfiguration, Docker-GPU-Integration bis hin zum hochleistungsfähigen Modell-Serving mit vLLM.

GPU-Server-Anforderungen

KomponenteMinimumEmpfohlen
GPUNVIDIA T4 (16 GB)NVIDIA A100 (40/80 GB)
RAM32 GB64 GB+
Festplatte100 GB SSD500 GB NVMe
OSUbuntu 22.04 LTSUbuntu 22.04/24.04 LTS
CUDA12.0+12.4+

NVIDIA-Treiberinstallation

Zuerst vorhandene Treiber entfernen und den neuen installieren:

hljs bash
# Vorhandene NVIDIA-Treiber entfernen
sudo apt-get purge nvidia-* -y
sudo apt-get autoremove -y

# Systemaktualisierung
sudo apt-get update && sudo apt-get upgrade -y

# NVIDIA-Treiber-Repository hinzufügen
sudo apt-get install -y linux-headers-$(uname -r)
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt-get update

# Empfohlenen Treiber prüfen
ubuntu-drivers devices

# NVIDIA-Treiber installieren
sudo apt-get install -y nvidia-driver-550
sudo reboot

Nach der Installation überprüfen:

hljs bash
# Treiberversion und GPU-Informationen
nvidia-smi

CUDA-Toolkit-Installation

hljs bash
# CUDA-Keyring hinzufügen
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

# CUDA-Toolkit installieren
sudo apt-get install -y cuda-toolkit-12-4

# PATH-Konfiguration
echo 'export PATH=/usr/local/cuda-12.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# Überprüfung
nvcc --version

NVIDIA Container Toolkit

Das nvidia-container-toolkit wird benötigt, um GPUs in Docker-Containern zu verwenden:

hljs bash
# NVIDIA Container Toolkit Repository
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-Runtime konfigurieren
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# Test
sudo docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

Modell-Serving mit vLLM

vLLM ist eine Hochdurchsatz-LLM-Inference-Engine. Sie optimiert die Speichernutzung mit PagedAttention-Technologie.

vLLM mit Docker

hljs bash
docker run -d \
  --name vllm \
  --gpus all \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  --env HUGGING_FACE_HUB_TOKEN=$HF_TOKEN \
  vllm/vllm-openai:latest \
  --model meta-llama/Meta-Llama-3.1-8B-Instruct \
  --max-model-len 4096 \
  --gpu-memory-utilization 0.9

Docker Compose mit vLLM

hljs yaml
version: '3.8'
services:
  vllm:
    image: vllm/vllm-openai:latest
    container_name: vllm-server
    ports:
      - "8000:8000"
    volumes:
      - huggingface_cache:/root/.cache/huggingface
    environment:
      - HUGGING_FACE_HUB_TOKEN=${HF_TOKEN}
    command: >
      --model meta-llama/Meta-Llama-3.1-8B-Instruct
      --max-model-len 4096
      --gpu-memory-utilization 0.9
      --tensor-parallel-size 1
      --dtype auto
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  huggingface_cache:

vLLM-API-Nutzung

vLLM bietet eine OpenAI-kompatible API:

hljs bash
curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "meta-llama/Meta-Llama-3.1-8B-Instruct",
    "messages": [
      {"role": "system", "content": "Du bist ein hilfreicher Assistent."},
      {"role": "user", "content": "Was ist Docker?"}
    ],
    "max_tokens": 512,
    "temperature": 0.7
  }'

Python-Nutzung mit vLLM

hljs python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="not-needed"
)

response = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3.1-8B-Instruct",
    messages=[
        {"role": "system", "content": "Du bist ein Linux-Experte."},
        {"role": "user", "content": "Wie konfiguriert man RAID?"}
    ],
    max_tokens=1024,
    temperature=0.7
)

print(response.choices[0].message.content)

Multi-GPU-Konfiguration

hljs bash
# Tensor-Parallelismus mit mehreren GPUs
docker run -d \
  --name vllm-multi \
  --gpus all \
  -p 8000:8000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  vllm/vllm-openai:latest \
  --model meta-llama/Meta-Llama-3.1-70B-Instruct \
  --tensor-parallel-size 4 \
  --max-model-len 4096 \
  --gpu-memory-utilization 0.9

GPU-Monitoring

Überwachung mit nvidia-smi

hljs bash
# Aktueller Status
nvidia-smi

# Kontinuierliche Überwachung (jede Sekunde)
watch -n 1 nvidia-smi

# Nur GPU-Auslastung und Speicher
nvidia-smi --query-gpu=index,name,utilization.gpu,memory.used,memory.total,temperature.gpu --format=csv -l 1

Monitoring mit Prometheus + Grafana

hljs yaml
version: '3.8'
services:
  dcgm-exporter:
    image: nvcr.io/nvidia/k8s/dcgm-exporter:3.3.5-3.4.0-ubuntu22.04
    container_name: dcgm-exporter
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    ports:
      - "9400:9400"
    restart: unless-stopped

Sicherheit und Optimierung

GPU Persistence Mode

hljs bash
# Persistence-Modus aktivieren (niedrigere Latenz)
sudo nvidia-smi -pm 1

# GPU-Taktrate fixieren
sudo nvidia-smi -lgc 1410,1410

# Leistungslimit setzen
sudo nvidia-smi -pl 300

Betreiben Sie Ihre KI-Modelle mit hoher Leistung auf REXE GPU-Servern mit NVIDIA A100/H100 GPUs. Kontaktieren Sie uns für professionelle GPU-Server-Lösungen.

Häufig gestellte Fragen

Welches GPU-Modell eignet sich für AI-Modell-Serving?

Für 7B-13B-Parameter-Modelle reichen NVIDIA T4 (16 GB) oder RTX 4090 (24 GB) aus. Für 70B-Modelle wird A100 (40/80 GB) oder H100 (80 GB) empfohlen. Die VRAM-Kapazität ist der kritischste Faktor.

Was ist der Unterschied zwischen vLLM und Ollama?

Ollama ist ideal für einfache Einrichtung und Entwicklungsumgebungen. vLLM bietet hohen Durchsatz und niedrige Latenz in Produktionsumgebungen. vLLM bietet mit Continuous Batching und PagedAttention eine viel effizientere Speichernutzung.

Warum wird nvidia-container-toolkit benötigt?

Docker-Container können standardmäßig nicht auf GPUs zugreifen. nvidia-container-toolkit fügt GPU-Passthrough-Unterstützung zur Docker-Runtime hinzu. Damit können GPUs innerhalb von Containern mit dem Parameter --gpus all verwendet werden.

Können mehrere Modelle auf derselben GPU laufen?

Ja, mehrere Modelle können auf derselben GPU laufen, solange genügend VRAM vorhanden ist. In vLLM können Sie mit dem Parameter --gpu-memory-utilization Speicherlimits für jedes Modell festlegen.

Beeinflusst ein GPU-Treiber-Update das Modell-Serving?

Ja, während Treiber-Updates wird der GPU-Zugriff unterbrochen und laufende Container sind betroffen. Stoppen Sie Container vor dem Update, aktualisieren Sie den Treiber, starten Sie das System neu und starten Sie die Container erneut.

Wie behebt man den CUDA-Out-of-Memory-Fehler?

Reduzieren Sie die Modellgröße (verwenden Sie eine quantisierte Version), senken Sie den --max-model-len-Wert, setzen Sie --gpu-memory-utilization zwischen 0,85-0,9 oder verwenden Sie eine GPU mit mehr VRAM.

Verwandte Artikel

Stable Diffusion Einrichtung: Self-Hosted Bilderzeugung

Stable Diffusion Installation, AUTOMATIC1111 und ComfyUI Oberflächen, Modell-Download, LoRA-Training, ControlNet-Nutzung und Docker Self-Hosted Bilderzeugung Anleitung.

16 Min.
stable-diffusionbilderzeugungkünstliche intelligenz
NetzwerkverkehrEingehend GbpsAusgehend Gbps