#!/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"