aducsdr commited on
Commit
a612208
·
verified ·
1 Parent(s): 052d7fc

Update aduc_framework/managers/seedvr_manager.py

Browse files
aduc_framework/managers/seedvr_manager.py CHANGED
@@ -2,7 +2,7 @@
2
  #
3
  # Copyright (C) 2025 Carlos Rodrigues dos Santos
4
  #
5
- # Version: 10.0.0 (Definitive Monkey Patch)
6
  #
7
  # Esta é a arquitetura final e mais robusta. O paralelismo problemático
8
  # é desativado programaticamente via "monkey patching" no decorador `master_only`.
@@ -48,43 +48,42 @@ class SeedVrManager:
48
 
49
  @staticmethod
50
  def _check_and_run_global_setup():
 
51
  setup_flag = DEPS_DIR / "seedvr.setup.complete"
52
  if str(APP_ROOT) not in sys.path: sys.path.insert(0, str(APP_ROOT))
53
- if setup_flag.exists(): return True
54
-
55
- logger.info("--- Iniciando Setup Global do SeedVR (primeira execução) ---")
56
- if not SEEDVR_SPACE_DIR.exists():
57
- DEPS_DIR.mkdir(exist_ok=True, parents=True)
58
- subprocess.run(["git", "clone", "--depth", "1", SEEDVR_SPACE_URL, str(SEEDVR_SPACE_DIR)], check=True)
59
 
60
- required_dirs = ["projects", "common", "models", "configs_3b", "configs_7b", "data"]
61
- for dirname in required_dirs:
62
- source, target = SEEDVR_SPACE_DIR / dirname, APP_ROOT / dirname
63
- if not target.exists(): shutil.copytree(source, target)
64
-
65
- # <<< --- MONKEY PATCH PARA DESATIVAR O PARALELISMO --- >>>
66
  try:
67
  from common import decorators
68
  import functools
69
 
70
- # Define um decorador que não faz nada e apenas retorna a função original
71
  def _passthrough_decorator(func):
72
  @functools.wraps(func)
73
  def wrapped(*args, **kwargs):
74
  return func(*args, **kwargs)
75
  return wrapped
76
 
77
- # Substitui o decorador problemático pelo nosso decorador inofensivo
78
  decorators.master_only = _passthrough_decorator
79
  logger.info("Monkey patch aplicado com sucesso em 'common.decorators.master_only' para desativar o paralelismo.")
80
  except Exception as e:
81
  logger.error(f"Falha ao aplicar o monkey patch: {e}", exc_info=True)
82
- # Continua mesmo se falhar, pode funcionar em alguns casos.
 
 
 
 
 
 
 
 
 
 
 
83
 
84
  try:
85
  import apex
86
  except ImportError:
87
- apex_url = 'https://huggingface.co/ByteDance-Seed/SeedVR2-3B/resolve/main/apex-0.1-cp310-cp310-linux_x_86_64.whl'
88
  apex_wheel_path = _load_file_from_url(url=apex_url, model_dir=str(DEPS_DIR))
89
  subprocess.run(f"pip install {apex_wheel_path}", check=True, shell=True)
90
 
@@ -121,7 +120,6 @@ class SeedVrManager:
121
  self.runner = VideoDiffusionInfer(config)
122
  OmegaConf.set_readonly(self.runner.config, False)
123
 
124
- # Agora o código decorado dentro desta função usará nosso patch inofensivo
125
  self.runner.configure_dit_model(device=self.local_device_name, checkpoint=str(checkpoint_path))
126
  self.runner.configure_vae_model()
127
 
@@ -216,15 +214,16 @@ try:
216
 
217
  if seedvr_gpus_required > 0:
218
  seedvr_device_ids = hardware_manager.allocate_gpus('SeedVR', seedvr_gpus_required)
219
- if 'cpu' not in seedvr_device_ids:
220
  device_to_use = seedvr_device_ids[0]
221
  seedvr_manager_singleton = SeedVrManager(device_id=device_to_use)
222
  logger.info(f"Especialista de Masterização HD (SeedVR Single Instance) pronto para usar a GPU {device_to_use}.")
223
  else:
224
  seedvr_manager_singleton = SeedVrPlaceholder()
 
225
  else:
226
  seedvr_manager_singleton = SeedVrPlaceholder()
227
- logger.warning("SeedVR Manager não foi inicializado (gpus_required: 0).")
228
  except Exception as e:
229
  logger.critical(f"Falha CRÍTICA ao inicializar o SeedVrManager: {e}", exc_info=True)
230
  seedvr_manager_singleton = SeedVrPlaceholder()
 
2
  #
3
  # Copyright (C) 2025 Carlos Rodrigues dos Santos
4
  #
5
+ # Version: 10.0.0 (Definitive Monkey Patch / Single Instance)
6
  #
7
  # Esta é a arquitetura final e mais robusta. O paralelismo problemático
8
  # é desativado programaticamente via "monkey patching" no decorador `master_only`.
 
48
 
49
  @staticmethod
50
  def _check_and_run_global_setup():
51
+ """Executa o setup de arquivos e aplica o patch para desativar o paralelismo."""
52
  setup_flag = DEPS_DIR / "seedvr.setup.complete"
53
  if str(APP_ROOT) not in sys.path: sys.path.insert(0, str(APP_ROOT))
 
 
 
 
 
 
54
 
55
+ # O patch deve ser aplicado toda vez que o código roda.
 
 
 
 
 
56
  try:
57
  from common import decorators
58
  import functools
59
 
 
60
  def _passthrough_decorator(func):
61
  @functools.wraps(func)
62
  def wrapped(*args, **kwargs):
63
  return func(*args, **kwargs)
64
  return wrapped
65
 
 
66
  decorators.master_only = _passthrough_decorator
67
  logger.info("Monkey patch aplicado com sucesso em 'common.decorators.master_only' para desativar o paralelismo.")
68
  except Exception as e:
69
  logger.error(f"Falha ao aplicar o monkey patch: {e}", exc_info=True)
70
+
71
+ if setup_flag.exists(): return True
72
+
73
+ logger.info("--- Iniciando Setup Global do SeedVR (primeira execução) ---")
74
+ if not SEEDVR_SPACE_DIR.exists():
75
+ DEPS_DIR.mkdir(exist_ok=True, parents=True)
76
+ subprocess.run(["git", "clone", "--depth", "1", SEEDVR_SPACE_URL, str(SEEDVR_SPACE_DIR)], check=True)
77
+
78
+ required_dirs = ["projects", "common", "models", "configs_3b", "configs_7b", "data"]
79
+ for dirname in required_dirs:
80
+ source, target = SEEDVR_SPACE_DIR / dirname, APP_ROOT / dirname
81
+ if not target.exists(): shutil.copytree(source, target)
82
 
83
  try:
84
  import apex
85
  except ImportError:
86
+ apex_url = 'https://huggingface.co/ByteDance-Seed/SeedVR2-3B/resolve/main/apex-0.1-cp310-cp310-linux_x86_64.whl'
87
  apex_wheel_path = _load_file_from_url(url=apex_url, model_dir=str(DEPS_DIR))
88
  subprocess.run(f"pip install {apex_wheel_path}", check=True, shell=True)
89
 
 
120
  self.runner = VideoDiffusionInfer(config)
121
  OmegaConf.set_readonly(self.runner.config, False)
122
 
 
123
  self.runner.configure_dit_model(device=self.local_device_name, checkpoint=str(checkpoint_path))
124
  self.runner.configure_vae_model()
125
 
 
214
 
215
  if seedvr_gpus_required > 0:
216
  seedvr_device_ids = hardware_manager.allocate_gpus('SeedVR', seedvr_gpus_required)
217
+ if seedvr_device_ids and 'cpu' not in seedvr_device_ids:
218
  device_to_use = seedvr_device_ids[0]
219
  seedvr_manager_singleton = SeedVrManager(device_id=device_to_use)
220
  logger.info(f"Especialista de Masterização HD (SeedVR Single Instance) pronto para usar a GPU {device_to_use}.")
221
  else:
222
  seedvr_manager_singleton = SeedVrPlaceholder()
223
+ logger.warning("SeedVR não foi inicializado porque nenhuma GPU pôde ser alocada.")
224
  else:
225
  seedvr_manager_singleton = SeedVrPlaceholder()
226
+ logger.warning("SeedVR Manager não foi inicializado (gpus_required: 0 na config).")
227
  except Exception as e:
228
  logger.critical(f"Falha CRÍTICA ao inicializar o SeedVrManager: {e}", exc_info=True)
229
  seedvr_manager_singleton = SeedVrPlaceholder()