File size: 3,441 Bytes
c00ea12
 
93626d8
c00ea12
3a7411b
c00ea12
93626d8
3a7411b
c00ea12
3a7411b
 
 
1433526
3a7411b
 
 
1433526
 
 
 
 
 
 
 
3a7411b
 
 
 
 
 
 
 
ac90475
3a7411b
22f9c33
3a7411b
22f9c33
 
 
3a7411b
22f9c33
 
 
 
9b230d1
1433526
9b230d1
3a7411b
 
 
1433526
3a7411b
 
 
687a9ef
3a7411b
687a9ef
3a7411b
687a9ef
3a7411b
 
 
9c00877
1433526
3a7411b
 
 
9c00877
3a7411b
1433526
3a7411b
 
 
 
 
 
9c00877
3a7411b
687a9ef
3a7411b
9c00877
3a7411b
 
 
bd40b35
3a7411b
 
 
7f655ac
1433526
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env bash
set -euo pipefail

echo "======================================================="
echo "       VINCIE - Start (VINCIE-3B, 8x L40S)"
echo "======================================================="

# --- Configurações de Ambiente Otimizadas ---
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0,1,2,3,4,5,6,7}"
export PYTHONFAULTHANDLER=1
export TORCH_NCCL_ASYNC_ERROR_HANDLING=1
export NCCL_DEBUG="WARN"
export NCCL_SOCKET_IFNAME="lo"
export NCCL_IB_DISABLE=1
export NCCL_P2P_DISABLE=1

# --- Adição para Gradio ---
# Exporta as variáveis que o app_vince.py irá ler.
export GRADIO_SERVER_NAME="0.0.0.0"
export GRADIO_SERVER_PORT="${PORT:-7860}" # Usa a variável PORT se definida, senão 7860
export GRADIO_ENABLE_QUEUE="True"

# ... (resto do script builder, cache, clone, etc. permanece igual) ...

# --- Builder para Dependências CUDA ---
echo "🛠️  Iniciando o builder.sh para compilar/instalar dependências CUDA..."
if [ -f "/app/builder.sh" ]; then
    /bin/bash /app/builder.sh
    echo "✅ Builder finalizado."
else
    echo "⚠️  Aviso: builder.sh não encontrado. Pulando etapa de compilação de dependências."
fi

# --- Configuração do Cache Persistente ---
if [ -d /data ]; then
  echo "Usando /data para cache persistente."
  export HF_HOME="/data/.cache/huggingface"
  export TORCH_HOME="/data/.cache/torch"
else
  echo "Usando /app/.cache para cache local."
  export HF_HOME="/app/.cache/huggingface"
  export TORCH_HOME="/app/.cache/torch"
fi
export HF_HUB_CACHE="${HF_HUB_CACHE:-$HF_HOME/hub}"
mkdir -p "$HF_HUB_CACHE" "$TORCH_HOME"
export HF_HUB_ENABLE_HF_TRANSFER=1

# --- Preparação do Código e do Modelo VINCIE ---
export MODEL_REPO="ByteDance-Seed/VINCIE-3B"
export APP_DIR="/app/VINCIE"
export CKPT_DIR="${APP_DIR}/ckpt/VINCIE-3B"
if [ ! -d "$APP_DIR" ]; then
    echo "Clonando repositório VINCIE para ${APP_DIR}..."
    git clone https://github.com/ByteDance-Seed/VINCIE.git "$APP_DIR"
else
    echo "Repositório VINCIE já existe em ${APP_DIR}. Pulando clonagem."
fi
mkdir -p "$(dirname "$CKPT_DIR")"

# --- Cache dos Modelos via Hugging Face Hub ---
echo "📦 Verificando cache dos modelos..."
python3 -c '
from huggingface_hub import snapshot_download
import os, traceback
repo_id = os.environ.get("MODEL_REPO")
cache_dir = os.environ.get("HF_HUB_CACHE")
ckpt_link_path = os.environ.get("CKPT_DIR")
try:
    print(f"📥 Baixando {repo_id} para o cache em {cache_dir}...")
    model_path_in_cache = snapshot_download(repo_id=repo_id, cache_dir=cache_dir, resume_download=True, ignore_patterns=["*.safetensors"])
    print(f"✅ Modelo em cache: {model_path_in_cache}")
    if not os.path.lexists(ckpt_link_path):
        os.symlink(model_path_in_cache, ckpt_link_path)
        print(f"🔗 Symlink criado: {ckpt_link_path} -> {model_path_in_cache}")
    else:
        print(f"✅ Symlink já existe em {ckpt_link_path}.")
except Exception as e:
    print(f"⚠️ Falha no download ou criação de symlink do modelo: {e}")
    traceback.print_exc()
'

# --- Diagnóstico Final (Opcional) ---
echo "🕵️  Verificando conteúdo do diretório de checkpoints..."
ls -lA "$CKPT_DIR" || echo "⚠️  Não foi possível listar o diretório de checkpoints."

# --- Subindo a Aplicação ---
echo "🚀 Iniciando a interface web VINCIE (app_vince.py)..."
cd "$APP_DIR"

# A chamada agora é mais limpa, pois a configuração está no ambiente
python3 /app/app_vince.py