Привет! Не так давно мы щупали Matrix-Game 2.0, интерактивную модель мира, которая на лету дорисовывала окружение по командам. И вот, на сцену выходит новый, куда более серьезный игрок — Hunyuan-GameCraft от гиганта Tencent.
Это фреймворк для генерации высокодинамичных, интерактивных игровых видео. Проще говоря, это следующий шаг к той самой "Матрице": вы жмете на клавиатуру, а ИИ в реальном времени строит для вас игровой мир. Проект опенсорсный, код написан на Python.
Давайте разберемся, как это работает, чем отличается от аналогов, и, самое главное, как развернуть этот генератор миров у себя на машине.
Если Matrix-Game был скорее технодемкой, то Hunyuan-GameCraft — это уже продуманный фреймворк. Разработчики из Tencent (авторы PUBG Mobile, если что) подошли к вопросу основательно.
Вот ключевые отличия и фичи, которые делают этот проект особенным:
This browser does not support the video element.
В сухом остатке: Hunyuan-GameCraft — это более основательная и потенциально более стабильная попытка создать интерактивный ИИ-мир, чем Matrix-Game.
Как и всегда, запустить такое на слабом железе не получится. Требования серьезные:
[!INFO] В репозитории есть скрипты для запуска на одной GPU с выгрузкой части данных в CPU (
CPU Offload
), что делает проект доступным для владельцев "народных" 24 ГБ карт.
Перед началом создадим чистое conda
окружение, чтобы не было конфликтов зависимостей. Рекомендуемая версия Python — 3.10.
conda create -n hy-gamecraft python=3.10 -y
conda activate hy-gamecraft
Теперь мы готовы к установке.
git clone
до интерактивной сессииПроцесс установки и запуска хорошо документирован, но давайте пройдемся по нему вместе, разбирая каждый шаг.
Сначала клонируем официальный репозиторий проекта с GitHub.
git clone https://github.com/Tencent-Hunyuan/Hunyuan-GameCraft-1.0.git
cd Hunyuan-GameCraft-1.0
Теперь установим все Python-библиотеки из файла requirements.txt
.
pip install -r requirements.txt
[!WARNING] Проект сильно зависит от
flash-attention
для ускорения. Убедитесь, что у вас установленnvcc
(CUDA Toolkit) иgcc
, так какpip
скорее всего будет компилировать пакет из исходников. Если возникнут ошибки — следуйте официальной инструкции по установке flash-attention.
После этого установим сам пакет hymm_sp
в режиме разработки.
python -m pip install git+https://github.com/Dao-AILab/flash-attention.git@v2.6.3
Все предобученные модели лежат на Hugging Face. Самый простой способ их скачать — через huggingface-cli
. Если утилиты нет, установите ее: pip install "huggingface_hub[cli]"
.
Теперь выполним команду для скачивания всех необходимых весов. Они будут загружены в папку weights
внутри проекта.
huggingface-cli download tencent/Hunyuan-GameCraft-1.0 --local-dir ./weights
Эта команда скачает всё, что нужно:
mp_rank_00_model_states.pt
.mp_rank_00_model_states_distill.pt
.После завершения загрузки у вас должна получиться вот такая структура папок:
Hunyuan-GameCraft-1.0/
└── weights/
├── gamecraft_models/
│ ├── mp_rank_00_model_states.pt
│ └── mp_rank_00_model_states_distill.pt
└── stdmodels/
├── vae_3d/
├── llava-llama-3-8b-v1_1-transformers/
└── openai_clip-vit-large-patch14/
Теперь все готово к первому запуску.
Давайте сначала запустим генерацию на одной видеокарте с минимальными требованиями к VRAM (24 ГБ). Для этого будем использовать скрипт run_sample_batch_4090.sh
.
Откройте файл scripts/run_sample_batch_4090.sh
и убедитесь, что пути к моделям указаны верно. По умолчанию они должны быть правильными, если вы следовали шагу 2.
#!/bin/bash
JOBS_DIR=$(dirname $(dirname "$0"))
export PYTHONPATH=${JOBS_DIR}:$PYTHONPATH
export MODEL_BASE="/path/to/models" # <-- УКАЖИТЕ ПРАВИЛЬНЫЙ ПУТЬ!
checkpoint_path="/path/to/ckpts" # <-- И ЗДЕСЬ!
# ... остальной код
[!TIP] Важно! Переменная
MODEL_BASE
должна указывать на папку, где лежатstdmodels
(т.е..../Hunyuan-GameCraft-1.0/weights/stdmodels
). Аcheckpoint_path
— полный путь к файлу.../Hunyuan-GameCraft-1.0/weights/gamecraft_models/mp_rank_00_model_states.pt
. Отредактируйте скрипт перед запуском!
После того как пути исправлены, запускаем скрипт:
bash scripts/run_sample_batch_4090.sh
Что здесь происходит?
export DISABLE_SP=1
и export CPU_OFFLOAD=1
: Эти переменные отключают Sequence Parallelism (распараллеливание на несколько GPU) и включают выгрузку неиспользуемых частей модели из VRAM в оперативную память. Это замедляет генерацию, но позволяет запуститься на одной карте.torchrun --nnodes=1 --nproc_per_node=1 ...
: Запуск скрипта hymm_sp/sample_batch.py
на одном GPU.--image-path "asset/village.png"
: Стартовая картинка.--prompt "..."
: Текстовое описание сцены.--action-list w s d a
: Список "нажатий клавиш", которые будут симулированы. Модель сгенерирует 4 сегмента видео, соответствующие движению вперед, назад, вправо и влево.--action-speed-list 0.2 0.2 0.2 0.2
: "Сила" или "скорость" каждого действия.--cpu-offload
и --use-fp8
: Флаги, дополнительно снижающие потребление VRAM за счет выгрузки в RAM и использования 8-битной точности вычислений.После успешного выполнения в папке results/
появится видеофайл village.mp4
. Он будет состоять из исходного кадра и четырех сгенерированных фрагментов, склеенных вместе.
Если у вас есть доступ к серверу с несколькими GPU (например, 8x A100), вы можете запустить генерацию в параллельном режиме. Для этого используется скрипт run_sample_batch_sp.sh
.
Процесс аналогичен: проверьте и исправьте пути в скрипте, а затем запустите его.
bash scripts/run_sample_batch_sp.sh
Ключевое отличие в команде запуска: torchrun --nnodes=1 --nproc_per_node=8 ...
. Это говорит PyTorch задействовать 8 GPU на одной машине. В этом режиме CPU_OFFLOAD
отключен, и генерация происходит значительно быстрее.
Для сценариев, требующих максимальной скорости, можно использовать дистиллированную модель. Она генерирует видео всего за 8 шагов шумоподавления вместо 50. Качество может быть немного ниже, но скорость — в разы выше.
Для этого используется скрипт run_sample_batch_distill.sh
. Не забудьте поправить пути к MODEL_BASE
и checkpoint_path
(теперь он должен указывать на ..._distill.pt
).
bash scripts/run_sample_batch_distill.sh
Обратите внимание на ключевые изменения в параметрах:
--checkpoint_path
: Указывает на файл mp_rank_00_model_states_distill.pt
.--cfg-scale 1.0
: Сниженная сила влияния промпта, что типично для дистиллированных моделей.--infer-steps 8
: Всего 8 шагов генерации.Давайте очень кратко, без погружения в математику, разберем, как устроена модель HYVideoDiffusionTransformer
из файла hymm_sp/modules/models.py
.
Входные данные: Модель принимает на вход:
x
: Зашумленные латенты видео (то, что нужно "очистить").t
: Текущий шаг времени в процессе шумоподавления.text_states
и text_states_2
: Текстовые эмбеддинги от двух энкодеров (LLaVA-Llama и CLIP).cam_latents
: Эмбеддинги, описывающие движение камеры (полученные из action_id
и action_speed
).freqs_cos
, freqs_sin
: Ротационные позиционные эмбеддинги (RoPE), которые помогают модели понимать положение "пикселей" в пространстве и времени.Эмбеддинги: Все входные данные (кроме латентов) преобразуются в единое векторное пространство с помощью специальных модулей: img_in
(для изображений), txt_in
(для текста), time_in
(для времени), camera_net
(для движений камеры).
Двухпоточная архитектура (DoubleStreamBlock): Первые 19 слоев трансформера — двухпоточные. Это значит, что обработка визуальной информации (латентов изображений) и текстовой информации идет параллельно, в двух отдельных "потоках". Они обмениваются информацией друг с другом через механизм cross-attention. Это позволяет модели глубоко связать смысл текста с визуальным рядом.
Однопоточная архитектура (SingleStreamBlock): После 19-го слоя визуальные и текстовые токены объединяются в одну последовательность и обрабатываются вместе в следующих 38 слоях. Это позволяет модели находить более сложные, мультимодальные зависимости.
Модуляция (ModulateDiT): По всей сети разбросаны слои модуляции. Они "впрыскивают" информацию о времени (t
) и текстовом контексте (text_states_2
) прямо в слои трансформера, адаптируя их поведение на каждом шаге генерации. Это похоже на то, как работают AdaLN
слои в Stable Diffusion 3.
Финальный слой: В конце обработанные латенты проходят через FinalLayer
, который преобразует их в формат, готовый для декодирования VAE обратно в пиксели.
[!INFO] Почему это важно? Такая гибридная архитектура (сначала два потока, потом один) — это тренд в современных мультимодальных моделях. Она позволяет эффективно обрабатывать разные типы данных, не теряя их специфики, а затем объединять их для создания целостного результата.
Ваша поддержка — это энергия для новых статей и проектов. Спасибо, что читаете!
Hunyuan-GameCraft, как и Matrix-Game, — это не просто генераторы видео. Это первые шаги к созданию процедурных, интерактивных миров на лету. Технология все еще находится на ранней стадии, но уже сейчас она демонстрирует огромный потенциал для:
Да, требования к железу пока заоблачные для массового пользователя, а в генерации встречаются артефакты. Но это лишь вопрос времени. Тот факт, что такие проекты появляются в опенсорсе, позволяет сообществу экспериментировать и ускорять прогресс. Если у вас есть подходящая видеокарта — обязательно попробуйте запустить.