infer.py 4.05 KB
Newer Older
helloyongyang's avatar
helloyongyang committed
1
import argparse
2

Yang Yong(雍洋)'s avatar
Yang Yong(雍洋) committed
3
import torch
PengGao's avatar
PengGao committed
4
5
import torch.distributed as dist
from loguru import logger
6

PengGao's avatar
PengGao committed
7
from lightx2v.common.ops import *
PengGao's avatar
PengGao committed
8
9
from lightx2v.models.runners.cogvideox.cogvidex_runner import CogvideoxRunner  # noqa: F401
from lightx2v.models.runners.hunyuan.hunyuan_runner import HunyuanRunner  # noqa: F401
10
from lightx2v.models.runners.qwen_image.qwen_image_runner import QwenImageRunner  # noqa: F401
sandy's avatar
sandy committed
11
from lightx2v.models.runners.wan.wan_audio_runner import Wan22AudioRunner, WanAudioRunner  # noqa: F401
PengGao's avatar
PengGao committed
12
13
14
15
from lightx2v.models.runners.wan.wan_causvid_runner import WanCausVidRunner  # noqa: F401
from lightx2v.models.runners.wan.wan_distill_runner import WanDistillRunner  # noqa: F401
from lightx2v.models.runners.wan.wan_runner import Wan22MoeRunner, WanRunner  # noqa: F401
from lightx2v.models.runners.wan.wan_skyreels_v2_df_runner import WanSkyreelsV2DFRunner  # noqa: F401
gushiqiao's avatar
gushiqiao committed
16
from lightx2v.models.runners.wan.wan_vace_runner import WanVaceRunner  # noqa: F401
PengGao's avatar
PengGao committed
17
from lightx2v.utils.envs import *
18
from lightx2v.utils.profiler import *
PengGao's avatar
PengGao committed
19
from lightx2v.utils.registry_factory import RUNNER_REGISTER
helloyongyang's avatar
helloyongyang committed
20
from lightx2v.utils.set_config import print_config, set_config, set_parallel_config
PengGao's avatar
PengGao committed
21
from lightx2v.utils.utils import seed_all
lijiaqi2's avatar
lijiaqi2 committed
22
23


helloyongyang's avatar
helloyongyang committed
24
25
def init_runner(config):
    seed_all(config.seed)
Yang Yong(雍洋)'s avatar
Yang Yong(雍洋) committed
26
27
28
    torch.set_grad_enabled(False)
    runner = RUNNER_REGISTER[config.model_cls](config)
    runner.init_modules()
helloyongyang's avatar
helloyongyang committed
29
30
31
    return runner


32
def main():
helloyongyang's avatar
helloyongyang committed
33
    parser = argparse.ArgumentParser()
wangshankun's avatar
wangshankun committed
34
    parser.add_argument(
35
36
37
        "--model_cls",
        type=str,
        required=True,
38
39
40
41
42
43
        choices=[
            "wan2.1",
            "hunyuan",
            "wan2.1_distill",
            "wan2.1_causvid",
            "wan2.1_skyreels_v2_df",
gushiqiao's avatar
gushiqiao committed
44
            "wan2.1_vace",
45
            "cogvideox",
Yang Yong(雍洋)'s avatar
Yang Yong(雍洋) committed
46
            "seko_talk",
47
            "wan2.2_moe",
helloyongyang's avatar
fix ci  
helloyongyang committed
48
            "wan2.2",
49
50
51
            "wan2.2_moe_audio",
            "wan2.2_audio",
            "wan2.2_moe_distill",
52
            "qwen_image",
53
        ],
54
        default="wan2.1",
wangshankun's avatar
wangshankun committed
55
    )
helloyongyang's avatar
helloyongyang committed
56

gushiqiao's avatar
gushiqiao committed
57
    parser.add_argument("--task", type=str, choices=["t2v", "i2v", "t2i", "i2i", "flf2v", "vace"], default="t2v")
helloyongyang's avatar
helloyongyang committed
58
    parser.add_argument("--model_path", type=str, required=True)
helloyongyang's avatar
helloyongyang committed
59
    parser.add_argument("--config_json", type=str, required=True)
60
    parser.add_argument("--use_prompt_enhancer", action="store_true")
helloyongyang's avatar
helloyongyang committed
61

wangshankun's avatar
wangshankun committed
62
    parser.add_argument("--prompt", type=str, default="", help="The input prompt for text-to-video generation")
helloyongyang's avatar
helloyongyang committed
63
    parser.add_argument("--negative_prompt", type=str, default="")
helloyongyang's avatar
helloyongyang committed
64
65

    parser.add_argument("--image_path", type=str, default="", help="The path to input image file for image-to-video (i2v) task")
gushiqiao's avatar
gushiqiao committed
66
    parser.add_argument("--last_frame_path", type=str, default="", help="The path to last frame file for first-last-frame-to-video (flf2v) task")
sandy's avatar
sandy committed
67
    parser.add_argument("--audio_path", type=str, default="", help="The path to input audio file or directory for audio-to-video (s2v) task")
helloyongyang's avatar
helloyongyang committed
68

sandy's avatar
sandy committed
69
    # [Warning] For vace task, need refactor.
gushiqiao's avatar
gushiqiao committed
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
    parser.add_argument(
        "--src_ref_images",
        type=str,
        default=None,
        help="The file list of the source reference images. Separated by ','. Default None.",
    )
    parser.add_argument(
        "--src_video",
        type=str,
        default=None,
        help="The file of the source video. Default None.",
    )
    parser.add_argument(
        "--src_mask",
        type=str,
        default=None,
        help="The file of the source mask. Default None.",
    )

LiangLiu's avatar
LiangLiu committed
89
    parser.add_argument("--save_video_path", type=str, default=None, help="The path to save video path/file")
helloyongyang's avatar
helloyongyang committed
90
    args = parser.parse_args()
PengGao's avatar
PengGao committed
91

helloyongyang's avatar
helloyongyang committed
92
93
94
    # set config
    config = set_config(args)

helloyongyang's avatar
fix bug  
helloyongyang committed
95
    if config.parallel:
helloyongyang's avatar
helloyongyang committed
96
97
98
99
        dist.init_process_group(backend="nccl")
        torch.cuda.set_device(dist.get_rank())
        set_parallel_config(config)

helloyongyang's avatar
helloyongyang committed
100
101
    print_config(config)

102
    with ProfilingContext4DebugL1("Total Cost"):
helloyongyang's avatar
helloyongyang committed
103
        runner = init_runner(config)
104
        runner.run_pipeline()
Xinchi Huang's avatar
Xinchi Huang committed
105

helloyongyang's avatar
helloyongyang committed
106
107
108
109
110
    # Clean up distributed process group
    if dist.is_initialized():
        dist.destroy_process_group()
        logger.info("Distributed process group cleaned up")

Xinchi Huang's avatar
Xinchi Huang committed
111
112

if __name__ == "__main__":
113
    main()