1. Определите, какой системной карте соответствует Device 0
ls -l /sys/class/drm/ | grep card
# Обычно card0 → Device 0, card1 → Device 1
# Точнее можно сопоставить через:
lspci -k | grep -iE 'vga|3d' -A 2
2. Проверьте статус энергопотребления
cat /sys/class/drm/card0/device/power/runtime_status
cat /sys/class/drm/card0/device/power/control
- Если
runtime_status=suspendedилиauto, аcontrol=auto→ система пытается экономить энергию. - Если
control=auto, измените его временно:
(запись вecho on | sudo tee /sys/class/drm/card0/device/power/controlruntime_statusне требуется и обычно запрещена)
Снова запуститеrocm-smi. Если данные появились → причина точно в Runtime PM.
3. Проверьте логи ядра на ошибки
dmesg | grep -iE 'amdgpu|pcie|error|firmware|link' | tail -40
Ищите строки вроде:
amdgpu: failed to load firmwarePCIe link degradedилиGen1 x1runtime suspend failedилиdevice not responding
4. Если Runtime PM мешает → отключите его навсегда
Отредактируйте GRUB:
sudo nano /etc/default/grub
В строку GRUB_CMDLINE_LINUX_DEFAULT добавьте:
amdgpu.runpm=0 pcie_aspm=off
Примените и перезагрузитесь:
sudo update-grub # или sudo grub2-mkconfig -o /boot/grub2/grub.cfg на RHEL/Arch
sudo reboot
| 1 | services: |
| 2 | ollama-amd2: |
| 3 | image: xxdoman/ollama-mi50:latest |
| 4 | container_name: ollama-amd2 |
| 5 | ports: |
| 6 | - 7871:11434 |
| 7 | environment: |
| 8 | - OLLAMA_KEEP_ALIVE=2h |
| 9 | - OLLAMA_NUM_PARALLEL=1 |
| 10 | - OLLAMA_KV_CACHE_TYPE=q4_0 |
| 11 | - OLLAMA_FLASH_ATTENTION=1 |
| 12 | - OLLAMA_LLM_LIBRARY=rocm |
| 13 | - OLLAMA_MODELS=/models |
| 14 | - HSA_OVERRIDE_GFX_VERSION=9.0.6 |
| 15 | - LD_LIBRARY_PATH="/usr/lib/ollama/rocm" |
| 16 | volumes: |
| 17 | - /dev/dri:/dev/dri |
| 18 | - ./ollama_models:/models |
| 19 | networks: |
| 20 | - ollama-docker |
| 21 | devices: |
| 22 | - /dev/kfd |
| 23 | device_cgroup_rules: |
| 24 | - 'c 226:* rmw' |
| 25 | runtime: runc |
| 26 | |
| 27 | networks: |
| 28 | ollama-docker: |
| 29 | driver: bridge |
Совместимость и подготовка хоста
Перед запуском Docker необходимо убедиться, что ваша хост-система правильно идентифицирует карту MI50 и загрузила необходимые драйверы/модули.
1. Проверьте видимость оборудования
Сначала проверьте, видит ли ядро Linux карту на шине PCI:
lspci -nn | grep -E "1002|Display|3D"
Вы должны увидеть запись о «Vega 20» или «Radeon Instinct MI50».
2. Установите драйверы ROCm на хост (Ubuntu 24.04)
Если карта не обнаружена или rocminfo отсутствует, установите стек ROCm. Для Ubuntu 24.04 (Благородный) и ROCm 7.1 используйте следующие команды:
Обновите систему
sudo apt update && sudo apt upgrade -y
Скачайте и установите репозиторий AMDGPU
wget https://repo.radeon.com/amdgpu-install/7.2/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb
sudo apt install ./amdgpu-install_7.2.70200-1_all.deb
Установите ROCm и HIP
sudo amdgpu-install --usecase=rocm,hip
Перезагрузка хоста
sudo reboot now
3. Узлы и разрешения тестовых устройств
Docker требует доступа к определенным узлам устройства. Проверьте их наличие:
ls -l /dev/kfd /dev/dri/render*
Важно: Ваш пользователь должен быть в группах render и video для доступа к графическому процессору:
sudo usermod -aG render $USER
sudo usermod -aG video $USER
# Выходите и войдите снова, чтобы изменения вступили в силу
4. Окончательная проверка хоста
Запустите следующие команды на хосте. Если они завершатся ошибкой, Docker не будет работать:
Проверьте информацию ROCm
rocminfo
Найдите: Name: gfx906
Проверьте SMI
rocm-smi
Должен показывать: ваш MI50 и текущую температуру.
Примечание: Убедитесь, что все команды выполнены в правильном порядке и система обновлена.