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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -79
app.py CHANGED
@@ -1,87 +1,100 @@
1
- # // Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
2
- # //
3
- # // Licensed under the Apache License, Version 2.0 (the "License");
4
- # // you may not use this file except in compliance with the License.
5
- # // You may obtain a copy of the License at
6
- # //
7
- # // http://www.apache.org/licenses/LICENSE-2.0
8
- # //
9
- # // Unless required by applicable law or agreed to in writing, software
10
- # // distributed under the License is distributed on an "AS IS" BASIS,
11
- # // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # // See the License for the specific language governing permissions and
13
- # // limitations under the License.
14
  import os
15
  import sys
16
  import subprocess
17
- import importlib
18
 
19
  # --- ETAPA 0: CONFIGURAÇÃO ROBUSTA DO AMBIENTE COM CONDA ---
20
 
21
- CONDA_PYTHON_EXECUTABLE = "/home/user/miniconda3/bin/python"
 
 
22
 
23
  # Verifica se o ambiente conda já foi configurado
 
24
  if not os.path.exists(CONDA_PYTHON_EXECUTABLE):
25
- print("Iniciando a configuração do ambiente Conda pela primeira vez. Isso pode levar alguns minutos...")
26
 
27
- # Função para executar comandos no shell
28
  def run_command(command):
29
  subprocess.run(command, shell=True, check=True, executable='/bin/bash')
30
 
31
- # Instala o Miniconda
32
- print("Baixando e instalando o Miniconda...")
33
- run_command("wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.11.0-2-Linux-x86_64.sh -O miniconda.sh")
34
- run_command("bash miniconda.sh -b -p /home/user/miniconda3")
35
- run_command("rm miniconda.sh")
 
 
 
36
  print("✅ Instalação do Miniconda concluída.")
37
 
38
- # Define o caminho para o executável do Conda
39
- conda_executable = "/home/user/miniconda3/bin/conda"
40
- os.environ['PATH'] = f"/home/user/miniconda3/bin:{os.environ['PATH']}"
41
-
42
- # Instala as dependências críticas com Conda (PyTorch, Apex pré-compilado)
43
- print("Instalando PyTorch, Apex e dependências CUDA com Conda...")
44
- run_command(f"{conda_executable} install -y -c pytorch -c nvidia pytorch torchvision pytorch-cuda=12.1 apex")
45
- print(" Instalação de PyTorch e Apex via Conda concluída.")
46
-
47
- # Instala as dependências restantes com o pip do ambiente conda
48
- print("Instalando pacotes restantes com Pip (incluindo flash-attn)...")
49
- pip_packages = [
50
- "einops", "omegaconf", "lpips", "bson", "tensorflow", "opencv-python",
51
- "sentencepiece", "diffusers", "rotary-embedding-torch", "transformers",
52
- "tiktoken", "transformers_stream_generator", "torchmetrics", "pycocotools",
53
- "torch-fidelity", "moviepy", "imageio", "tabulate", "deepdiff",
54
- "parameterized", "mediapy", "av", "gradio",
55
- "flash-attn" # Tenta instalar por último no ambiente já configurado
56
- ]
57
- run_command(f"{CONDA_PYTHON_EXECUTABLE} -m pip install {' '.join(pip_packages)} --no-build-isolation")
58
- print(" Instalação das dependências do Pip concluída.")
59
-
60
- print("\n*** Configuração do ambiente concluída. Reiniciando o script agora. ***\n")
 
 
61
  # Executa novamente o script, mas desta vez com o interpretador Python do Conda
62
  os.execle(CONDA_PYTHON_EXECUTABLE, CONDA_PYTHON_EXECUTABLE, *sys.argv)
63
 
64
  # A partir daqui, o script é executado pelo Python do ambiente Conda
65
  #---------------------------------------------------------------------
66
 
 
 
 
 
 
 
67
  import spaces
68
  from pathlib import Path
69
  from urllib.parse import urlparse
70
- from torch.hub import download_url_to_file
71
  import torch
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
- # --- ETAPA 1: Clonar o Repositório do GitHub ---
74
- repo_name = "SeedVR"
75
- if not os.path.exists(repo_name):
76
- print(f"Clonando o repositório {repo_name} do GitHub...")
77
- subprocess.run(f"git clone https://github.com/ByteDance-Seed/{repo_name}.git", shell=True, check=True)
 
 
 
 
78
 
79
- # --- ETAPA 2: Mudar para o Diretório e Configurar o Ambiente ---
80
- os.chdir(repo_name)
81
- print(f"Diretório de trabalho alterado para: {os.getcwd()}")
82
- sys.path.insert(0, os.path.abspath('.'))
83
 
84
- # --- ETAPA 3: Baixar os Modelos Pré-treinados ---
85
  print("Baixando modelos pré-treinados...")
86
 
87
  def load_file_from_url(url, model_dir='.', progress=True, file_name=None):
@@ -108,29 +121,7 @@ for key, url in pretrain_model_url.items():
108
  load_file_from_url(url=url, model_dir=model_dir)
109
 
110
 
111
- # --- ETAPA 4: Executar a Aplicação Principal ---
112
- import mediapy
113
- from einops import rearrange
114
- from omegaconf import OmegaConf
115
- import datetime
116
- import gc
117
- from PIL import Image
118
- import gradio as gr
119
- import uuid
120
- import mimetypes
121
- import torchvision.transforms as T
122
- from torchvision.transforms import Compose, Lambda, Normalize
123
- from torchvision.io.video import read_video
124
-
125
- from data.image.transforms.divisible_crop import DivisibleCrop
126
- from data.image.transforms.na_resize import NaResize
127
- from data.video.transforms.rearrange import Rearrange
128
- from common.config import load_config
129
- from common.distributed import init_torch
130
- from common.seed import set_seed
131
- from projects.video_diffusion_sr.infer import VideoDiffusionInfer
132
- from common.distributed.ops import sync_data
133
-
134
  os.environ["MASTER_ADDR"] = "127.0.0.1"
135
  os.environ["MASTER_PORT"] = "12355"
136
  os.environ["RANK"] = str(0)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
  import sys
3
  import subprocess
 
4
 
5
  # --- ETAPA 0: CONFIGURAÇÃO ROBUSTA DO AMBIENTE COM CONDA ---
6
 
7
+ # Define o caminho para o ambiente conda que vamos criar
8
+ 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")
24
+ run_command("bash miniconda.sh -b -p /home/user/miniconda3")
25
+ run_command("rm miniconda.sh")
26
+
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
 
70
  import torch
71
+ from torch.hub import download_url_to_file
72
+ import mediapy
73
+ from einops import rearrange
74
+ from omegaconf import OmegaConf
75
+ import datetime
76
+ import gc
77
+ from PIL import Image
78
+ import gradio as gr
79
+ import uuid
80
+ import mimetypes
81
+ 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
89
+ from common.config import load_config
90
+ from common.distributed import init_torch
91
+ from common.seed import set_seed
92
+ from projects.video_diffusion_sr.infer import VideoDiffusionInfer
93
+ 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):
 
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)