Spaces:
Paused
Paused
Update aduc_framework/managers/wan_manager.py
Browse files
aduc_framework/managers/wan_manager.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
| 1 |
# aduc_framework/managers/wan_manager.py
|
| 2 |
-
# WanManager v1.5.
|
| 3 |
|
| 4 |
import os
|
| 5 |
import platform
|
|
@@ -31,9 +31,10 @@ from aduc_framework.utils.callbacks import DenoiseStepLogger
|
|
| 31 |
|
| 32 |
class WanManager:
|
| 33 |
"""
|
| 34 |
-
Gerenciador de produção v1.5.
|
| 35 |
-
- CORREÇÃO:
|
| 36 |
-
|
|
|
|
| 37 |
- Mantém o `yield` para atualizações em tempo real, os modos I2V e V2V,
|
| 38 |
e toda a lógica de validação robusta.
|
| 39 |
"""
|
|
@@ -232,29 +233,27 @@ class WanManager:
|
|
| 232 |
|
| 233 |
print("[WanManager] Preparando tensores e timesteps para a geração...")
|
| 234 |
|
| 235 |
-
target_device = self.pipe.transformer.device
|
| 236 |
transformer_dtype = self.pipe.transformer.dtype
|
| 237 |
-
|
| 238 |
generator = torch.Generator(device="cpu").manual_seed(current_seed)
|
| 239 |
|
| 240 |
-
prompt_embeds, negative_prompt_embeds = self.pipe.encode_prompt(prompt=prompt, negative_prompt=negative_prompt or self.default_negative_prompt
|
| 241 |
prompt_embeds = prompt_embeds.to(transformer_dtype)
|
| 242 |
if negative_prompt_embeds is not None:
|
| 243 |
negative_prompt_embeds = negative_prompt_embeds.to(transformer_dtype)
|
| 244 |
|
| 245 |
-
image_processed = self.pipe.video_processor.preprocess(processed_convergent, height=target_h, width=target_w)
|
| 246 |
-
causal_img_processed = self.pipe.video_processor.preprocess(processed_causal, height=target_h, width=target_w)
|
| 247 |
-
handler_img_processed = self.pipe.video_processor.preprocess(processed_handler, height=target_h, width=target_w)
|
| 248 |
|
| 249 |
latents_outputs = self.pipe.prepare_latents(
|
| 250 |
image=image_processed, batch_size=1, num_channels_latents=self.pipe.vae.config.z_dim,
|
| 251 |
-
height=target_h, width=target_w, num_frames=num_frames, dtype=torch.float32,
|
| 252 |
causal_img=causal_img_processed, handler_img=handler_img_processed,
|
| 253 |
handler_frame_index=corrected_handler_index, handler_weight=final_handler_weight, causal_weight=final_causal_weight
|
| 254 |
)
|
| 255 |
latents, condition = latents_outputs
|
| 256 |
|
| 257 |
-
self.pipe.scheduler.set_timesteps(steps, device=
|
| 258 |
timesteps = self.pipe.scheduler.timesteps
|
| 259 |
|
| 260 |
denoise_logger = DenoiseStepLogger(self.pipe)
|
|
|
|
| 1 |
# aduc_framework/managers/wan_manager.py
|
| 2 |
+
# WanManager v1.5.3 (Correção final de dispositivo para `device_map="auto"`)
|
| 3 |
|
| 4 |
import os
|
| 5 |
import platform
|
|
|
|
| 31 |
|
| 32 |
class WanManager:
|
| 33 |
"""
|
| 34 |
+
Gerenciador de produção v1.5.3:
|
| 35 |
+
- CORREÇÃO: Remove o gerenciamento manual de dispositivos na preparação de tensores
|
| 36 |
+
para ser totalmente compatível com a automação do `accelerate` e `device_map="auto"`.
|
| 37 |
+
Resolve os erros "Cannot copy out of meta tensor".
|
| 38 |
- Mantém o `yield` para atualizações em tempo real, os modos I2V e V2V,
|
| 39 |
e toda a lógica de validação robusta.
|
| 40 |
"""
|
|
|
|
| 233 |
|
| 234 |
print("[WanManager] Preparando tensores e timesteps para a geração...")
|
| 235 |
|
|
|
|
| 236 |
transformer_dtype = self.pipe.transformer.dtype
|
|
|
|
| 237 |
generator = torch.Generator(device="cpu").manual_seed(current_seed)
|
| 238 |
|
| 239 |
+
prompt_embeds, negative_prompt_embeds = self.pipe.encode_prompt(prompt=prompt, negative_prompt=negative_prompt or self.default_negative_prompt)
|
| 240 |
prompt_embeds = prompt_embeds.to(transformer_dtype)
|
| 241 |
if negative_prompt_embeds is not None:
|
| 242 |
negative_prompt_embeds = negative_prompt_embeds.to(transformer_dtype)
|
| 243 |
|
| 244 |
+
image_processed = self.pipe.video_processor.preprocess(processed_convergent, height=target_h, width=target_w)
|
| 245 |
+
causal_img_processed = self.pipe.video_processor.preprocess(processed_causal, height=target_h, width=target_w)
|
| 246 |
+
handler_img_processed = self.pipe.video_processor.preprocess(processed_handler, height=target_h, width=target_w) if processed_handler else None
|
| 247 |
|
| 248 |
latents_outputs = self.pipe.prepare_latents(
|
| 249 |
image=image_processed, batch_size=1, num_channels_latents=self.pipe.vae.config.z_dim,
|
| 250 |
+
height=target_h, width=target_w, num_frames=num_frames, dtype=torch.float32, generator=generator,
|
| 251 |
causal_img=causal_img_processed, handler_img=handler_img_processed,
|
| 252 |
handler_frame_index=corrected_handler_index, handler_weight=final_handler_weight, causal_weight=final_causal_weight
|
| 253 |
)
|
| 254 |
latents, condition = latents_outputs
|
| 255 |
|
| 256 |
+
self.pipe.scheduler.set_timesteps(steps, device=latents.device)
|
| 257 |
timesteps = self.pipe.scheduler.timesteps
|
| 258 |
|
| 259 |
denoise_logger = DenoiseStepLogger(self.pipe)
|