aducsdr commited on
Commit
ae8872e
·
verified ·
1 Parent(s): ef829fc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -18
app.py CHANGED
@@ -9,15 +9,12 @@ CONDA_ENV_PATH = os.path.abspath(os.path.join(os.getcwd(), "seedvr_env"))
9
  CONDA_PYTHON_EXECUTABLE = os.path.join(CONDA_ENV_PATH, "bin/python")
10
 
11
  # Verifica se o ambiente conda já foi configurado
12
- # Se o Python do nosso ambiente não existe, então a configuração precisa ser executada.
13
  if not os.path.exists(CONDA_PYTHON_EXECUTABLE):
14
  print("Iniciando a configuração do ambiente Conda pela primeira vez. Isso levará vários minutos...")
15
 
16
- # Função auxiliar para executar comandos no shell
17
  def run_command(command):
18
  subprocess.run(command, shell=True, check=True, executable='/bin/bash')
19
 
20
- # 1. Instala o Miniconda
21
  if not os.path.exists("/home/user/miniconda3"):
22
  print("Baixando e instalando o Miniconda...")
23
  run_command("wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.11.0-2-Linux-x86_64.sh -O miniconda.sh")
@@ -27,43 +24,38 @@ if not os.path.exists(CONDA_PYTHON_EXECUTABLE):
27
  conda_executable = "/home/user/miniconda3/bin/conda"
28
  print("✅ Instalação do Miniconda concluída.")
29
 
30
- # 2. Cria o ambiente Conda
31
  print(f"Criando o ambiente Conda em: {CONDA_ENV_PATH}")
32
  run_command(f"{conda_executable} create --prefix {CONDA_ENV_PATH} python=3.10 -y")
33
  print("✅ Ambiente Conda criado.")
34
 
35
- # 3. Instala PyTorch, Torchvision e cudatoolkit via Conda (o método mais robusto)
36
  print("Instalando PyTorch e Torchvision com Conda...")
37
  run_command(f"{conda_executable} install --prefix {CONDA_ENV_PATH} -y -c pytorch -c nvidia pytorch torchvision pytorch-cuda=12.1")
38
  print("✅ PyTorch e Torchvision instalados.")
39
 
40
- # 4. Clona o repositório SeedVR
41
  if not os.path.exists("SeedVR"):
42
  run_command("git clone https://github.com/ByteDance-Seed/SeedVR.git")
43
  os.chdir("SeedVR")
44
 
45
- # 5. Instala dependências do requirements.txt usando o pip do novo ambiente
46
  print("Instalando dependências do requirements.txt...")
47
  run_command(f"{CONDA_PYTHON_EXECUTABLE} -m pip install -r requirements.txt")
48
 
49
- # 6. Instala flash-attn, como especificado nas instruções
50
  print("Instalando flash-attn...")
51
  run_command(f"{CONDA_PYTHON_EXECUTABLE} -m pip install flash_attn==2.5.9.post1 --no-build-isolation")
52
  print("✅ Todas as dependências foram instaladas.")
53
 
54
  print("\n*** Configuração do ambiente concluída. Reiniciando o script no ambiente correto. ***\n")
55
- # Executa novamente o script, mas desta vez com o interpretador Python do Conda
56
- os.execle(CONDA_PYTHON_EXECUTABLE, CONDA_PYTHON_EXECUTABLE, *sys.argv)
 
 
57
 
58
  # A partir daqui, o script é executado pelo Python do ambiente Conda
59
  #---------------------------------------------------------------------
60
 
61
- # Garante que estamos no diretório certo (pode ter sido perdido na reinicialização)
62
  if not os.getcwd().endswith("SeedVR"):
63
  if os.path.exists("SeedVR"):
64
  os.chdir("SeedVR")
65
 
66
- # Importações principais (agora que o ambiente está pronto)
67
  import spaces
68
  from pathlib import Path
69
  from urllib.parse import urlparse
@@ -82,7 +74,6 @@ import torchvision.transforms as T
82
  from torchvision.transforms import Compose, Lambda, Normalize
83
  from torchvision.io.video import read_video
84
 
85
- # Importações do projeto SeedVR
86
  from data.image.transforms.divisible_crop import DivisibleCrop
87
  from data.image.transforms.na_resize import NaResize
88
  from data.video.transforms.rearrange import Rearrange
@@ -94,7 +85,6 @@ from common.distributed.ops import sync_data
94
 
95
  print("Ambiente Conda verificado. Iniciando a aplicação...")
96
 
97
- # --- ETAPA 1: Baixar os Modelos Pré-treinados ---
98
  print("Baixando modelos pré-treinados...")
99
 
100
  def load_file_from_url(url, model_dir='.', progress=True, file_name=None):
@@ -120,8 +110,6 @@ for key, url in pretrain_model_url.items():
120
  model_dir = './ckpts' if key in ['vae', 'dit'] else '.'
121
  load_file_from_url(url=url, model_dir=model_dir)
122
 
123
-
124
- # --- ETAPA 2: Executar a Aplicação Principal ---
125
  os.environ["MASTER_ADDR"] = "127.0.0.1"
126
  os.environ["MASTER_PORT"] = "12355"
127
  os.environ["RANK"] = str(0)
@@ -153,7 +141,7 @@ def generation_step(runner, text_embeds_dict, cond_latents):
153
  video_tensors = runner.inference(noises=noises, conditions=conditions, **text_embeds_dict)
154
  return [rearrange(v, "c t h w -> t c h w") for v in video_tensors]
155
 
156
- @spaces.GPU
157
  def generation_loop(video_path, seed=666, fps_out=24):
