Перейти к основному содержимому
Вернуться в категорию

Развёртывание ИИ-моделей на GPU-сервере: Руководство по NVIDIA CUDA

Установка драйверов NVIDIA, CUDA toolkit, nvidia-container-toolkit, обслуживание моделей с vLLM, мониторинг GPU и развёртывание ИИ-моделей с Docker.

Время чтения: 18 мин. ИИ и ML на своём сервере
gpunvidiacudaискусственный интеллектvllmdockermodel serving

Содержание

Развёртывание ИИ-моделей на GPU-сервере: Руководство по NVIDIA CUDA

GPU-серверы необходимы для запуска ИИ-моделей в производственной среде. Это руководство охватывает всё: от установки драйверов NVIDIA до настройки CUDA, интеграции Docker с GPU и высокопроизводительного обслуживания моделей с помощью vLLM.

Требования к GPU-серверу

КомпонентМинимумРекомендуется
GPUNVIDIA T4 (16 ГБ)NVIDIA A100 (40/80 ГБ)
RAM32 ГБ64 ГБ+
Диск100 ГБ SSD500 ГБ NVMe
ОСUbuntu 22.04 LTSUbuntu 22.04/24.04 LTS
CUDA12.0+12.4+

Установка драйверов NVIDIA

Сначала удалите существующие драйверы и установите новые:

hljs bash
# Удаление существующих драйверов NVIDIA
sudo apt-get purge nvidia-* -y
sudo apt-get autoremove -y

# Обновление системы
sudo apt-get update && sudo apt-get upgrade -y

# Добавление репозитория драйверов NVIDIA
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

# Проверка рекомендуемого драйвера
ubuntu-drivers devices

# Установка драйвера NVIDIA
sudo apt-get install -y nvidia-driver-550
sudo reboot

Проверка после установки:

hljs bash
nvidia-smi

Установка CUDA Toolkit

hljs bash
# Добавление ключа CUDA
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
sudo apt-get install -y cuda-toolkit-12-4

# Настройка PATH
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

# Проверка
nvcc --version

NVIDIA Container Toolkit

nvidia-container-toolkit необходим для использования GPU в Docker-контейнерах:

hljs bash
# Репозиторий NVIDIA Container Toolkit
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
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

# Тест
sudo docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

Обслуживание моделей с vLLM

vLLM — это высокопроизводительный движок инференса LLM. Он оптимизирует использование памяти с помощью технологии PagedAttention.

vLLM с 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 с 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:

Использование API vLLM

vLLM предоставляет OpenAI-совместимый 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": "Ты полезный ассистент."},
      {"role": "user", "content": "Что такое Docker?"}
    ],
    "max_tokens": 512,
    "temperature": 0.7
  }'

Python с 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": "Ты эксперт по Linux."},
        {"role": "user", "content": "Как настроить RAID?"}
    ],
    max_tokens=1024,
    temperature=0.7
)

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

Конфигурация Multi-GPU

hljs bash
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

hljs bash
# Текущий статус
nvidia-smi

# Непрерывный мониторинг
watch -n 1 nvidia-smi

# Только использование GPU и память
nvidia-smi --query-gpu=index,name,utilization.gpu,memory.used,memory.total,temperature.gpu --format=csv -l 1

Мониторинг с 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

Безопасность и оптимизация

hljs bash
# Включение режима постоянства (низкая задержка)
sudo nvidia-smi -pm 1

# Фиксация тактовой частоты GPU
sudo nvidia-smi -lgc 1410,1410

# Установка лимита мощности
sudo nvidia-smi -pl 300

Запускайте свои ИИ-модели с высокой производительностью на GPU-серверах REXE с NVIDIA A100/H100. Свяжитесь с нами для профессиональных GPU-серверных решений.