Искусственный интеллект

Как обучать и использовать модели Hunyuan Video LoRA

mm
ChatGPT-4o: Variation on 'Create me an image 1792 x 1024. It should be in the style of Théodore Géricault, and should depict a dark medieval figure seated in front of a laptop, illuminated by the screen. We are facing the figure, and can only see the back of the laptop lid. Around the seated medieval figure are many other medieval men and women, curious as to what is happening on the computer screen'

Эта статья показывает, как установить и использовать программное обеспечение на основе Windows, которое может обучать модели Hunyuan Video LoRA, позволяя пользователю создавать пользовательские личности в модели Hunyuan Video.

Нажмите, чтобы воспроизвести. Примеры недавнего взрыва знаменитых Hunyuan LoRAs из сообщества civit.ai.

На данный момент два наиболее популярных способа генерации моделей Hunyuan LoRA локально:

1) Diffusion-pipe-ui Docker-based framework, который полагается на Windows Subsystem for Linux (WSL) для обработки некоторых процессов.

2) Musubi Tuner, новый дополнение к популярной Kohya ss архитектуре обучения диффузии. Musubi Tuner не требует Docker и не зависит от WSL или других линукс-основанных прокси, но может быть трудно установить на Windows.

Поэтому этот обзор будет сосредоточен на Musubi Tuner и предоставлении полностью локального решения для обучения и генерации моделей Hunyuan LoRA, без использования API-ориентированных веб-сайтов или коммерческих процессов аренды GPU, таких как Runpod.

Нажмите, чтобы воспроизвести. Образцы из обучения LoRA на Musubi Tuner для этой статьи. Все разрешения предоставлены человеком, изображенным на фотографии, для иллюстрации этой статьи.

Требования

Установка требует как минимум компьютера с Windows 10 и видеокарты NVIDIA серии 30/40 с как минимум 12 ГБ видеопамяти (хотя 16 ГБ рекомендуется). Установка, использованная для этой статьи, была протестирована на компьютере с 64 ГБ оперативной памяти и видеокартой NVIDIA 3090 с 24 ГБ видеопамяти. Она была протестирована на выделенной тестовой системе с свежей установкой Windows 10 Professional, на разделе с более чем 600 ГБ свободного дискового пространства.

Предупреждение

Установка Musubi Tuner и его зависимостей также включает установку программного обеспечения и пакетов, ориентированных на разработчиков, непосредственно на основную установку Windows на компьютере. Учитывая установку ComfyUI на последних этапах, этот проект потребует около 400-500 гигабайт дискового пространства. Хотя я протестировал процедуру без инцидентов несколько раз в свежеустановленных тестовых средах Windows 10, ни я, ни unite.ai не несем ответственности за любые повреждения систем от следования этим инструкциям. Я рекомендую создать резервную копию важных данных перед попыткой выполнить эту установку.

Рассмотрения

Этот метод еще действителен?

Сцена генеративного ИИ развивается очень быстро, и мы можем ожидать лучшие и более упрощенные методы обучения моделей Hunyuan Video LoRA в этом году.

…или даже на этой неделе! Пока я писал эту статью, разработчик Kohya/Musubi создал musubi-tuner-gui, продвинутый Gradio GUI для Musubi Tuner:

Очевидно, что пользовательский GUI предпочтительнее файлам BAT, которые я использую в этой статье, как только musubi-tuner-gui заработает. Пока я пишу, он появился только пять дней назад, и я не смог найти никаких отчетов о том, что кто-то успешно его использовал.

Согласно сообщениям в репозитории, новый GUI предназначен для интеграции в проект Musubi Tuner как можно скорее, что приведет к его существованию как отдельного репозитория GitHub.

На основе настоящих инструкций по установке новый GUI клонируется напрямую в существующую виртуальную среду Musubi; и, несмотря на многочисленные усилия, я не смог заставить его связаться с существующей установкой Musubi.

Как только GUI будет интегрирован в Musubi Tuner, проблемы такого рода, безусловно, будут решены. Хотя автор признает, что новый проект ‘очень сырой’, он оптимистичен относительно его разработки и интеграции напрямую в Musubi Tuner.

Учитывая эти проблемы (также связанные с путями по умолчанию во время установки и использованием пакета UV Python, который усложняет определенные процедуры в новом выпуске), мы, вероятно, должны подождать немного, чтобы получить более гладкий опыт обучения моделей Hunyuan Video LoRA. Это выглядит очень перспективно!

Но если вы не можете ждать, и готовы немного потрудиться, вы можете запустить обучение моделей Hunyuan Video LoRA локально прямо сейчас.

Давайте начнем.

Почему устанавливать что-либо на голом металле?

(Пропустите этот абзац, если вы не опытный пользователь)
Опытные пользователи зададутся вопросом, почему я выбрал установку столького программного обеспечения на голой установке Windows 10 вместо виртуальной среды. Причина в том, что необходимая для Windows порта линукс-основанного пакета Triton гораздо труднее получить рабочим в виртуальной среде. Все другие установки голого металла в этом учебнике не могли быть установлены в виртуальной среде, поскольку они должны взаимодействовать напрямую с локальным оборудованием.

Установка необходимых пакетов и программ

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