158
  if video_path is None: return None, None, None
159
  runner = configure_runner()
@@ -197,7 +185,7 @@ def generation_loop(video_path, seed=666, fps_out=24):
197
  with gr.Blocks(title="SeedVR") as demo:
198
  gr.HTML(f"""
199
  <p><b>Demonstração oficial do Gradio</b> para
200
- <a href='https://github.com/ByteDance-Seed/SeedVR' target='_blank'>
201
  <b>SeedVR2: One-Step Video Restoration via Diffusion Adversarial Post-Training</b></a>.<br>
202
  🔥 <b>SeedVR2</b> é um algoritmo de restauração de imagem e vídeo em um passo para conteúdo do mundo real e AIGC.
203
  </p>
 
9
  CONDA_PYTHON_EXECUTABLE = os.path.join(CONDA_ENV_PATH, "bin/python")
10
 
11
  # Verifica se o ambiente conda já foi configurado
 
12
  if not os.path.exists(CONDA_PYTHON_EXECUTABLE):
13
  print("Iniciando a configuração do ambiente Conda pela primeira vez. Isso levará vários minutos...")
14
 
 
15
  def run_command(command):
16
  subprocess.run(command, shell=True, check=True, executable='/bin/bash')
17
 
 
18
  if not os.path.exists("/home/user/miniconda3"):
19
  print("Baixando e instalando o Miniconda...")
20
  run_command("wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.11.0-2-Linux-x86_64.sh -O miniconda.sh")
 
24
  conda_executable = "/home/user/miniconda3/bin/conda"
25
  print("✅ Instalação do Miniconda concluída.")
26
 
 
27
  print(f"Criando o ambiente Conda em: {CONDA_ENV_PATH}")
28
  run_command(f"{conda_executable} create --prefix {CONDA_ENV_PATH} python=3.10 -y")
29
  print("✅ Ambiente Conda criado.")
30
 
 
31
  print("Instalando PyTorch e Torchvision com Conda...")
32
  run_command(f"{conda_executable} install --prefix {CONDA_ENV_PATH} -y -c pytorch -c nvidia pytorch torchvision pytorch-cuda=12.1")
33
  print("✅ PyTorch e Torchvision instalados.")
34
 
 
35
  if not os.path.exists("SeedVR"):
36
  run_command("git clone https://github.com/ByteDance-Seed/SeedVR.git")
37
  os.chdir("SeedVR")
38
 
 
39
  print("Instalando dependências do requirements.txt...")
40
  run_command(f"{CONDA_PYTHON_EXECUTABLE} -m pip install -r requirements.txt")
41
 
 
42
  print("Instalando flash-attn...")
43
  run_command(f"{CONDA_PYTHON_EXECUTABLE} -m pip install flash_attn==2.5.9.post1 --no-build-isolation")
44
  print("✅ Todas as dependências foram instaladas.")
45
 
46
  print("\n*** Configuração do ambiente concluída. Reiniciando o script no ambiente correto. ***\n")
47
+ # CORREÇÃO: Usar os.execv em vez de os.execle
48
+ # O primeiro argumento é o caminho para o executável, o segundo é uma lista
49
+ # de argumentos, começando com o próprio nome do programa.
50
+ os.execv(CONDA_PYTHON_EXECUTABLE, [CONDA_PYTHON_EXECUTABLE] + sys.argv)
51
 
52
  # A partir daqui, o script é executado pelo Python do ambiente Conda
53
  #---------------------------------------------------------------------
54
 
 
55
  if not os.getcwd().endswith("SeedVR"):
56
  if os.path.exists("SeedVR"):
57
  os.chdir("SeedVR")
58
 
 
59
  import spaces
60
  from pathlib import Path
61
  from urllib.parse import urlparse
 
74
  from torchvision.transforms import Compose, Lambda, Normalize
75
  from torchvision.io.video import read_video
76
 
 
77
  from data.image.transforms.divisible_crop import DivisibleCrop
78
  from data.image.transforms.na_resize import NaResize
79
  from data.video.transforms.rearrange import Rearrange
 
85
 
86
  print("Ambiente Conda verificado. Iniciando a aplicação...")
87
 
 
88
  print("Baixando modelos pré-treinados...")
89
 
90
  def load_file_from_url(url, model_dir='.', progress=True, file_name=None):
 
110
  model_dir = './ckpts' if key in ['vae', 'dit'] else '.'
111
  load_file_from_url(url=url, model_dir=model_dir)
112
 
 
 
113
  os.environ["MASTER_ADDR"] = "127.0.0.1"
114
  os.environ["MASTER_PORT"] = "12355"
115
  os.environ["RANK"] = str(0)
 
141
  video_tensors = runner.inference(noises=noises, conditions=conditions, **text_embeds_dict)
142
  return [rearrange(v, "c t h w -> t c h w") for v in video_tensors]
143
 
144
+
145
  def generation_loop(video_path, seed=666, fps_out=24):
146
  if video_path is None: return None, None, None
147
  runner = configure_runner()
 
185
  with gr.Blocks(title="SeedVR") as demo:
186
  gr.HTML(f"""
187
  <p><b>Demonstração oficial do Gradio</b> para
188
+ <a href='https://github.com/ByteDance-Seed/SeedVR' target='-blank'>
189
  <b>SeedVR2: One-Step Video Restoration via Diffusion Adversarial Post-Training</b></a>.<br>
190
  🔥 <b>SeedVR2</b> é um algoritmo de restauração de imagem e vídeo em um passo para conteúdo do mundo real e AIGC.
191
  </p>