Настройка GPU-кластера для обучения моделей (NVIDIA, A100, H100)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Настройка GPU-кластера для обучения моделей (NVIDIA, A100, H100)
Сложная
~5 рабочих дней
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    854
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Настройка GPU-кластера для обучения моделей (NVIDIA A100, H100)

Правильно настроенный GPU-кластер — это не просто набор серверов с видеокартами. Это согласованная система: сеть с минимальной latency между узлами, правильно сконфигурированные драйверы и CUDA, оптимизированное хранилище для датасетов, оркестратор для управления задачами обучения и мониторинг утилизации дорогостоящего железа.

Выбор оборудования

NVIDIA A100 (40GB / 80GB SXM) — основной workhorse для обучения больших моделей. SXM-версия с NVLink обеспечивает 600 GB/s GPU-to-GPU bandwidth внутри сервера, что критично для tensor parallelism.

NVIDIA H100 (80GB SXM5) — следующее поколение. FP8 training, 3.35TB/s HBM3 bandwidth, 900 GB/s NVLink 4.0. Примерно в 2-3x быстрее A100 для transformer-обучения.

Interconnect: InfiniBand HDR/NDR (200-400 Gbps) между узлами — обязателен для эффективного multi-node training. Ethernet 100 GbE — допустим, но со значительным снижением scaling efficiency.

Storage: Parallel file system (GPFS, Lustre, WekaFS) или NVMe over Fabrics. Случайный узкий IO хранилища — частая причина GPU underutilization.

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

# Ubuntu 22.04
# 1. NVIDIA driver
apt install linux-headers-$(uname -r)
apt install nvidia-driver-535  # или последний production driver

# 2. CUDA Toolkit (лучше через runfile, не apt)
wget https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/cuda_12.3.0_545.23.06_linux.run
sh cuda_12.3.0_545.23.06_linux.run --silent --toolkit

# 3. cuDNN
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cp cuda/include/cudnn*.h /usr/local/cuda/include
cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
ldconfig

# 4. Проверка
nvidia-smi
nvcc --version
python -c "import torch; print(torch.cuda.device_count())"

Настройка NCCL и тестирование interconnect

# Установка NCCL
apt install libnccl2 libnccl-dev

# Тест bandwidth между GPU внутри узла
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests && make
./build/all_reduce_perf -b 1G -e 4G -f 2 -g 8

# Ожидаемые результаты на 8x A100 SXM с NVLink:
# 1GB: ~280 GB/s (algbw)
# 4GB: ~300 GB/s (algbw)

Оркестрация с Kubernetes + NVIDIA GPU Operator

GPU Operator автоматизирует установку драйверов, container toolkit, device plugin:

# Установка через Helm
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm install gpu-operator nvidia/gpu-operator \
  --namespace gpu-operator \
  --create-namespace \
  --set driver.enabled=true \
  --set toolkit.enabled=true

MIG (Multi-Instance GPU) для A100/H100 — разбивка одного GPU на изолированные инстансы для эффективного использования при small batch инференсе:

nvidia-smi mig -lgip  # Список профилей
nvidia-smi mig -cgi 9,9,9,9,9,9,9  # 7x MIG 1g.10gb на A100 80GB

Настройка планировщика задач

Slurm — стандарт в HPC, хорошо подходит для batch-обучения:

# sbatch job для обучения
#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=8
#SBATCH --gres=gpu:8
#SBATCH --partition=a100
#SBATCH --time=48:00:00

srun python train.py \
  --nproc_per_node=8 \
  --nnodes=4

Volcano — Kubernetes-scheduler для ML workloads с поддержкой gang scheduling (все GPU-поды запускаются одновременно или ни один):

Мониторинг GPU-кластера

# DCGM Exporter для Prometheus
helm install dcgm-exporter nvidia/dcgm-exporter

# Ключевые метрики:
# DCGM_FI_DEV_GPU_UTIL — утилизация GPU (целевой показатель > 85%)
# DCGM_FI_DEV_MEM_COPY_UTIL — PCIe bandwidth utilization
# DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL — NVLink throughput
# DCGM_FI_DEV_POWER_USAGE — потребляемая мощность
# DCGM_FI_DEV_SM_CLOCK — текущая частота

Типичный результат настройки

На 4-узловом кластере 8x A100 (32 GPU суммарно) при правильной настройке InfiniBand и NCCL достигается scaling efficiency 85-90% для LLM предобучения: обучение, которое на 4 GPU занимает 40 часов, на 32 GPU занимает ~5.5-6 часов, а не теоретические 5.