1: Скачайте Microsoft Redistributable

Скачайте и установите пакет Microsoft Redistributable с https://aka.ms/vs/17/release/vc_redist.x64.exe.

Это простая и быстрая установка.

2: Установите Visual Studio 2022

Скачайте Microsoft Visual Studio 2022 Community edition с https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-install-visual-studio-page-cta

Запустите скачанный установщик:

Нам не нужны все доступные пакеты, которые будут тяжелой и длительной установкой. На начальном экране Workloads, который открывается, отметьте Desktop Development with C++ (см. изображение ниже).

Теперь перейдите на вкладку Individual Components в верхней части интерфейса и используйте поле поиска, чтобы найти ‘Windows SDK’.

По умолчанию только Windows 11 SDK отмечен. Если вы находитесь на Windows 10 (эта процедура установки не была протестирована мной на Windows 11), отметьте последнюю версию Windows 10, указанную на изображении выше.

Ищите ‘C++ CMake’ и проверьте, что C++ CMake tools for Windows отмечен.

Эта установка займет как минимум 13 ГБ пространства.

Как только Visual Studio будет установлен, он попытается запуститься на вашем компьютере. Дайте ему полностью открыться. Когда полноэкранный интерфейс Visual Studio наконец станет видимым, закройте программу.

3: Установите Visual Studio 2019

Некоторые из последующих пакетов для Musubi ожидают более старую версию Microsoft Visual Studio, в то время как другие требуют более новую.

Следовательно, также скачайте бесплатную Community edition Visual Studio 19 либо с Microsoft (https://visualstudio.microsoft.com/vs/older-downloads/ – требуется учетная запись) или Techspot (https://www.techspot.com/downloads/7241-visual-studio-2019.html).

Установите его с теми же опциями, что и для Visual Studio 2022 (см. процедуру выше, за исключением того, что Windows SDK уже отмечен в установщике Visual Studio 2019).

Вы увидите, что установщик Visual Studio 2019 уже знает о более новой версии во время установки:

Когда установка будет завершена, и вы откроете и закроете установленное приложение Visual Studio 2019, откройте командную строку Windows (введите CMD в строке поиска) и введите и выполните:

where cl

Результатом должно быть известное местоположение двух установленных редакций Visual Studio.

Если вместо этого вы получите INFO: Could not find files for the given pattern(s), см. раздел Проверка путей этой статьи ниже и используйте эти инструкции, чтобы добавить соответствующие пути Visual Studio в среду Windows.

Сохраните любые изменения, сделанные в соответствии с разделом Проверка путей ниже, и затем попробуйте команду where cl еще раз.

4: Установите CUDA 11 + 12 Toolkits

Различные пакеты, установленные в Musubi, требуют разных версий NVIDIA CUDA, которые ускоряют и оптимизируют обучение на видеокартах NVIDIA.

Причина, по которой мы установили версии Visual Studio сначала, заключается в том, что установщики NVIDIA CUDA ищут и интегрируются с существующими установками Visual Studio.

Скачайте пакет установки CUDA 11+ серии с:

https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local (скачайте ‘exe (local)’)

Скачайте пакет установки CUDA 12+ серии с:

https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64

Процесс установки идентичен для обоих установщиков. Игнорируйте любые предупреждения о существовании или несуществовании путей установки в переменных среды Windows – мы будем заниматься этим вручную позже.

Установите NVIDIA CUDA Toolkit V11+

Запустите установщик для 11+ серии CUDA Toolkit.

На Installation Options выберите Custom (Advanced) и продолжайте.

Снимите флажок NVIDIA GeForce Experience и нажмите Next.

Оставьте Select Installation Location по умолчанию (это важно):

Нажмите Next и дайте установке завершиться.

Игнорируйте любые предупреждения или заметки, которые установщик дает о Nsight Visual Studio интеграции, которая не нужна для нашего случая.

Установите NVIDIA CUDA Toolkit V12+

Повторите весь процесс для отдельного установщика NVIDIA Toolkit 12+, который вы скачали:

Процесс установки для этой версии идентичен описанному выше (11+ версия), за исключением одного предупреждения об окружении, которое можно игнорировать:

Когда установка 12+ версии CUDA будет завершена, откройте командную строку Windows и введите и выполните:

nvcc --version

Это должно подтвердить информацию о установленном драйвере:

Чтобы проверить, что ваша карта распознается, введите и выполните:

nvidia-smi

5: Установите GIT

GIT будет обрабатывать установку репозитория Musubi на вашем локальном компьютере. Скачайте установщик GIT с:

https://git-scm.com/downloads/win (’64-bit Git for Windows Setup’)

Запустите установщик:

Используйте настройки по умолчанию для Select Components:

Оставьте редактор по умолчанию как Vim:

Дайте GIT решить вопрос с именами веток:

Используйте рекомендуемые настройки для Path окружения:

Используйте рекомендуемые настройки для SSH:

Используйте рекомендуемые настройки для HTTPS Transport backend:

Используйте рекомендуемые настройки для преобразования окончаний строк:

Выберите консоль Windows по умолчанию в качестве эмулятора терминала:

Используйте настройки по умолчанию (Fast-forward or merge) для Git Pull:

Используйте Git-Credential Manager (настройка по умолчанию) для Credential Helper:

В Configuring extra options оставьте Enable file system caching отмеченным и Enable symbolic links неотмеченным (если вы не опытный пользователь, использующий жесткие ссылки для централизованного репозитория моделей).

Завершите установку и протестируйте, что GIT установлен правильно, открыв командную строку и введя и выполнив:

git --version

Вход в GitHub

Позже, когда вы попытаетесь клонировать репозитории GitHub, вам может быть предложено ввести ваши учетные данные GitHub. Чтобы предвидеть это, войдите в свою учетную запись GitHub (создайте ее, если необходимо) на любом браузере, установленном на вашей системе Windows. Таким образом, метод аутентификации 0Auth (окно всплывающего окна) должен занять как можно меньше времени.

После этой первоначальной проверки вы должны остаться аутентифицированными автоматически.

6: Установите CMake

CMake 3.21 или новее требуется для некоторых частей процесса установки Musubi. CMake – это кроссплатформенная архитектура разработки, способная оркестрировать различные компиляторы и компилировать программное обеспечение из исходного кода.

Скачайте его с:

https://cmake.org/download/ (‘Windows x64 Installer’)

Запустите установщик:

Убедитесь, что Add Cmake to the PATH environment variable отмечен.

Нажмите Next.

Введите и выполните эту команду в командной строке Windows:

cmake --version

Если CMake установлен успешно, он должен отобразить что-то вроде:

cmake version 3.31.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).

