Spaces:
Paused
Paused
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 |