> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/generaciya-video/opensora.md).

# OpenSora

{% hint style="info" %}
**Доступны более новые альтернативы!** [**FramePack**](/guides/guides_v2-ru/generaciya-video/framepack.md) генерирует видео всего с 6 ГБ VRAM, [**Wan2.1**](/guides/guides_v2-ru/generaciya-video/wan-video.md) предлагает превосходное качество, и [**LTX-2**](/guides/guides_v2-ru/generaciya-video/ltx-video-2.md) добавляет встроенную генерацию аудио.
{% endhint %}

Генерируйте видео с OpenSora, открытой альтернативой Sora, на GPU CLORE.AI.

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

## Почему OpenSora?

* **Открытый исходный код** - Полная лицензия Apache 2.0
* **Вдохновлено Sora** - Архитектура DiT, как у Sora от OpenAI
* **Масштабируемость** - Несколько размеров моделей и разрешений
* **Длинные видео** - Генерация до 16 секунд
* **Активная разработка** - Регулярные обновления и улучшения

## Варианты моделей

| Модель         | Разрешение | Длительность | VRAM  | Качество |
| -------------- | ---------- | ------------ | ----- | -------- |
| OpenSora 1.2   | 720p       | 16с          | 24 ГБ | Отлично  |
| OpenSora 1.1   | 480p       | 8с           | 16GB  | Хорошо   |
| OpenSora 1.0   | 256p       | 4с           | 8GB   | Базовый  |
| Open-Sora-Plan | 512p       | 10с          | 20GB  | Отлично  |

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

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

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

**Порты:**

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

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

```bash
git clone https://github.com/hpcaitech/Open-Sora && \
cd Open-Sora && \
pip install -e . && \
pip install gradio && \
python scripts/inference.py \
    --prompt "Кот играет с клубком" \
    --num-frames 51 \
    --resolution 480p \
    --save-dir ./outputs
```

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

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

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

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

## Требования к аппаратному обеспечению

| Версия модели | Минимальная GPU | Рекомендуется | Оптимально |
| ------------- | --------------- | ------------- | ---------- |
| OpenSora 1.0  | RTX 3070 8GB    | RTX 3090 24GB | RTX 4090   |
| OpenSora 1.1  | RTX 3090 16GB   | RTX 4090 24GB | A100 40GB  |
| OpenSora 1.2  | RTX 4090 24GB   | A100 40GB     | A100 80GB  |

## Установка

### Из исходников

```bash
git clone https://github.com/hpcaitech/Open-Sora
cd Open-Sora

# Установить зависимости
pip install -e .

# Скачать веса модели
python scripts/download_weights.py --version 1.2
```

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

```bash
pip install opensora
```

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

### Командная строка

```bash
# Простая генерация
python scripts/inference.py \
    --prompt "Красивый закат над океаном, кинематографично" \
    --num-frames 51 \
    --resolution 480p \
    --save-dir ./outputs

# Высокое качество
python scripts/inference.py \
    --prompt "Величественный орёл, парящий в облаках" \
    --num-frames 102 \
    --resolution 720p \
    --num-sampling-steps 100 \
    --save-dir ./outputs
```

### Python API

```python
import torch
from opensora.models import OpenSoraModel
from opensora.utils import export_to_video

# Загрузить модель
model = OpenSoraModel.from_pretrained("hpcaitech/OpenSora-v1.2")
model.to("cuda")

# Сгенерировать видео
prompt = "Ракета, взлетающая в космос, драматическое освещение, кинематографично"

video = model.generate(
    prompt=prompt,
    num_frames=51,
    height=480,
    width=854,
    num_inference_steps=50,
    guidance_scale=7.0
)

# Сохранить
export_to_video(video, "rocket.mp4", fps=24)
```

## Расширенная генерация

### С отрицательными подсказками

```python
video = model.generate(
    prompt="Профессиональная фотография тигра в дикой природе",
    negative_prompt="размыто, низкое качество, искажено, артефакты",
    num_frames=51,
    num_inference_steps=75,
    guidance_scale=7.5
)
```

