umtalelab.com
НАВІГАЦІЯ
  • Матеріали
  • ЛабораторіяWIP
  • Архів
ТЕМИ
  • Блоги
  • Новини
  • Огляди
  • Тести
КОНТАКТ
  • [email protected]
  • Telegram
  • YouTube
  • Patreon
© 2019–2026 UMTALE LABСЛАВА УКРАЇНІПолітика приватності
Матеріали ▾
ЛабораторіяWIP
Про нас
Контакти
// UMTALE.LAB/MENUESC — закрити · ↵ — перейти
// UMTALE.LABМЕНЮ
ГОЛОВНЕ// МЕНЮ
ЛабораторіяWIP→
UMTALE LAB · СТЕНД АКТИВНИЙ
UMTALE.LAB/МАТЕРІАЛИ/ШІ ТА НЕЙРОМЕРЕЖІ/// STABLE-DIFFUSION-WEBUI-NA-STARYKH-VIDEOKARTAKH-AMD-RX-400500VEGA-R9-200300-WINDOWS
Stable Diffusion WebUI на старих відеокартах AMD RX 400/500/Vega, R9 200/300 (Windows)
БЛОГИ · ШІ ТА НЕЙРОМЕРЕЖІ
22.04.2024
ОПУБЛІКОВАНО22 квітня 2024 р.
ЧИТАННЯ12 хв

Stable Diffusion WebUI на старих відеокартах AMD RX 400/500/Vega, R9 200/300 (Windows)

Запуск Stable Diffusion WebUI DirectML на старих AMD RX 400/500/Vega, R9 200/300 (Windows). Вимоги, встановлення, усунення проблем з 4ГБ+ VRAM.

UmTale
НЕЙРОМЕРЕЖІ·RADEON RX 470·STABLE DIFFUSION·RADEON R9 270X
ЧИТАТИ ↓
У МАТЕРІАЛІ
  1. Системні вимоги та необхідне ПЗ
  2. Встановлення та запуск Stable Diffusion WebUI
  3. Вирішення потенційних проблем після встановлення Stable Diffusion WebUI
  4. Додаткові налаштування та приклади роботи Stable Diffusion WebUI на 4 та 8 ГБ відеокартах AMD
  5. Підсумок
РЕАКЦІЇ

Замість вступного слова, хотілося б одразу звернути вашу увагу на версію збірки Stable Diffusion WebUI DirectML, якою ви користуєтеся. Якщо вона дорівнює 1.8.0-RC, то ласкаво просимо на сторінку цього матеріалу. У випадку збірки 1.9.0 і вище, цілком можливо, що вам просто необхідно видалити папку "venv", після чого запустити "webui-user.bat", щоб автоматично перезавантажити раніше видалену папку з "правильними" файлами. Якщо ж це не допомогло, то знову ж таки – ласкаво просимо на сторінку цього матеріалу.

Наступне, і не менш важливе: ваша відеокарта AMD повинна підтримувати низькорівневий API для машинного навчання DirectML та мати щонайменше 4 ГБ відеопам’яті. Підтримку DirectML мають усі графічні адаптери AMD, засновані на архітектурах GCN 1.0, GCN 2.0 та GCN 4.0. Ось тільки є нюанс щодо об’єму встановленої VRAM. Серія Radeon HD 7000, за рідкісними винятками, не виходить за межі 3 ГБ, а цього замало для Stable Diffusion.

Якщо коротко, то підійдуть карти з об’ємом 4 ГБ+ починаючи з Radeon R9 270 (перевірено особисто на 4-гігабайтній версії, дивіться трохи нижче)/280/285/290X/370/380/390X (6-гігабайтна HD 7970 також підійде, але це рідкісний звір, так що...), ну і звичайно ж, всіма улюблені RX 470/480/570/580/590/Vega 56/64. Однак слід уточнити – вкрай бажано, щоб у відеокарти було 8 ГБ VRAM і більше. Швидкість генерації зображень при використанні DirectML на цьому об’ємі відчутно вища, і що найважливіше – стабільніша.

Проте, це не означає, що власники 4-гігабайтних карт чимось серйозно обмежені. На подібних пристроях функціонує практично все те, що й на 8-гігабайтних графічних адаптерах. Наприклад, інтеграція LoRA відбувається без проблем, і генерація з нею працює більш ніж прийнятно.

Єдине, що варто згадати, так це досить серйозні вимоги до об’єму оперативної пам’яті у 4-гігабайтних GPU. Тут краще мати понад 16 ГБ ОЗУ для SD 1.5, і 32 ГБ+ для SDXL чекпоінтів/моделей, особливо якщо ви бажаєте генерувати зображення з роздільною здатністю 768x512 / 512x768 і вище.

