Увеличиваем производительность автоматика

Данный гайд написан для Windows. Линуксогоспода могут попытать счастья в обновлении torch/xformers по альтернативному гайду.

Обновляем библиотеки torch, torchvision и xformers

Памятка по обучению

torch 2.0 несовместим с актуальной версией sd_dreambooth_extension (на состояние 16.02.2023). Если вам нужна возможность обучать LoRA или полновесные модели, то у вас есть такие варианты:

  1. Держать отдельную версию автоматика со старыми либами и использовать её для обучения
  2. Либо использовать sd-scripts. Подробную информацию можно найти в LoRA-гайде от анонов

Ожидаемое изменение производительности генераций

Обновление либ даёт существенный прирост производительности для 40XX поколения, и менее значительный для 30XX и 20XX.

Нижерасположенная таблица содержит отчёты анонов об изменении производительности после обновления либ.

Видеокарта Производительность после обновления либ
RTX 4090 +70% — +100% [1] [2]
RTX 3080 -5% — +15% [1] [2]
RTX 3070 +15% — +20% [1]
RTX 3060 +8% [1]
RTX 2060 Super +10% — +15% [1]

Вариант 1 (простой путь) - используем заранее скомпилированные либы

  1. Открываем консоль в папке с автоматиком и выполняем данную команду. Она необходима для того, чтобы все дальнейшие манипуляции с python-пакетами применялись к текущей директории (где находится установленный автоматик), а не ко всей системе глобально
    .\venv\Scripts\activate
    
  2. Удаляем старые версии либ
    1
    2
    3
    pip uninstall xformers
    pip uninstall torch
    pip uninstall torchvision
    
  3. Ставим либы от 18.02.2023
    1
    2
    3
    pip install https://download.pytorch.org/whl/nightly/cu118/torch-2.0.0.dev20230218%2Bcu118-cp310-cp310-win_amd64.whl
    pip install https://download.pytorch.org/whl/nightly/cu118/torchvision-0.15.0.dev20230218%2Bcu118-cp310-cp310-win_amd64.whl
    pip install https://github.com/NeuroSenko/xformers-builds/raw/main/builds/xformers-0.0.17%2Bcc36858.d20230219-cp310-cp310-win_amd64.whl
    
  4. На этом всё

Вариант 2 (путь страданий) - используем свежайшие версии torch, torchvision и компилируем xformers из исходников

Disclaimer

Данный вариант требует наличие прямых рук и умение гуглить, если консолька упала с ошибкой. Используйте данную инструкцию на свой страх и риск.

В то время, как последние версии библиотек torch и torchvision ежедневно публикуются в виде скомпилированных пакетов, готовых к установке, xformers актуальных версий поставляется только в виде исходников, так что, для получения последней версии, вам придётся собрать его из исходников.

Устанавливаем инструменты для компиляции xformers

Для компиляции xformers на вашей машине должны быть установлены Windows SDK и MSVC, которые входят в комплект MS Build tools. Также вам необходим CUDA SDK.

Установка Windows SDK и MSVC Build tools

Качаем MS Build tools с официального сайта Microsoft, запускаем и выбираем вкладку Individual components

В появившемся списке ищем и проставляем галки для компонентов Windows 10 SDK (либо Windows 11 SDK, оба варианта будут работать на Windows 10) и MSVC x64/x86 build tools (Latest) в списке компонентов для установки. Панель справа должна выглядеть попохожей на картинку ниже.

Проверяем, что всё проставили корректно и устанавливаем.

Установка CUDA SDK

Качаем CUDA SDK с официального сайта NVidia и устанавливаем компоненты Development и Runtime.

Получение и компиляция последних версий библиотек
Получаем последние версии torch и torchvision

Необходимо найти актуальные версии библиотек torch и torchvision, билды которых ежедневно публикуются на официальном сайте pytorch.

Чтобы понять, какой файл из списка вам нужен, необходимо понимать структуру умени публикуемых файлов - она отображена на иллюстрации ниже.

Вам необходимо найти библиотеки torch 2.0 и torchvision 0.15, которые удовлетворяют следующим условиям:

  • выпущены как можно позднее (в идеале - сегодня или вчера); билды публикуются каждый день
  • собраны под CUDA 11.8
  • используют Python 3.10 (эта версия питона используется в автоматике, так что вам нужна именно она, даже если у вас глобально в системе используется более новая версия)
  • собраны под вашу платформу

Вы можете скачать их через браузер, либо сохранить http-ссылки на загрузку файлов и потом использовать их напрямую при установке, оба варианта команд, приведённых ниже, являются корректными (не надо их выполнять, это пример):

pip install "C:\Users\User1\Downloads\torch-2.0.0.dev20230218%2Bcu118-cp310-cp310-win_amd64.whl"
pip install https://download.pytorch.org/whl/nightly/cu118/torch-2.0.0.dev20230218%2Bcu118-cp310-cp310-win_amd64.whl
Устанавливаем свежий torch и torchvision
  1. После того, как нашли (или скачали) нужные нам версии библиотек torch и torchvision, открываем консоль в папке с автоматиком и выполняем данную команду. Она необходима для того, чтобы все дальнейшие манипуляции с python-пакетами применялись к текущей директории (где находится установленный автоматик), а не ко всей системе глобально
    .\venv\Scripts\activate
    
  2. Удаляем старые версии либ (кроме torch и torchvision мы сразу удаляем xformers, который мы соберём позднее)
    1
    2
    3
    pip uninstall xformers
    pip uninstall torch
    pip uninstall torchvision
    
  3. Устанавливаем последние версии torch и torchvision, которые мы нашли ранее:
    pip install путь_до_torch.whl
    pip install путь_до_torchvision.whl
    

Как только оба файла установились, можете их удалить (если вы скачивали их заранее), их содержимое уже установлено в автоматик.

Компилируем и устанавливаем xformers

Свежие версии xformers поставляются только в виде исходников, поэтому вам придётся скомпилировать их вручную. Для этого необходимо выполнить следующие команды:

1
2
3
4
5
6
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
pip install ninja
pip install -e .

В последней команде точка обязательна. Скорость компиляции xformers зависит от того, насколько быстрый у вас процессор. На 5900x это занимает минут 5.

По завершении данных манипуляций у вас должны быть установлены последние версии torch, torchvision и xformers.

Hardware scheduling

Неоднократно была упомянута информация, что выключение hardware scheduling приводит к увеличению производительности.

Переключатель искать в Settings -> Display -> Graphics settings.


TODO

  1. Добавить опросник для сбора статистики по приросту производительности
  2. Добавить информацию про triton
Edit
Pub: 19 Feb 2023 20:14 UTC
Edit: 21 Feb 2023 20:16 UTC
Views: 124