| """ |
| Setup script to copy and adapt source files from hg-research-hub to infinite-world. |
| This creates a standalone project without external dependencies. |
| """ |
|
|
| import os |
| import re |
| import shutil |
|
|
| |
| SRC_BASE = '/mnt/dolphinfs/ssd_pool/docker/user/hadoop-videogen-hl/hadoop-camera3d/wuruiqi/hg-research-hub/source' |
| DST_BASE = '/mnt/dolphinfs/ssd_pool/docker/user/hadoop-videogen-hl/hadoop-camera3d/wuruiqi/infinite-world/infworld' |
|
|
| |
| FILES_TO_COPY = { |
| |
| 'meigen/model_wanx_multi_action_v2v_convenc_locmem_slidewindow_temp_sample_mask_attn_real_checkpointing.py': 'models/dit_model.py', |
| 'meigen/rectified_flow_wanx_t2v_action.py': 'models/scheduler.py', |
| 'meigen/checkpoint.py': 'models/checkpoint.py', |
| 'meigen/umt5.py': 'models/umt5.py', |
| 'meigen/t5.py': 'models/t5.py', |
| |
| |
| 'vae/__init__.py': 'vae/__init__.py', |
| 'vae/wan/vae.py': 'vae/vae.py', |
| |
| |
| 'clip/clip.py': 'clip/clip.py', |
| 'clip/tokenizers.py': 'clip/tokenizers.py', |
| 'clip/xlm_roberta.py': 'clip/xlm_roberta.py', |
| |
| |
| 'context_parallel/context_parallel_util.py': 'context_parallel/context_parallel_util.py', |
| |
| |
| 'dataset/utils.py': 'utils/data_utils.py', |
| 'dataset/prepare_dataloader.py': 'utils/prepare_dataloader.py', |
| |
| |
| 'opensora/utils/dataset_utils.py': 'utils/dataset_utils.py', |
| 'opensora/registry.py': 'utils/registry.py', |
| } |
|
|
| |
| IMPORT_REPLACEMENTS = [ |
| |
| (r'from source\.meigen\.checkpoint', 'from infworld.models.checkpoint'), |
| (r'from source\.meigen\.model_wanx_multi_action', 'from infworld.models.dit_model'), |
| (r'from source\.meigen\.rectified_flow_wanx_t2v_action', 'from infworld.models.scheduler'), |
| (r'from source\.meigen\.umt5', 'from infworld.models.umt5'), |
| (r'from source\.meigen\.t5', 'from infworld.models.t5'), |
| (r'from source\.meigen', 'from infworld.models'), |
| |
| |
| (r'from source\.context_parallel\.context_parallel_util', 'from infworld.context_parallel.context_parallel_util'), |
| (r'from source\.context_parallel import context_parallel_util', 'from infworld.context_parallel import context_parallel_util'), |
| |
| |
| (r'from source\.vae\.wan\.vae', 'from infworld.vae.vae'), |
| (r'from source\.vae\.cogvideo\.autoencoder_kl_cogvideox', 'from infworld.vae.vae'), |
| (r'from source\.vae', 'from infworld.vae'), |
| (r'from source\.opensora\.registry import MODELS', '# Registry disabled for standalone'), |
| |
| |
| (r'from source\.clip\.clip', 'from infworld.clip.clip'), |
| (r'from source\.clip\.tokenizers', 'from infworld.clip.tokenizers'), |
| (r'from source\.clip\.xlm_roberta', 'from infworld.clip.xlm_roberta'), |
| (r'from source\.clip', 'from infworld.clip'), |
| |
| |
| (r'from source\.dataset\.utils', 'from infworld.utils.data_utils'), |
| (r'from source\.dataset\.prepare_dataloader', 'from infworld.utils.prepare_dataloader'), |
| (r'from source\.opensora\.utils\.dataset_utils', 'from infworld.utils.dataset_utils'), |
| (r'from source\.opensora\.registry', 'from infworld.utils.registry'), |
| ] |
|
|
|
|
| def ensure_dir(path): |
| """Create directory if it doesn't exist.""" |
| os.makedirs(os.path.dirname(path), exist_ok=True) |
|
|
|
|
| def copy_and_transform(src_path, dst_path): |
| """Copy file and transform imports.""" |
| print(f"Copying: {src_path} -> {dst_path}") |
| |
| ensure_dir(dst_path) |
| |
| with open(src_path, 'r', encoding='utf-8') as f: |
| content = f.read() |
| |
| |
| for old_pattern, new_pattern in IMPORT_REPLACEMENTS: |
| content = re.sub(old_pattern, new_pattern, content) |
| |
| with open(dst_path, 'w', encoding='utf-8') as f: |
| f.write(content) |
|
|
|
|
| def create_init_files(): |
| """Create __init__.py files for all packages.""" |
| packages = ['infworld', 'infworld/models', 'infworld/vae', 'infworld/clip', |
| 'infworld/context_parallel', 'infworld/utils', 'infworld/configs'] |
| |
| for pkg in packages: |
| init_path = os.path.join(DST_BASE, '..', pkg, '__init__.py') |
| init_path = os.path.normpath(init_path) |
| ensure_dir(init_path) |
| |
| if not os.path.exists(init_path): |
| with open(init_path, 'w') as f: |
| f.write(f'# {pkg} package\n') |
| print(f"Created: {init_path}") |
|
|
|
|
| def main(): |
| print("=" * 60) |
| print("Setting up Infinite World standalone project") |
| print("=" * 60) |
| |
| |
| create_init_files() |
| |
| |
| for src_rel, dst_rel in FILES_TO_COPY.items(): |
| src_path = os.path.join(SRC_BASE, src_rel) |
| dst_path = os.path.join(DST_BASE, dst_rel) |
| |
| if os.path.exists(src_path): |
| copy_and_transform(src_path, dst_path) |
| else: |
| print(f"WARNING: Source file not found: {src_path}") |
| |
| print("\n" + "=" * 60) |
| print("Setup complete!") |
| print("=" * 60) |
|
|
|
|
| if __name__ == '__main__': |
| main() |
|
|