“
Дисклеймер:Усі нижчеописані дії та налаштування допомогли саме в моєму випадку (операційна система – Windows 11, залізо – R9 270X 4 GB, RX 470 4 GB та RX 470 8 GB). Існує неілюзорна ймовірність, що мій досвід вам не допоможе.

Системні вимоги та необхідне ПЗ

Для початку, давайте переконаємося, що ви виконали всі відповідні вимоги для подальшого успішного запуску Stable Diffusion WebUI, з бекендом DirectML.

Мінімальні системні вимоги:

  • Операційна система: Windows 10/11;

  • Об’єм оперативної пам’яті: 16 ГБ і більше;

  • Процесор: 4-ядерний чип Intel Core i5-2400, або AMD FX-4300 або краще;

  • Відеокарта: Radeon R9 270 4 ГБ, Radeon RX 470 4 ГБ або краще;

  • Накопичувач (бажано SSD, але швидкісний HDD теж підійде): близько 10 ГБ вільного місця для встановлення, і до шалених обсягів у 100 і 300 ГБ. Усе залежить від того, наскільки багато чекпоінтів/моделей ви збираєтеся використовувати.

Необхідне програмне забезпечення:

Актуальна збіркаstable-diffusion-webui-directml з офіційного джерела

⤢ ВІДКРИТИ

64-bit версія Git for Windows

⤢ ВІДКРИТИ