7: Установите Python 3.10

Интерпретатор Python является центральным для этого проекта. Скачайте версию 3.10 (лучший компромисс между различными требованиями пакетов Musubi) с:

https://www.python.org/downloads/release/python-3100/ (‘Windows installer (64-bit)’)

Запустите скачанный установщик и оставьте настройки по умолчанию:

В конце процесса установки нажмите Disable path length limit (требуется подтверждение UAC администратора):

В командной строке Windows введите и выполните:

python --version

Это должно привести к Python 3.10.0

Проверка путей

Клонирование и установка фреймворка Musubi, а также его нормальная работа после установки, требует, чтобы его компоненты знали путь к нескольким важным внешним компонентам в Windows, особенно CUDA.

Итак, нам нужно открыть путь окружения и проверить, что все необходимые компоненты есть там.

Быстрый способ получить доступ к контролам среды Windows – ввести Edit the system environment variables в строку поиска Windows.

Нажав на это, откроется панель управления System Properties. В нижней части System Properties нажмите кнопку Environment Variables, и откроется окно Environment Variables. В панели System Variables в нижней части этого окна прокрутите вниз до Path и дважды нажмите на него. Это откроет окно Edit environment variables. Расширьте ширину этого окна, чтобы вы могли увидеть полный путь переменных:

Здесь важными записями являются:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\libnvvp
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files\Git\cmd
C:\Program Files\CMake\bin

В большинстве случаев правильные переменные пути должны уже присутствовать.

Добавьте любые отсутствующие пути, нажав New в левой части окна Edit environment variable и вставив правильный путь:

Не просто копируйте и вставляйте из перечисленных выше путей; проверьте, что каждый эквивалентный путь существует в вашей собственной установке Windows.

Если есть незначительные вариации путей (особенно с установками Visual Studio), используйте перечисленные выше пути, чтобы найти правильные целевые папки (т.е. x64 в Host64 в вашей собственной установке). Затем вставьте те пути в окно Edit environment variable.

После этого перезагрузите компьютер.

Установка Musubi

Обновите PIP

Использование последней версии установщика PIP может упростить некоторые этапы установки. В командной строке Windows с привилегиями администратора (см. Повышение привилегий ниже) введите и выполните:

pip install --upgrade pip

Повышение привилегий

Некоторые команды могут требовать повышенных привилегий (т.е. запуска в качестве администратора). Если вы получаете сообщения об ошибках относительно разрешений в следующих этапах, закройте окно командной строки и откройте его заново в режиме администратора, введя CMD в строку поиска Windows, нажав правой кнопкой мыши на Command Prompt и выбрав Run as administrator:

Для следующих этапов мы будем использовать Windows Powershell вместо командной строки Windows. Вы можете найти его, введя Powershell в строку поиска Windows и (при необходимости) нажав правой кнопкой мыши на него, чтобы Run as administrator:

Установите Torch

В Powershell введите и выполните:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Будьте терпеливы, пока многие пакеты устанавливаются.

Когда установка будет завершена, вы можете проверить, что установка PyTorch с поддержкой GPU установлена, введя и выполнив:

python -c "import torch; print(torch.cuda.is_available())"

Это должно привести к:

True

Установите Triton для Windows

Далее установка компонента Triton for Windows. В повышенной Powershell введите (на одной строке):

pip install https://github.com/woct0rdho/triton-windows/releases/download/v3.1.0-windows.post8/triton-3.1.0-cp310-cp310-win_amd64.whl

(Установщик triton-3.1.0-cp310-cp310-win_amd64.whl работает как для процессоров Intel, так и для AMD, при условии, что архитектура 64-разрядная и среда соответствует версии Python)

После запуска это должно привести к:

Successfully installed triton-3.1.0

