|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
echo "🚀 Iniciando despliegue de Diamond AI Platform..." |
|
|
|
|
|
|
|
|
ENVIRONMENT=${1:-production} |
|
|
MODEL_NAME="wizardlm-7b-uncensored" |
|
|
SOLANA_NETWORK="mainnet-beta" |
|
|
|
|
|
|
|
|
GREEN='\033[0;32m' |
|
|
RED='\033[0;31m' |
|
|
NC='\033[0m' |
|
|
|
|
|
|
|
|
check_command() { |
|
|
if ! command -v $1 &> /dev/null; then |
|
|
echo -e "${RED}Error: $1 no está instalado${NC}" |
|
|
exit 1 |
|
|
fi |
|
|
} |
|
|
|
|
|
|
|
|
echo "📦 Verificando dependencias..." |
|
|
check_command docker |
|
|
check_command docker-compose |
|
|
check_command nvidia-docker |
|
|
check_command solana |
|
|
check_command python3 |
|
|
|
|
|
|
|
|
echo "🎮 Verificando GPUs..." |
|
|
if ! nvidia-smi &> /dev/null; then |
|
|
echo -e "${RED}Error: No se detectaron GPUs NVIDIA${NC}" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
echo "⚙️ Configurando entorno $ENVIRONMENT..." |
|
|
export ENVIRONMENT=$ENVIRONMENT |
|
|
export SOLANA_NETWORK=$SOLANA_NETWORK |
|
|
|
|
|
|
|
|
echo "📁 Creando estructura de directorios..." |
|
|
mkdir -p data/{models,datasets,logs} |
|
|
mkdir -p triton_models/$MODEL_NAME |
|
|
mkdir -p prometheus_data grafana_data |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
echo "🎯 Configurando Tritón Inference Server..." |
|
|
cp config/triton/* triton_models/ |
|
|
|
|
|
|
|
|
echo "🗄️ Inicializando base de datos..." |
|
|
docker-compose up -d postgres |
|
|
sleep 10 |
|
|
|
|
|
|
|
|
echo "🔄 Ejecutando migraciones de base de datos..." |
|
|
docker-compose exec backend python -m alembic upgrade head |
|
|
|
|
|
|
|
|
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" |
|
|
|
|
|
|
|
|
echo "🚀 Iniciando todos los servicios..." |
|
|
docker-compose up -d |
|
|
|
|
|
|
|
|
echo "⏳ Esperando que los servicios estén listos..." |
|
|
sleep 30 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
echo "💎 Inicializando tokens DIAMANTE..." |
|
|
docker-compose exec backend python scripts/init_tokens.py |
|
|
|
|
|
|
|
|
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" |