Aduc-sdr-2_5s / start.sh
euIaxs22's picture
Update start.sh
1433526 verified
raw
history blame
3.44 kB
#!/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