64-bit версія Python 3.10.6(під час встановленняОБОВ'ЯЗКОВОпоставте галочку на пунктіAdd Python 3.10 to PATH).

⤢ ВІДКРИТИ

Встановлення та запуск Stable Diffusion WebUI

Усі пункти успішно виконано? Тоді розпаковуємо архів зі Stable Diffusion WebUI в корінь будь-якого диска. Залежно від потреб, ви можете перейменувати архів та/або папку, це ні на що не вплине,головне, щоб у назві папки не було пробілів. Я так і зробив, тому що маю кілька тестових екземплярів.

⤢ ВІДКРИТИ

Заходимо в розпаковану папку і натискаємо правим кліком на файл "webui-user.bat", далі клацаємо по пункту "змінити/відкрити за допомогою Code" (для редагування можна використовувати як стандартний блокнот, так і Microsoft VS Code):

⤢ ВІДКРИТИ

Тут вам потрібно прописати аргументи для запуску нейромережі.

⤢ ВІДКРИТИ

Для першого успішного старту Stable Diffusion WebUI DirectML краще не використовувати зайвих параметрів і зупинитися на таких:

Для відеокарт з 4 ГБ відеопам'яті:

Bash
set COMMANDLINE_ARGS= --use-directml --lowvram

Для відеокарт з 8 ГБ відеопам'яті:

Bash
set COMMANDLINE_ARGS= --use-directml --medvram

Для відеокарт з 16 ГБ відеопам'яті та більше:

Bash
set COMMANDLINE_ARGS= --use-directml
⤢ ВІДКРИТИ

Аргумент--use-directmlвказує збірці примусово переключитися на відповідний бекенд і завантажити на ваш ПК сумісні бібліотеки.--lowvramпокликаний знизити споживання відеопам'яті, на шкоду швидкості генерації (зокрема за рахунок ОЗП).--medvramтакож трохи знижує швидкість генерації, але вже не так істотно як--lowvram.

Зберігаємо файл (файл>зберегти, або поєднанням клавіш CTRL + S) і запускаємо змінений батник. Відкриється вікно командного рядка. Далі вас чекає вельми тривале встановлення всіх необхідних асетів і бібліотек (залежно від потужності вашого ПК і швидкості інтернету — від 10 хвилин до 1 години). У якийсь момент може здатися, що встановлення зависло, але, найімовірніше, це не так. Просто зачекайте ще трохи.

[ + ]
[ + ]
[ + ]
[ + ]

Після завершення встановлення консоль автоматично запустить браузер, у якому відкриється вкладка з адресоюhttp://127.0.0.1:7860/. Якщо цього не сталося, то просто скопіюйте раніше згадане посилання та вставте в адресний рядок браузера.

⤢ ВІДКРИТИ
“
Вкрай важливо: ні в якому разі не закривайте консоль! Це і є ваш особистий сервер з нейромережею, а вкладка в браузері — просто графічний інтерфейс взаємодії з ним.

Тепер давайте перевіримо, чи працює наша нейромережа. На даному етапі я не завантажував жодних додаткових моделей, тому використовуватиму базову SD 1.5. Впишемо простенький prompt "knight" і вуаля, генеруючи наше зображення, графічний процесор 4-гігабайтної відеокарти RX 470 завантажений практично під зав'язку:

⤢ ВІДКРИТИ
⤢ ВІДКРИТИ
Який prompt — такий і результат.

Навіть на відеокарті зі скромним об'ємом VRAM, швидкість генерації істотно вища, ніж на класичному центральному процесорі.

До речі, ось і генерація заголовного зображення для цього матеріалу силами 4-гігабайтної RX 470. Тут я вже використовую сторонній чекпоінт CyberRealistic v4.2, на додачу з двома LoRA:

⤢ ВІДКРИТИ

За підсумком, я лише трохи підкоригував контрастність і замінив логотип на AMD у растровому редакторі зображень.

Загалом, це все. Сервер працює, інтерфейс доступний, можете сміливо приступати до генерації потенційних шедеврів! А от якщо у вас виникли проблеми із запуском, або генерація стопориться через помилки – тоді ласкаво просимо до наступного розділу цього матеріалу.

Вирішення потенційних проблем після встановлення Stable Diffusion WebUI

У разі виникнення різноманітних помилок під час запуску (на кшталт злощасної "Torch is not able to use GPU") або спроби генерації зображень у Stable Diffusion WebUI DirectML, вам варто спробувати виконати такі дії:

Зайдіть у директорію з нейромережею і видаліть папкуvenv

⤢ ВІДКРИТИ

Далі, у директорії з нейромережею знайдіть файлrequirements_versions.txt і натисніть на нього правою кнопкою миші, після чого клацніть на пункт "змінити/відкрити за допомогою Code".

⤢ ВІДКРИТИ

У цьому файлі вам потрібно знайти запис про необхідну бібліотекуtorch, вона розташована приблизно на 29-33 рядку, залежно від збірки WebUI:

⤢ ВІДКРИТИ

Цей запис вам потрібно змінити наtorch-directml

⤢ ВІДКРИТИ

Зберігаємось і закриваємо цей файл. Слідом за цим, натискаємо правою кнопкою миші на файл "webui-user.bat", далі клацаємо на пункт "змінити/відкрити за допомогою Code". Тут вам потрібно до вже прописаних раніше параметрів додати наступний аргумент--reinstall-torch

⤢ ВІДКРИТИ

Зберігаємось і запускаємо цей же файл. Таким чином ми перевстановлюємо бібліотеки torch виключно під DirectML (і CPU, але нам це не цікаво).

Після того, як консоль знову завантажить необхідні файли і відкриється веб-інтерфейс Stable Diffusion, аргумент--reinstall-torch з батникаwebui-user.bat можна видаляти.

У моєму випадку це допомогло з вирішенням помилки "Torch is not able to use GPU" на одній зі збірок Stable Diffusion WebUI DirectML. На іншій збірці позбавило від проблеми використання процесора замість відеокарти AMD.

Додаткові налаштування та приклади роботи Stable Diffusion WebUI на 4 та 8 ГБ відеокартах AMD

У цьому розділі я опишу свій досвід роботи з нейромережею на слабких відеокартах AMD, а також наведу кілька прикладів генерації зображень на графічних адаптерах R9 270X та RX 470.

Згідно з моїми дослідженнями, лише два аргументи дозволяють отримати суттєвий приріст продуктивності на відеокартах AMD. Перший – це--opt-sdp-attention, який, якщо не вдаватися в подробиці, є аналогом xFormers для карт NVIDIA, але, на відміну від останнього, працює і на червоних графічних адаптерах.--opt-sdp-attention дійсно прискорює генерацію зображень, однак це далеко не безкоштовно. Ціною за підвищену швидкість стає відеопам'ять, якої, з бекендом DirectML і так постійно не вистачає.

Другий аргумент – це--upcast-sampling. Генерацію він прискорює незначно, але при цьому злегка зменшує споживання відеопам'яті, що досить доречно.

Параметри запуску Stable Diffusion WebUI для 4-гігабайтних карт R9 270X та RX 470:

Bash
set COMMANDLINE_ARGS= --use-directml --lowvram

З якоїсь причини, параметр --upcast-samplingлише шкодить картам з малим об'ємом відеопам'яті. При використанні цього аргументу, швидкість генерації падає у два-три рази. Хоча, судячи з опису в документації, він нібито покликаний трохи оптимізувати споживання тієї самої відеопам'яті, і трохи прискорити генерацію.

Використовувати --opt-sdp-attention на 4 ГБ відеокартах взагалі неможливо. Генерація навіть не запускається, вивалюючись з помилкою про критичну нестачу пам'яті практично за будь-якої роздільної здатності.

На жаль, але в моєму випадку ці параметри не допомогли 4-гігабайтним картам. Проте, ви цілком можете провести відповідні експерименти на своєму ПЗ та обладнанні. Можливо, у вашому випадку вищезгадані параметри адекватно запрацюють на картах зі скромним об'ємом VRAM.

Процес генерації одного із зображень на Radeon R9 270X з роздільною здатністю 512 на 768 пікселів:

⤢ ВІДКРИТИ

Фінальний результат:

⤢ ВІДКРИТИ

Час генерації – трохи більше 5 хвилин, при 20 sampling steps, а також одній підключеній LoRA. Для такої старої відеокарти – чудовий результат.

Ще один фінальний результат:

⤢ ВІДКРИТИ

А тепер давайте подивимося, за скільки впорається RX 470 4GB з аналогічними налаштуваннями та роздільною здатністю:

⤢ ВІДКРИТИ

Вже краще – 3 хвилини 23 секунди.

Ну й найцікавіше я залишив під кінець. У тестовому стенді RX 470 на 8 ГБ.

Параметри запуску Stable Diffusion WebUI для 8-гігабайтних карт:

Bash
set COMMANDLINE_ARGS= --use-directml --medvram --opt-sdp-attention --upcast-sampling

У випадку відносно достатнього об'єму відеопам'яті, параметри --opt-sdp-attention та --upcast-sampling працюють як прописано в документації, і дійсно істотно прискорюють генерацію зображень, а також трохи знижують споживання VRAM.

Без --opt-sdp-attention та --upcast-sampling:

⤢ ВІДКРИТИ

Генерація тривала 2 хвилини 53 секунди. Приріст відносно 4-гігабайтної версії зовсім несуттєвий.

З --opt-sdp-attention та --upcast-sampling:

⤢ ВІДКРИТИ

А ось це вже інша справа – всього 44 секунди! Саме як я й писав на початку матеріалу, 8-гігабайтні версії RX 470/480/570/580/590 будуть генерувати зображення набагато швидше своїх 4-гігабайтних родичів.

Спробуймо трохи збільшити роздільну здатність до 512 на 900:

⤢ ВІДКРИТИ

53 секунди – відмінний результат! Але тут ми досягли межі 8-гігабайтних відеокарт. Якщо ви бажаєте генерувати зображення з вищою роздільною здатністю, вам необхідно використовувати аргумент --lowvram і для подібного об'єму VRAM.

Тепер трохи про несуттєві помилки, які загалом не заважають роботі Stable Diffusion.

Періодично, при генерації зображень з роздільною здатністю 512x768 / 768x512 (високою для карт AMD), може вискакувати помилка "RuntimeError: Could not allocate tensor with 1207959552 bytes (або будь-яка інша кількість байт). There is not enough GPU video memory available!". Ймовірно, це нормально для гілки Stable Diffusion WebUI з бекендом DirectML, налаштування та/або роздільну здатність змінювати не має особливого сенсу, оскільки після повторного запуску генерація може початися як ні в чому не бувало, і зробити хоч 50 зображень поспіль (у батчі або без нього, значення не має), а потім знову на першому вивалитися в "RuntimeError".

Схоже на проблеми з "витоком відеопам'яті", але ручатися за це я не можу, оскільки з'ясувати причину такої поведінки WebUI DirectML мені не вдалося.

Підсумок

Безумовно, швидкість генерації на відеокартах AMD, порівняно з графічними адаптерами NVIDIA, залишає бажати кращого. Проте, якщо у вашому системному блоці встановлено карту від червоного гіганта – це далеко не вирок. Згідно з моїми дослідженнями, GPU від AMD (особливо з відносно великим об'ємом відеопам'яті) здатні досить швидко генерувати зображення навіть з використанням кількох LoRA. А якщо ви щасливий власник карти з 16 або 24 гігабайтами VRAM, то вам відкривається доступ до створення зображень з вищою роздільною здатністю, аж до FullHD. Можливо, навіть вище. Відеокарт AMD з подібним об'ємом відеопам'яті в наявності у мене зараз немає.

Було б приємно оцінити ваші результати генерації зображення на відеокартах AMD. Крім цього, якщо у вас є інформація про додаткові налаштування або бібліотеки, які можуть прискорити роботу Stable Diffusion на червоних графічних адаптерах – не соромтеся ділитися своїм досвідом у коментарях до цього матеріалу!

ТЕГИНейромережіRadeon RX 470Stable DiffusionRadeon R9 270X
← ПОПЕРЕДНЯТестування Xeon E5-1620: 4-ядерний Sandy Bridge в актуальних іграх та програмахНАСТУПНА →Розгін та тестування Core i5-4670K: 4-ядерний Haswell в іграх та програмах 2024 року
ПРОДОВЖИТИ ЧИТАННЯ

Споріднені матеріали

Локальна вайфу на AMD Polaris: Як запустити ШІ на RX 470, коли ROCm мертвий
БЛОГИ · ШІ ТА НЕЙРОМЕРЕЖІ

Локальна вайфу на AMD Polaris: Як запустити ШІ на RX 470, коли ROCm мертвий

15 хв02.03.2026