From f85940984463e10ac28a08310ffec4f60ebf1c73 Mon Sep 17 00:00:00 2001 From: SolitaryThinker Date: Thu, 24 Jul 2025 21:31:42 -0700 Subject: [PATCH] remove .v1. --- docs/source/api/summary.md | 4 +- docs/source/getting_started/v1_api.md | 36 +++++++-------- examples/inference/basic/basic.py | 2 +- examples/inference/basic/basic_dmd.py | 2 +- examples/inference/basic/basic_mps.py | 2 +- examples/inference/basic/default_args.py | 2 +- examples/inference/basic/test.py | 2 +- examples/inference/gradio/gradio_demo.py | 2 +- examples/inference/lora/wan_lora_inference.py | 2 +- .../lora/wan_lora_inference_from_ckpt.py | 2 +- fastvideo/__init__.py | 6 +-- fastvideo/utils/collect_env.py | 2 +- fastvideo/v1/STA_configuration.py | 2 +- fastvideo/v1/attention/__init__.py | 13 +++--- fastvideo/v1/attention/backends/abstract.py | 4 +- fastvideo/v1/attention/backends/flash_attn.py | 10 ++--- fastvideo/v1/attention/backends/sage_attn.py | 8 ++-- fastvideo/v1/attention/backends/sdpa.py | 8 ++-- .../attention/backends/sliding_tile_attn.py | 22 ++++----- .../attention/backends/video_sparse_attn.py | 16 +++---- fastvideo/v1/attention/layer.py | 15 +++---- fastvideo/v1/attention/selector.py | 10 ++--- fastvideo/v1/configs/models/__init__.py | 8 ++-- fastvideo/v1/configs/models/base.py | 2 +- fastvideo/v1/configs/models/dits/__init__.py | 6 +-- fastvideo/v1/configs/models/dits/base.py | 6 +-- .../v1/configs/models/dits/hunyuanvideo.py | 2 +- fastvideo/v1/configs/models/dits/stepvideo.py | 2 +- fastvideo/v1/configs/models/dits/wanvideo.py | 2 +- .../v1/configs/models/encoders/__init__.py | 16 +++---- fastvideo/v1/configs/models/encoders/base.py | 6 +-- fastvideo/v1/configs/models/encoders/clip.py | 8 ++-- fastvideo/v1/configs/models/encoders/llama.py | 4 +- fastvideo/v1/configs/models/encoders/t5.py | 4 +- fastvideo/v1/configs/models/vaes/__init__.py | 6 +-- fastvideo/v1/configs/models/vaes/base.py | 4 +- .../v1/configs/models/vaes/hunyuanvae.py | 2 +- .../v1/configs/models/vaes/stepvideovae.py | 2 +- fastvideo/v1/configs/models/vaes/wanvae.py | 2 +- fastvideo/v1/configs/pipelines/__init__.py | 17 +++---- fastvideo/v1/configs/pipelines/base.py | 21 +++++---- fastvideo/v1/configs/pipelines/hunyuan.py | 12 ++--- fastvideo/v1/configs/pipelines/registry.py | 21 ++++----- fastvideo/v1/configs/pipelines/stepvideo.py | 8 ++-- fastvideo/v1/configs/pipelines/wan.py | 12 ++--- fastvideo/v1/configs/sample/__init__.py | 2 +- fastvideo/v1/configs/sample/base.py | 4 +- fastvideo/v1/configs/sample/hunyuan.py | 4 +- fastvideo/v1/configs/sample/registry.py | 22 ++++----- fastvideo/v1/configs/sample/stepvideo.py | 2 +- fastvideo/v1/configs/sample/teacache.py | 2 +- fastvideo/v1/configs/sample/wan.py | 4 +- fastvideo/v1/dataset/__init__.py | 11 +++-- ...enchmark_parquet_dataset_iterable_style.py | 8 ++-- .../benchmark_parquet_dataset_map_style.py | 10 ++--- .../dataset/parquet_dataset_iterable_style.py | 8 ++-- .../v1/dataset/parquet_dataset_map_style.py | 8 ++-- .../v1/dataset/preprocessing_datasets.py | 2 +- fastvideo/v1/dataset/validation_dataset.py | 8 ++-- fastvideo/v1/distributed/__init__.py | 6 +-- fastvideo/v1/distributed/communication_op.py | 2 +- .../device_communicators/cpu_communicator.py | 4 +- .../device_communicators/cuda_communicator.py | 4 +- .../device_communicators/pynccl.py | 8 ++-- .../device_communicators/pynccl_wrapper.py | 4 +- fastvideo/v1/distributed/parallel_state.py | 22 ++++----- fastvideo/v1/distributed/utils.py | 2 +- fastvideo/v1/entrypoints/cli/cli_types.py | 2 +- fastvideo/v1/entrypoints/cli/generate.py | 12 ++--- fastvideo/v1/entrypoints/cli/main.py | 6 +-- fastvideo/v1/entrypoints/cli/utils.py | 2 +- fastvideo/v1/entrypoints/video_generator.py | 12 ++--- fastvideo/v1/fastvideo_args.py | 8 ++-- fastvideo/v1/forward_context.py | 6 +-- fastvideo/v1/layers/activation.py | 2 +- fastvideo/v1/layers/custom_op.py | 2 +- fastvideo/v1/layers/layernorm.py | 4 +- fastvideo/v1/layers/linear.py | 28 ++++++------ fastvideo/v1/layers/lora/linear.py | 22 ++++----- fastvideo/v1/layers/mlp.py | 4 +- fastvideo/v1/layers/quantization/__init__.py | 8 ++-- .../v1/layers/quantization/base_config.py | 2 +- fastvideo/v1/layers/rotary_embedding.py | 4 +- fastvideo/v1/layers/visual_embedding.py | 6 +-- .../v1/layers/vocab_parallel_embedding.py | 12 ++--- fastvideo/v1/logger.py | 10 ++--- fastvideo/v1/logging_utils/__init__.py | 2 +- fastvideo/v1/models/dits/base.py | 4 +- fastvideo/v1/models/dits/hunyuanvideo.py | 33 +++++++------- fastvideo/v1/models/dits/stepvideo.py | 22 ++++----- fastvideo/v1/models/dits/wanvideo.py | 38 ++++++++-------- fastvideo/v1/models/encoders/base.py | 8 ++-- fastvideo/v1/models/encoders/clip.py | 25 +++++------ fastvideo/v1/models/encoders/llama.py | 26 +++++------ fastvideo/v1/models/encoders/stepllm.py | 2 +- fastvideo/v1/models/encoders/t5.py | 22 ++++----- fastvideo/v1/models/encoders/vision.py | 2 +- .../v1/models/loader/component_loader.py | 23 +++++----- fastvideo/v1/models/loader/fsdp_load.py | 12 ++--- fastvideo/v1/models/loader/utils.py | 2 +- fastvideo/v1/models/loader/weight_utils.py | 4 +- fastvideo/v1/models/parameter.py | 8 ++-- fastvideo/v1/models/registry.py | 10 ++--- .../scheduling_flow_match_euler_discrete.py | 4 +- .../scheduling_flow_unipc_multistep.py | 2 +- .../schedulers/scheduling_unipc_multistep.py | 2 +- fastvideo/v1/models/utils.py | 2 +- fastvideo/v1/models/vaes/common.py | 4 +- fastvideo/v1/models/vaes/hunyuanvae.py | 6 +-- fastvideo/v1/models/vaes/stepvideovae.py | 4 +- fastvideo/v1/models/vaes/wanvae.py | 10 ++--- fastvideo/v1/pipelines/__init__.py | 19 ++++---- .../v1/pipelines/composed_pipeline_base.py | 18 ++++---- .../v1/pipelines/hunyuan/hunyuan_pipeline.py | 16 +++---- fastvideo/v1/pipelines/lora_pipeline.py | 16 +++---- fastvideo/v1/pipelines/pipeline_batch_info.py | 5 +-- fastvideo/v1/pipelines/pipeline_registry.py | 8 ++-- .../preprocess/preprocess_pipeline_base.py | 16 +++---- .../preprocess/preprocess_pipeline_i2v.py | 12 ++--- .../preprocess/preprocess_pipeline_t2v.py | 4 +- .../v1/pipelines/preprocess/v1_preprocess.py | 14 +++--- fastvideo/v1/pipelines/stages/__init__.py | 25 +++++------ fastvideo/v1/pipelines/stages/base.py | 10 ++--- fastvideo/v1/pipelines/stages/conditioning.py | 12 ++--- fastvideo/v1/pipelines/stages/decoding.py | 20 ++++----- fastvideo/v1/pipelines/stages/denoising.py | 45 +++++++++---------- fastvideo/v1/pipelines/stages/encoding.py | 23 +++++----- .../v1/pipelines/stages/image_encoding.py | 16 +++---- .../v1/pipelines/stages/input_validation.py | 14 +++--- .../v1/pipelines/stages/latent_preparation.py | 14 +++--- .../v1/pipelines/stages/stepvideo_encoding.py | 14 +++--- .../v1/pipelines/stages/text_encoding.py | 16 +++---- .../pipelines/stages/timestep_preparation.py | 14 +++--- .../pipelines/stepvideo/stepvideo_pipeline.py | 26 +++++------ .../v1/pipelines/wan/wan_dmd_pipeline.py | 16 ++++--- .../v1/pipelines/wan/wan_i2v_pipeline.py | 20 +++++---- fastvideo/v1/pipelines/wan/wan_pipeline.py | 18 ++++---- fastvideo/v1/platforms/__init__.py | 16 +++---- fastvideo/v1/platforms/cpu.py | 6 +-- fastvideo/v1/platforms/cuda.py | 34 +++++++------- fastvideo/v1/platforms/interface.py | 4 +- fastvideo/v1/platforms/mps.py | 12 ++--- fastvideo/v1/tests/conftest.py | 2 +- .../v1/tests/encoders/test_clip_encoder.py | 16 +++---- .../v1/tests/encoders/test_llama_encoder.py | 16 +++---- .../v1/tests/encoders/test_t5_encoder.py | 14 +++--- .../lora/test_lora_inference_similarity.py | 12 ++--- .../test_e2e_i2v_overfit_single_sample.py | 2 +- .../nightly/test_e2e_overfit_single_sample.py | 2 +- .../v1/tests/old_tests/test_t5_encoder.py | 6 +-- fastvideo/v1/tests/old_tests/test_wan_vae.py | 4 +- fastvideo/v1/tests/old_tests/tp_example.py | 6 +-- .../tests/ssim/test_inference_similarity.py | 6 +-- .../training/VSA/test_training_loss_VSA.py | 6 +-- .../training/Vanilla/test_training_loss.py | 10 ++--- .../tests/transformers/test_hunyuanvideo.py | 12 ++--- .../transformers/test_hunyuanvideo_load.py | 18 ++++---- .../v1/tests/transformers/test_wanvideo.py | 16 +++---- fastvideo/v1/tests/utils.py | 2 +- fastvideo/v1/tests/vaes/test_hunyuan_vae.py | 14 +++--- fastvideo/v1/tests/vaes/test_wan_vae.py | 12 ++--- fastvideo/v1/training/training_pipeline.py | 34 +++++++------- fastvideo/v1/training/training_utils.py | 16 +++---- .../v1/training/wan_i2v_training_pipeline.py | 25 +++++------ .../v1/training/wan_training_pipeline.py | 16 +++---- fastvideo/v1/utils.py | 12 ++--- fastvideo/v1/worker/executor.py | 8 ++-- fastvideo/v1/worker/gpu_worker.py | 16 +++---- fastvideo/v1/worker/multiproc_executor.py | 10 ++--- fastvideo/v1/workflow/workflow_base.py | 4 +- pyproject.toml | 2 +- 171 files changed, 860 insertions(+), 883 deletions(-) diff --git a/docs/source/api/summary.md b/docs/source/api/summary.md index a453b6bd2..4b5cdd89d 100644 --- a/docs/source/api/summary.md +++ b/docs/source/api/summary.md @@ -9,11 +9,11 @@ ## Initialization Configuration ```{autodoc2-summary} - fastvideo.v1.configs.pipelines.PipelineConfig + fastvideo.configs.pipelines.PipelineConfig ``` ## Sampling Configuration ```{autodoc2-summary} - fastvideo.v1.configs.sample.SamplingParam + fastvideo.configs.sample.SamplingParam ``` diff --git a/docs/source/getting_started/v1_api.md b/docs/source/getting_started/v1_api.md index cba870c25..2fe3695c0 100644 --- a/docs/source/getting_started/v1_api.md +++ b/docs/source/getting_started/v1_api.md @@ -10,20 +10,20 @@ This class will be the primary Python API for generating videos and images. fastvideo.VideoGenerator ``` -`````{py:class} VideoGenerator(fastvideo_args: fastvideo.v1.fastvideo_args.FastVideoArgs, executor_class: type[fastvideo.v1.worker.executor.Executor], log_stats: bool) -:canonical: fastvideo.v1.entrypoints.video_generator.VideoGenerator +`````{py:class} VideoGenerator(fastvideo_args: fastvideo.fastvideo_args.FastVideoArgs, executor_class: type[fastvideo.worker.executor.Executor], log_stats: bool) +:canonical: fastvideo.entrypoints.video_generator.VideoGenerator -```{autodoc2-docstring} fastvideo.v1.entrypoints.video_generator.VideoGenerator +```{autodoc2-docstring} fastvideo.entrypoints.video_generator.VideoGenerator :parser: docs.source.autodoc2_docstring_parser ``` `VideoGenerator.from_pretrained()` should be the primary way of creating a new video generator. -````{py:method} from_pretrained(model_path: str, device: typing.Optional[str] = None, torch_dtype: typing.Optional[torch.dtype] = None, pipeline_config: typing.Optional[typing.Union[str | fastvideo.v1.configs.pipelines.PipelineConfig]] = None, **kwargs) -> fastvideo.v1.entrypoints.video_generator.VideoGenerator -:canonical: fastvideo.v1.entrypoints.video_generator.VideoGenerator.from_pretrained +````{py:method} from_pretrained(model_path: str, device: typing.Optional[str] = None, torch_dtype: typing.Optional[torch.dtype] = None, pipeline_config: typing.Optional[typing.Union[str | fastvideo.configs.pipelines.PipelineConfig]] = None, **kwargs) -> fastvideo.entrypoints.video_generator.VideoGenerator +:canonical: fastvideo.entrypoints.video_generator.VideoGenerator.from_pretrained :classmethod: -```{autodoc2-docstring} fastvideo.v1.entrypoints.video_generator.VideoGenerator.from_pretrained +```{autodoc2-docstring} fastvideo.entrypoints.video_generator.VideoGenerator.from_pretrained :parser: docs.source.autodoc2_docstring_parser ``` @@ -38,25 +38,25 @@ The follow two classes `PipelineConfig` and `SamplingParam` are used to configur ``` `````{py:class} PipelineConfig -:canonical: fastvideo.v1.configs.pipelines.base.PipelineConfig +:canonical: fastvideo.configs.pipelines.base.PipelineConfig -```{autodoc2-docstring} fastvideo.v1.configs.pipelines.base.PipelineConfig +```{autodoc2-docstring} fastvideo.configs.pipelines.base.PipelineConfig :parser: docs.source.autodoc2_docstring_parser ``` -````{py:method} from_pretrained(model_path: str) -> fastvideo.v1.configs.pipelines.base.PipelineConfig -:canonical: fastvideo.v1.configs.pipelines.base.PipelineConfig.from_pretrained +````{py:method} from_pretrained(model_path: str) -> fastvideo.configs.pipelines.base.PipelineConfig +:canonical: fastvideo.configs.pipelines.base.PipelineConfig.from_pretrained :classmethod: -```{autodoc2-docstring} fastvideo.v1.configs.pipelines.base.PipelineConfig.from_pretrained +```{autodoc2-docstring} fastvideo.configs.pipelines.base.PipelineConfig.from_pretrained :parser: docs.source.autodoc2_docstring_parser ``` ````{py:method} dump_to_json(file_path: str) -:canonical: fastvideo.v1.configs.pipelines.base.PipelineConfig.dump_to_json +:canonical: fastvideo.configs.pipelines.base.PipelineConfig.dump_to_json -```{autodoc2-docstring} fastvideo.v1.configs.pipelines.base.PipelineConfig.dump_to_json +```{autodoc2-docstring} fastvideo.configs.pipelines.base.PipelineConfig.dump_to_json :parser: docs.source.autodoc2_docstring_parser ``` @@ -68,16 +68,16 @@ The follow two classes `PipelineConfig` and `SamplingParam` are used to configur ``` `````{py:class} SamplingParam -:canonical: fastvideo.v1.configs.sample.base.SamplingParam +:canonical: fastvideo.configs.sample.base.SamplingParam -```{autodoc2-docstring} fastvideo.v1.configs.sample.base.SamplingParam +```{autodoc2-docstring} fastvideo.configs.sample.base.SamplingParam :parser: docs.source.autodoc2_docstring_parser ``` -````{py:method} from_pretrained(model_path: str) -> fastvideo.v1.configs.sample.base.SamplingParam -:canonical: fastvideo.v1.configs.sample.base.SamplingParam.from_pretrained +````{py:method} from_pretrained(model_path: str) -> fastvideo.configs.sample.base.SamplingParam +:canonical: fastvideo.configs.sample.base.SamplingParam.from_pretrained :classmethod: -```{autodoc2-docstring} fastvideo.v1.configs.sample.base.SamplingParam.from_pretrained +```{autodoc2-docstring} fastvideo.configs.sample.base.SamplingParam.from_pretrained :parser: docs.source.autodoc2_docstring_parser ``` diff --git a/examples/inference/basic/basic.py b/examples/inference/basic/basic.py index c97f59e56..c21ccfe8b 100644 --- a/examples/inference/basic/basic.py +++ b/examples/inference/basic/basic.py @@ -1,6 +1,6 @@ from fastvideo import VideoGenerator -# from fastvideo.v1.configs.sample import SamplingParam +# from fastvideo.configs.sample import SamplingParam OUTPUT_PATH = "video_samples" def main(): diff --git a/examples/inference/basic/basic_dmd.py b/examples/inference/basic/basic_dmd.py index 7724a1cf6..3579d592b 100644 --- a/examples/inference/basic/basic_dmd.py +++ b/examples/inference/basic/basic_dmd.py @@ -2,7 +2,7 @@ import os import time from fastvideo import VideoGenerator -from fastvideo.v1.configs.sample import SamplingParam +from fastvideo.configs.sample import SamplingParam OUTPUT_PATH = "video_samples_dmd2" def main(): diff --git a/examples/inference/basic/basic_mps.py b/examples/inference/basic/basic_mps.py index 44a38c23b..6a819969b 100644 --- a/examples/inference/basic/basic_mps.py +++ b/examples/inference/basic/basic_mps.py @@ -1,5 +1,5 @@ from fastvideo import VideoGenerator, PipelineConfig -from fastvideo.v1.configs.sample import SamplingParam +from fastvideo.configs.sample import SamplingParam def main(): config = PipelineConfig.from_pretrained("Wan-AI/Wan2.1-T2V-1.3B-Diffusers") diff --git a/examples/inference/basic/default_args.py b/examples/inference/basic/default_args.py index c4869b2f3..00d877255 100644 --- a/examples/inference/basic/default_args.py +++ b/examples/inference/basic/default_args.py @@ -1,5 +1,5 @@ from fastvideo import VideoGenerator -from fastvideo.v1.configs.pipelines.base import PipelineConfig +from fastvideo.configs.pipelines.base import PipelineConfig def main(): diff --git a/examples/inference/basic/test.py b/examples/inference/basic/test.py index 31dcc3662..f8f55e326 100644 --- a/examples/inference/basic/test.py +++ b/examples/inference/basic/test.py @@ -1,6 +1,6 @@ from fastvideo import VideoGenerator, PipelineConfig, SamplingParam -# from fastvideo.v1.configs.sample import SamplingParam +# from fastvideo.configs.sample import SamplingParam OUTPUT_PATH = "video_samples_fp16" def main(): diff --git a/examples/inference/gradio/gradio_demo.py b/examples/inference/gradio/gradio_demo.py index 68fc790f5..06340bae6 100644 --- a/examples/inference/gradio/gradio_demo.py +++ b/examples/inference/gradio/gradio_demo.py @@ -6,7 +6,7 @@ import gradio as gr import torch from fastvideo import VideoGenerator -from fastvideo.v1.configs.sample.base import SamplingParam +from fastvideo.configs.sample.base import SamplingParam if __name__ == "__main__": parser = argparse.ArgumentParser(description="FastVideo Gradio Demo") diff --git a/examples/inference/lora/wan_lora_inference.py b/examples/inference/lora/wan_lora_inference.py index 11c27ebef..74fa73328 100644 --- a/examples/inference/lora/wan_lora_inference.py +++ b/examples/inference/lora/wan_lora_inference.py @@ -1,5 +1,5 @@ from fastvideo import VideoGenerator -from fastvideo.v1.configs.sample import SamplingParam +from fastvideo.configs.sample import SamplingParam OUTPUT_PATH = "./lora_out" def main(): diff --git a/examples/inference/lora/wan_lora_inference_from_ckpt.py b/examples/inference/lora/wan_lora_inference_from_ckpt.py index 53e2cfc52..2972d11da 100644 --- a/examples/inference/lora/wan_lora_inference_from_ckpt.py +++ b/examples/inference/lora/wan_lora_inference_from_ckpt.py @@ -2,7 +2,7 @@ Inference using a LoRA checkpoint from FastVideo trainer. """ from fastvideo import VideoGenerator -from fastvideo.v1.configs.sample import SamplingParam +from fastvideo.configs.sample import SamplingParam OUTPUT_PATH = "./lora_out" def main(): diff --git a/fastvideo/__init__.py b/fastvideo/__init__.py index bbf0c877e..44c7938e9 100644 --- a/fastvideo/__init__.py +++ b/fastvideo/__init__.py @@ -1,6 +1,6 @@ -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.configs.sample import SamplingParam -from fastvideo.v1.entrypoints.video_generator import VideoGenerator +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.configs.sample import SamplingParam +from fastvideo.entrypoints.video_generator import VideoGenerator from fastvideo.version import __version__ __all__ = ["VideoGenerator", "PipelineConfig", "SamplingParam", "__version__"] diff --git a/fastvideo/utils/collect_env.py b/fastvideo/utils/collect_env.py index a0b4dc91f..1458a8468 100644 --- a/fastvideo/utils/collect_env.py +++ b/fastvideo/utils/collect_env.py @@ -16,7 +16,7 @@ import sys # Run it with `python collect_env.py` or `python -m torch.utils.collect_env` from collections import namedtuple -from fastvideo.v1.envs import environment_variables +from fastvideo.envs import environment_variables try: import torch diff --git a/fastvideo/v1/STA_configuration.py b/fastvideo/v1/STA_configuration.py index 412b7e055..9111dcab3 100644 --- a/fastvideo/v1/STA_configuration.py +++ b/fastvideo/v1/STA_configuration.py @@ -6,7 +6,7 @@ from typing import Any import numpy as np -from fastvideo.v1.utils import dict_to_3d_list +from fastvideo.utils import dict_to_3d_list def configure_sta(mode: str = 'STA_searching', diff --git a/fastvideo/v1/attention/__init__.py b/fastvideo/v1/attention/__init__.py index 6c703bd22..245a1103b 100644 --- a/fastvideo/v1/attention/__init__.py +++ b/fastvideo/v1/attention/__init__.py @@ -1,12 +1,11 @@ # SPDX-License-Identifier: Apache-2.0 -from fastvideo.v1.attention.backends.abstract import (AttentionBackend, - AttentionMetadata, - AttentionMetadataBuilder) -from fastvideo.v1.attention.layer import (DistributedAttention, - DistributedAttention_VSA, - LocalAttention) -from fastvideo.v1.attention.selector import get_attn_backend +from fastvideo.attention.backends.abstract import (AttentionBackend, + AttentionMetadata, + AttentionMetadataBuilder) +from fastvideo.attention.layer import (DistributedAttention, + DistributedAttention_VSA, LocalAttention) +from fastvideo.attention.selector import get_attn_backend __all__ = [ "DistributedAttention", diff --git a/fastvideo/v1/attention/backends/abstract.py b/fastvideo/v1/attention/backends/abstract.py index 9af8c397c..f015ea82e 100644 --- a/fastvideo/v1/attention/backends/abstract.py +++ b/fastvideo/v1/attention/backends/abstract.py @@ -6,8 +6,8 @@ from dataclasses import dataclass, fields from typing import TYPE_CHECKING, Any, Generic, Protocol, TypeVar if TYPE_CHECKING: - from fastvideo.v1.fastvideo_args import FastVideoArgs - from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch + from fastvideo.fastvideo_args import FastVideoArgs + from fastvideo.pipelines.pipeline_batch_info import ForwardBatch import torch diff --git a/fastvideo/v1/attention/backends/flash_attn.py b/fastvideo/v1/attention/backends/flash_attn.py index 2e3296145..f33afd8ed 100644 --- a/fastvideo/v1/attention/backends/flash_attn.py +++ b/fastvideo/v1/attention/backends/flash_attn.py @@ -12,11 +12,11 @@ try: except ImportError: flash_attn_func = flash_attn_2_func -from fastvideo.v1.attention.backends.abstract import (AttentionBackend, - AttentionImpl, - AttentionMetadata, - AttentionMetadataBuilder) -from fastvideo.v1.logger import init_logger +from fastvideo.attention.backends.abstract import (AttentionBackend, + AttentionImpl, + AttentionMetadata, + AttentionMetadataBuilder) +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/attention/backends/sage_attn.py b/fastvideo/v1/attention/backends/sage_attn.py index 08e723cfd..5db61f6ac 100644 --- a/fastvideo/v1/attention/backends/sage_attn.py +++ b/fastvideo/v1/attention/backends/sage_attn.py @@ -3,11 +3,9 @@ import torch from sageattention import sageattn -from fastvideo.v1.attention.backends.abstract import ( - AttentionBackend) # FlashAttentionMetadata, -from fastvideo.v1.attention.backends.abstract import (AttentionImpl, - AttentionMetadata) -from fastvideo.v1.logger import init_logger +from fastvideo.attention.backends.abstract import ( # FlashAttentionMetadata, + AttentionBackend, AttentionImpl, AttentionMetadata) +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/attention/backends/sdpa.py b/fastvideo/v1/attention/backends/sdpa.py index fabfda788..782ffd9fc 100644 --- a/fastvideo/v1/attention/backends/sdpa.py +++ b/fastvideo/v1/attention/backends/sdpa.py @@ -2,11 +2,9 @@ import torch -from fastvideo.v1.attention.backends.abstract import ( - AttentionBackend) # FlashAttentionMetadata, -from fastvideo.v1.attention.backends.abstract import (AttentionImpl, - AttentionMetadata) -from fastvideo.v1.logger import init_logger +from fastvideo.attention.backends.abstract import ( # FlashAttentionMetadata, + AttentionBackend, AttentionImpl, AttentionMetadata) +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/attention/backends/sliding_tile_attn.py b/fastvideo/v1/attention/backends/sliding_tile_attn.py index 72cbe5e72..1477de30c 100644 --- a/fastvideo/v1/attention/backends/sliding_tile_attn.py +++ b/fastvideo/v1/attention/backends/sliding_tile_attn.py @@ -7,17 +7,17 @@ import torch from einops import rearrange from st_attn import sliding_tile_attention -import fastvideo.v1.envs as envs -from fastvideo.v1.attention.backends.abstract import (AttentionBackend, - AttentionImpl, - AttentionMetadata, - AttentionMetadataBuilder) -from fastvideo.v1.distributed import get_sp_group -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import ForwardContext, get_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.utils import dict_to_3d_list +import fastvideo.envs as envs +from fastvideo.attention.backends.abstract import (AttentionBackend, + AttentionImpl, + AttentionMetadata, + AttentionMetadataBuilder) +from fastvideo.distributed import get_sp_group +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import ForwardContext, get_forward_context +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.utils import dict_to_3d_list logger = init_logger(__name__) diff --git a/fastvideo/v1/attention/backends/video_sparse_attn.py b/fastvideo/v1/attention/backends/video_sparse_attn.py index f0e5d5ea8..acb516d79 100644 --- a/fastvideo/v1/attention/backends/video_sparse_attn.py +++ b/fastvideo/v1/attention/backends/video_sparse_attn.py @@ -10,14 +10,14 @@ try: except ImportError: video_sparse_attn = None -from fastvideo.v1.attention.backends.abstract import (AttentionBackend, - AttentionImpl, - AttentionMetadata, - AttentionMetadataBuilder) -from fastvideo.v1.distributed import get_sp_group -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.attention.backends.abstract import (AttentionBackend, + AttentionImpl, + AttentionMetadata, + AttentionMetadataBuilder) +from fastvideo.distributed import get_sp_group +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch logger = init_logger(__name__) diff --git a/fastvideo/v1/attention/layer.py b/fastvideo/v1/attention/layer.py index 130b6c382..8161d83f2 100644 --- a/fastvideo/v1/attention/layer.py +++ b/fastvideo/v1/attention/layer.py @@ -3,15 +3,14 @@ import torch import torch.nn as nn -from fastvideo.v1.attention.selector import (backend_name_to_enum, - get_attn_backend) -from fastvideo.v1.distributed.communication_op import ( +from fastvideo.attention.selector import backend_name_to_enum, get_attn_backend +from fastvideo.distributed.communication_op import ( sequence_model_parallel_all_gather, sequence_model_parallel_all_to_all_4D) -from fastvideo.v1.distributed.parallel_state import (get_sp_parallel_rank, - get_sp_world_size) -from fastvideo.v1.forward_context import ForwardContext, get_forward_context -from fastvideo.v1.platforms import AttentionBackendEnum -from fastvideo.v1.utils import get_compute_dtype +from fastvideo.distributed.parallel_state import (get_sp_parallel_rank, + get_sp_world_size) +from fastvideo.forward_context import ForwardContext, get_forward_context +from fastvideo.platforms import AttentionBackendEnum +from fastvideo.utils import get_compute_dtype class DistributedAttention(nn.Module): diff --git a/fastvideo/v1/attention/selector.py b/fastvideo/v1/attention/selector.py index 2b013822c..c93bdcac6 100644 --- a/fastvideo/v1/attention/selector.py +++ b/fastvideo/v1/attention/selector.py @@ -9,11 +9,11 @@ from typing import cast import torch -import fastvideo.v1.envs as envs -from fastvideo.v1.attention.backends.abstract import AttentionBackend -from fastvideo.v1.logger import init_logger -from fastvideo.v1.platforms import AttentionBackendEnum, current_platform -from fastvideo.v1.utils import STR_BACKEND_ENV_VAR, resolve_obj_by_qualname +import fastvideo.envs as envs +from fastvideo.attention.backends.abstract import AttentionBackend +from fastvideo.logger import init_logger +from fastvideo.platforms import AttentionBackendEnum, current_platform +from fastvideo.utils import STR_BACKEND_ENV_VAR, resolve_obj_by_qualname logger = init_logger(__name__) diff --git a/fastvideo/v1/configs/models/__init__.py b/fastvideo/v1/configs/models/__init__.py index c6ad328e9..286c6b9dd 100644 --- a/fastvideo/v1/configs/models/__init__.py +++ b/fastvideo/v1/configs/models/__init__.py @@ -1,6 +1,6 @@ -from fastvideo.v1.configs.models.base import ModelConfig -from fastvideo.v1.configs.models.dits.base import DiTConfig -from fastvideo.v1.configs.models.encoders.base import EncoderConfig -from fastvideo.v1.configs.models.vaes.base import VAEConfig +from fastvideo.configs.models.base import ModelConfig +from fastvideo.configs.models.dits.base import DiTConfig +from fastvideo.configs.models.encoders.base import EncoderConfig +from fastvideo.configs.models.vaes.base import VAEConfig __all__ = ["ModelConfig", "VAEConfig", "DiTConfig", "EncoderConfig"] diff --git a/fastvideo/v1/configs/models/base.py b/fastvideo/v1/configs/models/base.py index 094367256..39d00c178 100644 --- a/fastvideo/v1/configs/models/base.py +++ b/fastvideo/v1/configs/models/base.py @@ -2,7 +2,7 @@ from dataclasses import dataclass, field, fields from typing import Any -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/configs/models/dits/__init__.py b/fastvideo/v1/configs/models/dits/__init__.py index 1377cb033..72271a525 100644 --- a/fastvideo/v1/configs/models/dits/__init__.py +++ b/fastvideo/v1/configs/models/dits/__init__.py @@ -1,5 +1,5 @@ -from fastvideo.v1.configs.models.dits.hunyuanvideo import HunyuanVideoConfig -from fastvideo.v1.configs.models.dits.stepvideo import StepVideoConfig -from fastvideo.v1.configs.models.dits.wanvideo import WanVideoConfig +from fastvideo.configs.models.dits.hunyuanvideo import HunyuanVideoConfig +from fastvideo.configs.models.dits.stepvideo import StepVideoConfig +from fastvideo.configs.models.dits.wanvideo import WanVideoConfig __all__ = ["HunyuanVideoConfig", "WanVideoConfig", "StepVideoConfig"] diff --git a/fastvideo/v1/configs/models/dits/base.py b/fastvideo/v1/configs/models/dits/base.py index f2484e9dc..6c103c683 100644 --- a/fastvideo/v1/configs/models/dits/base.py +++ b/fastvideo/v1/configs/models/dits/base.py @@ -2,9 +2,9 @@ from dataclasses import dataclass, field from typing import Any -from fastvideo.v1.configs.models.base import ArchConfig, ModelConfig -from fastvideo.v1.layers.quantization import QuantizationConfig -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.configs.models.base import ArchConfig, ModelConfig +from fastvideo.layers.quantization import QuantizationConfig +from fastvideo.platforms import AttentionBackendEnum @dataclass diff --git a/fastvideo/v1/configs/models/dits/hunyuanvideo.py b/fastvideo/v1/configs/models/dits/hunyuanvideo.py index 66f1a7445..72302ee12 100644 --- a/fastvideo/v1/configs/models/dits/hunyuanvideo.py +++ b/fastvideo/v1/configs/models/dits/hunyuanvideo.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, field import torch -from fastvideo.v1.configs.models.dits.base import DiTArchConfig, DiTConfig +from fastvideo.configs.models.dits.base import DiTArchConfig, DiTConfig def is_double_block(n: str, m) -> bool: diff --git a/fastvideo/v1/configs/models/dits/stepvideo.py b/fastvideo/v1/configs/models/dits/stepvideo.py index 254ac3f01..fb4b0336d 100644 --- a/fastvideo/v1/configs/models/dits/stepvideo.py +++ b/fastvideo/v1/configs/models/dits/stepvideo.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.dits.base import DiTArchConfig, DiTConfig +from fastvideo.configs.models.dits.base import DiTArchConfig, DiTConfig @dataclass diff --git a/fastvideo/v1/configs/models/dits/wanvideo.py b/fastvideo/v1/configs/models/dits/wanvideo.py index 8884f40c3..aeca783ac 100644 --- a/fastvideo/v1/configs/models/dits/wanvideo.py +++ b/fastvideo/v1/configs/models/dits/wanvideo.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.dits.base import DiTArchConfig, DiTConfig +from fastvideo.configs.models.dits.base import DiTArchConfig, DiTConfig def is_blocks(n: str, m) -> bool: diff --git a/fastvideo/v1/configs/models/encoders/__init__.py b/fastvideo/v1/configs/models/encoders/__init__.py index 093eed15f..f783a2106 100644 --- a/fastvideo/v1/configs/models/encoders/__init__.py +++ b/fastvideo/v1/configs/models/encoders/__init__.py @@ -1,11 +1,11 @@ -from fastvideo.v1.configs.models.encoders.base import (BaseEncoderOutput, - EncoderConfig, - ImageEncoderConfig, - TextEncoderConfig) -from fastvideo.v1.configs.models.encoders.clip import (CLIPTextConfig, - CLIPVisionConfig) -from fastvideo.v1.configs.models.encoders.llama import LlamaConfig -from fastvideo.v1.configs.models.encoders.t5 import T5Config +from fastvideo.configs.models.encoders.base import (BaseEncoderOutput, + EncoderConfig, + ImageEncoderConfig, + TextEncoderConfig) +from fastvideo.configs.models.encoders.clip import (CLIPTextConfig, + CLIPVisionConfig) +from fastvideo.configs.models.encoders.llama import LlamaConfig +from fastvideo.configs.models.encoders.t5 import T5Config __all__ = [ "EncoderConfig", "TextEncoderConfig", "ImageEncoderConfig", diff --git a/fastvideo/v1/configs/models/encoders/base.py b/fastvideo/v1/configs/models/encoders/base.py index bdcf5bbb6..33b2b4c1c 100644 --- a/fastvideo/v1/configs/models/encoders/base.py +++ b/fastvideo/v1/configs/models/encoders/base.py @@ -4,9 +4,9 @@ from typing import Any import torch -from fastvideo.v1.configs.models.base import ArchConfig, ModelConfig -from fastvideo.v1.layers.quantization import QuantizationConfig -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.configs.models.base import ArchConfig, ModelConfig +from fastvideo.layers.quantization import QuantizationConfig +from fastvideo.platforms import AttentionBackendEnum @dataclass diff --git a/fastvideo/v1/configs/models/encoders/clip.py b/fastvideo/v1/configs/models/encoders/clip.py index e190849e2..a7d313a86 100644 --- a/fastvideo/v1/configs/models/encoders/clip.py +++ b/fastvideo/v1/configs/models/encoders/clip.py @@ -1,10 +1,10 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.encoders.base import (ImageEncoderArchConfig, - ImageEncoderConfig, - TextEncoderArchConfig, - TextEncoderConfig) +from fastvideo.configs.models.encoders.base import (ImageEncoderArchConfig, + ImageEncoderConfig, + TextEncoderArchConfig, + TextEncoderConfig) def _is_transformer_layer(n: str, m) -> bool: diff --git a/fastvideo/v1/configs/models/encoders/llama.py b/fastvideo/v1/configs/models/encoders/llama.py index 680d749cf..53fc21e74 100644 --- a/fastvideo/v1/configs/models/encoders/llama.py +++ b/fastvideo/v1/configs/models/encoders/llama.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.encoders.base import (TextEncoderArchConfig, - TextEncoderConfig) +from fastvideo.configs.models.encoders.base import (TextEncoderArchConfig, + TextEncoderConfig) def _is_transformer_layer(n: str, m) -> bool: diff --git a/fastvideo/v1/configs/models/encoders/t5.py b/fastvideo/v1/configs/models/encoders/t5.py index 2596169c4..70649551b 100644 --- a/fastvideo/v1/configs/models/encoders/t5.py +++ b/fastvideo/v1/configs/models/encoders/t5.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.encoders.base import (TextEncoderArchConfig, - TextEncoderConfig) +from fastvideo.configs.models.encoders.base import (TextEncoderArchConfig, + TextEncoderConfig) def _is_transformer_layer(n: str, m) -> bool: diff --git a/fastvideo/v1/configs/models/vaes/__init__.py b/fastvideo/v1/configs/models/vaes/__init__.py index ef5b3822c..700c8de1b 100644 --- a/fastvideo/v1/configs/models/vaes/__init__.py +++ b/fastvideo/v1/configs/models/vaes/__init__.py @@ -1,6 +1,6 @@ -from fastvideo.v1.configs.models.vaes.hunyuanvae import HunyuanVAEConfig -from fastvideo.v1.configs.models.vaes.stepvideovae import StepVideoVAEConfig -from fastvideo.v1.configs.models.vaes.wanvae import WanVAEConfig +from fastvideo.configs.models.vaes.hunyuanvae import HunyuanVAEConfig +from fastvideo.configs.models.vaes.stepvideovae import StepVideoVAEConfig +from fastvideo.configs.models.vaes.wanvae import WanVAEConfig __all__ = [ "HunyuanVAEConfig", diff --git a/fastvideo/v1/configs/models/vaes/base.py b/fastvideo/v1/configs/models/vaes/base.py index e2cb517f8..7bff6d823 100644 --- a/fastvideo/v1/configs/models/vaes/base.py +++ b/fastvideo/v1/configs/models/vaes/base.py @@ -6,8 +6,8 @@ from typing import Any import torch -from fastvideo.v1.configs.models.base import ArchConfig, ModelConfig -from fastvideo.v1.utils import StoreBoolean +from fastvideo.configs.models.base import ArchConfig, ModelConfig +from fastvideo.utils import StoreBoolean @dataclass diff --git a/fastvideo/v1/configs/models/vaes/hunyuanvae.py b/fastvideo/v1/configs/models/vaes/hunyuanvae.py index d02879921..2506216af 100644 --- a/fastvideo/v1/configs/models/vaes/hunyuanvae.py +++ b/fastvideo/v1/configs/models/vaes/hunyuanvae.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.vaes.base import VAEArchConfig, VAEConfig +from fastvideo.configs.models.vaes.base import VAEArchConfig, VAEConfig @dataclass diff --git a/fastvideo/v1/configs/models/vaes/stepvideovae.py b/fastvideo/v1/configs/models/vaes/stepvideovae.py index 34fc1894a..b1cf02cec 100644 --- a/fastvideo/v1/configs/models/vaes/stepvideovae.py +++ b/fastvideo/v1/configs/models/vaes/stepvideovae.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models.vaes.base import VAEArchConfig, VAEConfig +from fastvideo.configs.models.vaes.base import VAEArchConfig, VAEConfig @dataclass diff --git a/fastvideo/v1/configs/models/vaes/wanvae.py b/fastvideo/v1/configs/models/vaes/wanvae.py index c8496baa6..00b9f2a38 100644 --- a/fastvideo/v1/configs/models/vaes/wanvae.py +++ b/fastvideo/v1/configs/models/vaes/wanvae.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, field import torch -from fastvideo.v1.configs.models.vaes.base import VAEArchConfig, VAEConfig +from fastvideo.configs.models.vaes.base import VAEArchConfig, VAEConfig @dataclass diff --git a/fastvideo/v1/configs/pipelines/__init__.py b/fastvideo/v1/configs/pipelines/__init__.py index 4d693daa4..82721919a 100644 --- a/fastvideo/v1/configs/pipelines/__init__.py +++ b/fastvideo/v1/configs/pipelines/__init__.py @@ -1,14 +1,11 @@ -from fastvideo.v1.configs.pipelines.base import (PipelineConfig, - SlidingTileAttnConfig) -from fastvideo.v1.configs.pipelines.hunyuan import (FastHunyuanConfig, - HunyuanConfig) -from fastvideo.v1.configs.pipelines.registry import ( +from fastvideo.configs.pipelines.base import (PipelineConfig, + SlidingTileAttnConfig) +from fastvideo.configs.pipelines.hunyuan import FastHunyuanConfig, HunyuanConfig +from fastvideo.configs.pipelines.registry import ( get_pipeline_config_cls_from_name) -from fastvideo.v1.configs.pipelines.stepvideo import StepVideoT2VConfig -from fastvideo.v1.configs.pipelines.wan import (WanI2V480PConfig, - WanI2V720PConfig, - WanT2V480PConfig, - WanT2V720PConfig) +from fastvideo.configs.pipelines.stepvideo import StepVideoT2VConfig +from fastvideo.configs.pipelines.wan import (WanI2V480PConfig, WanI2V720PConfig, + WanT2V480PConfig, WanT2V720PConfig) __all__ = [ "HunyuanConfig", "FastHunyuanConfig", "PipelineConfig", diff --git a/fastvideo/v1/configs/pipelines/base.py b/fastvideo/v1/configs/pipelines/base.py index 92aa7aefc..7f12e97f5 100644 --- a/fastvideo/v1/configs/pipelines/base.py +++ b/fastvideo/v1/configs/pipelines/base.py @@ -7,13 +7,12 @@ from typing import Any, cast import torch -from fastvideo.v1.configs.models import (DiTConfig, EncoderConfig, ModelConfig, - VAEConfig) -from fastvideo.v1.configs.models.encoders import BaseEncoderOutput -from fastvideo.v1.configs.utils import update_config_from_args -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import (FlexibleArgumentParser, StoreBoolean, - shallow_asdict) +from fastvideo.configs.models import (DiTConfig, EncoderConfig, ModelConfig, + VAEConfig) +from fastvideo.configs.models.encoders import BaseEncoderOutput +from fastvideo.configs.utils import update_config_from_args +from fastvideo.logger import init_logger +from fastvideo.utils import FlexibleArgumentParser, StoreBoolean, shallow_asdict logger = init_logger(__name__) @@ -213,11 +212,11 @@ class PipelineConfig: ) # Add VAE configuration arguments - from fastvideo.v1.configs.models.vaes.base import VAEConfig + from fastvideo.configs.models.vaes.base import VAEConfig VAEConfig.add_cli_args(parser, prefix=f"{prefix_with_dot}vae-config") # Add DiT configuration arguments - from fastvideo.v1.configs.models.dits.base import DiTConfig + from fastvideo.configs.models.dits.base import DiTConfig DiTConfig.add_cli_args(parser, prefix=f"{prefix_with_dot}dit-config") return parser @@ -241,7 +240,7 @@ class PipelineConfig: """ use the pipeline class setting from model_path to match the pipeline config """ - from fastvideo.v1.configs.pipelines.registry import ( + from fastvideo.configs.pipelines.registry import ( get_pipeline_config_cls_from_name) pipeline_config_cls = get_pipeline_config_cls_from_name(model_path) @@ -256,7 +255,7 @@ class PipelineConfig: kwargs: dictionary of kwargs config_cli_prefix: prefix of CLI arguments for this PipelineConfig instance """ - from fastvideo.v1.configs.pipelines.registry import ( + from fastvideo.configs.pipelines.registry import ( get_pipeline_config_cls_from_name) prefix_with_dot = f"{config_cli_prefix}." if (config_cli_prefix.strip() diff --git a/fastvideo/v1/configs/pipelines/hunyuan.py b/fastvideo/v1/configs/pipelines/hunyuan.py index bac7c445a..4a6c41a74 100644 --- a/fastvideo/v1/configs/pipelines/hunyuan.py +++ b/fastvideo/v1/configs/pipelines/hunyuan.py @@ -5,12 +5,12 @@ from typing import TypedDict import torch -from fastvideo.v1.configs.models import DiTConfig, EncoderConfig, VAEConfig -from fastvideo.v1.configs.models.dits import HunyuanVideoConfig -from fastvideo.v1.configs.models.encoders import (BaseEncoderOutput, - CLIPTextConfig, LlamaConfig) -from fastvideo.v1.configs.models.vaes import HunyuanVAEConfig -from fastvideo.v1.configs.pipelines.base import PipelineConfig +from fastvideo.configs.models import DiTConfig, EncoderConfig, VAEConfig +from fastvideo.configs.models.dits import HunyuanVideoConfig +from fastvideo.configs.models.encoders import (BaseEncoderOutput, + CLIPTextConfig, LlamaConfig) +from fastvideo.configs.models.vaes import HunyuanVAEConfig +from fastvideo.configs.pipelines.base import PipelineConfig PROMPT_TEMPLATE_ENCODE_VIDEO = ( "<|start_header_id|>system<|end_header_id|>\n\nDescribe the video by detailing the following aspects: " diff --git a/fastvideo/v1/configs/pipelines/registry.py b/fastvideo/v1/configs/pipelines/registry.py index 801d34c61..e2d4bbab3 100644 --- a/fastvideo/v1/configs/pipelines/registry.py +++ b/fastvideo/v1/configs/pipelines/registry.py @@ -4,18 +4,15 @@ import os from collections.abc import Callable -from fastvideo.v1.configs.pipelines.base import PipelineConfig -from fastvideo.v1.configs.pipelines.hunyuan import (FastHunyuanConfig, - HunyuanConfig) -from fastvideo.v1.configs.pipelines.stepvideo import StepVideoT2VConfig -from fastvideo.v1.configs.pipelines.wan import (FastWanT2V480PConfig, - WanI2V480PConfig, - WanI2V720PConfig, - WanT2V480PConfig, - WanT2V720PConfig) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import (maybe_download_model_index, - verify_model_config_and_directory) +from fastvideo.configs.pipelines.base import PipelineConfig +from fastvideo.configs.pipelines.hunyuan import FastHunyuanConfig, HunyuanConfig +from fastvideo.configs.pipelines.stepvideo import StepVideoT2VConfig +from fastvideo.configs.pipelines.wan import (FastWanT2V480PConfig, + WanI2V480PConfig, WanI2V720PConfig, + WanT2V480PConfig, WanT2V720PConfig) +from fastvideo.logger import init_logger +from fastvideo.utils import (maybe_download_model_index, + verify_model_config_and_directory) logger = init_logger(__name__) diff --git a/fastvideo/v1/configs/pipelines/stepvideo.py b/fastvideo/v1/configs/pipelines/stepvideo.py index 296ab00f2..919ccb0ee 100644 --- a/fastvideo/v1/configs/pipelines/stepvideo.py +++ b/fastvideo/v1/configs/pipelines/stepvideo.py @@ -1,10 +1,10 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.models import DiTConfig, VAEConfig -from fastvideo.v1.configs.models.dits import StepVideoConfig -from fastvideo.v1.configs.models.vaes import StepVideoVAEConfig -from fastvideo.v1.configs.pipelines.base import PipelineConfig +from fastvideo.configs.models import DiTConfig, VAEConfig +from fastvideo.configs.models.dits import StepVideoConfig +from fastvideo.configs.models.vaes import StepVideoVAEConfig +from fastvideo.configs.pipelines.base import PipelineConfig @dataclass diff --git a/fastvideo/v1/configs/pipelines/wan.py b/fastvideo/v1/configs/pipelines/wan.py index c9d23ac0f..52915ba78 100644 --- a/fastvideo/v1/configs/pipelines/wan.py +++ b/fastvideo/v1/configs/pipelines/wan.py @@ -4,12 +4,12 @@ from dataclasses import dataclass, field import torch -from fastvideo.v1.configs.models import DiTConfig, EncoderConfig, VAEConfig -from fastvideo.v1.configs.models.dits import WanVideoConfig -from fastvideo.v1.configs.models.encoders import (BaseEncoderOutput, - CLIPVisionConfig, T5Config) -from fastvideo.v1.configs.models.vaes import WanVAEConfig -from fastvideo.v1.configs.pipelines.base import PipelineConfig +from fastvideo.configs.models import DiTConfig, EncoderConfig, VAEConfig +from fastvideo.configs.models.dits import WanVideoConfig +from fastvideo.configs.models.encoders import (BaseEncoderOutput, + CLIPVisionConfig, T5Config) +from fastvideo.configs.models.vaes import WanVAEConfig +from fastvideo.configs.pipelines.base import PipelineConfig def t5_postprocess_text(outputs: BaseEncoderOutput) -> torch.tensor: diff --git a/fastvideo/v1/configs/sample/__init__.py b/fastvideo/v1/configs/sample/__init__.py index 241d00d87..92765fb63 100644 --- a/fastvideo/v1/configs/sample/__init__.py +++ b/fastvideo/v1/configs/sample/__init__.py @@ -1,3 +1,3 @@ -from fastvideo.v1.configs.sample.base import SamplingParam +from fastvideo.configs.sample.base import SamplingParam __all__ = ["SamplingParam"] diff --git a/fastvideo/v1/configs/sample/base.py b/fastvideo/v1/configs/sample/base.py index 6e16a1824..934497507 100644 --- a/fastvideo/v1/configs/sample/base.py +++ b/fastvideo/v1/configs/sample/base.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from typing import Any -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) @@ -66,7 +66,7 @@ class SamplingParam: @classmethod def from_pretrained(cls, model_path: str) -> "SamplingParam": - from fastvideo.v1.configs.sample.registry import ( + from fastvideo.configs.sample.registry import ( get_sampling_param_cls_for_name) sampling_cls = get_sampling_param_cls_for_name(model_path) if sampling_cls is not None: diff --git a/fastvideo/v1/configs/sample/hunyuan.py b/fastvideo/v1/configs/sample/hunyuan.py index 5aa406664..49d01fbfe 100644 --- a/fastvideo/v1/configs/sample/hunyuan.py +++ b/fastvideo/v1/configs/sample/hunyuan.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.sample.base import SamplingParam -from fastvideo.v1.configs.sample.teacache import TeaCacheParams +from fastvideo.configs.sample.base import SamplingParam +from fastvideo.configs.sample.teacache import TeaCacheParams @dataclass diff --git a/fastvideo/v1/configs/sample/registry.py b/fastvideo/v1/configs/sample/registry.py index b1df34675..e6c0fe88a 100644 --- a/fastvideo/v1/configs/sample/registry.py +++ b/fastvideo/v1/configs/sample/registry.py @@ -3,17 +3,17 @@ import os from collections.abc import Callable from typing import Any -from fastvideo.v1.configs.sample.hunyuan import (FastHunyuanSamplingParam, - HunyuanSamplingParam) -from fastvideo.v1.configs.sample.stepvideo import StepVideoT2VSamplingParam -from fastvideo.v1.configs.sample.wan import (FastWanT2V480PConfig, - WanI2V_14B_480P_SamplingParam, - WanI2V_14B_720P_SamplingParam, - WanT2V_1_3B_SamplingParam, - WanT2V_14B_SamplingParam) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import (maybe_download_model_index, - verify_model_config_and_directory) +from fastvideo.configs.sample.hunyuan import (FastHunyuanSamplingParam, + HunyuanSamplingParam) +from fastvideo.configs.sample.stepvideo import StepVideoT2VSamplingParam +from fastvideo.configs.sample.wan import (FastWanT2V480PConfig, + WanI2V_14B_480P_SamplingParam, + WanI2V_14B_720P_SamplingParam, + WanT2V_1_3B_SamplingParam, + WanT2V_14B_SamplingParam) +from fastvideo.logger import init_logger +from fastvideo.utils import (maybe_download_model_index, + verify_model_config_and_directory) logger = init_logger(__name__) # Registry maps specific model weights to their config classes diff --git a/fastvideo/v1/configs/sample/stepvideo.py b/fastvideo/v1/configs/sample/stepvideo.py index dc3f4f9c8..ef0fee49a 100644 --- a/fastvideo/v1/configs/sample/stepvideo.py +++ b/fastvideo/v1/configs/sample/stepvideo.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass -from fastvideo.v1.configs.sample.base import SamplingParam +from fastvideo.configs.sample.base import SamplingParam @dataclass diff --git a/fastvideo/v1/configs/sample/teacache.py b/fastvideo/v1/configs/sample/teacache.py index 49ea071cf..060353074 100644 --- a/fastvideo/v1/configs/sample/teacache.py +++ b/fastvideo/v1/configs/sample/teacache.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.sample.base import CacheParams +from fastvideo.configs.sample.base import CacheParams @dataclass diff --git a/fastvideo/v1/configs/sample/wan.py b/fastvideo/v1/configs/sample/wan.py index c3e6b6ed3..7708095ae 100644 --- a/fastvideo/v1/configs/sample/wan.py +++ b/fastvideo/v1/configs/sample/wan.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: Apache-2.0 from dataclasses import dataclass, field -from fastvideo.v1.configs.sample.base import SamplingParam -from fastvideo.v1.configs.sample.teacache import WanTeaCacheParams +from fastvideo.configs.sample.base import SamplingParam +from fastvideo.configs.sample.teacache import WanTeaCacheParams @dataclass diff --git a/fastvideo/v1/dataset/__init__.py b/fastvideo/v1/dataset/__init__.py index fde109c9b..7597a4560 100644 --- a/fastvideo/v1/dataset/__init__.py +++ b/fastvideo/v1/dataset/__init__.py @@ -2,13 +2,12 @@ from torchvision import transforms from torchvision.transforms import Lambda -from fastvideo.v1.dataset.parquet_dataset_map_style import ( +from fastvideo.dataset.parquet_dataset_map_style import ( build_parquet_map_style_dataloader) -from fastvideo.v1.dataset.preprocessing_datasets import ( - VideoCaptionMergedDataset) -from fastvideo.v1.dataset.transform import (CenterCropResizeVideo, Normalize255, - TemporalRandomCrop) -from fastvideo.v1.dataset.validation_dataset import ValidationDataset +from fastvideo.dataset.preprocessing_datasets import VideoCaptionMergedDataset +from fastvideo.dataset.transform import (CenterCropResizeVideo, Normalize255, + TemporalRandomCrop) +from fastvideo.dataset.validation_dataset import ValidationDataset def getdataset(args) -> VideoCaptionMergedDataset: diff --git a/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_iterable_style.py b/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_iterable_style.py index 30f9cb001..893d81459 100644 --- a/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_iterable_style.py +++ b/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_iterable_style.py @@ -7,13 +7,13 @@ import time import torch.distributed as dist import torch.distributed.checkpoint as dist_cp -from fastvideo.v1.dataset.parquet_dataset_iterable_style import ( +from fastvideo.dataset.parquet_dataset_iterable_style import ( build_parquet_iterable_style_dataloader) -from fastvideo.v1.distributed import get_world_rank -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.distributed import get_world_rank +from fastvideo.distributed.parallel_state import ( cleanup_dist_env_and_memory, get_local_torch_device, maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_map_style.py b/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_map_style.py index e664ddcb0..9413099c7 100644 --- a/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_map_style.py +++ b/fastvideo/v1/dataset/benchmarks/benchmark_parquet_dataset_map_style.py @@ -8,14 +8,14 @@ import torch import torch.distributed as dist import torch.distributed.checkpoint as dist_cp -from fastvideo.v1.dataset.dataloader.schema import pyarrow_schema_t2v -from fastvideo.v1.dataset.parquet_dataset_map_style import ( +from fastvideo.dataset.dataloader.schema import pyarrow_schema_t2v +from fastvideo.dataset.parquet_dataset_map_style import ( build_parquet_map_style_dataloader) -from fastvideo.v1.distributed import get_world_rank -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.distributed import get_world_rank +from fastvideo.distributed.parallel_state import ( cleanup_dist_env_and_memory, get_local_torch_device, maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/dataset/parquet_dataset_iterable_style.py b/fastvideo/v1/dataset/parquet_dataset_iterable_style.py index 256224ef6..a4fbf1409 100644 --- a/fastvideo/v1/dataset/parquet_dataset_iterable_style.py +++ b/fastvideo/v1/dataset/parquet_dataset_iterable_style.py @@ -9,10 +9,10 @@ import tqdm from torch.utils.data import IterableDataset, get_worker_info from torchdata.stateful_dataloader import StatefulDataLoader -from fastvideo.v1.dataset.utils import collate_latents_embs_masks -from fastvideo.v1.distributed import (get_sp_world_size, get_world_group, - get_world_rank, get_world_size) -from fastvideo.v1.logger import init_logger +from fastvideo.dataset.utils import collate_latents_embs_masks +from fastvideo.distributed import (get_sp_world_size, get_world_group, + get_world_rank, get_world_size) +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/dataset/parquet_dataset_map_style.py b/fastvideo/v1/dataset/parquet_dataset_map_style.py index 4783a1dd0..d6458e1ea 100644 --- a/fastvideo/v1/dataset/parquet_dataset_map_style.py +++ b/fastvideo/v1/dataset/parquet_dataset_map_style.py @@ -13,10 +13,10 @@ import tqdm from torch.utils.data import Dataset, Sampler from torchdata.stateful_dataloader import StatefulDataLoader -from fastvideo.v1.dataset.utils import collate_rows_from_parquet_schema -from fastvideo.v1.distributed import (get_sp_world_size, get_world_group, - get_world_rank, get_world_size) -from fastvideo.v1.logger import init_logger +from fastvideo.dataset.utils import collate_rows_from_parquet_schema +from fastvideo.distributed import (get_sp_world_size, get_world_group, + get_world_rank, get_world_size) +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/dataset/preprocessing_datasets.py b/fastvideo/v1/dataset/preprocessing_datasets.py index 24660f6eb..e0e17c47d 100644 --- a/fastvideo/v1/dataset/preprocessing_datasets.py +++ b/fastvideo/v1/dataset/preprocessing_datasets.py @@ -16,7 +16,7 @@ from einops import rearrange from PIL import Image from transformers import AutoTokenizer -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/dataset/validation_dataset.py b/fastvideo/v1/dataset/validation_dataset.py index 3795dde29..5ab467d75 100644 --- a/fastvideo/v1/dataset/validation_dataset.py +++ b/fastvideo/v1/dataset/validation_dataset.py @@ -6,10 +6,10 @@ import pathlib import datasets from torch.utils.data import IterableDataset -from fastvideo.v1.distributed import (get_sp_world_size, get_world_rank, - get_world_size) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.vision_utils import load_image, load_video +from fastvideo.distributed import (get_sp_world_size, get_world_rank, + get_world_size) +from fastvideo.logger import init_logger +from fastvideo.models.vision_utils import load_image, load_video logger = init_logger(__name__) diff --git a/fastvideo/v1/distributed/__init__.py b/fastvideo/v1/distributed/__init__.py index 7e96bafa1..f97ffd0dd 100644 --- a/fastvideo/v1/distributed/__init__.py +++ b/fastvideo/v1/distributed/__init__.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: Apache-2.0 -from fastvideo.v1.distributed.communication_op import * -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.distributed.communication_op import * +from fastvideo.distributed.parallel_state import ( cleanup_dist_env_and_memory, get_dp_group, get_dp_rank, get_dp_world_size, get_local_torch_device, get_sp_group, get_sp_parallel_rank, get_sp_world_size, get_tp_group, get_tp_rank, get_tp_world_size, @@ -9,7 +9,7 @@ from fastvideo.v1.distributed.parallel_state import ( init_distributed_environment, initialize_model_parallel, maybe_init_distributed_environment_and_model_parallel, model_parallel_is_initialized) -from fastvideo.v1.distributed.utils import * +from fastvideo.distributed.utils import * __all__ = [ # Initialization diff --git a/fastvideo/v1/distributed/communication_op.py b/fastvideo/v1/distributed/communication_op.py index cc0e901a2..c1cad53c4 100644 --- a/fastvideo/v1/distributed/communication_op.py +++ b/fastvideo/v1/distributed/communication_op.py @@ -4,7 +4,7 @@ import torch import torch.distributed -from fastvideo.v1.distributed.parallel_state import get_sp_group, get_tp_group +from fastvideo.distributed.parallel_state import get_sp_group, get_tp_group def tensor_model_parallel_all_reduce(input_: torch.Tensor) -> torch.Tensor: diff --git a/fastvideo/v1/distributed/device_communicators/cpu_communicator.py b/fastvideo/v1/distributed/device_communicators/cpu_communicator.py index f7a7c8e5f..7ac2a7dd3 100644 --- a/fastvideo/v1/distributed/device_communicators/cpu_communicator.py +++ b/fastvideo/v1/distributed/device_communicators/cpu_communicator.py @@ -6,8 +6,8 @@ import os import torch from torch.distributed import ProcessGroup -from fastvideo.v1.platforms import current_platform -from fastvideo.v1.platforms.interface import CpuArchEnum +from fastvideo.platforms import current_platform +from fastvideo.platforms.interface import CpuArchEnum from .base_device_communicator import DeviceCommunicatorBase diff --git a/fastvideo/v1/distributed/device_communicators/cuda_communicator.py b/fastvideo/v1/distributed/device_communicators/cuda_communicator.py index f78f07964..ef41c1769 100644 --- a/fastvideo/v1/distributed/device_communicators/cuda_communicator.py +++ b/fastvideo/v1/distributed/device_communicators/cuda_communicator.py @@ -4,7 +4,7 @@ import torch from torch.distributed import ProcessGroup -from fastvideo.v1.distributed.device_communicators.base_device_communicator import ( +from fastvideo.distributed.device_communicators.base_device_communicator import ( DeviceCommunicatorBase) @@ -17,7 +17,7 @@ class CudaCommunicator(DeviceCommunicatorBase): unique_name: str = ""): super().__init__(cpu_group, device, device_group, unique_name) - from fastvideo.v1.distributed.device_communicators.pynccl import ( + from fastvideo.distributed.device_communicators.pynccl import ( PyNcclCommunicator) self.pynccl_comm: PyNcclCommunicator | None = None diff --git a/fastvideo/v1/distributed/device_communicators/pynccl.py b/fastvideo/v1/distributed/device_communicators/pynccl.py index fd8c19830..f7a881c2a 100644 --- a/fastvideo/v1/distributed/device_communicators/pynccl.py +++ b/fastvideo/v1/distributed/device_communicators/pynccl.py @@ -6,12 +6,12 @@ import torch import torch.distributed as dist from torch.distributed import ProcessGroup, ReduceOp -from fastvideo.v1.distributed.device_communicators.pynccl_wrapper import ( +from fastvideo.distributed.device_communicators.pynccl_wrapper import ( NCCLLibrary, buffer_type, cudaStream_t, ncclComm_t, ncclDataTypeEnum, ncclRedOpTypeEnum, ncclUniqueId) -from fastvideo.v1.distributed.utils import StatelessProcessGroup -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import current_stream +from fastvideo.distributed.utils import StatelessProcessGroup +from fastvideo.logger import init_logger +from fastvideo.utils import current_stream logger = init_logger(__name__) diff --git a/fastvideo/v1/distributed/device_communicators/pynccl_wrapper.py b/fastvideo/v1/distributed/device_communicators/pynccl_wrapper.py index 3f81a5e73..516b7d311 100644 --- a/fastvideo/v1/distributed/device_communicators/pynccl_wrapper.py +++ b/fastvideo/v1/distributed/device_communicators/pynccl_wrapper.py @@ -32,8 +32,8 @@ from typing import Any import torch from torch.distributed import ReduceOp -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import find_nccl_library +from fastvideo.logger import init_logger +from fastvideo.utils import find_nccl_library logger = init_logger(__name__) diff --git a/fastvideo/v1/distributed/parallel_state.py b/fastvideo/v1/distributed/parallel_state.py index a2bace07a..aa15e2904 100644 --- a/fastvideo/v1/distributed/parallel_state.py +++ b/fastvideo/v1/distributed/parallel_state.py @@ -38,14 +38,14 @@ import torch import torch.distributed from torch.distributed import Backend, ProcessGroup, ReduceOp -import fastvideo.v1.envs as envs -from fastvideo.v1.distributed.device_communicators.base_device_communicator import ( +import fastvideo.envs as envs +from fastvideo.distributed.device_communicators.base_device_communicator import ( DeviceCommunicatorBase) -from fastvideo.v1.distributed.device_communicators.cpu_communicator import ( +from fastvideo.distributed.device_communicators.cpu_communicator import ( CpuCommunicator) -from fastvideo.v1.distributed.utils import StatelessProcessGroup -from fastvideo.v1.logger import init_logger -from fastvideo.v1.platforms import current_platform +from fastvideo.distributed.utils import StatelessProcessGroup +from fastvideo.logger import init_logger +from fastvideo.platforms import current_platform logger = init_logger(__name__) @@ -184,7 +184,7 @@ class GroupCoordinator: print(f"rank: {self.rank} group not found") raise e - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform # TODO: fix it for other platforms self.device = get_local_torch_device() @@ -195,7 +195,7 @@ class GroupCoordinator: if use_device_communicator and self.world_size > 1: # Platform-aware device communicator selection if current_platform.is_cuda_alike(): - from fastvideo.v1.distributed.device_communicators.cuda_communicator import ( + from fastvideo.distributed.device_communicators.cuda_communicator import ( CudaCommunicator) self.device_communicator = CudaCommunicator( cpu_group=self.cpu_group, @@ -214,7 +214,7 @@ class GroupCoordinator: self.mq_broadcaster = None - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform # TODO(will): check if this is needed # self.use_custom_op_call = current_platform.is_cuda_alike() @@ -258,7 +258,7 @@ class GroupCoordinator: def graph_capture(self, graph_capture_context: GraphCaptureContext | None = None): # Platform-aware graph capture - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform if current_platform.is_cuda_alike(): if graph_capture_context is None: @@ -775,7 +775,7 @@ def init_distributed_environment( device_id: torch.device | None = None, ): # Determine the appropriate backend based on the platform - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform if backend == "nccl" and not current_platform.is_cuda_alike(): # Use gloo backend for non-CUDA platforms (MPS, CPU) backend = "gloo" diff --git a/fastvideo/v1/distributed/utils.py b/fastvideo/v1/distributed/utils.py index 9a40bd2d0..94ff953a6 100644 --- a/fastvideo/v1/distributed/utils.py +++ b/fastvideo/v1/distributed/utils.py @@ -15,7 +15,7 @@ from typing import Any import torch from torch.distributed import TCPStore -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/entrypoints/cli/cli_types.py b/fastvideo/v1/entrypoints/cli/cli_types.py index dd2c7a677..c9aa9147f 100644 --- a/fastvideo/v1/entrypoints/cli/cli_types.py +++ b/fastvideo/v1/entrypoints/cli/cli_types.py @@ -3,7 +3,7 @@ import argparse -from fastvideo.v1.utils import FlexibleArgumentParser +from fastvideo.utils import FlexibleArgumentParser class CLISubcommand: diff --git a/fastvideo/v1/entrypoints/cli/generate.py b/fastvideo/v1/entrypoints/cli/generate.py index 3737c7f06..e7494c580 100644 --- a/fastvideo/v1/entrypoints/cli/generate.py +++ b/fastvideo/v1/entrypoints/cli/generate.py @@ -7,12 +7,12 @@ import os from typing import cast from fastvideo import VideoGenerator -from fastvideo.v1.configs.sample.base import SamplingParam -from fastvideo.v1.entrypoints.cli.cli_types import CLISubcommand -from fastvideo.v1.entrypoints.cli.utils import RaiseNotImplementedAction -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import FlexibleArgumentParser +from fastvideo.configs.sample.base import SamplingParam +from fastvideo.entrypoints.cli.cli_types import CLISubcommand +from fastvideo.entrypoints.cli.utils import RaiseNotImplementedAction +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.utils import FlexibleArgumentParser logger = init_logger(__name__) diff --git a/fastvideo/v1/entrypoints/cli/main.py b/fastvideo/v1/entrypoints/cli/main.py index 2b184d0df..17cba3cb7 100644 --- a/fastvideo/v1/entrypoints/cli/main.py +++ b/fastvideo/v1/entrypoints/cli/main.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: Apache-2.0 # adapted from vllm: https://github.com/vllm-project/vllm/blob/v0.7.3/vllm/entrypoints/cli/main.py -from fastvideo.v1.entrypoints.cli.cli_types import CLISubcommand -from fastvideo.v1.entrypoints.cli.generate import cmd_init as generate_cmd_init -from fastvideo.v1.utils import FlexibleArgumentParser +from fastvideo.entrypoints.cli.cli_types import CLISubcommand +from fastvideo.entrypoints.cli.generate import cmd_init as generate_cmd_init +from fastvideo.utils import FlexibleArgumentParser def cmd_init() -> list[CLISubcommand]: diff --git a/fastvideo/v1/entrypoints/cli/utils.py b/fastvideo/v1/entrypoints/cli/utils.py index 96ac5fd0f..56016b192 100644 --- a/fastvideo/v1/entrypoints/cli/utils.py +++ b/fastvideo/v1/entrypoints/cli/utils.py @@ -5,7 +5,7 @@ import os import subprocess import sys -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/entrypoints/video_generator.py b/fastvideo/v1/entrypoints/video_generator.py index 5c44adc7f..5051a9b7e 100644 --- a/fastvideo/v1/entrypoints/video_generator.py +++ b/fastvideo/v1/entrypoints/video_generator.py @@ -17,12 +17,12 @@ import torch import torchvision from einops import rearrange -from fastvideo.v1.configs.sample import SamplingParam -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines import ForwardBatch -from fastvideo.v1.utils import align_to, shallow_asdict -from fastvideo.v1.worker.executor import Executor +from fastvideo.configs.sample import SamplingParam +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines import ForwardBatch +from fastvideo.utils import align_to, shallow_asdict +from fastvideo.worker.executor import Executor logger = init_logger(__name__) diff --git a/fastvideo/v1/fastvideo_args.py b/fastvideo/v1/fastvideo_args.py index 365f64006..8e11fb366 100644 --- a/fastvideo/v1/fastvideo_args.py +++ b/fastvideo/v1/fastvideo_args.py @@ -8,10 +8,10 @@ from contextlib import contextmanager from dataclasses import field from typing import Any -from fastvideo.v1.configs.pipelines.base import PipelineConfig, STA_Mode -from fastvideo.v1.logger import init_logger -from fastvideo.v1.platforms import current_platform -from fastvideo.v1.utils import FlexibleArgumentParser, StoreBoolean +from fastvideo.configs.pipelines.base import PipelineConfig, STA_Mode +from fastvideo.logger import init_logger +from fastvideo.platforms import current_platform +from fastvideo.utils import FlexibleArgumentParser, StoreBoolean logger = init_logger(__name__) diff --git a/fastvideo/v1/forward_context.py b/fastvideo/v1/forward_context.py index 11b5ead18..7d3aa6d56 100644 --- a/fastvideo/v1/forward_context.py +++ b/fastvideo/v1/forward_context.py @@ -9,11 +9,11 @@ from typing import TYPE_CHECKING, Optional import torch -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger if TYPE_CHECKING: - from fastvideo.v1.attention import AttentionMetadata - from fastvideo.v1.pipelines import ForwardBatch + from fastvideo.attention import AttentionMetadata + from fastvideo.pipelines import ForwardBatch logger = init_logger(__name__) diff --git a/fastvideo/v1/layers/activation.py b/fastvideo/v1/layers/activation.py index c7f1c47c9..f20a3b7fa 100644 --- a/fastvideo/v1/layers/activation.py +++ b/fastvideo/v1/layers/activation.py @@ -8,7 +8,7 @@ import torch.nn as nn import torch.nn.functional as F # TODO (will): remove this dependency -from fastvideo.v1.layers.custom_op import CustomOp +from fastvideo.layers.custom_op import CustomOp @CustomOp.register("silu_and_mul") diff --git a/fastvideo/v1/layers/custom_op.py b/fastvideo/v1/layers/custom_op.py index 2d9d4f5c3..bd9ffa5b7 100644 --- a/fastvideo/v1/layers/custom_op.py +++ b/fastvideo/v1/layers/custom_op.py @@ -6,7 +6,7 @@ from typing import Any import torch.nn as nn -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/layers/layernorm.py b/fastvideo/v1/layers/layernorm.py index 1f987616c..fd81db6d6 100644 --- a/fastvideo/v1/layers/layernorm.py +++ b/fastvideo/v1/layers/layernorm.py @@ -6,8 +6,8 @@ import torch import torch.nn as nn import torch.nn.functional as F -from fastvideo.v1.layers.custom_op import CustomOp -from fastvideo.v1.platforms import current_platform +from fastvideo.layers.custom_op import CustomOp +from fastvideo.platforms import current_platform @CustomOp.register("rms_norm") diff --git a/fastvideo/v1/layers/linear.py b/fastvideo/v1/layers/linear.py index 3af6a682b..d711a1ad4 100644 --- a/fastvideo/v1/layers/linear.py +++ b/fastvideo/v1/layers/linear.py @@ -7,22 +7,22 @@ import torch import torch.nn.functional as F from torch.nn.parameter import Parameter -from fastvideo.v1.distributed import (divide, get_tp_rank, get_tp_world_size, - split_tensor_along_last_dim, - tensor_model_parallel_all_gather, - tensor_model_parallel_all_reduce) -from fastvideo.v1.layers.quantization.base_config import (QuantizationConfig, - QuantizeMethodBase) -from fastvideo.v1.logger import init_logger +from fastvideo.distributed import (divide, get_tp_rank, get_tp_world_size, + split_tensor_along_last_dim, + tensor_model_parallel_all_gather, + tensor_model_parallel_all_reduce) +from fastvideo.layers.quantization.base_config import (QuantizationConfig, + QuantizeMethodBase) +from fastvideo.logger import init_logger # yapf: disable -from fastvideo.v1.models.parameter import (BasevLLMParameter, - BlockQuantScaleParameter, - PackedColumnParameter, - PackedvLLMParameter, - PerTensorScaleParameter, - RowvLLMParameter) +from fastvideo.models.parameter import (BasevLLMParameter, + BlockQuantScaleParameter, + PackedColumnParameter, + PackedvLLMParameter, + PerTensorScaleParameter, + RowvLLMParameter) # yapf: enable -from fastvideo.v1.models.utils import set_weight_attrs +from fastvideo.models.utils import set_weight_attrs logger = init_logger(__name__) diff --git a/fastvideo/v1/layers/lora/linear.py b/fastvideo/v1/layers/lora/linear.py index ec67ce8a3..2f63de200 100644 --- a/fastvideo/v1/layers/lora/linear.py +++ b/fastvideo/v1/layers/lora/linear.py @@ -9,16 +9,16 @@ from torch.distributed._composable.fsdp import (CPUOffloadPolicy, OffloadPolicy, fully_shard) from torch.distributed.tensor import DTensor -from fastvideo.v1.distributed import (get_local_torch_device, get_tp_rank, - split_tensor_along_last_dim, - tensor_model_parallel_all_gather, - tensor_model_parallel_all_reduce) -from fastvideo.v1.layers.linear import (ColumnParallelLinear, LinearBase, - MergedColumnParallelLinear, - QKVParallelLinear, ReplicatedLinear, - RowParallelLinear) -from fastvideo.v1.layers.vocab_parallel_embedding import VocabParallelEmbedding -from fastvideo.v1.utils import get_mixed_precision_state +from fastvideo.distributed import (get_local_torch_device, get_tp_rank, + split_tensor_along_last_dim, + tensor_model_parallel_all_gather, + tensor_model_parallel_all_reduce) +from fastvideo.layers.linear import (ColumnParallelLinear, LinearBase, + MergedColumnParallelLinear, + QKVParallelLinear, ReplicatedLinear, + RowParallelLinear) +from fastvideo.layers.vocab_parallel_embedding import VocabParallelEmbedding +from fastvideo.utils import get_mixed_precision_state torch._dynamo.config.recompile_limit = 16 @@ -376,4 +376,4 @@ def replace_submodule(model: nn.Module, module_name: str, parent = model.get_submodule(".".join(module_name.split(".")[:-1])) target_name = module_name.split(".")[-1] setattr(parent, target_name, new_module) - return new_module \ No newline at end of file + return new_module diff --git a/fastvideo/v1/layers/mlp.py b/fastvideo/v1/layers/mlp.py index 7b2952917..2d5ab2a34 100644 --- a/fastvideo/v1/layers/mlp.py +++ b/fastvideo/v1/layers/mlp.py @@ -3,8 +3,8 @@ import torch import torch.nn as nn -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.layers.linear import ReplicatedLinear +from fastvideo.layers.activation import get_act_fn +from fastvideo.layers.linear import ReplicatedLinear class MLP(nn.Module): diff --git a/fastvideo/v1/layers/quantization/__init__.py b/fastvideo/v1/layers/quantization/__init__.py index 971d9ca03..a8d269f70 100644 --- a/fastvideo/v1/layers/quantization/__init__.py +++ b/fastvideo/v1/layers/quantization/__init__.py @@ -1,6 +1,6 @@ from typing import Literal, get_args -from fastvideo.v1.layers.quantization.base_config import QuantizationConfig +from fastvideo.layers.quantization.base_config import QuantizationConfig QuantizationMethods = Literal[None] @@ -20,9 +20,9 @@ def register_quantization_config(quantization: str): quantization (str): The quantization method name. Examples: - >>> from fastvideo.v1.layers.quantization import register_quantization_config - >>> from fastvideo.v1.layers.quantization import get_quantization_config - >>> from fastvideo.v1.layers.quantization.base_config import QuantizationConfig + >>> from fastvideo.layers.quantization import register_quantization_config + >>> from fastvideo.layers.quantization import get_quantization_config + >>> from fastvideo.layers.quantization.base_config import QuantizationConfig >>> >>> @register_quantization_config("my_quant") ... class MyQuantConfig(QuantizationConfig): diff --git a/fastvideo/v1/layers/quantization/base_config.py b/fastvideo/v1/layers/quantization/base_config.py index ed972de47..892d1516c 100644 --- a/fastvideo/v1/layers/quantization/base_config.py +++ b/fastvideo/v1/layers/quantization/base_config.py @@ -9,7 +9,7 @@ import torch from torch import nn if TYPE_CHECKING: - from fastvideo.v1.layers.quantization import QuantizationMethods + from fastvideo.layers.quantization import QuantizationMethods else: QuantizationMethods = str diff --git a/fastvideo/v1/layers/rotary_embedding.py b/fastvideo/v1/layers/rotary_embedding.py index 6b8ed3da6..6abe90609 100644 --- a/fastvideo/v1/layers/rotary_embedding.py +++ b/fastvideo/v1/layers/rotary_embedding.py @@ -27,8 +27,8 @@ from typing import Any import torch -from fastvideo.v1.distributed.parallel_state import get_sp_group -from fastvideo.v1.layers.custom_op import CustomOp +from fastvideo.distributed.parallel_state import get_sp_group +from fastvideo.layers.custom_op import CustomOp def _rotate_neox(x: torch.Tensor) -> torch.Tensor: diff --git a/fastvideo/v1/layers/visual_embedding.py b/fastvideo/v1/layers/visual_embedding.py index 19106def8..954cd925c 100644 --- a/fastvideo/v1/layers/visual_embedding.py +++ b/fastvideo/v1/layers/visual_embedding.py @@ -5,9 +5,9 @@ import math import torch import torch.nn as nn -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.layers.linear import ReplicatedLinear -from fastvideo.v1.layers.mlp import MLP +from fastvideo.layers.activation import get_act_fn +from fastvideo.layers.linear import ReplicatedLinear +from fastvideo.layers.mlp import MLP class PatchEmbed(nn.Module): diff --git a/fastvideo/v1/layers/vocab_parallel_embedding.py b/fastvideo/v1/layers/vocab_parallel_embedding.py index 1aaee3a03..eab40df9c 100644 --- a/fastvideo/v1/layers/vocab_parallel_embedding.py +++ b/fastvideo/v1/layers/vocab_parallel_embedding.py @@ -7,13 +7,13 @@ import torch import torch.nn.functional as F from torch.nn.parameter import Parameter, UninitializedParameter -from fastvideo.v1.distributed import (divide, get_tp_rank, get_tp_world_size, - tensor_model_parallel_all_reduce) -from fastvideo.v1.layers.quantization.base_config import ( +from fastvideo.distributed import (divide, get_tp_rank, get_tp_world_size, + tensor_model_parallel_all_reduce) +from fastvideo.layers.quantization.base_config import ( QuantizationConfig, QuantizeMethodBase, method_has_implemented_embedding) -from fastvideo.v1.models.parameter import BasevLLMParameter -from fastvideo.v1.models.utils import set_weight_attrs -from fastvideo.v1.platforms import current_platform +from fastvideo.models.parameter import BasevLLMParameter +from fastvideo.models.utils import set_weight_attrs +from fastvideo.platforms import current_platform DEFAULT_VOCAB_PADDING_SIZE = 64 diff --git a/fastvideo/v1/logger.py b/fastvideo/v1/logger.py index 7d2b05da9..f1fc08ad5 100644 --- a/fastvideo/v1/logger.py +++ b/fastvideo/v1/logger.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 # adapted from vllm: https://github.com/vllm-project/vllm/blob/v0.7.3/vllm/logger.py -"""Logging configuration for fastvideo.v1.""" +"""Logging configuration for fastvideo.""" import datetime import json import logging @@ -13,7 +13,7 @@ from os import path from types import MethodType from typing import Any, cast -import fastvideo.v1.envs as envs +import fastvideo.envs as envs FASTVIDEO_CONFIGURE_LOGGING = envs.FASTVIDEO_CONFIGURE_LOGGING FASTVIDEO_LOGGING_CONFIG_PATH = envs.FASTVIDEO_LOGGING_CONFIG_PATH @@ -34,7 +34,7 @@ _DATE_FORMAT = "%m-%d %H:%M:%S" DEFAULT_LOGGING_CONFIG = { "formatters": { "fastvideo": { - "class": "fastvideo.v1.logging_utils.NewLineFormatter", + "class": "fastvideo.logging_utils.NewLineFormatter", "datefmt": _DATE_FORMAT, "format": _FORMAT, }, @@ -204,8 +204,8 @@ def _configure_fastvideo_root_logger() -> None: for formatter in logging_config.get("formatters", {}).values(): # This provides backwards compatibility after #10134. - if formatter.get("class") == "fastvideo.v1.logging.NewLineFormatter": - formatter["class"] = "fastvideo.v1.logging_utils.NewLineFormatter" + if formatter.get("class") == "fastvideo.logging.NewLineFormatter": + formatter["class"] = "fastvideo.logging_utils.NewLineFormatter" if logging_config: dictConfig(logging_config) diff --git a/fastvideo/v1/logging_utils/__init__.py b/fastvideo/v1/logging_utils/__init__.py index 81c6d65a3..95a78b983 100644 --- a/fastvideo/v1/logging_utils/__init__.py +++ b/fastvideo/v1/logging_utils/__init__.py @@ -1,6 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -from fastvideo.v1.logging_utils.formatter import NewLineFormatter +from fastvideo.logging_utils.formatter import NewLineFormatter __all__ = [ "NewLineFormatter", diff --git a/fastvideo/v1/models/dits/base.py b/fastvideo/v1/models/dits/base.py index 5022ac16a..d60812a45 100644 --- a/fastvideo/v1/models/dits/base.py +++ b/fastvideo/v1/models/dits/base.py @@ -5,8 +5,8 @@ from typing import Any import torch from torch import nn -from fastvideo.v1.configs.models import DiTConfig -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.configs.models import DiTConfig +from fastvideo.platforms import AttentionBackendEnum # TODO diff --git a/fastvideo/v1/models/dits/hunyuanvideo.py b/fastvideo/v1/models/dits/hunyuanvideo.py index 05fdef4ba..da14322ba 100644 --- a/fastvideo/v1/models/dits/hunyuanvideo.py +++ b/fastvideo/v1/models/dits/hunyuanvideo.py @@ -6,24 +6,23 @@ import numpy as np import torch import torch.nn as nn -from fastvideo.v1.attention import DistributedAttention, LocalAttention -from fastvideo.v1.configs.models.dits import HunyuanVideoConfig -from fastvideo.v1.configs.sample.teacache import TeaCacheParams -from fastvideo.v1.distributed.parallel_state import get_sp_world_size -from fastvideo.v1.forward_context import get_forward_context -from fastvideo.v1.layers.layernorm import (LayerNormScaleShift, ScaleResidual, - ScaleResidualLayerNormScaleShift) -from fastvideo.v1.layers.linear import ReplicatedLinear +from fastvideo.attention import DistributedAttention, LocalAttention +from fastvideo.configs.models.dits import HunyuanVideoConfig +from fastvideo.configs.sample.teacache import TeaCacheParams +from fastvideo.distributed.parallel_state import get_sp_world_size +from fastvideo.forward_context import get_forward_context +from fastvideo.layers.layernorm import (LayerNormScaleShift, ScaleResidual, + ScaleResidualLayerNormScaleShift) +from fastvideo.layers.linear import ReplicatedLinear # TODO(will-PY-refactor): RMSNorm .... -from fastvideo.v1.layers.mlp import MLP -from fastvideo.v1.layers.rotary_embedding import (_apply_rotary_emb, - get_rotary_pos_embed) -from fastvideo.v1.layers.visual_embedding import (ModulateProjection, - PatchEmbed, TimestepEmbedder, - unpatchify) -from fastvideo.v1.models.dits.base import CachableDiT -from fastvideo.v1.models.utils import modulate -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.layers.mlp import MLP +from fastvideo.layers.rotary_embedding import (_apply_rotary_emb, + get_rotary_pos_embed) +from fastvideo.layers.visual_embedding import (ModulateProjection, PatchEmbed, + TimestepEmbedder, unpatchify) +from fastvideo.models.dits.base import CachableDiT +from fastvideo.models.utils import modulate +from fastvideo.platforms import AttentionBackendEnum class HunyuanRMSNorm(nn.Module): diff --git a/fastvideo/v1/models/dits/stepvideo.py b/fastvideo/v1/models/dits/stepvideo.py index c60e6b6ec..45295796c 100644 --- a/fastvideo/v1/models/dits/stepvideo.py +++ b/fastvideo/v1/models/dits/stepvideo.py @@ -16,17 +16,17 @@ import torch from einops import rearrange, repeat from torch import nn -from fastvideo.v1.attention import DistributedAttention, LocalAttention -from fastvideo.v1.configs.models.dits import StepVideoConfig -from fastvideo.v1.distributed.parallel_state import get_sp_world_size -from fastvideo.v1.layers.layernorm import LayerNormScaleShift -from fastvideo.v1.layers.linear import ReplicatedLinear -from fastvideo.v1.layers.mlp import MLP -from fastvideo.v1.layers.rotary_embedding import (_apply_rotary_emb, - get_rotary_pos_embed) -from fastvideo.v1.layers.visual_embedding import TimestepEmbedder -from fastvideo.v1.models.dits.base import BaseDiT -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.attention import DistributedAttention, LocalAttention +from fastvideo.configs.models.dits import StepVideoConfig +from fastvideo.distributed.parallel_state import get_sp_world_size +from fastvideo.layers.layernorm import LayerNormScaleShift +from fastvideo.layers.linear import ReplicatedLinear +from fastvideo.layers.mlp import MLP +from fastvideo.layers.rotary_embedding import (_apply_rotary_emb, + get_rotary_pos_embed) +from fastvideo.layers.visual_embedding import TimestepEmbedder +from fastvideo.models.dits.base import BaseDiT +from fastvideo.platforms import AttentionBackendEnum class PatchEmbed2D(nn.Module): diff --git a/fastvideo/v1/models/dits/wanvideo.py b/fastvideo/v1/models/dits/wanvideo.py index 89afa1345..2ca840622 100644 --- a/fastvideo/v1/models/dits/wanvideo.py +++ b/fastvideo/v1/models/dits/wanvideo.py @@ -7,27 +7,27 @@ import numpy as np import torch import torch.nn as nn -import fastvideo.v1.envs as envs -from fastvideo.v1.attention import (DistributedAttention, - DistributedAttention_VSA, LocalAttention) -from fastvideo.v1.configs.models.dits import WanVideoConfig -from fastvideo.v1.configs.sample.wan import WanTeaCacheParams -from fastvideo.v1.distributed.parallel_state import get_sp_world_size -from fastvideo.v1.forward_context import get_forward_context -from fastvideo.v1.layers.layernorm import (FP32LayerNorm, LayerNormScaleShift, - RMSNorm, ScaleResidual, - ScaleResidualLayerNormScaleShift) -from fastvideo.v1.layers.linear import ReplicatedLinear +import fastvideo.envs as envs +from fastvideo.attention import (DistributedAttention, DistributedAttention_VSA, + LocalAttention) +from fastvideo.configs.models.dits import WanVideoConfig +from fastvideo.configs.sample.wan import WanTeaCacheParams +from fastvideo.distributed.parallel_state import get_sp_world_size +from fastvideo.forward_context import get_forward_context +from fastvideo.layers.layernorm import (FP32LayerNorm, LayerNormScaleShift, + RMSNorm, ScaleResidual, + ScaleResidualLayerNormScaleShift) +from fastvideo.layers.linear import ReplicatedLinear # from torch.nn import RMSNorm # TODO: RMSNorm .... -from fastvideo.v1.layers.mlp import MLP -from fastvideo.v1.layers.rotary_embedding import (_apply_rotary_emb, - get_rotary_pos_embed) -from fastvideo.v1.layers.visual_embedding import (ModulateProjection, - PatchEmbed, TimestepEmbedder) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.dits.base import CachableDiT -from fastvideo.v1.platforms import AttentionBackendEnum, current_platform +from fastvideo.layers.mlp import MLP +from fastvideo.layers.rotary_embedding import (_apply_rotary_emb, + get_rotary_pos_embed) +from fastvideo.layers.visual_embedding import (ModulateProjection, PatchEmbed, + TimestepEmbedder) +from fastvideo.logger import init_logger +from fastvideo.models.dits.base import CachableDiT +from fastvideo.platforms import AttentionBackendEnum, current_platform logger = init_logger(__name__) diff --git a/fastvideo/v1/models/encoders/base.py b/fastvideo/v1/models/encoders/base.py index 7e6ae7076..2ba2ffff1 100644 --- a/fastvideo/v1/models/encoders/base.py +++ b/fastvideo/v1/models/encoders/base.py @@ -5,10 +5,10 @@ from dataclasses import field import torch from torch import nn -from fastvideo.v1.configs.models.encoders import (BaseEncoderOutput, - ImageEncoderConfig, - TextEncoderConfig) -from fastvideo.v1.platforms import AttentionBackendEnum +from fastvideo.configs.models.encoders import (BaseEncoderOutput, + ImageEncoderConfig, + TextEncoderConfig) +from fastvideo.platforms import AttentionBackendEnum class TextEncoder(nn.Module, ABC): diff --git a/fastvideo/v1/models/encoders/clip.py b/fastvideo/v1/models/encoders/clip.py index 8efcc0ba0..63c3ede47 100644 --- a/fastvideo/v1/models/encoders/clip.py +++ b/fastvideo/v1/models/encoders/clip.py @@ -9,21 +9,20 @@ import torch import torch.nn as nn # from transformers.modeling_attn_mask_utils import _create_4d_causal_attention_mask, _prepare_4d_attention_mask -from fastvideo.v1.attention import LocalAttention -from fastvideo.v1.configs.models.encoders import (BaseEncoderOutput, - CLIPTextConfig, - CLIPVisionConfig) -from fastvideo.v1.distributed import divide, get_tp_world_size -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.layers.linear import (ColumnParallelLinear, QKVParallelLinear, - RowParallelLinear) -from fastvideo.v1.layers.quantization import QuantizationConfig -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.encoders.base import ImageEncoder, TextEncoder -from fastvideo.v1.models.encoders.vision import resolve_visual_encoder_outputs +from fastvideo.attention import LocalAttention +from fastvideo.configs.models.encoders import (BaseEncoderOutput, + CLIPTextConfig, CLIPVisionConfig) +from fastvideo.distributed import divide, get_tp_world_size +from fastvideo.layers.activation import get_act_fn +from fastvideo.layers.linear import (ColumnParallelLinear, QKVParallelLinear, + RowParallelLinear) +from fastvideo.layers.quantization import QuantizationConfig +from fastvideo.logger import init_logger +from fastvideo.models.encoders.base import ImageEncoder, TextEncoder +from fastvideo.models.encoders.vision import resolve_visual_encoder_outputs # TODO: support quantization # from vllm.model_executor.layers.quantization import QuantizationConfig -from fastvideo.v1.models.loader.weight_utils import default_weight_loader +from fastvideo.models.loader.weight_utils import default_weight_loader logger = init_logger(__name__) diff --git a/fastvideo/v1/models/encoders/llama.py b/fastvideo/v1/models/encoders/llama.py index b3b1f1aec..ea9bdc928 100644 --- a/fastvideo/v1/models/encoders/llama.py +++ b/fastvideo/v1/models/encoders/llama.py @@ -30,20 +30,20 @@ import torch from torch import nn # from vllm.model_executor.layers.quantization import QuantizationConfig -from fastvideo.v1.attention import LocalAttention +from fastvideo.attention import LocalAttention # from ..utils import (extract_layer_index) -from fastvideo.v1.configs.models.encoders import BaseEncoderOutput, LlamaConfig -from fastvideo.v1.distributed import get_tp_world_size -from fastvideo.v1.layers.activation import SiluAndMul -from fastvideo.v1.layers.layernorm import RMSNorm -from fastvideo.v1.layers.linear import (MergedColumnParallelLinear, - QKVParallelLinear, RowParallelLinear) -from fastvideo.v1.layers.quantization import QuantizationConfig -from fastvideo.v1.layers.rotary_embedding import get_rope -from fastvideo.v1.layers.vocab_parallel_embedding import VocabParallelEmbedding -from fastvideo.v1.models.encoders.base import TextEncoder -from fastvideo.v1.models.loader.weight_utils import (default_weight_loader, - maybe_remap_kv_scale_name) +from fastvideo.configs.models.encoders import BaseEncoderOutput, LlamaConfig +from fastvideo.distributed import get_tp_world_size +from fastvideo.layers.activation import SiluAndMul +from fastvideo.layers.layernorm import RMSNorm +from fastvideo.layers.linear import (MergedColumnParallelLinear, + QKVParallelLinear, RowParallelLinear) +from fastvideo.layers.quantization import QuantizationConfig +from fastvideo.layers.rotary_embedding import get_rope +from fastvideo.layers.vocab_parallel_embedding import VocabParallelEmbedding +from fastvideo.models.encoders.base import TextEncoder +from fastvideo.models.loader.weight_utils import (default_weight_loader, + maybe_remap_kv_scale_name) class LlamaMLP(nn.Module): diff --git a/fastvideo/v1/models/encoders/stepllm.py b/fastvideo/v1/models/encoders/stepllm.py index 6fbe053b4..184800ef9 100644 --- a/fastvideo/v1/models/encoders/stepllm.py +++ b/fastvideo/v1/models/encoders/stepllm.py @@ -21,7 +21,7 @@ import torch.nn.functional as F from einops import rearrange from transformers.modeling_utils import PretrainedConfig, PreTrainedModel -from fastvideo.v1.models.dits.stepvideo import StepVideoRMSNorm +from fastvideo.models.dits.stepvideo import StepVideoRMSNorm class EmptyInitOnDevice(torch.overrides.TorchFunctionMode): diff --git a/fastvideo/v1/models/encoders/t5.py b/fastvideo/v1/models/encoders/t5.py index ae935118d..5671b96ce 100644 --- a/fastvideo/v1/models/encoders/t5.py +++ b/fastvideo/v1/models/encoders/t5.py @@ -27,17 +27,17 @@ import torch import torch.nn.functional as F from torch import nn -from fastvideo.v1.configs.models.encoders import BaseEncoderOutput, T5Config -from fastvideo.v1.distributed import get_tp_rank, get_tp_world_size -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.layers.layernorm import RMSNorm -from fastvideo.v1.layers.linear import (MergedColumnParallelLinear, - QKVParallelLinear, RowParallelLinear) -from fastvideo.v1.layers.quantization import QuantizationConfig -from fastvideo.v1.layers.vocab_parallel_embedding import VocabParallelEmbedding -from fastvideo.v1.models.encoders.base import TextEncoder -from fastvideo.v1.models.loader.weight_utils import default_weight_loader -from fastvideo.v1.platforms import current_platform +from fastvideo.configs.models.encoders import BaseEncoderOutput, T5Config +from fastvideo.distributed import get_tp_rank, get_tp_world_size +from fastvideo.layers.activation import get_act_fn +from fastvideo.layers.layernorm import RMSNorm +from fastvideo.layers.linear import (MergedColumnParallelLinear, + QKVParallelLinear, RowParallelLinear) +from fastvideo.layers.quantization import QuantizationConfig +from fastvideo.layers.vocab_parallel_embedding import VocabParallelEmbedding +from fastvideo.models.encoders.base import TextEncoder +from fastvideo.models.loader.weight_utils import default_weight_loader +from fastvideo.platforms import current_platform class AttentionType: diff --git a/fastvideo/v1/models/encoders/vision.py b/fastvideo/v1/models/encoders/vision.py index d26dab19c..de3ab5739 100644 --- a/fastvideo/v1/models/encoders/vision.py +++ b/fastvideo/v1/models/encoders/vision.py @@ -7,7 +7,7 @@ from typing import Generic, TypeVar import torch from transformers import PretrainedConfig -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/models/loader/component_loader.py b/fastvideo/v1/models/loader/component_loader.py index aced84489..5ad5fc03d 100644 --- a/fastvideo/v1/models/loader/component_loader.py +++ b/fastvideo/v1/models/loader/component_loader.py @@ -18,20 +18,19 @@ from torch.distributed import init_device_mesh from transformers import AutoImageProcessor, AutoTokenizer from transformers.utils import SAFE_WEIGHTS_INDEX_NAME -from fastvideo.v1.configs.models import EncoderConfig -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.hf_transformer_utils import get_diffusers_config -from fastvideo.v1.models.loader.fsdp_load import (maybe_load_fsdp_model, - shard_model) -from fastvideo.v1.models.loader.utils import set_default_torch_dtype -from fastvideo.v1.models.loader.weight_utils import ( +from fastvideo.configs.models import EncoderConfig +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.hf_transformer_utils import get_diffusers_config +from fastvideo.models.loader.fsdp_load import maybe_load_fsdp_model, shard_model +from fastvideo.models.loader.utils import set_default_torch_dtype +from fastvideo.models.loader.weight_utils import ( filter_duplicate_safetensors_files, filter_files_not_needed_for_inference, pt_weights_iterator, safetensors_weights_iterator) -from fastvideo.v1.models.registry import ModelRegistry -from fastvideo.v1.platforms import current_platform -from fastvideo.v1.utils import PRECISION_TO_TYPE +from fastvideo.models.registry import ModelRegistry +from fastvideo.platforms import current_platform +from fastvideo.utils import PRECISION_TO_TYPE logger = init_logger(__name__) diff --git a/fastvideo/v1/models/loader/fsdp_load.py b/fastvideo/v1/models/loader/fsdp_load.py index 9a8bce7ba..117b1a728 100644 --- a/fastvideo/v1/models/loader/fsdp_load.py +++ b/fastvideo/v1/models/loader/fsdp_load.py @@ -17,11 +17,11 @@ from torch.distributed.fsdp import (CPUOffloadPolicy, FSDPModule, MixedPrecisionPolicy, fully_shard) from torch.nn.modules.module import _IncompatibleKeys -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.utils import (get_param_names_mapping, - hf_to_custom_state_dict) -from fastvideo.v1.models.loader.weight_utils import safetensors_weights_iterator -from fastvideo.v1.utils import set_mixed_precision_policy +from fastvideo.logger import init_logger +from fastvideo.models.loader.utils import (get_param_names_mapping, + hf_to_custom_state_dict) +from fastvideo.models.loader.weight_utils import safetensors_weights_iterator +from fastvideo.utils import set_mixed_precision_policy logger = init_logger(__name__) @@ -94,7 +94,7 @@ def maybe_load_fsdp_model( use_fsdp = training_mode or fsdp_inference # Disable FSDP for MPS as it's not compatible - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform if current_platform.is_mps(): use_fsdp = False logger.info("Disabling FSDP for MPS platform as it's not compatible") diff --git a/fastvideo/v1/models/loader/utils.py b/fastvideo/v1/models/loader/utils.py index 9294d8759..033cd0058 100644 --- a/fastvideo/v1/models/loader/utils.py +++ b/fastvideo/v1/models/loader/utils.py @@ -8,7 +8,7 @@ from typing import Any import torch -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/models/loader/weight_utils.py b/fastvideo/v1/models/loader/weight_utils.py index 83fe8f945..3e6fa91ba 100644 --- a/fastvideo/v1/models/loader/weight_utils.py +++ b/fastvideo/v1/models/loader/weight_utils.py @@ -14,8 +14,8 @@ import torch from safetensors.torch import safe_open from tqdm.auto import tqdm -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.logger import init_logger +from fastvideo.distributed import get_local_torch_device +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/models/parameter.py b/fastvideo/v1/models/parameter.py index 081f46452..dd7dfac10 100644 --- a/fastvideo/v1/models/parameter.py +++ b/fastvideo/v1/models/parameter.py @@ -8,9 +8,9 @@ from typing import Any import torch from torch.nn import Parameter -from fastvideo.v1.distributed import get_tp_rank -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.utils import _make_synced_weight_loader +from fastvideo.distributed import get_tp_rank +from fastvideo.logger import init_logger +from fastvideo.models.utils import _make_synced_weight_loader logger = init_logger(__name__) @@ -44,7 +44,7 @@ class BasevLLMParameter(Parameter): # tensor, which is param.data, leading to the redundant memory usage. # This sometimes causes OOM errors during model loading. To avoid this, # we sync the param tensor after its weight loader is called. - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform if current_platform.is_tpu(): weight_loader = _make_synced_weight_loader(weight_loader) diff --git a/fastvideo/v1/models/registry.py b/fastvideo/v1/models/registry.py index eeb42c1ef..8f364cd08 100644 --- a/fastvideo/v1/models/registry.py +++ b/fastvideo/v1/models/registry.py @@ -16,7 +16,7 @@ from typing import NoReturn, TypeVar, cast import cloudpickle from torch import nn -from fastvideo.v1.logger import logger +from fastvideo.logger import logger # huggingface class name: (component_name, fastvideo module name, fastvideo class name) _TEXT_TO_VIDEO_DIT_MODELS = { @@ -68,9 +68,7 @@ _FAST_VIDEO_MODELS = { **_SCHEDULERS, } -_SUBPROCESS_COMMAND = [ - sys.executable, "-m", "fastvideo.v1.models.dits.registry" -] +_SUBPROCESS_COMMAND = [sys.executable, "-m", "fastvideo.models.dits.registry"] _T = TypeVar("_T") @@ -169,7 +167,7 @@ def _try_load_model_cls( model_arch: str, model: _BaseRegisteredModel, ) -> type[nn.Module] | None: - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform current_platform.verify_model_arch(model_arch) try: return model.load_model_cls() @@ -302,7 +300,7 @@ class _ModelRegistry: ModelRegistry = _ModelRegistry({ model_arch: _LazyRegisteredModel( - module_name=f"fastvideo.v1.models.{component_name}.{mod_relname}", + module_name=f"fastvideo.models.{component_name}.{mod_relname}", component_name=component_name, class_name=cls_name, ) diff --git a/fastvideo/v1/models/schedulers/scheduling_flow_match_euler_discrete.py b/fastvideo/v1/models/schedulers/scheduling_flow_match_euler_discrete.py index b7792c9ad..a1c4d3e27 100644 --- a/fastvideo/v1/models/schedulers/scheduling_flow_match_euler_discrete.py +++ b/fastvideo/v1/models/schedulers/scheduling_flow_match_euler_discrete.py @@ -29,8 +29,8 @@ from diffusers.configuration_utils import ConfigMixin, register_to_config from diffusers.schedulers.scheduling_utils import SchedulerMixin from diffusers.utils import BaseOutput -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.schedulers.base import BaseScheduler +from fastvideo.logger import init_logger +from fastvideo.models.schedulers.base import BaseScheduler logger = init_logger(__name__) diff --git a/fastvideo/v1/models/schedulers/scheduling_flow_unipc_multistep.py b/fastvideo/v1/models/schedulers/scheduling_flow_unipc_multistep.py index 40f86b634..945ffd132 100644 --- a/fastvideo/v1/models/schedulers/scheduling_flow_unipc_multistep.py +++ b/fastvideo/v1/models/schedulers/scheduling_flow_unipc_multistep.py @@ -14,7 +14,7 @@ from diffusers.schedulers.scheduling_utils import (KarrasDiffusionSchedulers, SchedulerOutput) from diffusers.utils import deprecate -from fastvideo.v1.models.schedulers.base import BaseScheduler +from fastvideo.models.schedulers.base import BaseScheduler class FlowUniPCMultistepScheduler(SchedulerMixin, ConfigMixin, BaseScheduler): diff --git a/fastvideo/v1/models/schedulers/scheduling_unipc_multistep.py b/fastvideo/v1/models/schedulers/scheduling_unipc_multistep.py index 2c06ef66c..800188111 100644 --- a/fastvideo/v1/models/schedulers/scheduling_unipc_multistep.py +++ b/fastvideo/v1/models/schedulers/scheduling_unipc_multistep.py @@ -33,7 +33,7 @@ from diffusers.schedulers.scheduling_utils import (KarrasDiffusionSchedulers, SchedulerOutput) from diffusers.utils import deprecate -from fastvideo.v1.models.schedulers.base import BaseScheduler +from fastvideo.models.schedulers.base import BaseScheduler # Copied from diffusers.schedulers.scheduling_ddpm.betas_for_alpha_bar diff --git a/fastvideo/v1/models/utils.py b/fastvideo/v1/models/utils.py index a336b8de8..36233720b 100644 --- a/fastvideo/v1/models/utils.py +++ b/fastvideo/v1/models/utils.py @@ -79,7 +79,7 @@ def set_weight_attrs( # This sometimes causes OOM errors during model loading. To avoid this, # we sync the param tensor after its weight loader is called. # TODO(woosuk): Remove this hack once we have a better solution. - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform if current_platform.is_tpu() and key == "weight_loader": value = _make_synced_weight_loader(value) setattr(weight, key, value) diff --git a/fastvideo/v1/models/vaes/common.py b/fastvideo/v1/models/vaes/common.py index 6975a5b38..9730c8ff8 100644 --- a/fastvideo/v1/models/vaes/common.py +++ b/fastvideo/v1/models/vaes/common.py @@ -10,8 +10,8 @@ import torch import torch.distributed as dist from diffusers.utils.torch_utils import randn_tensor -from fastvideo.v1.configs.models import VAEConfig -from fastvideo.v1.distributed import get_sp_parallel_rank, get_sp_world_size +from fastvideo.configs.models import VAEConfig +from fastvideo.distributed import get_sp_parallel_rank, get_sp_world_size class ParallelTiledVAE(ABC): diff --git a/fastvideo/v1/models/vaes/hunyuanvae.py b/fastvideo/v1/models/vaes/hunyuanvae.py index 0e1330146..d0f614ea3 100644 --- a/fastvideo/v1/models/vaes/hunyuanvae.py +++ b/fastvideo/v1/models/vaes/hunyuanvae.py @@ -20,9 +20,9 @@ import torch import torch.nn as nn import torch.nn.functional as F -from fastvideo.v1.configs.models.vaes import HunyuanVAEConfig -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.models.vaes.common import ParallelTiledVAE +from fastvideo.configs.models.vaes import HunyuanVAEConfig +from fastvideo.layers.activation import get_act_fn +from fastvideo.models.vaes.common import ParallelTiledVAE def prepare_causal_attention_mask( diff --git a/fastvideo/v1/models/vaes/stepvideovae.py b/fastvideo/v1/models/vaes/stepvideovae.py index 15d50d9eb..28354ec7c 100644 --- a/fastvideo/v1/models/vaes/stepvideovae.py +++ b/fastvideo/v1/models/vaes/stepvideovae.py @@ -18,8 +18,8 @@ from einops import rearrange from torch import nn from torch.nn import functional as F -from fastvideo.v1.configs.models.vaes import StepVideoVAEConfig -from fastvideo.v1.models.vaes.common import ParallelTiledVAE +from fastvideo.configs.models.vaes import StepVideoVAEConfig +from fastvideo.models.vaes.common import ParallelTiledVAE def base_group_norm(x, diff --git a/fastvideo/v1/models/vaes/wanvae.py b/fastvideo/v1/models/vaes/wanvae.py index 909b4390a..5dedf01af 100644 --- a/fastvideo/v1/models/vaes/wanvae.py +++ b/fastvideo/v1/models/vaes/wanvae.py @@ -21,11 +21,11 @@ import torch import torch.nn as nn import torch.nn.functional as F -from fastvideo.v1.configs.models.vaes import WanVAEConfig -from fastvideo.v1.layers.activation import get_act_fn -from fastvideo.v1.models.vaes.common import (DiagonalGaussianDistribution, - ParallelTiledVAE) -from fastvideo.v1.platforms import current_platform +from fastvideo.configs.models.vaes import WanVAEConfig +from fastvideo.layers.activation import get_act_fn +from fastvideo.models.vaes.common import (DiagonalGaussianDistribution, + ParallelTiledVAE) +from fastvideo.platforms import current_platform CACHE_T = 2 diff --git a/fastvideo/v1/pipelines/__init__.py b/fastvideo/v1/pipelines/__init__.py index 4a78dec0f..f6ab43463 100644 --- a/fastvideo/v1/pipelines/__init__.py +++ b/fastvideo/v1/pipelines/__init__.py @@ -1,21 +1,20 @@ # SPDX-License-Identifier: Apache-2.0 """ -Diffusion pipelines for fastvideo.v1. +Diffusion pipelines for fastvideo. This package contains diffusion pipelines for generating videos and images. """ from typing import cast -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.lora_pipeline import LoRAPipeline -from fastvideo.v1.pipelines.pipeline_batch_info import (ForwardBatch, - TrainingBatch) -from fastvideo.v1.pipelines.pipeline_registry import PipelineRegistry -from fastvideo.v1.utils import (maybe_download_model, - verify_model_config_and_directory) +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.lora_pipeline import LoRAPipeline +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch, TrainingBatch +from fastvideo.pipelines.pipeline_registry import PipelineRegistry +from fastvideo.utils import (maybe_download_model, + verify_model_config_and_directory) logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/composed_pipeline_base.py b/fastvideo/v1/pipelines/composed_pipeline_base.py index 94cbe15d4..89caedc44 100644 --- a/fastvideo/v1/pipelines/composed_pipeline_base.py +++ b/fastvideo/v1/pipelines/composed_pipeline_base.py @@ -12,16 +12,16 @@ from typing import Any, cast import torch -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.distributed import ( +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.distributed import ( maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import PipelineComponentLoader -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages import PipelineStage -from fastvideo.v1.utils import (maybe_download_model, - verify_model_config_and_directory) +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import PipelineComponentLoader +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages import PipelineStage +from fastvideo.utils import (maybe_download_model, + verify_model_config_and_directory) logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/hunyuan/hunyuan_pipeline.py b/fastvideo/v1/pipelines/hunyuan/hunyuan_pipeline.py index 3414c26a0..0b94fa5bf 100644 --- a/fastvideo/v1/pipelines/hunyuan/hunyuan_pipeline.py +++ b/fastvideo/v1/pipelines/hunyuan/hunyuan_pipeline.py @@ -6,14 +6,14 @@ This module contains an implementation of the Hunyuan video diffusion pipeline using the modular pipeline architecture. """ -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.stages import (ConditioningStage, DecodingStage, - DenoisingStage, InputValidationStage, - LatentPreparationStage, - TextEncodingStage, - TimestepPreparationStage) +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.stages import (ConditioningStage, DecodingStage, + DenoisingStage, InputValidationStage, + LatentPreparationStage, + TextEncodingStage, + TimestepPreparationStage) # TODO(will): move PRECISION_TO_TYPE to better place diff --git a/fastvideo/v1/pipelines/lora_pipeline.py b/fastvideo/v1/pipelines/lora_pipeline.py index ff3ae84fb..58c04f44b 100644 --- a/fastvideo/v1/pipelines/lora_pipeline.py +++ b/fastvideo/v1/pipelines/lora_pipeline.py @@ -10,14 +10,14 @@ from safetensors.torch import load_file from torch.distributed.device_mesh import init_device_mesh from torch.distributed.tensor import DTensor -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.layers.lora.linear import (BaseLayerWithLoRA, get_lora_layer, - replace_submodule) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.utils import get_param_names_mapping -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.utils import maybe_download_lora +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.layers.lora.linear import (BaseLayerWithLoRA, get_lora_layer, + replace_submodule) +from fastvideo.logger import init_logger +from fastvideo.models.loader.utils import get_param_names_mapping +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.utils import maybe_download_lora logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/pipeline_batch_info.py b/fastvideo/v1/pipelines/pipeline_batch_info.py index d9a01df87..4bcd1e967 100644 --- a/fastvideo/v1/pipelines/pipeline_batch_info.py +++ b/fastvideo/v1/pipelines/pipeline_batch_info.py @@ -14,9 +14,8 @@ from typing import Any import PIL.Image import torch -from fastvideo.v1.attention import AttentionMetadata -from fastvideo.v1.configs.sample.teacache import (TeaCacheParams, - WanTeaCacheParams) +from fastvideo.attention import AttentionMetadata +from fastvideo.configs.sample.teacache import TeaCacheParams, WanTeaCacheParams @dataclass diff --git a/fastvideo/v1/pipelines/pipeline_registry.py b/fastvideo/v1/pipelines/pipeline_registry.py index af06d460a..a51e0d2eb 100644 --- a/fastvideo/v1/pipelines/pipeline_registry.py +++ b/fastvideo/v1/pipelines/pipeline_registry.py @@ -8,9 +8,9 @@ from collections.abc import Set from dataclasses import dataclass, field from functools import lru_cache -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.lora_pipeline import LoRAPipeline +from fastvideo.logger import init_logger +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.lora_pipeline import LoRAPipeline logger = init_logger(__name__) @@ -51,7 +51,7 @@ class _PipelineRegistry: @lru_cache def import_pipeline_classes(): pipeline_arch_name_to_cls = {} - package_name = "fastvideo.v1.pipelines" + package_name = "fastvideo.pipelines" package = importlib.import_module(package_name) for _, name, ispkg in pkgutil.iter_modules(package.__path__, package_name + "."): diff --git a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_base.py b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_base.py index 78538b747..004cdeffd 100644 --- a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_base.py +++ b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_base.py @@ -11,14 +11,14 @@ import torch from torch.utils.data import DataLoader from tqdm import tqdm -from fastvideo.v1.dataset import getdataset -from fastvideo.v1.dataset.preprocessing_datasets import PreprocessBatch -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages import TextEncodingStage +from fastvideo.dataset import getdataset +from fastvideo.dataset.preprocessing_datasets import PreprocessBatch +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages import TextEncodingStage logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_i2v.py b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_i2v.py index 1f2ffa702..98ece8a3d 100644 --- a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_i2v.py +++ b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_i2v.py @@ -11,13 +11,13 @@ import numpy as np import torch from PIL import Image -from fastvideo.v1.dataset.dataloader.schema import pyarrow_schema_i2v -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.pipelines.preprocess.preprocess_pipeline_base import ( +from fastvideo.dataset.dataloader.schema import pyarrow_schema_i2v +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.pipelines.preprocess.preprocess_pipeline_base import ( BasePreprocessPipeline) -from fastvideo.v1.pipelines.stages import ImageEncodingStage, TextEncodingStage +from fastvideo.pipelines.stages import ImageEncodingStage, TextEncodingStage class PreprocessPipeline_I2V(BasePreprocessPipeline): diff --git a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_t2v.py b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_t2v.py index ff924a3d3..e39346e6e 100644 --- a/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_t2v.py +++ b/fastvideo/v1/pipelines/preprocess/preprocess_pipeline_t2v.py @@ -5,8 +5,8 @@ T2V Data Preprocessing pipeline implementation. This module contains an implementation of the T2V Data Preprocessing pipeline using the modular pipeline architecture. """ -from fastvideo.v1.dataset.dataloader.schema import pyarrow_schema_t2v -from fastvideo.v1.pipelines.preprocess.preprocess_pipeline_base import ( +from fastvideo.dataset.dataloader.schema import pyarrow_schema_t2v +from fastvideo.pipelines.preprocess.preprocess_pipeline_base import ( BasePreprocessPipeline) diff --git a/fastvideo/v1/pipelines/preprocess/v1_preprocess.py b/fastvideo/v1/pipelines/preprocess/v1_preprocess.py index cfab752ca..b0465fd56 100644 --- a/fastvideo/v1/pipelines/preprocess/v1_preprocess.py +++ b/fastvideo/v1/pipelines/preprocess/v1_preprocess.py @@ -2,16 +2,16 @@ import argparse import os from fastvideo import PipelineConfig -from fastvideo.v1.configs.models.vaes import WanVAEConfig -from fastvideo.v1.distributed import ( +from fastvideo.configs.models.vaes import WanVAEConfig +from fastvideo.distributed import ( get_world_size, maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.preprocess.preprocess_pipeline_i2v import ( +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.preprocess.preprocess_pipeline_i2v import ( PreprocessPipeline_I2V) -from fastvideo.v1.pipelines.preprocess.preprocess_pipeline_t2v import ( +from fastvideo.pipelines.preprocess.preprocess_pipeline_t2v import ( PreprocessPipeline_T2V) -from fastvideo.v1.utils import maybe_download_model +from fastvideo.utils import maybe_download_model logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/__init__.py b/fastvideo/v1/pipelines/stages/__init__.py index af94f505f..0a7845c01 100644 --- a/fastvideo/v1/pipelines/stages/__init__.py +++ b/fastvideo/v1/pipelines/stages/__init__.py @@ -6,20 +6,19 @@ This package contains the various stages that can be composed to create complete diffusion pipelines. """ -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.conditioning import ConditioningStage -from fastvideo.v1.pipelines.stages.decoding import DecodingStage -from fastvideo.v1.pipelines.stages.denoising import (DenoisingStage, - DmdDenoisingStage) -from fastvideo.v1.pipelines.stages.encoding import EncodingStage -from fastvideo.v1.pipelines.stages.image_encoding import ImageEncodingStage -from fastvideo.v1.pipelines.stages.input_validation import InputValidationStage -from fastvideo.v1.pipelines.stages.latent_preparation import ( - LatentPreparationStage) -from fastvideo.v1.pipelines.stages.stepvideo_encoding import ( +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.conditioning import ConditioningStage +from fastvideo.pipelines.stages.decoding import DecodingStage +from fastvideo.pipelines.stages.denoising import (DenoisingStage, + DmdDenoisingStage) +from fastvideo.pipelines.stages.encoding import EncodingStage +from fastvideo.pipelines.stages.image_encoding import ImageEncodingStage +from fastvideo.pipelines.stages.input_validation import InputValidationStage +from fastvideo.pipelines.stages.latent_preparation import LatentPreparationStage +from fastvideo.pipelines.stages.stepvideo_encoding import ( StepvideoPromptEncodingStage) -from fastvideo.v1.pipelines.stages.text_encoding import TextEncodingStage -from fastvideo.v1.pipelines.stages.timestep_preparation import ( +from fastvideo.pipelines.stages.text_encoding import TextEncodingStage +from fastvideo.pipelines.stages.timestep_preparation import ( TimestepPreparationStage) __all__ = [ diff --git a/fastvideo/v1/pipelines/stages/base.py b/fastvideo/v1/pipelines/stages/base.py index 6f54ef4bb..43e6c9ac5 100644 --- a/fastvideo/v1/pipelines/stages/base.py +++ b/fastvideo/v1/pipelines/stages/base.py @@ -12,10 +12,10 @@ from abc import ABC, abstractmethod import torch -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) @@ -40,7 +40,7 @@ class PipelineStage(ABC): Verify the input for the stage. Example: - from fastvideo.v1.pipelines.stages.validators import V, VerificationResult + from fastvideo.pipelines.stages.validators import V, VerificationResult def verify_input(self, batch, fastvideo_args): result = VerificationResult() diff --git a/fastvideo/v1/pipelines/stages/conditioning.py b/fastvideo/v1/pipelines/stages/conditioning.py index cbed69d7a..3eda6a123 100644 --- a/fastvideo/v1/pipelines/stages/conditioning.py +++ b/fastvideo/v1/pipelines/stages/conditioning.py @@ -5,12 +5,12 @@ Conditioning stage for diffusion pipelines. import torch -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/decoding.py b/fastvideo/v1/pipelines/stages/decoding.py index 7ccde3102..44de981d4 100644 --- a/fastvideo/v1/pipelines/stages/decoding.py +++ b/fastvideo/v1/pipelines/stages/decoding.py @@ -8,16 +8,16 @@ import weakref import torch -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import VAELoader -from fastvideo.v1.models.vaes.common import ParallelTiledVAE -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult -from fastvideo.v1.utils import PRECISION_TO_TYPE +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import VAELoader +from fastvideo.models.vaes.common import ParallelTiledVAE +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult +from fastvideo.utils import PRECISION_TO_TYPE logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/denoising.py b/fastvideo/v1/pipelines/stages/denoising.py index 07a4aad15..88f91a5f5 100644 --- a/fastvideo/v1/pipelines/stages/denoising.py +++ b/fastvideo/v1/pipelines/stages/denoising.py @@ -13,35 +13,34 @@ import torch from einops import rearrange from tqdm.auto import tqdm -from fastvideo.v1.attention import get_attn_backend -from fastvideo.v1.configs.pipelines.base import STA_Mode -from fastvideo.v1.distributed import (get_local_torch_device, - get_sp_parallel_rank, get_sp_world_size, - get_world_group) -from fastvideo.v1.distributed.communication_op import ( +from fastvideo.attention import get_attn_backend +from fastvideo.configs.pipelines.base import STA_Mode +from fastvideo.distributed import (get_local_torch_device, get_sp_parallel_rank, + get_sp_world_size, get_world_group) +from fastvideo.distributed.communication_op import ( sequence_model_parallel_all_gather) -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import TransformerLoader -from fastvideo.v1.models.schedulers.scheduling_flow_match_euler_discrete import ( +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import TransformerLoader +from fastvideo.models.schedulers.scheduling_flow_match_euler_discrete import ( FlowMatchEulerDiscreteScheduler) -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult -from fastvideo.v1.platforms import AttentionBackendEnum -from fastvideo.v1.utils import dict_to_3d_list +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult +from fastvideo.platforms import AttentionBackendEnum +from fastvideo.utils import dict_to_3d_list try: - from fastvideo.v1.attention.backends.sliding_tile_attn import ( + from fastvideo.attention.backends.sliding_tile_attn import ( SlidingTileAttentionBackend) st_attn_available = True except ImportError: st_attn_available = False try: - from fastvideo.v1.attention.backends.video_sparse_attn import ( + from fastvideo.attention.backends.video_sparse_attn import ( VideoSparseAttentionBackend) vsa_available = True except ImportError: @@ -407,7 +406,7 @@ class DenoisingStage(PipelineStage): fastvideo_args: The inference arguments. """ # TODO(kevin): STA mask search, currently only support Wan2.1 with 69x768x1280 - from fastvideo.v1.STA_configuration import configure_sta + from fastvideo.STA_configuration import configure_sta STA_mode = fastvideo_args.STA_mode skip_time_steps = fastvideo_args.skip_time_steps if batch.timesteps is None: @@ -482,7 +481,7 @@ class DenoisingStage(PipelineStage): save_dir=f'output/mask_search_strategy_{size[0]}x{size[1]}/', timesteps=timesteps_num) elif STA_mode == STA_Mode.STA_INFERENCE: - import fastvideo.v1.envs as envs + import fastvideo.envs as envs config_file = envs.FASTVIDEO_ATTENTION_CONFIG if config_file is None: raise ValueError("FASTVIDEO_ATTENTION_CONFIG is not set") @@ -514,7 +513,7 @@ class DenoisingStage(PipelineStage): raise NotImplementedError( "STA mask search is not supported for this resolution") - from fastvideo.v1.STA_configuration import save_mask_search_results + from fastvideo.STA_configuration import save_mask_search_results if batch.mask_search_final_result_pos is not None and batch.prompt is not None: save_mask_search_results( [ @@ -748,7 +747,7 @@ class DmdDenoisingStage(DenoisingStage): **pos_cond_kwargs, ).permute(0, 2, 1, 3, 4) - from fastvideo.v1.training.training_utils import ( + from fastvideo.training.training_utils import ( pred_noise_to_pred_video) pred_video = pred_noise_to_pred_video( pred_noise=pred_noise.flatten(0, 1), diff --git a/fastvideo/v1/pipelines/stages/encoding.py b/fastvideo/v1/pipelines/stages/encoding.py index 8c9ab6193..54c20bce7 100644 --- a/fastvideo/v1/pipelines/stages/encoding.py +++ b/fastvideo/v1/pipelines/stages/encoding.py @@ -6,18 +6,17 @@ Encoding stage for diffusion pipelines. import PIL.Image import torch -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.vaes.common import ParallelTiledVAE -from fastvideo.v1.models.vision_utils import (get_default_height_width, - normalize, numpy_to_pt, - pil_to_numpy, resize) -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import V # Import validators -from fastvideo.v1.pipelines.stages.validators import VerificationResult -from fastvideo.v1.utils import PRECISION_TO_TYPE +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.vaes.common import ParallelTiledVAE +from fastvideo.models.vision_utils import (get_default_height_width, normalize, + numpy_to_pt, pil_to_numpy, resize) +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import V # Import validators +from fastvideo.pipelines.stages.validators import VerificationResult +from fastvideo.utils import PRECISION_TO_TYPE logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/image_encoding.py b/fastvideo/v1/pipelines/stages/image_encoding.py index c98bd9b2e..fa7991e83 100644 --- a/fastvideo/v1/pipelines/stages/image_encoding.py +++ b/fastvideo/v1/pipelines/stages/image_encoding.py @@ -7,14 +7,14 @@ This module contains implementations of image encoding stages for diffusion pipe import torch -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/input_validation.py b/fastvideo/v1/pipelines/stages/input_validation.py index 31127d06e..466ece75c 100644 --- a/fastvideo/v1/pipelines/stages/input_validation.py +++ b/fastvideo/v1/pipelines/stages/input_validation.py @@ -5,13 +5,13 @@ Input validation stage for diffusion pipelines. import torch -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.vision_utils import load_image, load_video -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import (StageValidators, - VerificationResult) +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.vision_utils import load_image, load_video +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import (StageValidators, + VerificationResult) logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/latent_preparation.py b/fastvideo/v1/pipelines/stages/latent_preparation.py index 2142edc4e..e4f6c0448 100644 --- a/fastvideo/v1/pipelines/stages/latent_preparation.py +++ b/fastvideo/v1/pipelines/stages/latent_preparation.py @@ -5,13 +5,13 @@ Latent preparation stage for diffusion pipelines. from diffusers.utils.torch_utils import randn_tensor -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/stepvideo_encoding.py b/fastvideo/v1/pipelines/stages/stepvideo_encoding.py index 93a2f07f5..3705f4516 100644 --- a/fastvideo/v1/pipelines/stages/stepvideo_encoding.py +++ b/fastvideo/v1/pipelines/stages/stepvideo_encoding.py @@ -2,13 +2,13 @@ import torch -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/text_encoding.py b/fastvideo/v1/pipelines/stages/text_encoding.py index 03c217e2c..5a25236da 100644 --- a/fastvideo/v1/pipelines/stages/text_encoding.py +++ b/fastvideo/v1/pipelines/stages/text_encoding.py @@ -7,14 +7,14 @@ This module contains implementations of prompt encoding stages for diffusion pip import torch -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stages/timestep_preparation.py b/fastvideo/v1/pipelines/stages/timestep_preparation.py index 475a0ef31..546810256 100644 --- a/fastvideo/v1/pipelines/stages/timestep_preparation.py +++ b/fastvideo/v1/pipelines/stages/timestep_preparation.py @@ -7,13 +7,13 @@ This module contains implementations of timestep preparation stages for diffusio import inspect -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.pipelines.stages.base import PipelineStage -from fastvideo.v1.pipelines.stages.validators import StageValidators as V -from fastvideo.v1.pipelines.stages.validators import VerificationResult +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.stages.base import PipelineStage +from fastvideo.pipelines.stages.validators import StageValidators as V +from fastvideo.pipelines.stages.validators import VerificationResult logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/stepvideo/stepvideo_pipeline.py b/fastvideo/v1/pipelines/stepvideo/stepvideo_pipeline.py index 7501dc226..49cb91c1b 100644 --- a/fastvideo/v1/pipelines/stepvideo/stepvideo_pipeline.py +++ b/fastvideo/v1/pipelines/stepvideo/stepvideo_pipeline.py @@ -14,19 +14,19 @@ from typing import Any import torch from huggingface_hub import hf_hub_download -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.encoders.bert import HunyuanClip # type: ignore -from fastvideo.v1.models.encoders.stepllm import STEP1TextEncoder -from fastvideo.v1.models.loader.component_loader import PipelineComponentLoader -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.lora_pipeline import LoRAPipeline -from fastvideo.v1.pipelines.stages import (DecodingStage, DenoisingStage, - InputValidationStage, - LatentPreparationStage, - StepvideoPromptEncodingStage, - TimestepPreparationStage) +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.encoders.bert import HunyuanClip # type: ignore +from fastvideo.models.encoders.stepllm import STEP1TextEncoder +from fastvideo.models.loader.component_loader import PipelineComponentLoader +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.lora_pipeline import LoRAPipeline +from fastvideo.pipelines.stages import (DecodingStage, DenoisingStage, + InputValidationStage, + LatentPreparationStage, + StepvideoPromptEncodingStage, + TimestepPreparationStage) logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/wan/wan_dmd_pipeline.py b/fastvideo/v1/pipelines/wan/wan_dmd_pipeline.py index 79cc4bda3..81ece4609 100644 --- a/fastvideo/v1/pipelines/wan/wan_dmd_pipeline.py +++ b/fastvideo/v1/pipelines/wan/wan_dmd_pipeline.py @@ -6,16 +6,18 @@ This module contains an implementation of the Wan video diffusion pipeline using the modular pipeline architecture. """ -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.schedulers.scheduling_flow_match_euler_discrete import ( +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.schedulers.scheduling_flow_match_euler_discrete import ( FlowMatchEulerDiscreteScheduler) -from fastvideo.v1.pipelines import ComposedPipelineBase, LoRAPipeline +from fastvideo.pipelines import ComposedPipelineBase, LoRAPipeline # isort: off -from fastvideo.v1.pipelines.stages import ( - ConditioningStage, DecodingStage, DmdDenoisingStage, InputValidationStage, - LatentPreparationStage, TextEncodingStage, TimestepPreparationStage) +from fastvideo.pipelines.stages import (ConditioningStage, DecodingStage, + DmdDenoisingStage, InputValidationStage, + LatentPreparationStage, + TextEncodingStage, + TimestepPreparationStage) # isort: on logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/wan/wan_i2v_pipeline.py b/fastvideo/v1/pipelines/wan/wan_i2v_pipeline.py index 7344b11f7..29c6824aa 100644 --- a/fastvideo/v1/pipelines/wan/wan_i2v_pipeline.py +++ b/fastvideo/v1/pipelines/wan/wan_i2v_pipeline.py @@ -6,18 +6,20 @@ This module contains an implementation of the Wan video diffusion pipeline using the modular pipeline architecture. """ -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.composed_pipeline_base import ComposedPipelineBase -from fastvideo.v1.pipelines.lora_pipeline import LoRAPipeline +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.composed_pipeline_base import ComposedPipelineBase +from fastvideo.pipelines.lora_pipeline import LoRAPipeline # isort: off -from fastvideo.v1.pipelines.stages import ( - ImageEncodingStage, ConditioningStage, DecodingStage, DenoisingStage, - EncodingStage, InputValidationStage, LatentPreparationStage, - TextEncodingStage, TimestepPreparationStage) +from fastvideo.pipelines.stages import (ImageEncodingStage, ConditioningStage, + DecodingStage, DenoisingStage, + EncodingStage, InputValidationStage, + LatentPreparationStage, + TextEncodingStage, + TimestepPreparationStage) # isort: on -from fastvideo.v1.models.schedulers.scheduling_flow_unipc_multistep import ( +from fastvideo.models.schedulers.scheduling_flow_unipc_multistep import ( FlowUniPCMultistepScheduler) logger = init_logger(__name__) diff --git a/fastvideo/v1/pipelines/wan/wan_pipeline.py b/fastvideo/v1/pipelines/wan/wan_pipeline.py index f95e16758..8574c2d29 100644 --- a/fastvideo/v1/pipelines/wan/wan_pipeline.py +++ b/fastvideo/v1/pipelines/wan/wan_pipeline.py @@ -6,16 +6,16 @@ This module contains an implementation of the Wan video diffusion pipeline using the modular pipeline architecture. """ -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.schedulers.scheduling_flow_unipc_multistep import ( +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.schedulers.scheduling_flow_unipc_multistep import ( FlowUniPCMultistepScheduler) -from fastvideo.v1.pipelines import ComposedPipelineBase, LoRAPipeline -from fastvideo.v1.pipelines.stages import (ConditioningStage, DecodingStage, - DenoisingStage, InputValidationStage, - LatentPreparationStage, - TextEncodingStage, - TimestepPreparationStage) +from fastvideo.pipelines import ComposedPipelineBase, LoRAPipeline +from fastvideo.pipelines.stages import (ConditioningStage, DecodingStage, + DenoisingStage, InputValidationStage, + LatentPreparationStage, + TextEncodingStage, + TimestepPreparationStage) logger = init_logger(__name__) diff --git a/fastvideo/v1/platforms/__init__.py b/fastvideo/v1/platforms/__init__.py index f8176ad6b..455e2f6c8 100644 --- a/fastvideo/v1/platforms/__init__.py +++ b/fastvideo/v1/platforms/__init__.py @@ -4,11 +4,11 @@ import traceback from typing import TYPE_CHECKING -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger # imported by other files, do not remove -from fastvideo.v1.platforms.interface import AttentionBackendEnum # noqa: F401 -from fastvideo.v1.platforms.interface import Platform, PlatformEnum -from fastvideo.v1.utils import resolve_obj_by_qualname +from fastvideo.platforms.interface import AttentionBackendEnum # noqa: F401 +from fastvideo.platforms.interface import Platform, PlatformEnum +from fastvideo.utils import resolve_obj_by_qualname logger = init_logger(__name__) @@ -17,7 +17,7 @@ def cuda_platform_plugin() -> str | None: is_cuda = False try: - from fastvideo.v1.utils import import_pynvml + from fastvideo.utils import import_pynvml pynvml = import_pynvml() # type: ignore[no-untyped-call] pynvml.nvmlInit() try: @@ -44,7 +44,7 @@ def cuda_platform_plugin() -> str | None: if cuda_is_jetson(): is_cuda = True - return "fastvideo.v1.platforms.cuda.CudaPlatform" if is_cuda else None + return "fastvideo.platforms.cuda.CudaPlatform" if is_cuda else None def mps_platform_plugin() -> str | None: @@ -61,13 +61,13 @@ def mps_platform_plugin() -> str | None: except Exception as e: logger.info("MPS detection failed: %s", e) - return "fastvideo.v1.platforms.mps.MpsPlatform" if is_mps else None + return "fastvideo.platforms.mps.MpsPlatform" if is_mps else None def cpu_platform_plugin() -> str | None: """Detect if CPU platform should be used.""" # CPU is always available as a fallback - return "fastvideo.v1.platforms.cpu.CpuPlatform" + return "fastvideo.platforms.cpu.CpuPlatform" builtin_platform_plugins = { diff --git a/fastvideo/v1/platforms/cpu.py b/fastvideo/v1/platforms/cpu.py index dac291f93..3aad6ff34 100644 --- a/fastvideo/v1/platforms/cpu.py +++ b/fastvideo/v1/platforms/cpu.py @@ -5,7 +5,7 @@ import platform import torch -from fastvideo.v1.platforms.interface import CpuArchEnum, Platform, PlatformEnum +from fastvideo.platforms.interface import CpuArchEnum, Platform, PlatformEnum class CpuPlatform(Platform): @@ -13,8 +13,6 @@ class CpuPlatform(Platform): device_name = "CPU" device_type = "cpu" dispatch_key = "CPU" - simple_compile_backend = "inductor" - supported_quantization = [] @classmethod def get_cpu_architecture(cls) -> CpuArchEnum: @@ -54,4 +52,4 @@ class CpuPlatform(Platform): @classmethod def get_device_communicator_cls(cls) -> str: - return "fastvideo.v1.distributed.device_communicators.cpu_communicator.CpuCommunicator" + return "fastvideo.distributed.device_communicators.cpu_communicator.CpuCommunicator" diff --git a/fastvideo/v1/platforms/cuda.py b/fastvideo/v1/platforms/cuda.py index 9d0c3cab9..20ca613fb 100644 --- a/fastvideo/v1/platforms/cuda.py +++ b/fastvideo/v1/platforms/cuda.py @@ -12,12 +12,12 @@ from typing import TypeVar import torch from typing_extensions import ParamSpec -import fastvideo.v1.envs as envs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.platforms.interface import (AttentionBackendEnum, - DeviceCapability, Platform, - PlatformEnum) -from fastvideo.v1.utils import import_pynvml +import fastvideo.envs as envs +from fastvideo.logger import init_logger +from fastvideo.platforms.interface import (AttentionBackendEnum, + DeviceCapability, Platform, + PlatformEnum) +from fastvideo.utils import import_pynvml logger = init_logger(__name__) @@ -119,11 +119,11 @@ class CudaPlatformBase(Platform): try: from st_attn import sliding_tile_attention # noqa: F401 - from fastvideo.v1.attention.backends.sliding_tile_attn import ( # noqa: F401 + from fastvideo.attention.backends.sliding_tile_attn import ( # noqa: F401 SlidingTileAttentionBackend) logger.info("Using Sliding Tile Attention backend.") - return "fastvideo.v1.attention.backends.sliding_tile_attn.SlidingTileAttentionBackend" + return "fastvideo.attention.backends.sliding_tile_attn.SlidingTileAttentionBackend" except ImportError as e: logger.error( "Failed to import Sliding Tile Attention backend: %s", @@ -134,11 +134,11 @@ class CudaPlatformBase(Platform): try: from sageattention import sageattn # noqa: F401 - from fastvideo.v1.attention.backends.sage_attn import ( # noqa: F401 + from fastvideo.attention.backends.sage_attn import ( # noqa: F401 SageAttentionBackend) logger.info("Using Sage Attention backend.") - return "fastvideo.v1.attention.backends.sage_attn.SageAttentionBackend" + return "fastvideo.attention.backends.sage_attn.SageAttentionBackend" except ImportError as e: logger.info(e) logger.info( @@ -148,11 +148,11 @@ class CudaPlatformBase(Platform): try: from vsa import block_sparse_attn # noqa: F401 - from fastvideo.v1.attention.backends.video_sparse_attn import ( # noqa: F401 + from fastvideo.attention.backends.video_sparse_attn import ( # noqa: F401 VideoSparseAttentionBackend) logger.info("Using Video Sparse Attention backend.") - return "fastvideo.v1.attention.backends.video_sparse_attn.VideoSparseAttentionBackend" + return "fastvideo.attention.backends.video_sparse_attn.VideoSparseAttentionBackend" except ImportError as e: logger.error( "Failed to import Video Sparse Attention backend: %s", @@ -161,7 +161,7 @@ class CudaPlatformBase(Platform): "Video Sparse Attention backend is not installed. ") from e elif selected_backend == AttentionBackendEnum.TORCH_SDPA: logger.info("Using Torch SDPA backend.") - return "fastvideo.v1.attention.backends.sdpa.SDPABackend" + return "fastvideo.attention.backends.sdpa.SDPABackend" elif selected_backend == AttentionBackendEnum.FLASH_ATTN or selected_backend is None: pass elif selected_backend: @@ -185,7 +185,7 @@ class CudaPlatformBase(Platform): try: import flash_attn # noqa: F401 - from fastvideo.v1.attention.backends.flash_attn import ( # noqa: F401 + from fastvideo.attention.backends.flash_attn import ( # noqa: F401 FlashAttentionBackend) supported_sizes = \ @@ -205,15 +205,15 @@ class CudaPlatformBase(Platform): if target_backend == AttentionBackendEnum.TORCH_SDPA: logger.info("Using Torch SDPA backend.") - return "fastvideo.v1.attention.backends.sdpa.SDPABackend" + return "fastvideo.attention.backends.sdpa.SDPABackend" logger.info("Using Flash Attention backend.") - return "fastvideo.v1.attention.backends.flash_attn.FlashAttentionBackend" + return "fastvideo.attention.backends.flash_attn.FlashAttentionBackend" @classmethod def get_device_communicator_cls(cls) -> str: - return "fastvideo.v1.distributed.device_communicators.cuda_communicator.CudaCommunicator" # noqa + return "fastvideo.distributed.device_communicators.cuda_communicator.CudaCommunicator" # noqa # NVML utils diff --git a/fastvideo/v1/platforms/interface.py b/fastvideo/v1/platforms/interface.py index d1cb2f5d1..da5a49894 100644 --- a/fastvideo/v1/platforms/interface.py +++ b/fastvideo/v1/platforms/interface.py @@ -8,7 +8,7 @@ from typing import NamedTuple import numpy as np import torch -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger logger = init_logger(__name__) @@ -217,7 +217,7 @@ class Platform: """ Get device specific communicator class for distributed communication. """ - return "fastvideo.v1.distributed.device_communicators.base_device_communicator.DeviceCommunicatorBase" # noqa + return "fastvideo.distributed.device_communicators.base_device_communicator.DeviceCommunicatorBase" # noqa @classmethod def get_cpu_architecture(cls) -> CpuArchEnum: diff --git a/fastvideo/v1/platforms/mps.py b/fastvideo/v1/platforms/mps.py index ae40f3efc..05870d619 100644 --- a/fastvideo/v1/platforms/mps.py +++ b/fastvideo/v1/platforms/mps.py @@ -2,10 +2,10 @@ import torch -from fastvideo.v1.logger import init_logger -from fastvideo.v1.platforms import AttentionBackendEnum -from fastvideo.v1.platforms.interface import (DeviceCapability, Platform, - PlatformEnum) +from fastvideo.logger import init_logger +from fastvideo.platforms import AttentionBackendEnum +from fastvideo.platforms.interface import (DeviceCapability, Platform, + PlatformEnum) logger = init_logger(__name__) @@ -55,12 +55,12 @@ class MpsPlatform(Platform): head_size: int, dtype: torch.dtype) -> str: # MPS supports SDPA (Scaled Dot-Product Attention) which is the most compatible logger.info("Using Torch SDPA backend for MPS.") - return "fastvideo.v1.attention.backends.sdpa.SDPABackend" + return "fastvideo.attention.backends.sdpa.SDPABackend" @classmethod def get_device_communicator_cls(cls) -> str: # Use base communicator for MPS - return "fastvideo.v1.distributed.device_communicators.base_device_communicator.DeviceCommunicatorBase" + return "fastvideo.distributed.device_communicators.base_device_communicator.DeviceCommunicatorBase" @classmethod def seed_everything(cls, seed: int | None = None) -> None: diff --git a/fastvideo/v1/tests/conftest.py b/fastvideo/v1/tests/conftest.py index c7547ad6b..35657b7c8 100644 --- a/fastvideo/v1/tests/conftest.py +++ b/fastvideo/v1/tests/conftest.py @@ -4,7 +4,7 @@ import pytest import torch import numpy as np -from fastvideo.v1.distributed import (maybe_init_distributed_environment_and_model_parallel, +from fastvideo.distributed import (maybe_init_distributed_environment_and_model_parallel, cleanup_dist_env_and_memory) diff --git a/fastvideo/v1/tests/encoders/test_clip_encoder.py b/fastvideo/v1/tests/encoders/test_clip_encoder.py index c9680a603..90d21b508 100644 --- a/fastvideo/v1/tests/encoders/test_clip_encoder.py +++ b/fastvideo/v1/tests/encoders/test_clip_encoder.py @@ -6,12 +6,12 @@ import pytest import torch from transformers import AutoConfig, AutoTokenizer, CLIPTextModel import gc -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.utils import maybe_download_model -from fastvideo.v1.configs.models.encoders import CLIPTextConfig +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.forward_context import set_forward_context +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.utils import maybe_download_model +from fastvideo.configs.models.encoders import CLIPTextConfig from torch.distributed.tensor import DTensor from torch.testing import assert_close @@ -33,7 +33,7 @@ def test_clip_encoder(): """ Tests compatibility between two different implementations for loading text encoders: 1. load_text_encoder from fastvideo.models.hunyuan.text_encoder - 2. TextEncoderLoader from fastvideo.v1.models.loader + 2. TextEncoderLoader from fastvideo.models.loader The test verifies that both implementations: - Load models with the same weights and parameters @@ -54,7 +54,7 @@ def test_clip_encoder(): # Load HuggingFace implementation model1 = CLIPTextModel.from_pretrained(TEXT_ENCODER_PATH).to(torch.float16).to(device).eval() - from fastvideo.v1.models.loader.component_loader import TextEncoderLoader + from fastvideo.models.loader.component_loader import TextEncoderLoader loader = TextEncoderLoader() model2 = loader.load(TEXT_ENCODER_PATH, args) diff --git a/fastvideo/v1/tests/encoders/test_llama_encoder.py b/fastvideo/v1/tests/encoders/test_llama_encoder.py index 668578484..0a7d220ce 100644 --- a/fastvideo/v1/tests/encoders/test_llama_encoder.py +++ b/fastvideo/v1/tests/encoders/test_llama_encoder.py @@ -6,13 +6,13 @@ import pytest import torch from transformers import AutoConfig, AutoTokenizer, LlamaModel import gc -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import TextEncoderLoader -from fastvideo.v1.utils import maybe_download_model -from fastvideo.v1.configs.models.encoders import LlamaConfig +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.forward_context import set_forward_context +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import TextEncoderLoader +from fastvideo.utils import maybe_download_model +from fastvideo.configs.models.encoders import LlamaConfig from torch.distributed.tensor import DTensor from torch.testing import assert_close logger = init_logger(__name__) @@ -33,7 +33,7 @@ def test_llama_encoder(): """ Tests compatibility between two different implementations for loading text encoders: 1. load_text_encoder from fastvideo.models.hunyuan.text_encoder - 2. TextEncoderLoader from fastvideo.v1.models.loader + 2. TextEncoderLoader from fastvideo.models.loader The test verifies that both implementations: - Load models with the same weights and parameters diff --git a/fastvideo/v1/tests/encoders/test_t5_encoder.py b/fastvideo/v1/tests/encoders/test_t5_encoder.py index e56a3e024..fa75d3691 100644 --- a/fastvideo/v1/tests/encoders/test_t5_encoder.py +++ b/fastvideo/v1/tests/encoders/test_t5_encoder.py @@ -8,13 +8,13 @@ from torch.distributed.tensor import DTensor from torch.testing import assert_close from transformers import AutoConfig, AutoTokenizer, UMT5EncoderModel -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import TextEncoderLoader -from fastvideo.v1.utils import maybe_download_model, PRECISION_TO_TYPE -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.configs.models.encoders import T5Config +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import TextEncoderLoader +from fastvideo.utils import maybe_download_model, PRECISION_TO_TYPE +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.configs.models.encoders import T5Config logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/inference/lora/test_lora_inference_similarity.py b/fastvideo/v1/tests/inference/lora/test_lora_inference_similarity.py index 935e14e94..ae4159ee2 100644 --- a/fastvideo/v1/tests/inference/lora/test_lora_inference_similarity.py +++ b/fastvideo/v1/tests/inference/lora/test_lora_inference_similarity.py @@ -5,15 +5,15 @@ import os import pytest from fastvideo import VideoGenerator -from fastvideo.v1.logger import init_logger -from fastvideo.v1.tests.utils import compute_video_ssim_torchvision, write_ssim_results +from fastvideo.logger import init_logger +from fastvideo.tests.utils import compute_video_ssim_torchvision, write_ssim_results from diffusers import DiffusionPipeline -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.pipelines import build_pipeline -from fastvideo.v1.models.loader.utils import hf_to_custom_state_dict, get_param_names_mapping +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.pipelines import build_pipeline +from fastvideo.models.loader.utils import hf_to_custom_state_dict, get_param_names_mapping from torch.testing import assert_close from torch.distributed.tensor import DTensor -from fastvideo.v1.worker import MultiprocExecutor +from fastvideo.worker import MultiprocExecutor import torch logger = init_logger(__name__) os.environ["MASTER_ADDR"] = "localhost" diff --git a/fastvideo/v1/tests/nightly/test_e2e_i2v_overfit_single_sample.py b/fastvideo/v1/tests/nightly/test_e2e_i2v_overfit_single_sample.py index 6b84d51e7..f7a47361d 100644 --- a/fastvideo/v1/tests/nightly/test_e2e_i2v_overfit_single_sample.py +++ b/fastvideo/v1/tests/nightly/test_e2e_i2v_overfit_single_sample.py @@ -4,7 +4,7 @@ from huggingface_hub import snapshot_download import shutil import subprocess import sys -from fastvideo.v1.tests.ssim.test_inference_similarity import compute_video_ssim_torchvision +from fastvideo.tests.ssim.test_inference_similarity import compute_video_ssim_torchvision # Import the training pipeline sys.path.append(str(Path(__file__).parent.parent.parent.parent.parent)) diff --git a/fastvideo/v1/tests/nightly/test_e2e_overfit_single_sample.py b/fastvideo/v1/tests/nightly/test_e2e_overfit_single_sample.py index f3fddc7ea..d52352ec4 100644 --- a/fastvideo/v1/tests/nightly/test_e2e_overfit_single_sample.py +++ b/fastvideo/v1/tests/nightly/test_e2e_overfit_single_sample.py @@ -4,7 +4,7 @@ from huggingface_hub import snapshot_download import shutil import subprocess import sys -from fastvideo.v1.tests.ssim.test_inference_similarity import compute_video_ssim_torchvision +from fastvideo.tests.ssim.test_inference_similarity import compute_video_ssim_torchvision # Import the training pipeline sys.path.append(str(Path(__file__).parent.parent.parent.parent.parent)) diff --git a/fastvideo/v1/tests/old_tests/test_t5_encoder.py b/fastvideo/v1/tests/old_tests/test_t5_encoder.py index 5e9a4bb4e..788010e2f 100644 --- a/fastvideo/v1/tests/old_tests/test_t5_encoder.py +++ b/fastvideo/v1/tests/old_tests/test_t5_encoder.py @@ -5,8 +5,8 @@ import numpy as np import torch from transformers import AutoConfig, AutoTokenizer, UMT5EncoderModel -from fastvideo.v1.distributed import (maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.logger import init_logger +from fastvideo.distributed import (maybe_init_distributed_environment_and_model_parallel) +from fastvideo.logger import init_logger logger = init_logger(__name__) @@ -43,7 +43,7 @@ def test_t5_encoder(): device).eval() tokenizer = AutoTokenizer.from_pretrained(tokenizer_path) - from fastvideo.v1.models.loader.component_loader import TextEncoderLoader + from fastvideo.models.loader.component_loader import TextEncoderLoader loader = TextEncoderLoader() model2 = loader.load_model(model_path, hf_config, device) diff --git a/fastvideo/v1/tests/old_tests/test_wan_vae.py b/fastvideo/v1/tests/old_tests/test_wan_vae.py index 0cf125c57..b35e24657 100644 --- a/fastvideo/v1/tests/old_tests/test_wan_vae.py +++ b/fastvideo/v1/tests/old_tests/test_wan_vae.py @@ -7,8 +7,8 @@ import torch from diffusers import AutoencoderKLWan from safetensors.torch import load_file -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.vaes.wanvae import AutoencoderKLWan as MyWanVAE +from fastvideo.logger import init_logger +from fastvideo.models.vaes.wanvae import AutoencoderKLWan as MyWanVAE logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/old_tests/tp_example.py b/fastvideo/v1/tests/old_tests/tp_example.py index 51a8d0b80..c66dc79eb 100644 --- a/fastvideo/v1/tests/old_tests/tp_example.py +++ b/fastvideo/v1/tests/old_tests/tp_example.py @@ -5,12 +5,12 @@ import os import torch import torch.nn as nn -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.distributed.parallel_state import ( cleanup_dist_env_and_memory, destroy_distributed_environment, destroy_model_parallel, get_tp_rank, get_tp_world_size, maybe_init_distributed_environment_and_model_parallel, get_world_group) -from fastvideo.v1.layers.linear import ColumnParallelLinear, RowParallelLinear -from fastvideo.v1.logger import init_logger +from fastvideo.layers.linear import ColumnParallelLinear, RowParallelLinear +from fastvideo.logger import init_logger logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/ssim/test_inference_similarity.py b/fastvideo/v1/tests/ssim/test_inference_similarity.py index b811c31dd..457a308dc 100644 --- a/fastvideo/v1/tests/ssim/test_inference_similarity.py +++ b/fastvideo/v1/tests/ssim/test_inference_similarity.py @@ -6,9 +6,9 @@ import torch import pytest from fastvideo import VideoGenerator -from fastvideo.v1.logger import init_logger -from fastvideo.v1.tests.utils import compute_video_ssim_torchvision, write_ssim_results -from fastvideo.v1.worker.multiproc_executor import MultiprocExecutor +from fastvideo.logger import init_logger +from fastvideo.tests.utils import compute_video_ssim_torchvision, write_ssim_results +from fastvideo.worker.multiproc_executor import MultiprocExecutor logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/training/VSA/test_training_loss_VSA.py b/fastvideo/v1/tests/training/VSA/test_training_loss_VSA.py index 6929e8bd6..c596a4663 100644 --- a/fastvideo/v1/tests/training/VSA/test_training_loss_VSA.py +++ b/fastvideo/v1/tests/training/VSA/test_training_loss_VSA.py @@ -7,9 +7,9 @@ from huggingface_hub import snapshot_download # Import the training pipeline sys.path.append(str(Path(__file__).parent.parent.parent.parent.parent)) -from fastvideo.v1.training.wan_training_pipeline import main -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.utils import FlexibleArgumentParser +from fastvideo.training.wan_training_pipeline import main +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.utils import FlexibleArgumentParser wandb_name = "test_training_loss_VSA" reference_wandb_summary_file = "fastvideo/tests/training/VSA/reference_wandb_summary_VSA.json" diff --git a/fastvideo/v1/tests/training/Vanilla/test_training_loss.py b/fastvideo/v1/tests/training/Vanilla/test_training_loss.py index 6ec6f2ebc..2b7572952 100644 --- a/fastvideo/v1/tests/training/Vanilla/test_training_loss.py +++ b/fastvideo/v1/tests/training/Vanilla/test_training_loss.py @@ -7,13 +7,13 @@ from pathlib import Path import torch import json from huggingface_hub import snapshot_download -from fastvideo.v1.utils import logger +from fastvideo.utils import logger # Import the training pipeline sys.path.append(str(Path(__file__).parent.parent.parent.parent.parent)) -from fastvideo.v1.training.wan_training_pipeline import main -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.utils import FlexibleArgumentParser -from fastvideo.v1.training.wan_training_pipeline import WanTrainingPipeline +from fastvideo.training.wan_training_pipeline import main +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.utils import FlexibleArgumentParser +from fastvideo.training.wan_training_pipeline import WanTrainingPipeline wandb_name = "test_training_loss" a40_reference_wandb_summary_file = "fastvideo/tests/training/Vanilla/a40_reference_wandb_summary.json" diff --git a/fastvideo/v1/tests/transformers/test_hunyuanvideo.py b/fastvideo/v1/tests/transformers/test_hunyuanvideo.py index 73eb39d47..def599a52 100644 --- a/fastvideo/v1/tests/transformers/test_hunyuanvideo.py +++ b/fastvideo/v1/tests/transformers/test_hunyuanvideo.py @@ -7,16 +7,16 @@ import pytest import torch import torch.nn as nn -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.distributed.parallel_state import ( get_sp_parallel_rank, get_sp_world_size) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.dits.hunyuanvideo import ( +from fastvideo.logger import init_logger +from fastvideo.models.dits.hunyuanvideo import ( HunyuanVideoTransformer3DModel as HunyuanVideoDit) -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.models.loader.fsdp_load import shard_model -from fastvideo.v1.forward_context import set_forward_context +from fastvideo.models.loader.fsdp_load import shard_model +from fastvideo.forward_context import set_forward_context logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/transformers/test_hunyuanvideo_load.py b/fastvideo/v1/tests/transformers/test_hunyuanvideo_load.py index f36342fa3..c0bfade23 100644 --- a/fastvideo/v1/tests/transformers/test_hunyuanvideo_load.py +++ b/fastvideo/v1/tests/transformers/test_hunyuanvideo_load.py @@ -6,17 +6,17 @@ import os import pytest import torch -from fastvideo.v1.configs.pipelines.base import PipelineConfig -from fastvideo.v1.distributed.parallel_state import ( +from fastvideo.configs.pipelines.base import PipelineConfig +from fastvideo.distributed.parallel_state import ( get_sp_parallel_rank, get_sp_world_size) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import TransformerLoader -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.utils import maybe_download_model -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.configs.models.dits import HunyuanVideoConfig -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import TransformerLoader +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.utils import maybe_download_model +from fastvideo.forward_context import set_forward_context +from fastvideo.configs.models.dits import HunyuanVideoConfig +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/transformers/test_wanvideo.py b/fastvideo/v1/tests/transformers/test_wanvideo.py index 403fd6e61..ab4fdd60a 100644 --- a/fastvideo/v1/tests/transformers/test_wanvideo.py +++ b/fastvideo/v1/tests/transformers/test_wanvideo.py @@ -6,14 +6,14 @@ import pytest import torch from diffusers import WanTransformer3DModel -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import TransformerLoader -from fastvideo.v1.utils import maybe_download_model -from fastvideo.v1.configs.models.dits import WanVideoConfig -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.forward_context import set_forward_context +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import TransformerLoader +from fastvideo.utils import maybe_download_model +from fastvideo.configs.models.dits import WanVideoConfig +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/utils.py b/fastvideo/v1/tests/utils.py index aa2f3b388..de887911c 100644 --- a/fastvideo/v1/tests/utils.py +++ b/fastvideo/v1/tests/utils.py @@ -2,7 +2,7 @@ import argparse import os import json -from fastvideo.v1.logger import init_logger +from fastvideo.logger import init_logger import numpy as np import torch diff --git a/fastvideo/v1/tests/vaes/test_hunyuan_vae.py b/fastvideo/v1/tests/vaes/test_hunyuan_vae.py index 2f6df0368..2dc914ec5 100644 --- a/fastvideo/v1/tests/vaes/test_hunyuan_vae.py +++ b/fastvideo/v1/tests/vaes/test_hunyuan_vae.py @@ -7,14 +7,14 @@ import pytest import torch from safetensors.torch import load_file -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.logger import init_logger -# from fastvideo.v1.models.vaes.hunyuanvae import ( +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.logger import init_logger +# from fastvideo.models.vaes.hunyuanvae import ( # AutoencoderKLHunyuanVideo as MyHunyuanVAE) -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.models.loader.component_loader import VAELoader -from fastvideo.v1.configs.models.vaes import HunyuanVAEConfig -from fastvideo.v1.utils import maybe_download_model +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.models.loader.component_loader import VAELoader +from fastvideo.configs.models.vaes import HunyuanVAEConfig +from fastvideo.utils import maybe_download_model logger = init_logger(__name__) diff --git a/fastvideo/v1/tests/vaes/test_wan_vae.py b/fastvideo/v1/tests/vaes/test_wan_vae.py index 813cc5ab0..cec0e439e 100644 --- a/fastvideo/v1/tests/vaes/test_wan_vae.py +++ b/fastvideo/v1/tests/vaes/test_wan_vae.py @@ -6,12 +6,12 @@ import pytest import torch from diffusers import AutoencoderKLWan -from fastvideo.v1.configs.pipelines import PipelineConfig -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.loader.component_loader import VAELoader -from fastvideo.v1.configs.models.vaes import WanVAEConfig -from fastvideo.v1.utils import maybe_download_model +from fastvideo.configs.pipelines import PipelineConfig +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.models.loader.component_loader import VAELoader +from fastvideo.configs.models.vaes import WanVAEConfig +from fastvideo.utils import maybe_download_model logger = init_logger(__name__) diff --git a/fastvideo/v1/training/training_pipeline.py b/fastvideo/v1/training/training_pipeline.py index 4640373eb..1135ed3ff 100644 --- a/fastvideo/v1/training/training_pipeline.py +++ b/fastvideo/v1/training/training_pipeline.py @@ -19,28 +19,28 @@ from torch.utils.data import DataLoader from torchdata.stateful_dataloader import StatefulDataLoader from tqdm.auto import tqdm -import fastvideo.v1.envs as envs -from fastvideo.v1.attention.backends.video_sparse_attn import ( +import fastvideo.envs as envs +from fastvideo.attention.backends.video_sparse_attn import ( VideoSparseAttentionMetadata) -from fastvideo.v1.configs.sample import SamplingParam -from fastvideo.v1.dataset import build_parquet_map_style_dataloader -from fastvideo.v1.dataset.dataloader.schema import pyarrow_schema_t2v -from fastvideo.v1.dataset.validation_dataset import ValidationDataset -from fastvideo.v1.distributed import (cleanup_dist_env_and_memory, - get_local_torch_device, get_sp_group, - get_world_group) -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.forward_context import set_forward_context -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines import (ComposedPipelineBase, ForwardBatch, - LoRAPipeline, TrainingBatch) -from fastvideo.v1.training.activation_checkpoint import ( +from fastvideo.configs.sample import SamplingParam +from fastvideo.dataset import build_parquet_map_style_dataloader +from fastvideo.dataset.dataloader.schema import pyarrow_schema_t2v +from fastvideo.dataset.validation_dataset import ValidationDataset +from fastvideo.distributed import (cleanup_dist_env_and_memory, + get_local_torch_device, get_sp_group, + get_world_group) +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.forward_context import set_forward_context +from fastvideo.logger import init_logger +from fastvideo.pipelines import (ComposedPipelineBase, ForwardBatch, + LoRAPipeline, TrainingBatch) +from fastvideo.training.activation_checkpoint import ( apply_activation_checkpointing) -from fastvideo.v1.training.training_utils import ( +from fastvideo.training.training_utils import ( clip_grad_norm_while_handling_failing_dtensor_cases, compute_density_for_timestep_sampling, get_sigmas, load_checkpoint, normalize_dit_input, save_checkpoint, shard_latents_across_sp) -from fastvideo.v1.utils import is_vsa_available, set_random_seed, shallow_asdict +from fastvideo.utils import is_vsa_available, set_random_seed, shallow_asdict import wandb # isort: skip diff --git a/fastvideo/v1/training/training_utils.py b/fastvideo/v1/training/training_utils.py index afc94ee69..fa6925c43 100644 --- a/fastvideo/v1/training/training_utils.py +++ b/fastvideo/v1/training/training_utils.py @@ -12,13 +12,13 @@ import torch.distributed.checkpoint as dcp from einops import rearrange from safetensors.torch import save_file -from fastvideo.v1.distributed.parallel_state import (get_sp_parallel_rank, - get_sp_world_size) -from fastvideo.v1.logger import init_logger -from fastvideo.v1.training.checkpointing_utils import (ModelWrapper, - OptimizerWrapper, - RandomStateWrapper, - SchedulerWrapper) +from fastvideo.distributed.parallel_state import (get_sp_parallel_rank, + get_sp_world_size) +from fastvideo.logger import init_logger +from fastvideo.training.checkpointing_utils import (ModelWrapper, + OptimizerWrapper, + RandomStateWrapper, + SchedulerWrapper) logger = init_logger(__name__) @@ -251,7 +251,7 @@ def normalize_dit_input(model_type, latents, args=None) -> torch.Tensor: if model_type == "hunyuan_hf" or model_type == "hunyuan": return latents * 0.476986 elif model_type == "wan": - from fastvideo.v1.configs.models.vaes.wanvae import WanVAEConfig + from fastvideo.configs.models.vaes.wanvae import WanVAEConfig vae_config = WanVAEConfig() latents_mean = torch.tensor(vae_config.arch_config.latents_mean) latents_std = 1.0 / torch.tensor(vae_config.arch_config.latents_std) diff --git a/fastvideo/v1/training/wan_i2v_training_pipeline.py b/fastvideo/v1/training/wan_i2v_training_pipeline.py index ccc0896cc..ca3c16d9e 100644 --- a/fastvideo/v1/training/wan_i2v_training_pipeline.py +++ b/fastvideo/v1/training/wan_i2v_training_pipeline.py @@ -5,18 +5,17 @@ from typing import Any import torch -from fastvideo.v1.configs.sample import SamplingParam -from fastvideo.v1.dataset.dataloader.schema import pyarrow_schema_i2v -from fastvideo.v1.distributed import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.schedulers.scheduling_flow_unipc_multistep import ( +from fastvideo.configs.sample import SamplingParam +from fastvideo.dataset.dataloader.schema import pyarrow_schema_i2v +from fastvideo.distributed import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.logger import init_logger +from fastvideo.models.schedulers.scheduling_flow_unipc_multistep import ( FlowUniPCMultistepScheduler) -from fastvideo.v1.pipelines.pipeline_batch_info import (ForwardBatch, - TrainingBatch) -from fastvideo.v1.pipelines.wan.wan_i2v_pipeline import WanImageToVideoPipeline -from fastvideo.v1.training.training_pipeline import TrainingPipeline -from fastvideo.v1.utils import is_vsa_available, shallow_asdict +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch, TrainingBatch +from fastvideo.pipelines.wan.wan_i2v_pipeline import WanImageToVideoPipeline +from fastvideo.training.training_pipeline import TrainingPipeline +from fastvideo.utils import is_vsa_available, shallow_asdict vsa_available = is_vsa_available() @@ -220,8 +219,8 @@ def main(args) -> None: if __name__ == "__main__": argv = sys.argv - from fastvideo.v1.fastvideo_args import TrainingArgs - from fastvideo.v1.utils import FlexibleArgumentParser + from fastvideo.fastvideo_args import TrainingArgs + from fastvideo.utils import FlexibleArgumentParser parser = FlexibleArgumentParser() parser = TrainingArgs.add_cli_args(parser) parser = FastVideoArgs.add_cli_args(parser) diff --git a/fastvideo/v1/training/wan_training_pipeline.py b/fastvideo/v1/training/wan_training_pipeline.py index 1405b635b..4ca04379b 100644 --- a/fastvideo/v1/training/wan_training_pipeline.py +++ b/fastvideo/v1/training/wan_training_pipeline.py @@ -2,13 +2,13 @@ import sys from copy import deepcopy -from fastvideo.v1.fastvideo_args import FastVideoArgs, TrainingArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.models.schedulers.scheduling_flow_unipc_multistep import ( +from fastvideo.fastvideo_args import FastVideoArgs, TrainingArgs +from fastvideo.logger import init_logger +from fastvideo.models.schedulers.scheduling_flow_unipc_multistep import ( FlowUniPCMultistepScheduler) -from fastvideo.v1.pipelines.wan.wan_pipeline import WanPipeline -from fastvideo.v1.training.training_pipeline import TrainingPipeline -from fastvideo.v1.utils import is_vsa_available +from fastvideo.pipelines.wan.wan_pipeline import WanPipeline +from fastvideo.training.training_pipeline import TrainingPipeline +from fastvideo.utils import is_vsa_available vsa_available = is_vsa_available() @@ -64,8 +64,8 @@ def main(args) -> None: if __name__ == "__main__": argv = sys.argv - from fastvideo.v1.fastvideo_args import TrainingArgs - from fastvideo.v1.utils import FlexibleArgumentParser + from fastvideo.fastvideo_args import TrainingArgs + from fastvideo.utils import FlexibleArgumentParser parser = FlexibleArgumentParser() parser = TrainingArgs.add_cli_args(parser) parser = FastVideoArgs.add_cli_args(parser) diff --git a/fastvideo/v1/utils.py b/fastvideo/v1/utils.py index 4f62ce18a..9bbad98a4 100644 --- a/fastvideo/v1/utils.py +++ b/fastvideo/v1/utils.py @@ -31,8 +31,8 @@ from huggingface_hub import snapshot_download from remote_pdb import RemotePdb from torch.distributed.fsdp import MixedPrecisionPolicy -import fastvideo.v1.envs as envs -from fastvideo.v1.logger import init_logger +import fastvideo.envs as envs +from fastvideo.logger import init_logger logger = init_logger(__name__) @@ -92,7 +92,7 @@ torch.cuda.set_stream = _patched_set_stream def current_stream() -> torch.cuda.Stream | None: """ - replace `torch.cuda.current_stream()` with `fastvideo.v1.utils.current_stream()`. + replace `torch.cuda.current_stream()` with `fastvideo.utils.current_stream()`. it turns out that `torch.cuda.current_stream()` is quite expensive, as it will construct a new stream object at each call. here we patch `torch.cuda.set_stream` to keep track of the current stream @@ -101,7 +101,7 @@ def current_stream() -> torch.cuda.Stream | None: the underlying hypothesis is that we do not call `torch._C._cuda_setStream` from C/C++ code. """ - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform # For non-CUDA platforms, return None if not current_platform.is_cuda_alike(): @@ -457,7 +457,7 @@ def import_pynvml(): After all the troubles, we decide to copy the official `pynvml` module to our codebase, and use it directly. """ - import fastvideo.v1.third_party.pynvml as pynvml + import fastvideo.third_party.pynvml as pynvml return pynvml @@ -805,7 +805,7 @@ def dict_to_3d_list( def set_random_seed(seed: int) -> None: - from fastvideo.v1.platforms import current_platform + from fastvideo.platforms import current_platform current_platform.seed_everything(seed) diff --git a/fastvideo/v1/worker/executor.py b/fastvideo/v1/worker/executor.py index 276dfe8d0..eabfd9bd7 100644 --- a/fastvideo/v1/worker/executor.py +++ b/fastvideo/v1/worker/executor.py @@ -3,9 +3,9 @@ from abc import ABC, abstractmethod from collections.abc import Callable from typing import Any, TypeVar, cast -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.pipelines import ForwardBatch -from fastvideo.v1.utils import init_logger +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.pipelines import ForwardBatch +from fastvideo.utils import init_logger logger = init_logger(__name__) @@ -26,7 +26,7 @@ class Executor(ABC): @classmethod def get_class(cls, fastvideo_args: FastVideoArgs) -> type["Executor"]: if fastvideo_args.distributed_executor_backend == "mp": - from fastvideo.v1.worker.multiproc_executor import MultiprocExecutor + from fastvideo.worker.multiproc_executor import MultiprocExecutor return cast(type["Executor"], MultiprocExecutor) else: raise ValueError( diff --git a/fastvideo/v1/worker/gpu_worker.py b/fastvideo/v1/worker/gpu_worker.py index cf7465738..3d639c5ad 100644 --- a/fastvideo/v1/worker/gpu_worker.py +++ b/fastvideo/v1/worker/gpu_worker.py @@ -11,16 +11,16 @@ from typing import Any, TextIO, cast import psutil import torch -from fastvideo.v1.distributed import ( +from fastvideo.distributed import ( cleanup_dist_env_and_memory, maybe_init_distributed_environment_and_model_parallel) -from fastvideo.v1.distributed.parallel_state import get_local_torch_device -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines import ForwardBatch, build_pipeline -from fastvideo.v1.platforms import current_platform -from fastvideo.v1.utils import (get_exception_traceback, - kill_itself_when_parent_died) +from fastvideo.distributed.parallel_state import get_local_torch_device +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines import ForwardBatch, build_pipeline +from fastvideo.platforms import current_platform +from fastvideo.utils import (get_exception_traceback, + kill_itself_when_parent_died) logger = init_logger(__name__) diff --git a/fastvideo/v1/worker/multiproc_executor.py b/fastvideo/v1/worker/multiproc_executor.py index 928aeaea0..1aaca215b 100644 --- a/fastvideo/v1/worker/multiproc_executor.py +++ b/fastvideo/v1/worker/multiproc_executor.py @@ -10,11 +10,11 @@ from collections.abc import Callable from multiprocessing.process import BaseProcess from typing import Any, cast -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.logger import init_logger -from fastvideo.v1.pipelines.pipeline_batch_info import ForwardBatch -from fastvideo.v1.worker.executor import Executor -from fastvideo.v1.worker.gpu_worker import run_worker_process +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.logger import init_logger +from fastvideo.pipelines.pipeline_batch_info import ForwardBatch +from fastvideo.worker.executor import Executor +from fastvideo.worker.gpu_worker import run_worker_process logger = init_logger(__name__) diff --git a/fastvideo/v1/workflow/workflow_base.py b/fastvideo/v1/workflow/workflow_base.py index 258c341aa..e00c4dbcd 100644 --- a/fastvideo/v1/workflow/workflow_base.py +++ b/fastvideo/v1/workflow/workflow_base.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod -from fastvideo.v1.fastvideo_args import FastVideoArgs -from fastvideo.v1.pipelines import ComposedPipelineBase, build_pipeline +from fastvideo.fastvideo_args import FastVideoArgs +from fastvideo.pipelines import ComposedPipelineBase, build_pipeline class WorkflowBase(ABC): diff --git a/pyproject.toml b/pyproject.toml index bf212f2ab..8d08fb6fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,7 +70,7 @@ test = [ dev = [ "fastvideo[lint]", "fastvideo[test]", ] [project.scripts] -fastvideo = "fastvideo.v1.entrypoints.cli.main:main" +fastvideo = "fastvideo.entrypoints.cli.main:main" [tool.setuptools.packages.find] exclude = ["assets*", "docker*", "docs", "scripts*"]