Telegram Group Search
Ускоряем Hunyuan video fast еще в 2 раза на винде

Есть оригинальный Hunyuan-video-13B, он работает за 20-30 шагов (20-30 минут на видео), а есть дистиллированный Hunyuan fast, который работает за 6-10 шагов. 6 шагов мне не нравятся, 10 выглядят намного лучше (10 минут на генерацию 1 видео в 720p, 2 секунды, 48 кадров).

Недавно вышел waveSpeed, который ускоряет flux, LTX и hunyuan в 1.5-2 раза в comfy на видюхах 3000 серии и новее с помощью двух технологий: first-block-cache и torch-model-compile+. На моей 3090 прирост скорости относительно Hunyuan fast - в 2 раза, до 4.6 минуты на 1 видео. Поддерживается воркфлоу от comfyanonymous. Воркфлоу от kijai пока не поддерживается.

Hunyuan из коробки умеет nsfw. Верх довольно неплохой, низ слегка зацензурен, но лучше, чем в дефолтном flux. Но умельцы уже наделели 100+ лор для Hunyuan на civitai для разных nsfw поз, движений, персонажей и стилей (в https://civitai.com/models ставим 2 фильтра: LoRA + Hunyuan video).

fast model, fp8: 
48 frames, 48s/it, 10 min, 19 GB vram, 39 GB RAM

fast model, sage-attention, first-block-cache:
48 frames, 25s/it, 5.6 min, 20 GB vram, 38 GB RAM

sage-attention, first-block-cache, compile+:
25 frames, 10s/it, 2.1 min, 18 GB vram, 29 GB RAM
48 frames, 22s/it, 4.7 min, 20 GB vram, 38 GB RAM
61 frames, 34s/it, 6.7 min
65 frames - OOM


Но compile+ ускоряет генерацию не всегда. Иногда torch compile занимает дополнительные 47 секунд. Перекомпилируется модель периодически, 1 раз в 2-3 генерации. Хз как побороть, скорее всего, vram мало, возможно, надо сделать меньше разрешение или количество кадров.

Предположу, что для работы Hunyuan хватит 32 GB RAM. У меня просто еще xtts+wav2lip в памяти висят. Если у вас в самом конце comfy вылетает без ошибок - снизьте разрешение или кол-во кадров.
Видел отзывы, что Hunyuan работает на 12 GB vram. Пока не тестил.


УСТАНОВКА

Нужен тритон и видюха 3000 серии или новее. 2000 серия nvidia не поддерживается. cuda toolkit 12.4+.
1. обновляем comfy через update_comfyui.bat

2. как установить тритон и sage-attention в комфи на винду:
https://www.reddit.com/r/StableDiffusion/comments/1h7hunp/how_to_run_hunyuanvideo_on_a_single_24gb_vram_card/
Первый шаг в этой инструкции пропускаем (установка нод kijai/ComfyUI-HunyuanVideoWrapper можно пропустить, мы будем использовать официальные ноды встроенные в комфи. Были отзывы, что в нодах от kijai пока не поддерживаются лоры при работе с first-block-cache). Выполняем пункты 2-4, включаем переводчик, если надо. Последние пункты 5-8 со скачиванием моделей не выполняем, мы скачаем другие, они меньше и быстрее.

3. Качаем clip_l.safetensors and llava_llama3_fp8_scaled и hunyuan_video_vae_bf16.safetensors: https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/
Качаем hunyuan fast: https://huggingface.co/Kijai/HunyuanVideo_comfy/blob/main/hunyuan_video_FastVideo_720_fp8_e4m3fn.safetensors и кладем в diffusion_models

4. в run_nvidia_gpu.bat для запуска comfy надо добавить флаг --use-sage-attention вот так:
.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --use-sage-attention

5. Устанавливаем custom node через comfyui manager -> install via GIT URL:
https://github.com/chengzeyi/Comfy-WaveSpeed

6. Hunyuan воркфлоу: https://github.com/Mozer/comfy_stuff/blob/main/workflows/hunyuan_fast_wave_speed_with_lora.json
Flux воркфлоу: https://github.com/Mozer/comfy_stuff/blob/main/workflows/flux_wave_speed.json

Советы:
- 1280x720, 720x1280, 544x960, 960x544 - рекомендуемые разрешения. В остальных могут быть артефакты.
- при малом количестве кадров анимация может работать хуже и с артефактами, рекомендую 25 и 49 кадров (1 и 2 сек)
- img2video пока нет, но разрабы обещают. Есть video2video и IPadapter2video от kijai.


- FLUX dev (bonus) -
1024x1024 20 steps

FLUX - 1.26s/it, 26 s.
FBC - 1.21it/s, 17 s.
FBC + compile+ - 1.20it/s, 17 s.

Прирост скорости во флаксе + waveSpeed составил 35%.

Во флаксе compile+ не работает на 3000 серии с flux-fp8, но работает с bf16, из-за этого прироста скорости не заметно. В hunyuan compile+ работает и дает прирост.
Hunyuan video2video и image2video

Эти воркфлоу используют HunyuanLoom (flowEdit) - эта штука преобразует входное видео в размытый движущийся поток (почти как controlnet). Обычный denoise тут не нужен, с ним картинка будет кипеть.
Для сохранения черт лица нужна лора на лицо. Без нее лицо будет другое. Куча лор на персонажей есть на civitai.


## video2video
Это самый простой воркфлоу, получается лучше всех. Использует HunyuanLoom (flowEdit). Для создания видео с Кеану использовал: skip_steps: 11, drift_steps: 15. Лора: 0.95 довольно хорошо передает его лицо под любым углом.
лору на Кеану: https://civitai.com/models/1131159/john-wick-hunyuan-video-lora
Воркфлоу video2video: https://github.com/Mozer/comfy_stuff/blob/main/workflows/hunyuan_video2video.json


## image+video 2 video
воркфлоу чуть посложнее: берет видео с движением (например, танец) и клеит его поверх статичной картинки. В результате хуньюань подхватывает движения.
видео с исходным танцем: https://civitai.com/images/50838820
лора на танцы: https://civitai.com/models/1110311/sexy-dance
Воркфлоу image+video2video: https://github.com/Mozer/comfy_stuff/blob/main/workflows/hunyuan_imageVideo2video.json


## image2video
самый сложный воркфлоу. Использует:
- HunyuanLoom (flowEdit)
- SAM2 comfyUI (можно и без него, но тогда маску, того что должно двигаться, придется рисовать пальцем)
- Видео белого шума: https://github.com/Mozer/comfy_stuff/blob/main/input/noise_8s.mp4
- Детальное описание вашей картинки.
- Воркфлоу image2video: https://github.com/Mozer/comfy_stuff/blob/main/workflows/hunyuan_img2video_sam_flow_noise.json

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

Сгенерировать детальное описание вашей картинки на английском можно тут:
https://huggingface.co/spaces/huggingface-projects/llama-3.2-vision-11B
Describe this image with all the details. Type (photo, illustration, anime, etc.), character's name, describe it's clothes and colors, pose, lighting, background, facial features and expressions. Don't use lists, just plain text description.



Установка
устанавливаем кастомные ноды в комфи, читаем их описание по установке:
https://github.com/kijai/ComfyUI-HunyuanLoom
https://github.com/neverbiasu/ComfyUI-SAM2 (опционально)


Замечания:
- 2 секунды видео на 3090 генерируются за 2 минуты (на 3060 - 7 минут).
- Главные параметры flowEdit: skip_steps (кол-во шагов из исходного видео или картинки, 1-4) и drift_steps (количество шагов генерации по промпту, 10-19).
- Конечное значение steps = skip_steps + drift_steps. Обычно выходит 17-22 для hanyuan fast модели. 10 шагов точно не хватит. Для обычной не fast модели будет больше (не тестил). Чем больше skip_steps тем более похожей на исходную картинку (или исходное видео) будет результат. Но тем меньше движения можно задать промптом. Если результат сильно размыт - проверяйте значение steps, оно должно быть равно сумме.
- Лучше всего получаются видео длиной 2 секунды (49 кадров). 73 кадра сложнее контролировать. Рекомендуемое разрешение 544x960.
- Есть два поля для промптов: Source prompt (описание вашей картинки) и Destination prompt (описание вашей картинки + движения в кадре).

Звук для вашего видео можно сгенерировать в MMAudio тут: https://huggingface.co/spaces/hkchengrex/MMAudio
Yue-7b - генерируем песни на русском локально

Языки: английский, китайский, японский, корейский, русский (с акцентом).
генерация:
- по жанру + тексту песни
- по референсному аудио + жанру + тексту песни (почти кавер, позволяет задать нужное направление)
- в fp16 весит 12.5 GB. в формате nf4 занимает всего 6.5 GB vram!
- на русском лучше генерирует мужской голос. В женских - сильный акцент.

## Установка под Windows (без wsl)

Нужны
- питон 3.9 (3.8 не подойдет для flash-attention)
- torch 2.5.1 (flash-attention скомпилирован лишь для нескольких версий торча)
- cuda toolkit 12.4+

conda create -n yue python=3.9
conda activate yue
pip install torch==2.5.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

качаем файл flash_attn-2.7.1.post1+cu124torch2.5.1cxx11abiFALSE-cp39-cp39-win_amd64.whl
отсюда https://github.com/bdashore3/flash-attention/releases в папку, куда у вас идет установка
pip install flash_attn-2.7.1.post1+cu124torch2.5.1cxx11abiFALSE-cp39-cp39-win_amd64.whl

git lfs install
git clone https://github.com/multimodal-art-projection/YuE
cd YuE
pip install -r requirements.txt

cd inference/
git clone https://huggingface.co/m-a-p/xcodec_mini_infer


## Фиксим поддержку русского языка в UTF8
строку 120: with open(args.genre_txt) as f:
меняем на: with open(args.genre_txt, encoding="utf-8") as f:

строку 122: with open(args.lyrics_txt) as f:
меняем на: with open(args.lyrics_txt, encoding="utf-8") as f:


## Генерация
в папке inference создаем 2 файла genre.txt и lyrics.txt
в genre пишем: vocal punk rock electric guitar male vocal
Проверяем что кодировка в файлах UTF8
в lyrics пишем: 3-4 коротких сегмента: 2 куплета + 1 припев. При 2-х сегментах, у меня почему-то не запускался инференс. Пример:

Пластмассовый мир победил
...

[chorus]
Ооо - моя оборона
...

[verse]
...


Генерацию по промпту:
python infer.py --stage1_model m-a-p/YuE-s1-7B-anneal-en-cot --stage2_model m-a-p/YuE-s2-1B-general --genre_txt genre.txt --lyrics_txt lyrics.txt --run_n_segments 2 --stage2_batch_size 4 --output_dir ./output --cuda_idx 0 --max_new_tokens 1000

Генерация по промпту + референсному аудио:
python infer.py --stage1_model m-a-p/YuE-s1-7B-anneal-en-icl --stage2_model m-a-p/YuE-s2-1B-general --genre_txt genre.txt --lyrics_txt lyrics.txt --run_n_segments 2 --stage2_batch_size 4 --output_dir ./output --cuda_idx 0 --audio_prompt_path Egor_Letov_-_Moya_oborona.mp3 --max_new_tokens 1000


--run_n_segments - количество сегментов (куплетов + припевов)
--max_new_tokens - время песни в каждом сегменте. Длина песни если сегмента 2: 1000x2 = 20s, 3000 = 60s. Чем больше время, тем больше надо vram.

## Скорость и vram на 3090:
20s аудио - 12.5 GB (15 минут)
60s аудио - 15.6 GB (32 минуты)

## 8-12 GB VRAM и 3000 серия и nf4
Если у вас всего 8-12 GB попробуйте запустить модель в кванте nf4 (load_in_4bit=True). Особого падения качества пока не заметил. 10 секунд аудио будут занимать всего 6.6 GB VRAM. Запускать в gguf пока не имеет смысла, они будут автоматом конвертироваться в bf16, надо ждать нормальную реализацию гуфов для модели. На 2080 пока не запускается, flash attention похоже не поддерживается. Без него тоже можно, но будет медленнее и надо больше vram.

Для nf4 нужно установить:
pip install accelerate bitsandbytes
в infer.py измените строки 76-82 на:
model = AutoModelForCausalLM.from_pretrained(
stage1_model,
load_in_4bit=True,
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
)

Скорость на 3060: 10s = 11 минут.

примеры на английском: https://map-yue.github.io/
потестить (русского нет):
- (квоты хватит на 10+10 секунд песни, не ставьте длину больше 10 секунд - упадет по ошибке): https://huggingface.co/spaces/innova-ai/YuE-music-generator-demo
- (15 секунд, ждать очереди больше часа): https://huggingface.co/spaces/fffiloni/YuE
Продолжаем любую mp3 с Yue

Добавил в Yue (генератор песен) возможность продолжить любой загруженную mp3 с клонированием голоса и мелодии.

- в приложенных примерах первое четверостишие - оригинал, остальные - генерация. В Summertime sadness - первое четверостишие напето в домашних условиях.
- лучше всего продолжает после одного первого куплета.
- голос клонирует не всегда один в один, но старается.
- мелодию продолжает довольно хорошо.
- русский поддерживается, но будет с легким акцентом.
- можно изменять язык песни с сохранением голоса.
- работает на движке exllama (самый быстрый среди того, что я тестил)
- поддержка продолжения предыдущей генерации. Так можно генерировать бесконечные песни.
- есть web GUI (либо работа из консоли)
- никаких ограничений по копирайту
- бесплатно

- требует 8 GB vram (на 6 тоже запустится, но нужно квант поменьше и генерировать всего 1 куплет)
- чем больше куплетов - тем больше надо vram
- скорость на 3090:
- 1 минута на выходе = 03:40 генерации (COT),
- 1 минута на выходе = 05:00 генерации (COT + mp3 extend)


## Установка под Windows (без wsl)

Будут нужны
- питон 3.9 (3.10 тоже подойдет, но ссылки все будут другие)
- torch 2.4.0 (exllama и flash_attn скомпилированы лишь для нескольких версий торча. 2.5.1 не подойдет)
- cuda toolkit 12.4+

conda create -n yue python=3.9
conda activate yue

:: ставим торч, exllama и flash_attn-2
pip install torch==2.4.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install https://github.com/turboderp-org/exllamav2/releases/download/v0.2.7/exllamav2-0.2.7+cu121.torch2.4.0-cp39-cp39-win_amd64.whl
pip install https://github.com/bdashore3/flash-attention/releases/download/v2.7.1.post1/flash_attn-2.7.1.post1+cu124torch2.4.0cxx11abiFALSE-cp39-cp39-win_amd64.whl

git lfs install
git clone https://github.com/Mozer/YuE-extend
cd YuE-extend
pip install -r requirements.txt
git clone https://huggingface.co/m-a-p/xcodec_mini_infer

:: качаем 3 exl2 модели (5.7 + 5.7 GB + 1.8) в папку workspace\models:
huggingface-cli download Alissonerdx/YuE-s1-7B-anneal-en-cot-exl2-8.0bpw --local-dir workspace\models\YuE-s1-7B-anneal-en-cot-exl2-8.0bpw
huggingface-cli download Ftfyhh/YuE-s1-7B-anneal-en-icl-8.0bpw-exl2 --local-dir YuE-s1-7B-anneal-en-icl-8.0bpw-exl2
huggingface-cli download Alissonerdx/YuE-s2-1B-general-exl2-8.0bpw --local-dir workspace\models\YuE-s2-1B-general-exl2-8.0bpw


запускаем (двойной клик) start-gui.bat
переходим по http://127.0.0.1:7860/



## Генерация (продолжение mp3)
Есть 3 способа: COT модель, ICL модель + 2 дополнительные дорожки, ICL модель + 1 дополнительная общая дорожка.
Первый, самый простой и проверенный. В web UI:
- Stage 1 model: YuE-s1-7B-anneal-en-cot-exl2-8.0bpw
- Lyrics: полный текст песни. Первый сегмент [verse] должен включать всё то, после чего будет сгенерировано продолжение. Первый сегмент рекомендуется ограничить одним четверостишием.
- Установите флажок "Extend mp3".
- Разделите свой mp3 на вокал.mp3 + инструментал.mp3. Для разделения используйте: https://huggingface.co/spaces/theneos/audio-separator или https://www.audiostrip.com/isolate или https://www.lalal.ai/ или https://vocalremover.org/
- Загрузите vocal.mp3 + instrumental.mp3 в 2 поля файла.
- Найдите точное время, когда заканчивается вокал в первом куплете в вашем mp3, например, 15 сек, введите в поле "Seconds to take from mp3".
- Generate

Дополнительные галочки "Use Dual Tracks Audio Prompt?" и "Use Audio Prompt? (both vocal and instrumental)" дадут модели полную музыку всей песни. Но так контролировать генерацию становится намного труднее. Модель будет стараться сгенерировать то что уже было, будет повторять исходник один в один. В таких режимах попробуйте установить "Audio prompt End Time" на 1-2-3 секунды больше чем в поле "Seconds to take from mp3". Экспериментируйте с разными отрезками, чтобы найти баланс похожести и новизны генерации.

Код: https://github.com/Mozer/YuE-extend

Бесплатный колаб:
https://colab.research.google.com/github/Mozer/YuE-extend/blob/main/colab/Yue_extend_with_exllama.ipynb
2025/06/13 18:01:29
Back to Top
HTML Embed Code: