|
import os |
|
import sys |
|
import gradio as gr |
|
import subprocess |
|
import json |
|
|
|
|
|
os.environ["GRADIO_SERVER_NAME"] = "0.0.0.0" |
|
os.environ["GRADIO_SERVER_PORT"] = "7860" |
|
|
|
|
|
os.environ["HF_HUB_CACHE"] = "/tmp/hf_cache" |
|
os.environ["HUGGINGFACE_HUB_CACHE"] = "/tmp/hf_cache" |
|
|
|
|
|
os.environ["TOKENIZERS_PARALLELISM"] = "false" |
|
|
|
def setup_environment(): |
|
"""Setup environment for HF Spaces with WanGP v6.3""" |
|
|
|
try: |
|
import sageattention |
|
except ImportError: |
|
print("Installing SageAttention...") |
|
subprocess.run([sys.executable, "-m", "pip", "install", "sageattention==1.0.6"], check=True) |
|
|
|
|
|
try: |
|
import insightface |
|
import facexlib |
|
except ImportError: |
|
print("Installing face processing libraries...") |
|
subprocess.run([sys.executable, "-m", "pip", "install", "insightface", "facexlib"], check=True) |
|
|
|
def download_essential_models(): |
|
"""Pre-download essential models for faster startup""" |
|
from huggingface_hub import snapshot_download |
|
|
|
print("Downloading Hunyuan Video Avatar models...") |
|
try: |
|
|
|
snapshot_download( |
|
repo_id="tencent/HunyuanVideo-Avatar", |
|
cache_dir="/tmp/hf_cache", |
|
allow_patterns=["*.safetensors", "*.json", "*.txt", "*.bin"], |
|
ignore_patterns=["*.mp4", "*.avi", "*.mov"] |
|
) |
|
|
|
|
|
snapshot_download( |
|
repo_id="tencent/HunyuanVideo", |
|
cache_dir="/tmp/hf_cache", |
|
allow_patterns=["*.safetensors", "*.json", "*.txt"], |
|
ignore_patterns=["*.mp4", "*.avi"] |
|
) |
|
|
|
except Exception as e: |
|
print(f"Model download warning: {e}") |
|
print("Models will be downloaded on-demand during first use.") |
|
|
|
def create_hf_config(): |
|
"""Create optimized config for HF Spaces deployment""" |
|
config = { |
|
"model_settings": { |
|
"profile": 3, |
|
"quantize_transformer": True, |
|
"attention_mode": "sage", |
|
"compile": False, |
|
"teacache": "2.0" |
|
}, |
|
"avatar_settings": { |
|
"max_frames": 120, |
|
"resolution": "512x512", |
|
"emotion_control": True, |
|
"multi_character": True |
|
}, |
|
"memory_optimization": { |
|
"enable_vae_tiling": True, |
|
"enable_cpu_offload": True, |
|
"max_batch_size": 1, |
|
"gradient_checkpointing": True |
|
}, |
|
"audio_processing": { |
|
"sample_rate": 16000, |
|
"max_duration": 15, |
|
"supported_formats": ["wav", "mp3", "m4a"] |
|
} |
|
} |
|
|
|
with open("/tmp/hf_config.json", "w") as f: |
|
json.dump(config, f, indent=2) |
|
|
|
return config |
|
|
|
if __name__ == "__main__": |
|
print("🚀 Starting WanGP v6.3 with Hunyuan Video Avatar...") |
|
|
|
setup_environment() |
|
config = create_hf_config() |
|
download_essential_models() |
|
|
|
print("✅ Setup complete! Launching application...") |
|
|
|
|
|
from wgp import main |
|
main( |
|
profile=3, |
|
attention="sage", |
|
server_name="0.0.0.0", |
|
server_port=7860, |
|
quantize_transformer=True, |
|
teacache="2.0", |
|
compile=False, |
|
share=False, |
|
config_file="/tmp/hf_config.json" |
|
) |
|
|