Adapters
finance
MegaSol / scripts /deploy.sh
joseififif's picture
Create scripts/deploy.sh
fed055e verified
#!/bin/bash
# Script de despliegue completo para Diamond AI Platform
set -e # Exit on error
echo "🚀 Iniciando despliegue de Diamond AI Platform..."
# Variables de configuración
ENVIRONMENT=${1:-production}
MODEL_NAME="wizardlm-7b-uncensored"
SOLANA_NETWORK="mainnet-beta"
# Colores para output
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Función para verificar comandos
check_command() {
if ! command -v $1 &> /dev/null; then
echo -e "${RED}Error: $1 no está instalado${NC}"
exit 1
fi
}
# Verificar dependencias
echo "📦 Verificando dependencias..."
check_command docker
check_command docker-compose
check_command nvidia-docker
check_command solana
check_command python3
# Verificar GPUs disponibles
echo "🎮 Verificando GPUs..."
if ! nvidia-smi &> /dev/null; then
echo -e "${RED}Error: No se detectaron GPUs NVIDIA${NC}"
exit 1
fi
# Configurar entorno
echo "⚙️ Configurando entorno $ENVIRONMENT..."
export ENVIRONMENT=$ENVIRONMENT
export SOLANA_NETWORK=$SOLANA_NETWORK
# Crear directorios necesarios
echo "📁 Creando estructura de directorios..."
mkdir -p data/{models,datasets,logs}
mkdir -p triton_models/$MODEL_NAME
mkdir -p prometheus_data grafana_data
# Descargar modelo WizardLM
echo "🤖 Descargando modelo $MODEL_NAME..."
if [ ! -d "data/models/$MODEL_NAME" ]; then
python3 scripts/download_model.py \
--model-name $MODEL_NAME \
--output-dir data/models/$MODEL_NAME \
--quantization fp16
fi
# Convertir modelo a formato Tritón
echo "🔄 Convirtiendo modelo a formato Tritón..."
python3 scripts/convert_to_triton.py \
--input data/models/$MODEL_NAME \
--output triton_models/$MODEL_NAME \
--model-type gpt \
--dtype fp16
# Configurar Tritón
echo "🎯 Configurando Tritón Inference Server..."
cp config/triton/* triton_models/
# Inicializar base de datos
echo "🗄️ Inicializando base de datos..."
docker-compose up -d postgres
sleep 10 # Esperar que PostgreSQL inicie
# Ejecutar migraciones
echo "🔄 Ejecutando migraciones de base de datos..."
docker-compose exec backend python -m alembic upgrade head
# Verificar balance de tokens de la plataforma
echo "💰 Verificando tokens DIAMANTE de la plataforma..."
SOLANA_BALANCE=$(solana balance --url $SOLANA_NETWORK 2>/dev/null || echo "0 SOL")
echo "Balance de plataforma: $SOLANA_BALANCE"
# Iniciar todos los servicios
echo "🚀 Iniciando todos los servicios..."
docker-compose up -d
# Esperar que los servicios estén listos
echo "⏳ Esperando que los servicios estén listos..."
sleep 30
# Verificar salud de los servicios
echo "🏥 Verificando salud de los servicios..."
for service in triton-server backend postgres redis; do
if docker-compose ps $service | grep -q "Up"; then
echo -e "${GREEN}$service está en ejecución${NC}"
else
echo -e "${RED}$service no está ejecutándose${NC}"
exit 1
fi
done
# Inicializar tokens de la plataforma
echo "💎 Inicializando tokens DIAMANTE..."
docker-compose exec backend python scripts/init_tokens.py
# Ejecutar tests
echo "🧪 Ejecutando tests..."
docker-compose exec backend python -m pytest tests/ -v
echo -e "${GREEN}✅ Despliegue completado exitosamente!${NC}"
echo ""
echo "🌐 URLs de acceso:"
echo " Frontend: http://localhost:3000"
echo " API: http://localhost:8080"
echo " Tritón: http://localhost:8000"
echo " Grafana: http://localhost:3001"
echo " Prometheus: http://localhost:9090"
echo ""
echo "📋 Comandos útiles:"
echo " Ver logs: docker-compose logs -f"
echo " Detener: docker-compose down"
echo " Reiniciar: docker-compose restart"
echo " Actualizar: ./scripts/update.sh"