Мы можем проверить, что Triton работает, импортируя его в Python. Введите эту команду:

python -c "import triton; print('Triton is working')"

Это должно вывести:

Triton is working

Чтобы проверить, что Triton поддерживает GPU, введите:

python -c "import torch; print(torch.cuda.is_available())"

Это должно привести к True:

Создайте виртуальную среду для Musubi

С этого момента мы будем устанавливать любое дополнительное программное обеспечение в Python виртуальной среде (или venv). Это означает, что все, что вам нужно сделать, чтобы удалить все следующее программное обеспечение, – это перетянуть папку venv в корзину.

Давайте создадим папку установки: создайте папку с именем Musubi на вашем рабочем столе. Следующие примеры предполагают, что эта папка существует: C:\Users\[Ваше имя профиля]\Desktop\Musubi\.

В Powershell перейдите в эту папку, введя:

cd C:\Users\[Ваше имя профиля]\Desktop\Musubi

Мы хотим, чтобы виртуальная среда имела доступ к тому, что мы уже установили (особенно Triton), поэтому мы будем использовать флаг --system-site-packages. Введите это:

python -m venv --system-site-packages musubi

Подождите, пока среда будет создана, и затем активируйте ее, введя:

.\musubi\Scripts\activate

С этого момента вы можете определить, что вы находитесь в активированной виртуальной среде, по тому, что (musubi) появляется в начале всех ваших приглашений.

Клонируйте репозиторий

Перейдите в только что созданную папку musubi (которая находится внутри папки Musubi на вашем рабочем столе):

cd musubi

Теперь, когда мы находимся в правильном месте, введите следующую команду:

git clone https://github.com/kohya-ss/musubi-tuner.git

Подождите, пока клонирование будет завершено (это не займет много времени).

Установите требования

Перейдите в папку установки:

cd musubi-tuner

Введите:

pip install -r requirements.txt

Подождите, пока многие установки будут завершены (это займет некоторое время).

Автоматизируйте доступ к виртуальной среде Hunyuan Video

Чтобы легко активировать и получить доступ к новой виртуальной среде для будущих сессий, вставьте следующий текст в Блокнот и сохраните его с именем activate.bat, сохраняя его с опцией Все файлы (см. изображение ниже).

@echo off

call C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\Scripts\activate

cd C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner

cmd

(Замените [Ваше имя профиля] на реальное имя вашего профиля Windows)

Не имеет значения, в какое место вы сохраните этот файл.

С этого момента вы можете дважды нажать на activate.bat и начать работу сразу же.

Использование Musubi Tuner

Скачайте модели

Процесс обучения моделей Hunyuan Video LoRA требует скачивания как минимум семи моделей для поддержки всех возможных вариантов предобучения и обучения модели Hunyuan Video LoRA. Вместе эти модели весят более 60 ГБ.

Текущие инструкции по скачиванию можно найти по адресу https://github.com/kohya-ss/musubi-tuner?tab=readme-ov-file#model-download

Однако это инструкции по скачиванию на момент написания:

clip_l.safetensors, llava_llama3_fp16.safetensors и llava_llama3_fp8.safetensors можно скачать по адресу https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/tree/main/split_files/text_encoders

mp_rank_00_model_states.pt, mp_rank_00_model_states_fp8.pt и mp_rank_00_model_states_fp8_map.pt можно скачать по адресу https://huggingface.co/tencent/HunyuanVideo/tree/main/hunyuan-video-t2v-720p/transformers

pytorch_model.pt можно скачать по адресу https://huggingface.co/tencent/HunyuanVideo/tree/main/hunyuan-video-t2v-720p/vae

Хотя вы можете разместить их в любой папке, которую выберете, для согласованности со сценарием установите их в:

C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\models\

Это соответствует структуре папок до этого момента. Не забудьте заменить [Ваше имя профиля] на реальное имя вашего профиля Windows.

Подготовка набора данных

Игнорируя社区ную полемику по этому вопросу, можно сказать, что вам понадобится от 10 до 100 фотографий для набора данных обучения для вашей модели Hunyuan LoRA. Очень хорошие результаты можно получить даже с 15 изображениями, если они хорошо сбалансированы и имеют хорошее качество.

Модель Hunyuan LoRA может быть обучена как на изображениях, так и на коротких и низкокачественных видеоклипах или даже на их комбинации – хотя использование видеоклипов в качестве обучающих данных является сложным, даже для 24 ГБ карты.

Однако видеоклипы действительно полезны только в том случае, если ваш персонаж двигается необычным образом, о котором модель Hunyuan Video может не знать или не может угадать.

Примеры включают Роджера Раббита, ксеноморфа, Маску, Человека-паука или другие личности, которые обладают уникальными характерными движениями.

Поскольку Hunyuan Video уже знает, как обычные мужчины и женщины двигаются, видеоклипы не необходимы для получения убедительной модели Hunyuan Video LoRA человеческого типа. Итак, мы будем использовать статические изображения.

Подготовка изображений

Список корзин

Версия TLDR:

Лучше использовать изображения, которые все имеют одинаковый размер для вашего набора данных или использовать разделение 50/50 между двумя разными размерами, т.е. 10 изображений размером 512×768 пикселей и 10 изображений размером 768×512 пикселей.