### Длинные видео

```python
# Сгенерировать 16 секунд при 24fps
video = model.generate(
    prompt="Таймлапс цветения цветов в саду",
    num_frames=384,  # 16 секунд при 24fps
    height=480,
    width=854,
    num_inference_steps=100
)

export_to_video(video, "timelapse.mp4", fps=24)
```

### Высокое разрешение

```python
# Генерация 720p (требуется больше VRAM)
video = model.generate(
    prompt="Вид с воздуха на город ночью с огнями",
    num_frames=51,
    height=720,
    width=1280,
    num_inference_steps=75
)
```

## Примеры промптов

### Кинематографично

```python
prompts = [
    "Кинематографический кадр самурая, вынимающего меч, драматическое освещение, 4K",
    "Эпический широкий план замка на утёсе во время шторма",
    "Замедленное движение капель воды, падающих в спокойный пруд",
    "Следящий кадр по неоновому киберпанк-аллее ночью"
]
```

### Природа

```python
prompts = [
    "Северное сияние над заснеженными горами, таймлапс",
    "Макросъёмка бабочки, вылезающей из куколки",
    "Океанские волны, разбивающиеся о вулканические скалы на закате",
    "Туман, стелющийся по древнему лесу на рассвете"
]
```

### Абстракция

```python
prompts = [
    "Красочные капли краски, падающие в воду, замедленное движение",
    "Фракталы, эволюционирующие и трансформирующиеся, психоделические цвета",
    "Жидкий металл, превращающийся в разные формы"
]
```

## Параметры конфигурации

### Предустановки разрешения

```python
resolutions = {
    "256p": (256, 455),
    "360p": (360, 640),
    "480p": (480, 854),
    "720p": (720, 1280),
    "1080p": (1080, 1920)  # Требуется большой объём VRAM
}
```

### Настройки качества

```python
# Быстрый предпросмотр
config_fast = {
    "num_frames": 25,
    "num_inference_steps": 25,
    "guidance_scale": 5.0
}

# Сбалансировано
config_balanced = {
    "num_frames": 51,
    "num_inference_steps": 50,
    "guidance_scale": 7.0
}

# Максимальное качество
config_quality = {
    "num_frames": 102,
    "num_inference_steps": 100,
    "guidance_scale": 7.5
}
```

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

```python
import gradio as gr
import torch
from opensora.models import OpenSoraModel
from opensora.utils import export_to_video
import tempfile

model = OpenSoraModel.from_pretrained("hpcaitech/OpenSora-v1.2")
model.to("cuda")

def generate_video(prompt, negative_prompt, frames, steps, guidance, resolution, seed):
    res_map = {"480p": (480, 854), "720p": (720, 1280)}
    height, width = res_map.get(resolution, (480, 854))

    generator = torch.Generator("cuda").manual_seed(seed) if seed > 0 else None

    video = model.generate(
        prompt=prompt,
        negative_prompt=negative_prompt,
        num_frames=frames,
        height=height,
        width=width,
        num_inference_steps=steps,
        guidance_scale=guidance,
        generator=generator
    )

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

demo = gr.Interface(
    fn=generate_video,
    inputs=[
        gr.Textbox(label="Prompt", lines=2),
        gr.Textbox(label="Negative Prompt", value="размыто, низкое качество"),
        gr.Slider(25, 200, value=51, step=1, label="Кадры"),
        gr.Slider(20, 150, value=50, step=5, label="Шаги"),
        gr.Slider(3, 15, value=7, step=0.5, label="Guidance"),
        gr.Dropdown(["480p", "720p"], value="480p", label="Разрешение"),
        gr.Number(value=-1, label="Seed")
    ],
    outputs=gr.Video(label="Сгенерированное видео"),
    title="OpenSora - Текст в видео",
    description="Генерируйте видео с помощью OpenSora. Запуск на CLORE.AI."
)

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

## Оптимизация памяти

```python
# Включить оптимизации памяти
model.enable_model_cpu_offload()
model.enable_vae_tiling()

