ICGenAIShare04 commited on
Commit
61946b0
·
verified ·
1 Parent(s): b869ff7

Combine image+video into single GPU session to fix ZeroGPU token expiry

Browse files
Files changed (1) hide show
  1. app.py +15 -20
app.py CHANGED
@@ -39,34 +39,34 @@ INPUT_DIR.mkdir(exist_ok=True)
39
  # GPU-accelerated steps (decorated only on Spaces)
40
  # ---------------------------------------------------------------------------
41
 
42
- def _generate_images(run_dir, style_name, progress_callback=None):
43
- """Load SDXL pipeline, generate all images, then unload to free VRAM."""
 
 
 
 
 
44
  if IS_SPACES:
45
  from src.image_generator_hf import run as gen_images
46
  else:
47
  from src.image_generator_api import run as gen_images
48
- gen_images(run_dir, style_name=style_name, progress_callback=progress_callback)
49
- # Free VRAM for the video model
50
  torch.cuda.empty_cache()
51
 
52
-
53
- def _generate_videos(run_dir, progress_callback=None):
54
- """Load Wan 2.1 pipeline, generate all video clips, then unload."""
55
  if IS_SPACES:
56
  from src.video_generator_hf import run as gen_videos
57
- gen_videos(run_dir, progress_callback=progress_callback)
58
- # Unload Wan 2.1 to free VRAM
59
  from src.video_generator_hf import unload
60
  unload()
61
  else:
62
  from src.video_generator_api import run as gen_videos
63
- gen_videos(run_dir, progress_callback=progress_callback)
64
 
65
 
66
  # Apply @spaces.GPU decorator on Spaces
67
  if IS_SPACES:
68
- _generate_images = spaces.GPU(duration=300)(_generate_images)
69
- _generate_videos = spaces.GPU(duration=3600)(_generate_videos) # up to 1h for ~12 clips
70
 
71
 
72
  # ---------------------------------------------------------------------------
@@ -323,15 +323,10 @@ def generate(audio_file: str, style_name: str, cover_art: str | None,
323
  image_prompt_guidance=style.get("image_prompt_guidance", ""),
324
  quality_suffix=style.get("quality_suffix", ""))
325
 
326
- # --- Step 6: Image Generation ---
327
- if step_num <= 6:
328
- progress(0.50, desc="Generating images...")
329
- _generate_images(run_dir, style_name)
330
-
331
- # --- Step 7: Video Generation ---
332
  if step_num <= 7:
333
- progress(0.70, desc="Generating video clips...")
334
- _generate_videos(run_dir)
335
 
336
  # --- Step 8: Assembly ---
337
  progress(0.90, desc="Assembling final video...")
 
39
  # GPU-accelerated steps (decorated only on Spaces)
40
  # ---------------------------------------------------------------------------
41
 
42
+ def _generate_images_and_videos(run_dir, style_name):
43
+ """GPU phase: generate all images, then all video clips.
44
+
45
+ Combined into one @spaces.GPU call so the GPU token stays valid
46
+ for both steps (acquiring a GPU after long CPU work expires the token).
47
+ """
48
+ # --- Images ---
49
  if IS_SPACES:
50
  from src.image_generator_hf import run as gen_images
51
  else:
52
  from src.image_generator_api import run as gen_images
53
+ gen_images(run_dir, style_name=style_name)
 
54
  torch.cuda.empty_cache()
55
 
56
+ # --- Videos ---
 
 
57
  if IS_SPACES:
58
  from src.video_generator_hf import run as gen_videos
59
+ gen_videos(run_dir)
 
60
  from src.video_generator_hf import unload
61
  unload()
62
  else:
63
  from src.video_generator_api import run as gen_videos
64
+ gen_videos(run_dir)
65
 
66
 
67
  # Apply @spaces.GPU decorator on Spaces
68
  if IS_SPACES:
69
+ _generate_images_and_videos = spaces.GPU(duration=3600)(_generate_images_and_videos)
 
70
 
71
 
72
  # ---------------------------------------------------------------------------
 
323
  image_prompt_guidance=style.get("image_prompt_guidance", ""),
324
  quality_suffix=style.get("quality_suffix", ""))
325
 
326
+ # --- Steps 6 & 7: Image + Video Generation (single GPU session) ---
 
 
 
 
 
327
  if step_num <= 7:
328
+ progress(0.50, desc="Generating images & video clips...")
329
+ _generate_images_and_videos(str(run_dir), style_name)
330
 
331
  # --- Step 8: Assembly ---
332
  progress(0.90, desc="Assembling final video...")