Обучение может пройти хорошо даже если вы не сделаете этого – модели Hunyuan Video LoRAs могут быть удивительно терпимыми.

Более длинная версия

Как и в случае с моделями Kohya-ss LoRAs для статических генеративных систем, таких как Stable Diffusion, бакетинг используется для распределения рабочей нагрузки по разным размерам изображений, что позволяет использовать более крупные изображения без вызова ошибок нехватки памяти во время обучения (т.е. бакетинг ‘разрезает’ изображения на части, которые может обработать GPU, сохраняя при этом семантическую целостность всего изображения).

Для каждого размера изображения, который вы включаете в свой набор данных обучения (т.е. 512×768 пикселей), будет создан ‘бакет’ или ‘подзадача’. Итак, если у вас есть следующее распределение изображений, это то, как внимание бакета становится несбалансированным, и рискует, что некоторые фотографии будут учитываться в обучении больше, чем другие:

2x 512×768 пикселей изображения
7x 768×512 пикселей изображения
1x 1000×600 пикселей изображение
3x 400×800 пикселей изображения

Мы можем увидеть, что внимание бакета разделено неравномерно среди этих изображений:

Следовательно, либо придерживайтесь одного формата размера, либо попытайтесь сохранить распределение разных размеров относительно равномерным.

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

Для простоты я использовал 512×768 пикселей для всех фотографий в моем наборе данных.

Дисклеймер: Модель (человек) в наборе данных дал мне полное разрешение на использование этих изображений для этой цели и одобрил все выходные данные ИИ, изображающие его подобие, представленные в этой статье.

Мой набор данных состоит из 40 изображений в формате PNG (хотя JPG также нормально). Мои изображения хранились в C:\Users\Martin\Desktop\DATASETS_HUNYUAN\examplewoman

Вам следует создать папку cache внутри папки с обучающими изображениями:

Теперь давайте создадим специальный файл, который настроит обучение.

Файлы TOML

Процесс обучения и предобучения моделей Hunyuan Video LoRAs получает пути к файлам из плоского текстового файла с расширением .toml.

Для моего теста файл TOML находится в C:\Users\Martin\Desktop\DATASETS_HUNYUAN\training.toml

Содержимое моего файла TOML выглядит так:

[general]

resolution = [512, 768]

caption_extension = ".txt"

batch_size = 1

enable_bucket = true

bucket_no_upscale = false

[[datasets]]

image_directory = "C:\\Users\\Martin\\Desktop\\DATASETS_HUNYUAN\\examplewoman"

cache_directory = "C:\\Users\\Martin\\Desktop\\DATASETS_HUNYUAN\\examplewoman\\cache"

num_repeats = 1

(Двойные обратные слэши для каталогов изображений и кэша не всегда необходимы, но они могут помочь избежать ошибок в случаях, когда в пути есть пробел. Я обучил модели с файлами .toml, которые использовали одинарные прямые и обратные слэши)

Мы можем увидеть в разделе resolution, что два разрешения будут рассмотрены – 512 пикселей и 768 пикселей. Вы также можете оставить это на 512 и все равно получить хорошие результаты.

Подписи

Hunyuan Video – это текст+визуальная основная модель, поэтому нам нужны описательные подписи для этих изображений, которые будут учитываться во время обучения. Процесс обучения завершится неудачей без подписей.

Существует множество открытых систем подписывания, которые мы могли бы использовать для этой задачи, но давайте сохраним простоту и используем систему taggui. Хотя она хранится на GitHub и хотя она загружает некоторые очень тяжелые глубокие модели при первом запуске, она приходит в виде простого исполняемого файла Windows, который загружает библиотеки Python и простой GUI.

После запуска Taggui используйте File > Load Directory, чтобы перейти к вашему набору данных изображений и опционально поместите токен-идентификатор (в данном случае examplewoman), который будет добавлен ко всем подписям:

(Убедитесь, что вы выключили Load in 4-bit, когда Taggui впервые открывается – это вызовет ошибки во время подписывания)

Выберите изображение в левой предварительной колонке и нажмите CTRL+A, чтобы выбрать все изображения. Затем нажмите кнопку Start Auto-Captioning справа:

Вы увидите, как Taggui загружает модели в небольшом CLI в правой колонке, но только если это первый раз, когда вы запускаете подписчик. В противном случае вы увидите предварительный просмотр подписей.

Теперь каждая фотография имеет соответствующий файл .txt с описанием содержимого изображения:

Вы можете нажать Advanced Options в Taggui, чтобы увеличить длину и стиль подписей, но это выходит за рамки этого обзора.

Выходите из Taggui и переходим к…

Предобучение латентных переменных

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

Чтобы упростить все три процесса (2x кэширование + обучение), вы можете использовать интерактивные файлы .BAT, которые будут задавать вопросы и выполнять процессы, когда вы предоставите необходимую информацию.

Для предобучения латентных переменных скопируйте следующий текст в Блокнот и сохраните его как файл .BAT (т.е. назовите его чем-то вроде latent-precache.bat), как и раньше, обеспечивая, что тип файла в меню Save As равен Все файлы (см. изображение ниже):

@echo off

