yingzhac commited on
Commit
fe9764c
·
verified ·
1 Parent(s): e35e55e

Fix Boogu FP8 loading on ZeroGPU

Browse files
Files changed (2) hide show
  1. app.py +22 -4
  2. requirements.txt +0 -1
app.py CHANGED
@@ -2,6 +2,7 @@ import gc
2
  import math
3
  import os
4
  import random
 
5
  import time
6
  from threading import Lock
7
 
@@ -12,6 +13,7 @@ os.environ.setdefault("device", "cuda:0")
12
  import gradio as gr
13
  import spaces
14
  import torch
 
15
  from PIL import ImageOps
16
 
17
  from boogu.models.transformers.transformer_boogu import BooguImageTransformer2DModel
@@ -91,12 +93,28 @@ def cleanup_pipe():
91
 
92
 
93
  def load_fp8_transformer(repo_id, dtype):
 
94
  return BooguImageTransformer2DModel.from_pretrained(
95
- repo_id,
96
- subfolder="transformer",
97
  torch_dtype=dtype,
98
  use_safetensors=False,
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  )
 
 
 
100
 
101
 
102
  def get_pipe(mode):
@@ -121,9 +139,9 @@ def get_pipe(mode):
121
 
122
  print(f"Loading {repo_id}...", flush=True)
123
  started = time.perf_counter()
124
- transformer = load_fp8_transformer(repo_id, dtype)
125
  pipe = pipeline_cls.from_pretrained(
126
- repo_id,
127
  torch_dtype=dtype,
128
  trust_remote_code=True,
129
  transformer=transformer,
 
2
  import math
3
  import os
4
  import random
5
+ import shutil
6
  import time
7
  from threading import Lock
8
 
 
13
  import gradio as gr
14
  import spaces
15
  import torch
16
+ from huggingface_hub import snapshot_download
17
  from PIL import ImageOps
18
 
19
  from boogu.models.transformers.transformer_boogu import BooguImageTransformer2DModel
 
93
 
94
 
95
  def load_fp8_transformer(repo_id, dtype):
96
+ repo_dir = prepare_repo_dir(repo_id)
97
  return BooguImageTransformer2DModel.from_pretrained(
98
+ os.path.join(repo_dir, "transformer"),
 
99
  torch_dtype=dtype,
100
  use_safetensors=False,
101
+ ), repo_dir
102
+
103
+
104
+ def prepare_repo_dir(repo_id):
105
+ repo_dir = snapshot_download(
106
+ repo_id,
107
+ token=os.environ.get("HF_TOKEN") or None,
108
+ )
109
+ transformer_dir = os.path.join(repo_dir, "transformer")
110
+ source = os.path.join(transformer_dir, "transformer_boogu.py")
111
+ compat = os.path.join(
112
+ transformer_dir,
113
+ "boogu.models.transformers.transformer_boogu.py",
114
  )
115
+ if os.path.exists(source) and not os.path.exists(compat):
116
+ shutil.copyfile(source, compat)
117
+ return repo_dir
118
 
119
 
120
  def get_pipe(mode):
 
139
 
140
  print(f"Loading {repo_id}...", flush=True)
141
  started = time.perf_counter()
142
+ transformer, repo_dir = load_fp8_transformer(repo_id, dtype)
143
  pipe = pipeline_cls.from_pretrained(
144
+ repo_dir,
145
  torch_dtype=dtype,
146
  trust_remote_code=True,
147
  transformer=transformer,
requirements.txt CHANGED
@@ -1,4 +1,3 @@
1
  gradio[mcp]==5.49.1
2
  spaces
3
- diffusers[torch]==0.35.2
4
  git+https://github.com/boogu-project/Boogu-Image.git@8e329714727e6fb0804731b81681a121d1698f91
 
1
  gradio[mcp]==5.49.1
2
  spaces
 
3
  git+https://github.com/boogu-project/Boogu-Image.git@8e329714727e6fb0804731b81681a121d1698f91