# Hunyuan Video

Генерируйте видео высокого качества с помощью открытого проекта Hunyuan Video от Tencent.

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендуемых через [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Аренда на CLORE.AI

1. Посетите [CLORE.AI Marketplace](https://clore.ai/marketplace)
2. Отфильтруйте по типу GPU, объему VRAM и цене
3. Выберите **On-Demand** (фиксированная ставка) или **Spot** (цена по ставке)
4. Настройте ваш заказ:
   * Выберите Docker-образ
   * Установите порты (TCP для SSH, HTTP для веб-интерфейсов)
   * Добавьте переменные окружения при необходимости
   * Введите команду запуска
5. Выберите способ оплаты: **CLORE**, **BTC**, или **USDT/USDC**
6. Создайте заказ и дождитесь развертывания

### Доступ к вашему серверу

* Найдите данные для подключения в **Моих заказах**
* Веб-интерфейсы: используйте URL HTTP-порта
* SSH: `ssh -p <port> root@<proxy-address>`

## Что такое Hunyuan Video?

Hunyuan Video от Tencent предлагает:

* Высококачественную генерацию из текста в видео
* Клипы длительностью более 5 секунд
* Разрешение 720p
* Открытый исходный код и коммерческое использование

## Ресурсы

* **Модель:** [tencent/HunyuanVideo](https://huggingface.co/tencent/HunyuanVideo)
* **GitHub:** [Tencent/HunyuanVideo](https://github.com/Tencent/HunyuanVideo)
* **Статья:** [Статья о HunyuanVideo](https://arxiv.org/abs/2412.03603)

## Рекомендованное оборудование

| Компонент | Минимум       | Рекомендуется | Оптимально  |
| --------- | ------------- | ------------- | ----------- |
| GPU       | RTX 4090 24GB | A100 40GB     | A100 80GB   |
| VRAM      | 24 ГБ         | 40GB          | 80GB        |
| CPU       | 8 ядер        | 16 ядер       | 32 ядра     |
| ОЗУ       | 32GB          | 64GB          | 128GB       |
| Хранилище | 100GB NVMe    | 200 ГБ NVMe   | 500 ГБ NVMe |
| Интернет  | 500 Мбит/с    | 1 Гбит/с      | 1 Гбит/с    |

## Быстрое развертывание на CLORE.AI

**Docker-образ:**

```
pytorch/pytorch:2.5.1-cuda12.4-cudnn9-devel
```

**Порты:**

```
22/tcp
7860/http
```

**Команда:**

```bash
git clone https://github.com/Tencent/HunyuanVideo.git && \
cd HunyuanVideo && \
pip install -r requirements.txt && \
python sample_video.py --prompt "Кошка гуляет в саду"
```

## Доступ к вашему сервису

После развертывания найдите ваш `http_pub` URL в **Моих заказах**:

1. Перейдите на **Моих заказах** страницу
2. Нажмите на ваш заказ
3. Найдите `http_pub` URL (например, `abc123.clorecloud.net`)

Используйте `https://YOUR_HTTP_PUB_URL` вместо `localhost` в примерах ниже.

## Установка

```bash
git clone https://github.com/Tencent/HunyuanVideo.git
cd HunyuanVideo
pip install -r requirements.txt

# Скачайте модели
python download_models.py
```

## Что вы можете создать

### Маркетинговый контент

* Видео для демонстрации продукта
* Клипы для социальных сетей
* Рекламная анимация

### Творческие проекты

* Концепции музыкальных видео
* Прототипы короткометражек
* Инсталляции в сфере искусства

### Образование и обучение

* Черновики объясняющих видео
* Концепции учебных материалов
* Визуализация идей

## Базовое использование

```python
import torch
from diffusers import HunyuanVideoPipeline
from diffusers.utils import export_to_video

pipe = HunyuanVideoPipeline.from_pretrained(
    "tencent/HunyuanVideo",
    torch_dtype=torch.float16
)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

prompt = "Величественный орел, витает над заснеженными горами, киношное освещение, 4K"

video_frames = pipe(
    prompt=prompt,
    num_frames=45,
    num_inference_steps=50,
    guidance_scale=7.0
).frames[0]

export_to_video(video_frames, "eagle.mp4", fps=15)
```

## Продвинутая генерация

```python
import torch
from diffusers import HunyuanVideoPipeline
from diffusers.utils import export_to_video

pipe = HunyuanVideoPipeline.from_pretrained(
    "tencent/HunyuanVideo",
    torch_dtype=torch.float16
)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()

video_frames = pipe(
    prompt="Таймлапс распускающегося цветка, макросъемка, детализированные лепестки",
    negative_prompt="размыто, низкое качество, искажено, уродливо",
    num_frames=45,
    height=544,
    width=960,
    num_inference_steps=50,
    guidance_scale=7.0,
    generator=torch.Generator("cuda").manual_seed(42)
).frames[0]

export_to_video(video_frames, "flower_bloom.mp4", fps=15)
```

## Примеры подсказок

### Природа и пейзажи

```python
prompts = [
    "Северное сияние танцует над замерзшим озером, таймлапс, эфирно",
    "Океанские волны разбиваются о черный вулканический пляж, замедленная съемка",
    "Гроза над пшеничным полем, драматическое освещение, 4K",
    "Падают цветы сакуры в японском саду, весна, спокойно"
]
```

### Научная фантастика и фэнтези

```python
prompts = [
    "Космический корабль взлетает из футуристического города, киношно, детализировано",
    "Дракон летит сквозь облака на закате, эпично, фэнтези",
    "Робот идет по неоновым улицам, киберпанк, дождь",
    "Магический портал открывается в древнем лесу, мистические огни"
]
```

### Абстрактное и художественное

```python
prompts = [
    "Капли чернил рассеиваются в воде, макро, красочно, абстрактно",
    "Геометрические формы морфируют и трансформируются, моушн-графика",
    "Световая живопись в темноте, эффект длительной выдержки, ярко"
]
```

## Пакетная генерация

```python
import os
import torch
from diffusers import HunyuanVideoPipeline
from diffusers.utils import export_to_video

pipe = HunyuanVideoPipeline.from_pretrained("tencent/HunyuanVideo", torch_dtype=torch.float16)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

prompts = [
    "Подводный коралловый риф с плавающими разноцветными рыбами",
    "Таймлапс городского трафика ночью, световые следы",
    "Бабочка появляется из куколки, природный документальный фильм"
]

output_dir = "./videos"
os.makedirs(output_dir, exist_ok=True)

for i, prompt in enumerate(prompts):
    print(f"Генерация {i+1}/{len(prompts)}: {prompt[:50]}...")

    video_frames = pipe(
        prompt=prompt,
        num_frames=45,
        num_inference_steps=50,
        guidance_scale=7.0
    ).frames[0]

    export_to_video(video_frames, f"{output_dir}/video_{i:03d}.mp4", fps=15)
```

## Интерфейс Gradio

```python
import gradio as gr
import torch
from diffusers import HunyuanVideoPipeline
from diffusers.utils import export_to_video
import tempfile

pipe = HunyuanVideoPipeline.from_pretrained("tencent/HunyuanVideo", torch_dtype=torch.float16)
pipe.to("cuda")
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()

def generate(prompt, negative_prompt, num_frames, steps, guidance, seed):
    generator = torch.Generator("cuda").manual_seed(seed) if seed > 0 else None

    video_frames = pipe(
        prompt=prompt,
        negative_prompt=negative_prompt,
        num_frames=num_frames,
        num_inference_steps=steps,
        guidance_scale=guidance,
        generator=generator
    ).frames[0]

    with tempfile.NamedTemporaryFile(suffix=".mp4", delete=False) as f:
        export_to_video(video_frames, f.name, fps=15)
        return f.name

demo = gr.Interface(
    fn=generate,
    inputs=[
        gr.Textbox(label="Подсказка (Prompt)", lines=3),
        gr.Textbox(label="Негативная подсказка", value="размыто, низкое качество"),
        gr.Slider(16, 60, value=45, step=1, label="Кадры"),
        gr.Slider(20, 100, value=50, step=5, label="Шаги"),
        gr.Slider(3, 12, value=7, step=0.5, label="Направление (Guidance)"),
        gr.Number(value=-1, label="Seed")
    ],
    outputs=gr.Video(label="Сгенерированное видео"),
    title="Hunyuan Video - Текст в видео на CLORE.AI"
)

demo.launch(server_name="0.0.0.0", server_port=7860)
```

## Производительность

| Разрешение | Кадры | GPU       | Время   |
| ---------- | ----- | --------- | ------- |
| 544x960    | 45    | RTX 4090  | \~5 мин |
| 544x960    | 45    | A100 40GB | \~3 мин |
| 544x960    | 45    | A100 80GB | \~2 мин |
| 720x1280   | 45    | A100 80GB | \~4 мин |

## Распространённые проблемы и решения

### Недостаточно памяти

**Проблема:** Недостаточно памяти CUDA на 24 ГБ GPU

**Решения:**

```python

# Включить все оптимизации памяти
pipe.enable_model_cpu_offload()
pipe.enable_sequential_cpu_offload()  # Более агрессивно
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()

# Уменьшите количество кадров и разрешение
video = pipe(prompt, num_frames=24, height=480, width=720).frames[0]
```

### Медленная генерация

**Проблема:** Генерация занимает слишком много времени

**Решения:**

* Уменьшите `num_inference_steps` (30-40 по-прежнему дает хорошие результаты)
* Уменьшите `num_frames` (24 кадра = 1.6 с при 15 fps)
* Используйте GPU A100 для более быстрой обработки
* Убедитесь, что у вас есть NVMe-накопитель для загрузки моделей

### Плохое качество видео

**Проблема:** Размытость или непоследовательное движение

**Решения:**

* Увеличьте `num_inference_steps` до 75-100
* Отрегулируйте `guidance_scale` (6-8 работает лучше всего)
* Пишите более подробные подсказки
* Добавляйте негативные подсказки, чтобы избежать проблем

### Артефакты в видео

**Проблема:** Мерцание или временные несоответствия

**Решения:**

* Используйте один и тот же seed для воспроизводимости
* Избегайте подсказок с быстрым движением
* Постобработка с помощью стабилизации видео

## Устранение неполадок

{% hint style="danger" %}
**Недостаточно памяти**
{% endhint %}

* Hunyuan требует минимум 24 ГБ VRAM
* Используйте A100 40GB/80GB для наилучших результатов
* Уменьшите длину/разрешение видео

### Генерация видео не удалась

* Проверьте, что все файлы модели загружены корректно
* Убедитесь, что достаточно места на диске (100 ГБ+)
* Проверьте совместимость CUDA и PyTorch

### Плохое качество видео

* Увеличьте количество шагов инференса
* Используйте более описательные подсказки
* Проверьте, что входное разрешение соответствует ожидаемому

### Медленная генерация

* Генерация видео требует больших вычислительных ресурсов
* Используйте A100/H100 для более быстрых результатов
* Рассмотрите сначала более короткие клипы

## Оценка стоимости

Типичные ставки на маркетплейсе CLORE.AI (по состоянию на 2024):

| GPU       | Почасовая ставка | Дневная ставка | Сессия 4 часа |
| --------- | ---------------- | -------------- | ------------- |
| RTX 3060  | \~$0.03          | \~$0.70        | \~$0.12       |
| RTX 3090  | \~$0.06          | \~$1.50        | \~$0.25       |
| RTX 4090  | \~$0.10          | \~$2.30        | \~$0.40       |
| A100 40GB | \~$0.17          | \~$4.00        | \~$0.70       |
| A100 80GB | \~$0.25          | \~$6.00        | \~$1.00       |

*Цены варьируются в зависимости от провайдера и спроса. Проверьте* [*CLORE.AI Marketplace*](https://clore.ai/marketplace) *для текущих тарифов.*

**Экономьте деньги:**

* Используйте **Spot** рынок для гибких рабочих нагрузок (часто на 30–50% дешевле)
* Платите с помощью **CLORE** токенов
* Сравнивайте цены у разных провайдеров

## Дальнейшие шаги

* CogVideoX - Альтернатива T2V
* Wan2.1 Video - Еще один вариант T2V
* AnimateDiff - Анимация изображений
