Este proyecto busca comparar el rendimiento y eficiencia de infraestructuras de cómputo paralelas y distribuidas en problemas de machine learning, específicamente en la optimización de hiperparámetros de modelos. Se utiliza el framework Ray para implementar y evaluar búsquedas de hiperparámetros tanto de forma secuencial como paralela/distribuida, permitiendo analizar ventajas y desventajas de cada enfoque.
Api/
app.py # API Flask principal
Data.py # Carga y preparación de datos
SequencialSearch.py # Búsqueda secuencial de hiperparámetros
peticion.py # Ejemplo de petición a la API
Dockerfile # Configuración para contenerización
Ray/
ParalelDisSearch.py # Búsqueda paralela/distribuida con Ray
Client/ # Frontend (React + Vite)
src/
App.jsx # Componente principal de la aplicación
components/
NeuralNetworkForm.jsx # Formulario para entrenamiento y predicción
Scripts/
headinit.bash # Script de inicialización para nodo principal
rayinit.sh # Script de configuración de Ray
workerinit.bash # Script de inicialización para nodos worker
docker-compose.yml # Configuración de servicios Docker
AwsDeployment.md # Guía de despliegue en AWS
-
Instalación Local:
cd Api pip install -r requirements.txt pip install ray # Instalación separada para compatibilidad
-
Iniciar la API:
python app.py
-
Instalación:
cd Client npm install
-
Iniciar aplicación en modo desarrollo:
npm run dev
Realiza búsqueda secuencial de hiperparámetros y predicción.
Realiza búsqueda paralela de hiperparámetros usando Ray.
Ejemplo de payload para ambos endpoints:
{
"param_grid": {
"hidden_layer_sizes": [[5], [10]],
"activation": ["relu"],
"solver": ["adam"],
"alpha": [0.001],
"max_iter": [50]
},
"age": 25,
"gender": 1,
"education": 3,
"country": 2,
"ethnicity": 1,
"nscore": 0.5,
"escore": 0.3,
"oscore": 0.2,
"ascore": 0.1,
"cscore": 0.4,
"impulsive": 0.6,
"ss": 0.7
}
Ejemplo de respuesta:
{
"best_params": { ... },
"best_score": 0.85,
"search_time": 12.34,
"prediction": 1
}
Para levantar todo el stack de desarrollo:
docker-compose up
Para ejecutar solo la API:
docker run -p 5000:5000 bayronj/rayapi
Para instrucciones detalladas sobre el despliegue en AWS, consulta el archivo AwsDeployment.md
.
El directorio Scripts/
contiene los scripts necesarios para configurar un cluster distribuido:
headinit.bash
: Configura el nodo principalrayinit.sh
: Inicializa Rayworkerinit.bash
: Configura los nodos worker
Para más detalles sobre la configuración distribuida, consulta AwsDeployment.md
.