# Для очень низкой видеопамяти
model.enable_sequential_cpu_offload()

# Использовать пониженную точность
model = OpenSoraModel.from_pretrained(
    "hpcaitech/OpenSora-v1.2",
    torch_dtype=torch.float16
)
```

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

```python
import os

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

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

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

    video = model.generate(
        prompt=prompt,
        num_frames=51,
        num_inference_steps=50
    )

    export_to_video(video, f"{output_dir}/video_{i:03d}.mp4", fps=24)

    # Очистить память между генерациями
    torch.cuda.empty_cache()
```

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

| Разрешение | Кадры | Шаги | GPU       | Время    |
| ---------- | ----- | ---- | --------- | -------- |
| 480p       | 51    | 50   | RTX 4090  | \~3 мин  |
| 480p       | 51    | 50   | A100 40GB | \~2 мин  |
| 720p       | 51    | 50   | A100 40GB | \~5 мин  |
| 720p       | 102   | 100  | A100 80GB | \~15 мин |

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

Типичные расценки на маркетплейсе CLORE.AI:

| GPU           | Почасовая ставка | \~51 видео по 480p в час |
| ------------- | ---------------- | ------------------------ |
| RTX 4090 24GB | \~$0.10          | \~15-20                  |
| A100 40GB     | \~$0.17          | \~25-30                  |
| A100 80GB     | \~$0.25          | \~35 (может делать 720p) |

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

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

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

```bash
# Использовать меньшее разрешение
python scripts/inference.py --resolution 360p --num-frames 25

# Включить выгрузку на CPU
python scripts/inference.py --cpu-offload

# Уменьшить размер батча
python scripts/inference.py --batch-size 1
```

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

* Уменьшите `num_inference_steps` (30-50 часто достаточно)
* Используйте более низкое разрешение для предварительного просмотра
* Убедитесь, что GPU используется (проверьте `nvidia-smi`)

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

* Увеличьте количество шагов до 75-100
* Используйте более описательные подсказки
* Добавьте отрицательные подсказки для артефактов
* Попробуйте разные значения guidance (5-10)

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

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

## OpenSora vs Другие

| Функция                 | OpenSora 1.2 | Hunyuan  | Wan2.1     | SVD      |
| ----------------------- | ------------ | -------- | ---------- | -------- |
| Архитектура             | DiT          | DiT      | DiT        | U-Net    |
| Макс. длительность      | 16с          | 5с       | 5с         | 4с       |
| Максимальное разрешение | 720p         | 720p     | 720p       | 576p     |
| Качество                | Отлично      | Отлично  | Отлично    | Хорошо   |
| Скорость                | Средне       | Медленно | Быстро     | Быстро   |
| Лицензия                | Apache 2.0   | Откройте | Apache 2.0 | Откройте |

**Используйте OpenSora когда:**

* Нужна генерация более длинного видео
* Хотите полную лицензию Apache 2.0
* Заинтересованы в архитектуре, похожей на Sora
* Нужна активная поддержка сообщества

## Альтернатива Open-Sora-Plan

Ещё один опенсорсный вариант:

```bash
git clone https://github.com/PKU-YuanGroup/Open-Sora-Plan
cd Open-Sora-Plan
pip install -e .

python scripts/inference.py \
    --prompt "Ваша подсказка здесь" \
    --output video.mp4
```

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

* [Hunyuan Video](/guides/guides_v2-ru/generaciya-video/hunyuan-video.md) - Высококачественный T2V
* [Wan2.1 Video](/guides/guides_v2-ru/generaciya-video/wan-video.md) - Быстрая генерация
* [Stable Video Diffusion](/guides/guides_v2-ru/generaciya-video/stable-video-diffusion.md) - Анимация изображений
* [Интерполяция RIFE](/guides/guides_v2-ru/obrabotka-video/rife-interpolation.md) - Вставка кадров


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/generaciya-video/opensora.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