REM Activate the virtual environment

call C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\Scripts\activate.bat

REM Get user input

set /p IMAGE_PATH=Enter the path to the image directory:

set /p CACHE_PATH=Enter the path to the cache directory:

set /p TOML_PATH=Enter the path to the TOML file:

echo You entered:

echo Image path: %IMAGE_PATH%

echo Cache path: %CACHE_PATH%

echo TOML file path: %TOML_PATH%

set /p CONFIRM=Do you want to proceed with latent pre-caching (y/n)?

if /i "%CONFIRM%"=="y" (

REM Run the latent pre-caching script

python C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\cache_latents.py --dataset_config %TOML_PATH% --vae C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\models\pytorch_model.pt --vae_chunk_size 32 --vae_tiling

) else (

echo Operation canceled.

)

REM Keep the window open

pause

(Убедитесь, что вы заменили [Ваше имя профиля] на ваше реальное имя профиля Windows)

Теперь вы можете запустить файл .BAT для автоматического предобучения латентных переменных:

Когда вас попросят вопросами из файла .BAT, вставьте или введите путь к вашему набору данных, папкам кэша и файлу TOML.

Предобучение текста

Мы создадим второй файл .BAT, на этот раз для предобучения текста.

@echo off

REM Activate the virtual environment

call C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\Scripts\activate.bat

REM Get user input

set /p IMAGE_PATH=Enter the path to the image directory:

set /p CACHE_PATH=Enter the path to the cache directory:

set /p TOML_PATH=Enter the path to the TOML file:

echo You entered:

echo Image path: %IMAGE_PATH%

echo Cache path: %CACHE_PATH%

echo TOML file path: %TOML_PATH%

set /p CONFIRM=Do you want to proceed with text encoder output pre-caching (y/n)?

if /i "%CONFIRM%"=="y" (

REM Use the python executable from the virtual environment

python C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\cache_text_encoder_outputs.py --dataset_config %TOML_PATH% --text_encoder1 C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\models\llava_llama3_fp16.safetensors --text_encoder2 C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\models\clip_l.safetensors --batch_size 16

) else (

echo Operation canceled.

)

REM Keep the window open

pause

Замените ваше имя профиля Windows и сохраните этот сценарий как text-cache.bat (или любое другое имя, которое вам нравится), в любом удобном месте, как и предыдущий файл .BAT.

Запустите этот новый файл .BAT, следуйте инструкциям, и необходимые текстовые файлы будут появляться в папке cache:

Обучение модели Hunyuan Video Lora

Обучение самой модели LoRA займет значительно больше времени, чем эти два подготовительных процесса.

Хотя существует множество переменных, которые мы могли бы беспокоиться (таких как размер партии, повторы, эпохи и использование полных или квантованных моделей, среди прочих), мы сохраним эти соображения для другого дня и более глубокого изучения тонкостей создания LoRA.

Для сейчас давайте минимизируем выбор и обучим LoRA на ‘средних’ настройках.

Мы создадим третий файл .BAT, на этот раз для запуска обучения. Скопируйте это в Блокнот и сохраните его как файл .BAT, как и раньше, как training.bat (или любое другое имя, которое вам нравится):

@echo off

REM Activate the virtual environment

call C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\Scripts\activate.bat

REM Get user input

set /p DATASET_CONFIG=Enter the path to the dataset configuration file:

set /p EPOCHS=Enter the number of epochs to train:

set /p OUTPUT_NAME=Enter the output model name (e.g., example0001):

set /p LEARNING_RATE=Choose learning rate (1 for 1e-3, 2 for 5e-3, default 1e-3):

if "%LEARNING_RATE%"=="1" set LR=1e-3

if "%LEARNING_RATE%"=="2" set LR=5e-3

if "%LEARNING_RATE%"=="" set LR=1e-3

set /p SAVE_STEPS=How often (in steps) to save preview images:

set /p SAMPLE_PROMPTS=What is the location of the text-prompt file for training previews?

echo You entered:

echo Dataset configuration file: %DATASET_CONFIG%

echo Number of epochs: %EPOCHS%

echo Output name: %OUTPUT_NAME%

echo Learning rate: %LR%

echo Save preview images every %SAVE_STEPS% steps.

echo Text-prompt file: %SAMPLE_PROMPTS%

REM Prepare the command

set CMD=accelerate launch --num_cpu_threads_per_process 1 --mixed_precision bf16 ^

C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\hv_train_network.py ^

--dit C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\models\mp_rank_00_model_states.pt ^

--dataset_config %DATASET_CONFIG% ^

--sdpa ^

--mixed_precision bf16 ^

--fp8_base ^

--optimizer_type adamw8bit ^

--learning_rate %LR% ^

--gradient_checkpointing ^

--max_data_loader_n_workers 2 ^

--persistent_data_loader_workers ^

--network_module=networks.lora ^

--network_dim=32 ^

--timestep_sampling sigmoid ^

--discrete_flow_shift 1.0 ^

--max_train_epochs %EPOCHS% ^

--save_every_n_epochs=1 ^

--seed 42 ^

--output_dir "C:\Users\[Ваше имя профиля]\Desktop\Musubi\Output Models" ^

--output_name %OUTPUT_NAME% ^

