🚀 Запускаем нейросети (LLM) на AMD GPU в Proxmox: гайд для начинающих

Привет, коллега! 👋

Если ты хочешь запустить локальную нейросеть (например, через Ollama) на своём домашнем сервере с Proxmox и видеокартой AMD — ты по адресу. В этой статье разберём по шагам, как «подружить» AMD GPU, ROCm и LXC-контейнер, даже если ты не гуру виртуализации.

⚠️ Важно: Гайд рассчитан на непривилегированные (unprivileged) LXC-контейнеры с Ubuntu 24.04 и видеокарты AMD с поддержкой ROCm (RDNA 1/2/3, некоторые GCN).


📋 Что нам понадобится

КомпонентТребования
ProxmoxВерсия 8.x (желательно последняя)
ВидеокартаAMD с поддержкой ROCm (RX 5000/6000/7000 серии и др.)
КонтейнерLXC Ubuntu 24.04 (непривилегированный)
РесурсыОт 16 ГБ ОЗУ, 60 ГБ диска (под модели + ROCm ~30 ГБ)

🔧 Шаг 1: Создаём контейнер

Самый простой способ — использовать скрипт от tteck (Proxmox VE Helper Scripts):

# В shell Proxmox хоста
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/ubuntu.sh)"

При создании укажи:

  • ОЗУ: 32 ГБ (или сколько не жалко — модели «кушают» много)
  • CPU: все доступные ядра
  • Диск: от 60 ГБ (можно расширить позже через GUI)

💡 Совет: после создания контейнера зайди в него через консоль и обнови пакеты:

apt update && apt upgrade -y

🎮 Шаг 2: Устанавливаем ROCm внутри контейнера

⚠️ Ключевой момент: на хосте Proxmox драйверы AMD уже стоят, поэтому не используем DKMS!

Выполняем по порядку:

# Скачиваем установщик ROCm для Ubuntu 24.04 (noble)
wget https://repo.radeon.com/amdgpu-install/6.2.4/ubuntu/noble/amdgpu-install_6.2.60204-1_all.deb

# Устанавливаем
sudo apt install ./amdgpu-install_6.2.60204-1_all.deb

# Запускаем установку ROCm без DKMS
amdgpu-install --usecase=rocm --no-dkms

🔧 Настраиваем переменные окружения

Некоторые видеокарты требуют «обмана» версии GPU. Добавь в ~/.bashrc или /etc/environment:

# Для RDNA 1 (RX 5000)
export HSA_OVERRIDE_GFX_VERSION=10.1.0

# Для RDNA 2 (RX 6000)
export HSA_OVERRIDE_GFX_VERSION=10.3.0

# Для RDNA 3 (RX 7000)
export HSA_OVERRIDE_GFX_VERSION=11.0.0

После этого примени изменения:

source ~/.bashrc

🔌 Шаг 3: «Пробрасываем» видеокарту в контейнер

3.1. Узнаём нужные GID внутри контейнера

cat /etc/group | grep -E 'render|video'

Запомни цифры после render: и video: (обычно это 109 и 44, но могут отличаться).

3.2. Находим путь к устройству на хосте

На хосте Proxmox выполни:

ls -l /sys/class/drm/renderD*/device/driver

Ты увидишь что-то вроде /dev/dri/renderD128 — это нам и нужно.

3.3. Настраиваем passthrough в Proxmox GUI

  1. Выбери контейнер → OptionsFeatures → убедись, что включены nesting=1 и keyctl=1
  2. Перейди в ResourcesAddDevice Passthrough
  3. Добавь два устройства:
Путь устройстваUIDGID
/dev/dri/renderDXXX0GID render из контейнера
/dev/kfd0GID video из контейнера
  1. Перезагрузи контейнер

🤖 Шаг 4: Устанавливаем Ollama (или другой LLM-раннер)

Самый простой способ — официальный скрипт:

curl -fsSL https://ollama.com/install.sh | sh

После установки проверь, видит ли система видеокарту:

# Проверка через rocminfo (если установлен)
rocminfo | grep -i name

# Или просто запусти модель и посмотри нагрузку:
ollama run llama2

На хосте можно понаблюдать за загрузкой GPU:

radeontop

🛠️ Если что-то пошло не так: частые проблемы

❌ Ошибка: kfd driver not loaded / permission problems

Решение:

  • Убедись, что пробросил оба устройства: /dev/kfd и /dev/dri/renderD*
  • Проверь, что GID в Proxmox совпадают с теми, что внутри контейнера
  • Перезагрузи контейнер после настройки

❌ Ошибка: broken packages при установке ROCm

Решение:

  • Убедись, что используешь правильный релиз Ubuntu (24.04 = noble)
  • Если стоят ядра от Proxmox, замени заголовки:
    # Вместо стандартных linux-headers:
    sudo apt install proxmox-default-headers proxmox-headers-6.5
    

❌ PyTorch не видит GPU / torch.cuda.is_available() = False

Решение:

  • Добавь в сервис Ollama (если запускаешь как systemd-сервис) переменные:
    # В /etc/systemd/system/ollama.service
    [Service]
    Environment="ROCR_VISIBLE_DEVICES=0"
    Environment="HSA_OVERRIDE_GFX_VERSION=10.3.0"
    
  • После изменений: systemctl daemon-reload && systemctl restart ollama

❌ ROCm не работает с конкретной видеокартой (например, RX 7800 XT)

Важно: Не все карты официально поддерживаются. Попробуй:

  • Указать HSA_OVERRIDE_GFX_VERSION=11.0.0 для RDNA3
  • Убедиться, что на хосте установлен DKMS-модуль: pveam download local amdgpu-dkms

🎯 Чек-лист перед стартом

  • [ ] Контейнер Ubuntu 24.04 создан с запасом по ОЗУ и диску
  • [ ] Внутри контейнера установлен ROCm с флагом --no-dkms
  • [ ] Переменные окружения (HSA_OVERRIDE_GFX_VERSION) заданы под твою карту
  • [ ] Устройства /dev/kfd и /dev/dri/renderD* проброшены с правильными GID
  • [ ] Контейнер перезапущен после всех настроек
  • [ ] Запущен ollama или другой раннер, модель грузится без ошибок

🔚 Вместо заключения

Запуск LLM на AMD в Proxmox — задача не тривиальная, но вполне решаемая. Главное:

  1. Не торопиться
  2. Внимательно читать ошибки
  3. Помнить про --no-dkms и правильные переменные окружения

Если всё сделал правильно — поздравляю! 🎉 Теперь у тебя есть своя локальная нейросеть, которая работает на твоем железе, без облаков и подписок.

💬 Есть вопросы? Заглядывай в оригинальную тему на форуме Proxmox:
https://forum.proxmox.com/threads/tutorial-run-llms-using-amd-gpu-and-rocm-in-unprivileged-lxc-container.157920/

Удачи в экспериментах! 🛠️✨

Готовы начать проект?

Я всегда открыт для обсуждения новых возможностей и интересных задач.