openfree commited on
Commit
1d7967c
·
verified ·
1 Parent(s): a47303a

Update sonic.py

Browse files
Files changed (1) hide show
  1. sonic.py +15 -0
sonic.py CHANGED
@@ -146,9 +146,24 @@ class Sonic:
146
  self._load_models(cfg)
147
  print("Sonic init done")
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  # --------------------------------------------- load all networks
150
  def _load_models(self, cfg):
151
  dtype = {"fp16": torch.float16, "fp32": torch.float32, "bf16": torch.bfloat16}[cfg.weight_dtype]
 
152
 
153
  vae = AutoencoderKLTemporalDecoder.from_pretrained(self.diffusers_root, subfolder="vae", variant="fp16")
154
  sched = EulerDiscreteScheduler.from_pretrained(self.diffusers_root, subfolder="scheduler")
 
146
  self._load_models(cfg)
147
  print("Sonic init done")
148
 
149
+ def _locate_diffusers_dir(root: str) -> str:
150
+ """
151
+ root 아래에서 model_index.json 또는 config.json 이 존재하는
152
+ 디렉터리를 찾아 반환. (snapshots/<sha>/ … 형식 대응)
153
+ """
154
+ for cur, _dirs, files in os.walk(root):
155
+ if {"model_index.json", "config.json"} & set(files):
156
+ return cur
157
+ raise FileNotFoundError(
158
+ f"[ERROR] diffusers model files(model_index.json/config.json) "
159
+ f"not found under {root}"
160
+ )
161
+
162
+
163
  # --------------------------------------------- load all networks
164
  def _load_models(self, cfg):
165
  dtype = {"fp16": torch.float16, "fp32": torch.float32, "bf16": torch.bfloat16}[cfg.weight_dtype]
166
+ diff_root = _locate_diffusers_dir(self.diffusers_root) # ★★ 핵심 추가
167
 
168
  vae = AutoencoderKLTemporalDecoder.from_pretrained(self.diffusers_root, subfolder="vae", variant="fp16")
169
  sched = EulerDiscreteScheduler.from_pretrained(self.diffusers_root, subfolder="scheduler")