--vae C:/Users/[Ваше имя профиля]/Desktop/Musubi/musubi/musubi-tuner/models/pytorch_model.pt ^

--vae_chunk_size 32 ^

--vae_spatial_tile_sample_min_size 128 ^

--text_encoder1 C:/Users/[Ваше имя профиля]/Desktop/Musubi/musubi/musubi-tuner/models/llava_llama3_fp16.safetensors ^

--text_encoder2 C:/Users/[Ваше имя профиля]/Desktop/Musubi/musubi/musubi-tuner/models/clip_l.safetensors ^

--sample_prompts %SAMPLE_PROMPTS% ^

--sample_every_n_steps %SAVE_STEPS% ^

--sample_at_first

echo The following command will be executed:

echo %CMD%

set /p CONFIRM=Do you want to proceed with training (y/n)?

if /i "%CONFIRM%"=="y" (

%CMD%

) else (

echo Operation canceled.

)

REM Keep the window open

cmd /k

Как и в случае с предыдущими файлами .BAT, сохраните этот сценарий как ‘Все файлы’ из Блокнота, назвав его training.bat (или любое другое имя, которое вам нравится).

Убедитесь, что существует папка C:\Users\[Ваше имя профиля]\Desktop\Musubi\Output Models\, и создайте ее в этом месте, если она не существует.

Запустите файл .BAT, следуйте инструкциям, и обучение начнется:

Во время этого времени, если вы проверите раздел GPU вкладки ‘Производительность’ в Диспетчере задач Windows, вы увидите, что процесс занимает около 16 ГБ видеопамяти.

Это может не быть произвольной цифрой, поскольку это количество видеопамяти, доступное на многих видеокартах NVIDIA, и код выше может быть оптимизирован для того, чтобы поместить задачи в 16 ГБ для пользы тех, кто владеет такими картами.

Тем не менее, очень легко увеличить это использование, отправив более экстравагантные флаги команде обучения.

Во время обучения вы увидите в нижней части окна CMD время, прошедшее с начала обучения, и оценку общего времени обучения (которое может сильно варьироваться в зависимости от флагов, количества обучающих изображений, количества изображений предобучения, и нескольких других факторов).

Типичное время обучения составляет около 3-4 часов на средних настройках, в зависимости от доступного оборудования, количества изображений, настроек флагов и других факторов.

Использование обученных моделей LoRA в Hunyuan Video

Выбор контрольных точек

Когда обучение будет завершено, у вас будет контрольная точка модели для каждой эпохи обучения.

Эта частота сохранения может быть изменена пользователем, чтобы сохранять чаще или реже, как желательно, путем изменения числа --save_every_n_epochs [N] в файле .BAT обучения. Если вы добавили низкое число сохранений за шаги при настройке обучения с помощью файла .BAT, будет большое количество сохраненных файлов контрольных точек.

Какую контрольную точку выбрать?

Как упоминалось ранее, ранние обученные модели будут наиболее гибкими, в то время как более поздние контрольные точки могут предложить больше деталей. Единственный способ проверить эти факторы – запустить некоторые LoRAs и сгенерировать несколько видеороликов. Таким образом, вы можете узнать, какие контрольные точки являются наиболее продуктивными и представляют собой лучший баланс между гибкостью и верностью.

ComfyUI

Самая популярная (хотя и не единственная) среда для использования моделей Hunyuan Video LoRAs в настоящее время – ComfyUI, редактор на основе узлов с сложным интерфейсом Gradio, который запускается в вашем веб-браузере.

Источник: https://github.com/comfyanonymous/ComfyUI

Источник: https://github.com/comfyanonymous/ComfyUI

Инструкции по установке просты и доступны в официальном репозитории GitHub (дополнительные модели должны быть скачаны).

Преобразование моделей для ComfyUI

Ваши обученные модели сохранены в формате (diffusers), который не совместим с большинством реализаций ComfyUI. Musubi может преобразовать модель в формат ComfyUI. Давайте создадим файл .BAT для реализации этого.

Прежде чем запустить этот файл .BAT, создайте папку C:\Users\[Ваше имя профиля]\Desktop\Musubi\CONVERTED\, которую ожидает сценарий.

@echo off

REM Activate the virtual environment

call C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\Scripts\activate.bat

:START

REM Get user input

set /p INPUT_PATH=Enter the path to the input Musubi safetensors file (or type "exit" to quit):

REM Exit if the user types "exit"

if /i "%INPUT_PATH%"=="exit" goto END

REM Extract the file name from the input path and append 'converted' to it

for %%F in ("%INPUT_PATH%") do set FILENAME=%%~nF

set OUTPUT_PATH=C:\Users\[Ваше имя профиля]\Desktop\Musubi\Output Models\CONVERTED\%FILENAME%_converted.safetensors

set TARGET=other

echo You entered:

echo Input file: %INPUT_PATH%

echo Output file: %OUTPUT_PATH%

echo Target format: %TARGET%

set /p CONFIRM=Do you want to proceed with the conversion (y/n)?

