# hunyuan-I2V

## 项目简介

hunyuan-I2V 是一个基于多GPU环境下的文本到视频（Text-to-Video）生成项目，整合了多种先进模型，支持高分辨率、高质量的视频生成。项目中使用了 Docker 容器化环境，便于快速部署和测试，适合研究、产品原型开发及教学演示。

---

## 环境部署

### 1. 拉取镜像

```bash
docker pull harbor.sourcefind.cn:5443/dcu/admin/base/pytorch:2.5.1-ubuntu22.04-dtk25.04.4-1230-py3.10-20260115
```

### 2. 创建容器

```bash
docker run -it \
--network=host \
--hostname=localhost \
--name=hunyuan \
-v /opt/hyhal:/opt/hyhal:ro \
-v $PWD:/workspace \
--ipc=host \
--device=/dev/kfd \
--device=/dev/mkfd \
--device=/dev/dri \
--shm-size=512G \
--privileged \
--group-add video \
--cap-add=SYS_PTRACE \
-u root \
--security-opt seccomp=unconfined \
harbor.sourcefind.cn:5443/dcu/admin/base/pytorch:2.5.1-ubuntu22.04-dtk25.04.4-1230-py3.10-20260115 \
/bin/bash
```

---

## 测试步骤

### 1. 拉取代码

```bash
git clone http://developer.sourcefind.cn/codes/bw-bestperf/hunyuanvideo-i2v.git
cd hunyuanvideo-i2v/
```

### 2. 安装依赖

```bash
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install yunchang==0.6.0 xfuser==0.4.2

bash fix.sh  # 适配xfuser
```

### 3. 下载模型

安装 ModelScope：

```bash
pip install modelscope
```

下载所需模型：

```bash
mkdir ckpts

modelscope download --model Tencent-Hunyuan/HunyuanVideo --local_dir ./ckpts

modelscope download --model AI-ModelScope/HunyuanVideo-I2V --local_dir ./ckpts

modelscope download --model AI-ModelScope/clip-vit-large-patch14 --local_dir ckpts/text_encoder_2

modelscope download --model AI-ModelScope/llava-llama-3-8b-v1_1-transformers --local_dir ckpts/text_encoder_i2v
```

执行修复脚本：

```bash
bash modified/fix.sh
```

设置环境变量，禁用 HIP 缓存 allocator 防止 OOM：

```bash
export PYTORCH_NO_HIP_MEMORY_CACHING=1
```

---

## 测试代码示例（四卡多GPU测试）

导出设备环境和禁用缓存：

```bash
export HIP_VISIBLE_DEVICES=4,5,6,7
export PYTORCH_NO_HIP_MEMORY_CACHING=1
```

运行文本到视频多GPU推理：

```bash
ALLOW_RESIZE_FOR_SP=1 torchrun --nproc_per_node=4 \
    sample_image2video.py \
    --model HYVideo-T/2 \
    --prompt "An Asian man with short hair in black tactical uniform and white clothes waves a firework stick." \
    --i2v-mode \
    --i2v-image-path ./assets/demo/i2v/imgs/0.jpg \
    --i2v-resolution 720p \
    --i2v-stability \
    --infer-steps 50 \
    --video-length 129 \
    --flow-reverse \
    --flow-shift 17.0 \
    --seed 42 \
    --embedded-cfg-scale 6.0 \
    --save-path ./results \
    --ulysses-degree 4 \
    --ring-degree 1 \
    --num-videos 1 2>&1 | tee z_logs/bw_image2video_4ka.log
```

---

## 配置选项说明

| 参数                 | 说明                           | 默认值 / 示例                             |
| -------------------- | ------------------------------ | ---------------------------------------- |
| `--model`            | 指定使用的模型名称             | `HYVideo-T/2`                            |
| `--prompt`           | 文本描述，用于生成视频         | `"An Asian man with short hair..."`     |
| `--i2v-mode`         | 启用文本到视频模式             |                                          |
| `--i2v-image-path`   | 输入图像路径                   | `./assets/demo/i2v/imgs/0.jpg`          |
| `--i2v-resolution`   | 输出视频分辨率                 | `720p`                                  |
| `--i2v-stability`    | 稳定性增强选项                 |                                          |
| `--infer-steps`      | 推理步数，影响生成质量与速度   | `50`                                    |
| `--video-length`     | 生成视频的长度（帧数）         | `129`                                   |
| `--flow-reverse`     | 是否反转光流                   |                                          |
| `--flow-shift`       | 光流偏移值                     | `17.0`                                  |
| `--seed`             | 随机种子，保证结果可复现       | `42`                                    |
| `--embedded-cfg-scale` | Condition scaling比例          | `6.0`                                   |
| `--save-path`        | 生成结果保存路径               | `./results`                             |
| `--ulysses-degree`   | 自定义参数，具体含义见代码说明 | `4`                                     |
| `--ring-degree`      | 自定义参数，具体含义见代码说明 | `1`                                     |
| `--num-videos`       | 生成视频数量                   | `1`                                     |

---

## 贡献指南

欢迎对 hunyuan-I2V 项目进行贡献！请遵循以下步骤：

1. Fork 本仓库，并新建分支进行功能开发或问题修复。
2. 提交规范的 commit 信息，描述清晰。
3. 提交 Pull Request，简述修改内容及目的。
4. 遵守项目代码规范和测试标准。
5. 参与代码评审，积极沟通改进方案。

---

## 许可证

本项目遵循 MIT 许可证，详见 [LICENSE](./LICENSE) 文件。

---

感谢您的关注与支持！如有问题，欢迎提交 Issue 或联系维护团队。
