drholy revised this gist 5 months ago. Go to revision
No changes
drholy revised this gist 5 months ago. Go to revision
1 file changed, 12 deletions
manual.md
| @@ -1,15 +1,3 @@ | |||
| 1 | - | Судя по выводу, **Device 0 полностью не отвечает** (`N/A` по всем параметрам, 0% нагрузки), а система явно указывает на переход в режим низкого энергопотребления. Device 1 работает штатно. Обе карты имеют одинаковый Device ID `0x66a1` (это GPU на архитектуре RDNA3, например RX 7800 XT / 7900 GRE). | |
| 2 | - | ||
| 3 | - | ### 🔍 Вероятные причины | |
| 4 | - | 1. **Linux Runtime PM**: ядро перевело неиспользуемую карту в состояние `D3cold`/`suspended` для экономии энергии, а драйвер `amdgpu` или ROCm не могут её корректно "разбудить". | |
| 5 | - | 2. **Неполная инициализация драйвера**: отсутствие/старая прошивка, конфликт версий ядра и ROCm, или ошибка PCIe-линка. | |
| 6 | - | 3. **Аппаратная проблема**: недостаточное питание, плохой контакт в слоте, неисправность карты. | |
| 7 | - | 4. **Неподдерживаемая конфигурация**: ваша версия ROCm может не до конца поддерживать RDNA3 в multi-GU или требует определённых параметров ядра. | |
| 8 | - | ||
| 9 | - | --- | |
| 10 | - | ||
| 11 | - | ### 🛠 Пошаговое решение | |
| 12 | - | ||
| 13 | 1 | #### 1. Определите, какой системной карте соответствует `Device 0` | |
| 14 | 2 | ```bash | |
| 15 | 3 | ls -l /sys/class/drm/ | grep card | |
drholy revised this gist 5 months ago. Go to revision
1 file changed, 56 insertions
manual.md(file created)
| @@ -0,0 +1,56 @@ | |||
| 1 | + | Судя по выводу, **Device 0 полностью не отвечает** (`N/A` по всем параметрам, 0% нагрузки), а система явно указывает на переход в режим низкого энергопотребления. Device 1 работает штатно. Обе карты имеют одинаковый Device ID `0x66a1` (это GPU на архитектуре RDNA3, например RX 7800 XT / 7900 GRE). | |
| 2 | + | ||
| 3 | + | ### 🔍 Вероятные причины | |
| 4 | + | 1. **Linux Runtime PM**: ядро перевело неиспользуемую карту в состояние `D3cold`/`suspended` для экономии энергии, а драйвер `amdgpu` или ROCm не могут её корректно "разбудить". | |
| 5 | + | 2. **Неполная инициализация драйвера**: отсутствие/старая прошивка, конфликт версий ядра и ROCm, или ошибка PCIe-линка. | |
| 6 | + | 3. **Аппаратная проблема**: недостаточное питание, плохой контакт в слоте, неисправность карты. | |
| 7 | + | 4. **Неподдерживаемая конфигурация**: ваша версия ROCm может не до конца поддерживать RDNA3 в multi-GU или требует определённых параметров ядра. | |
| 8 | + | ||
| 9 | + | --- | |
| 10 | + | ||
| 11 | + | ### 🛠 Пошаговое решение | |
| 12 | + | ||
| 13 | + | #### 1. Определите, какой системной карте соответствует `Device 0` | |
| 14 | + | ```bash | |
| 15 | + | ls -l /sys/class/drm/ | grep card | |
| 16 | + | # Обычно card0 → Device 0, card1 → Device 1 | |
| 17 | + | # Точнее можно сопоставить через: | |
| 18 | + | lspci -k | grep -iE 'vga|3d' -A 2 | |
| 19 | + | ``` | |
| 20 | + | ||
| 21 | + | #### 2. Проверьте статус энергопотребления | |
| 22 | + | ```bash | |
| 23 | + | cat /sys/class/drm/card0/device/power/runtime_status | |
| 24 | + | cat /sys/class/drm/card0/device/power/control | |
| 25 | + | ``` | |
| 26 | + | - Если `runtime_status` = `suspended` или `auto`, а `control` = `auto` → система пытается экономить энергию. | |
| 27 | + | - Если `control` = `auto`, измените его временно: | |
| 28 | + | ```bash | |
| 29 | + | echo on | sudo tee /sys/class/drm/card0/device/power/control | |
| 30 | + | ``` | |
| 31 | + | *(запись в `runtime_status` не требуется и обычно запрещена)* | |
| 32 | + | Снова запустите `rocm-smi`. Если данные появились → причина точно в Runtime PM. | |
| 33 | + | ||
| 34 | + | #### 3. Проверьте логи ядра на ошибки | |
| 35 | + | ```bash | |
| 36 | + | dmesg | grep -iE 'amdgpu|pcie|error|firmware|link' | tail -40 | |
| 37 | + | ``` | |
| 38 | + | Ищите строки вроде: | |
| 39 | + | - `amdgpu: failed to load firmware` | |
| 40 | + | - `PCIe link degraded` или `Gen1 x1` | |
| 41 | + | - `runtime suspend failed` или `device not responding` | |
| 42 | + | ||
| 43 | + | #### 4. Если Runtime PM мешает → отключите его навсегда | |
| 44 | + | Отредактируйте GRUB: | |
| 45 | + | ```bash | |
| 46 | + | sudo nano /etc/default/grub | |
| 47 | + | ``` | |
| 48 | + | В строку `GRUB_CMDLINE_LINUX_DEFAULT` добавьте: | |
| 49 | + | ``` | |
| 50 | + | amdgpu.runpm=0 pcie_aspm=off | |
| 51 | + | ``` | |
| 52 | + | Примените и перезагрузитесь: | |
| 53 | + | ```bash | |
| 54 | + | sudo update-grub # или sudo grub2-mkconfig -o /boot/grub2/grub.cfg на RHEL/Arch | |
| 55 | + | sudo reboot | |
| 56 | + | ``` | |
drholy revised this gist 5 months ago. Go to revision
1 file changed, 1 insertion
manual_amd_radeon_pro_vii.yaml
| @@ -22,6 +22,7 @@ services: | |||
| 22 | 22 | - /dev/kfd | |
| 23 | 23 | device_cgroup_rules: | |
| 24 | 24 | - 'c 226:* rmw' | |
| 25 | + | runtime: runc | |
| 25 | 26 | ||
| 26 | 27 | networks: | |
| 27 | 28 | ollama-docker: | |
drholy revised this gist 5 months ago. Go to revision
2 files changed, 101 insertions
manual_amd_radeon_pro_vii.yaml(file created)
| @@ -0,0 +1,28 @@ | |||
| 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 | + | ||
| 26 | + | networks: | |
| 27 | + | ollama-docker: | |
| 28 | + | driver: bridge | |
readme.md(file created)
| @@ -0,0 +1,73 @@ | |||
| 1 | + | **Совместимость и подготовка хоста** | |
| 2 | + | Перед запуском Docker необходимо убедиться, что ваша хост-система правильно идентифицирует карту MI50 и загрузила необходимые драйверы/модули. | |
| 3 | + | ||
| 4 | + | --- | |
| 5 | + | ||
| 6 | + | ### 1. Проверьте видимость оборудования | |
| 7 | + | Сначала проверьте, видит ли ядро Linux карту на шине PCI: | |
| 8 | + | ```bash | |
| 9 | + | lspci -nn | grep -E "1002|Display|3D" | |
| 10 | + | ``` | |
| 11 | + | Вы должны увидеть запись о «Vega 20» или «Radeon Instinct MI50». | |
| 12 | + | ||
| 13 | + | --- | |
| 14 | + | ||
| 15 | + | ### 2. Установите драйверы ROCm на хост (Ubuntu 24.04) | |
| 16 | + | Если карта не обнаружена или `rocminfo` отсутствует, установите стек ROCm. Для Ubuntu 24.04 (Благородный) и ROCm 7.1 используйте следующие команды: | |
| 17 | + | ||
| 18 | + | #### Обновите систему | |
| 19 | + | ```bash | |
| 20 | + | sudo apt update && sudo apt upgrade -y | |
| 21 | + | ``` | |
| 22 | + | ||
| 23 | + | #### Скачайте и установите репозиторий AMDGPU | |
| 24 | + | ```bash | |
| 25 | + | wget https://repo.radeon.com/amdgpu-install/7.2/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb | |
| 26 | + | sudo apt install ./amdgpu-install_7.2.70200-1_all.deb | |
| 27 | + | ``` | |
| 28 | + | ||
| 29 | + | #### Установите ROCm и HIP | |
| 30 | + | ```bash | |
| 31 | + | sudo amdgpu-install --usecase=rocm,hip | |
| 32 | + | ``` | |
| 33 | + | ||
| 34 | + | #### Перезагрузка хоста | |
| 35 | + | ```bash | |
| 36 | + | sudo reboot now | |
| 37 | + | ``` | |
| 38 | + | ||
| 39 | + | --- | |
| 40 | + | ||
| 41 | + | ### 3. Узлы и разрешения тестовых устройств | |
| 42 | + | Docker требует доступа к определенным узлам устройства. Проверьте их наличие: | |
| 43 | + | ```bash | |
| 44 | + | ls -l /dev/kfd /dev/dri/render* | |
| 45 | + | ``` | |
| 46 | + | ||
| 47 | + | **Важно:** Ваш пользователь должен быть в группах `render` и `video` для доступа к графическому процессору: | |
| 48 | + | ```bash | |
| 49 | + | sudo usermod -aG render $USER | |
| 50 | + | sudo usermod -aG video $USER | |
| 51 | + | # Выходите и войдите снова, чтобы изменения вступили в силу | |
| 52 | + | ``` | |
| 53 | + | ||
| 54 | + | --- | |
| 55 | + | ||
| 56 | + | ### 4. Окончательная проверка хоста | |
| 57 | + | Запустите следующие команды на хосте. Если они завершатся ошибкой, Docker не будет работать: | |
| 58 | + | ||
| 59 | + | #### Проверьте информацию ROCm | |
| 60 | + | ```bash | |
| 61 | + | rocminfo | |
| 62 | + | ``` | |
| 63 | + | **Найдите:** `Name: gfx906` | |
| 64 | + | ||
| 65 | + | #### Проверьте SMI | |
| 66 | + | ```bash | |
| 67 | + | rocm-smi | |
| 68 | + | ``` | |
| 69 | + | **Должен показывать:** ваш MI50 и текущую температуру. | |
| 70 | + | ||
| 71 | + | --- | |
| 72 | + | ||
| 73 | + | **Примечание:** Убедитесь, что все команды выполнены в правильном порядке и система обновлена. | |