if /i "%CONFIRM%"=="y" (

REM Run the conversion script with correctly quoted paths

python C:\Users\[Ваше имя профиля]\Desktop\Musubi\musubi\musubi-tuner\convert_lora.py --input "%INPUT_PATH%" --output "%OUTPUT_PATH%" --target %TARGET%

echo Conversion complete.

) else (

echo Operation canceled.

)

REM Return to start for another file

goto START

:END

REM Keep the window open

echo Exiting the script.

pause

Как и в случае с предыдущими файлами .BAT, сохраните этот сценарий как ‘Все файлы’ из Блокнота, назвав его convert.bat (или любое другое имя, которое вам нравится).

Как только сохранено, дважды нажмите на новый файл .BAT, который попросит местоположение файла для преобразования.

Вставьте или введите путь к обученной модели, которую вы хотите преобразовать, нажмите y и нажмите Enter.

После сохранения преобразованной модели LoRA в папку CONVERTED сценарий попросит, хотите ли вы преобразовать другой файл. Если вы хотите протестировать несколько контрольных точек в ComfyUI, преобразуйте выбор моделей.

Когда вы преобразуете достаточно моделей, закройте окно команды.

Теперь вы можете скопировать свои преобразованные модели в папку models\loras в вашей установке ComfyUI.

Обычно правильное местоположение является чем-то вроде:

C:\Users\[Ваше имя профиля]\Desktop\ComfyUI\models\loras\

Создание моделей Hunyuan Video LoRAs в ComfyUI

Хотя рабочие процессы ComfyUI на основе узлов изначально кажутся сложными, настройки других более опытных пользователей можно загрузить, перетянув изображение (созданное с помощью ComfyUI другого пользователя)直接 в окно ComfyUI. Рабочие процессы также можно экспортировать в виде файлов JSON, которые можно импортировать вручную или перетянуть в окно ComfyUI.

Некоторые импортированные рабочие процессы могут иметь зависимости, которые не существуют в вашей установке. Следовательно, установите ComfyUI-Manager, который может автоматически загрузить отсутствующие модули.

Источник: https://github.com/ltdrdata/ComfyUI-Manager

Источник: https://github.com/ltdrdata/ComfyUI-Manager

Чтобы загрузить один из рабочих процессов, использованных для генерации видеороликов из моделей в этом учебнике, скачайте этот файл JSON и перетяните его в ваше окно ComfyUI (хотя есть гораздо лучшие примеры рабочих процессов, доступные в различных сообществах Reddit и Discord, которые приняли Hunyuan Video, и мой собственный адаптирован из одного из них).

Это не место для расширенного учебника по использованию ComfyUI, но стоит упомянуть несколько важных параметров, которые повлияют на ваш выход, если вы скачаете и используете JSON-макет, на который я ссылался выше.

1) Ширина и высота

Чем больше изображение, тем дольше будет генерация, и тем выше риск ошибки нехватки памяти (OOM).

2) Длина

Это числовое значение для количества кадров. Сколько секунд это добавляет, зависит от частоты кадров (установленной на 30 кадров в секунду в этом макете). Вы можете преобразовать секунды в кадры на основе частоты кадров на Omnicalculator.

3) Размер партии

Чем выше вы установите размер партии, тем быстрее может прийти результат, но тем больше нагрузка на видеопамять. Установите его слишком высоко, и вы можете получить ошибку OOM.

4) Контроль после генерации

Это контролирует случайный семя. Варианты для этого узла – fixed, increment, decrement и randomize. Если вы оставите его на fixed и не измените текстовый запрос, вы получите одно и то же изображение каждый раз. Если вы измените текстовый запрос, изображение изменится в некоторой степени. Настройки increment и decrement позволяют вам изучать ближайшие значения семян, в то время как randomize дает вам совершенно новую интерпретацию запроса.

5) Имя LoRA

Вам нужно будет выбрать свою установленную модель здесь, прежде чем попытаться сгенерировать.

6) Токен

Если вы обучили свою модель запускать концепцию с помощью токена (например, ‘example-person’), вставьте этот триггерный слово в свой запрос.

7) Шаги

Это представляет количество шагов, которые система будет применять к процессу диффузии. Более высокие шаги могут получить лучшие детали, но есть потолок в том, насколько эффективен этот подход, и этот порог может быть трудно найти. Обычный диапазон шагов составляет около 20-30.

8) Размер плитки

Это определяет, сколько информации обрабатывается одновременно во время генерации. Он установлен на 256 по умолчанию. Увеличение его может ускорить генерацию, но увеличение его слишком высоко может привести к особенно раздражающей ошибке OOM, поскольку она возникает в конце долгого процесса.

9) Временное перекрытие

Генерация Hunyuan Video людей может привести к ‘призракам’ или неубедительным движениям, если это установлено слишком низко. В общем, текущее мудрое решение заключается в том, что это должно быть установлено на более высокое значение, чем количество кадров, чтобы произвести лучшее движение.

Вывод

Хотя дальнейшее изучение использования ComfyUI выходит за рамки этой статьи, опыт сообщества на Reddit и Discord может облегчить кривую обучения, и есть несколько онлайн-руководств, которые вводят основы.

 

Опубликовано в четверг, 23 января 2025 года

Писатель о машинном обучении, специалист в области синтеза человеческих изображений. Бывший руководитель исследовательского контента в Metaphysic.ai.