Backend de aprendizaje automatico — Python ML Backend
Componente: mlbackend_python + analytics (core Moodle)
Imagen Docker: moodlehq/moodle-mlbackend-python:3.0.5-python3.7.5
Contenedor: colombiaaprende_mlbackend
Estado: Activo y entrenado (4 de 5 modelos habilitados)
Proposito
Provee la capacidad de prediccion y analisis de aprendizaje automatico de Moodle. Procesa datos de actividad de estudiantes para predecir riesgos academicos (abandono, inactividad, falta de docencia) y pronosticar proximas actividades con entrega pendiente.
Configuracion del contenedor
Declarado en local/docker-compose.yml:
mlbackend:
image: moodlehq/moodle-mlbackend-python:3.0.5-python3.7.5
container_name: colombiaaprende_mlbackend
restart: always
environment:
MOODLE_MLBACKEND_PYTHON_USERS: "moodle:${MLBACKEND_PASSWORD}"
MOODLE_MLBACKEND_PYTHON_DIR: /var/moodle-ml
volumes:
- mlbackend_data:/var/moodle-ml
networks:
- internal
Puntos clave de la configuracion:
- Sin puerto expuesto externamente — el contenedor solo es accesible desde la red interna Docker (
internal), nunca desde el host o Internet. - Volumen persistente
mlbackend_dataen/var/moodle-ml— conserva los modelos entrenados entre reinicios del contenedor. - Credenciales via
${MLBACKEND_PASSWORD}enlocal/.env(nunca comitear).
Configuracion en Moodle
Ajustada desde Administracion del sitio > Analisis > Configuracion y verificada en base de datos:
| Parametro | Valor | Descripcion |
|---|---|---|
enableanalytics | 1 | Subsistema de analitica habilitado |
predictionsprocessor | \mlbackend_python\processor | Procesador Python seleccionado (no PHP) |
logstore | logstore_standard | Fuente de logs para el analisis |
onlycli | 1 | Predicciones solo via CLI/cron (no en peticiones web) |
calclifetime | 35 dias | Vida util de los calculos cacheados |
modeltimelimit | 1200 segundos | Tiempo maximo por ejecucion de modelo |
percentonline | 0 | Sin umbral de porcentaje de actividad online |
Conexion Moodle → contenedor
| Parametro | Valor |
|---|---|
| Host | mlbackend (nombre del servicio Docker, resolucion interna) |
| Puerto | 5000 |
| Usuario | moodle |
| Contrasena | configurada en local/.env como MLBACKEND_PASSWORD |
| Seguro (TLS) | No (red interna Docker, no necesario) |
| Usar servidor | Si (useserver = 1) |
Modelos de analitica activos
Moodle incluye 5 modelos predictivos de serie. Estado actual:
| ID | Target (objetivo) | Habilitado | Entrenado |
|---|---|---|---|
| 1 | course_dropout — Riesgo de abandono del curso | No | No |
| 2 | no_teaching — Curso sin actividad docente | Si | Si |
| 3 | upcoming_activities_due — Proximas actividades con fecha limite | Si | Si |
| 4 | no_access_since_course_start — Sin acceso desde inicio del curso | Si | Si |
| 5 | no_recent_accesses — Sin accesos recientes | Si | Si |
El modelo de abandono (
course_dropout, ID 1) esta deshabilitado porque requiere suficiente volumen de datos historicos para entrenarse de forma fiable. Se puede habilitar desde Administracion del sitio > Analisis > Modelos de analisis.
Particiones temporales evaluadas
Los modelos usan las siguientes ventanas de tiempo para evaluar predicciones:
quarters_accum— cuartos acumulados del cursoquarters— cuartos independientes del cursosingle_range— rango unico (duracion completa)
Ciclo de ejecucion
Los modelos se ejecutan unicamente via cron (CLI). Para forzar una ejecucion manual:
# Ejecutar analisis completo
docker exec colombiaaprende_web php /var/www/admin/cli/cron.php
# O directamente el task de analytics
docker exec colombiaaprende_web php /var/www/public/admin/tool/task/cli/schedule_task.php \
--execute='\core\task\analytics_cleanup_task'
Verificacion del estado
# Comprobar que el contenedor ML esta corriendo
docker ps | grep colombiaaprende_mlbackend
# Ver logs del backend Python
docker logs colombiaaprende_mlbackend --tail 50
# Verificar conectividad Moodle → mlbackend
docker exec colombiaaprende_web curl -s http://mlbackend:5000/ | head -5
Entornos
El backend ML esta configurado en todos los entornos del proyecto:
| Entorno | Imagen | Credencial |
|---|---|---|
| Local | moodle-mlbackend-python:3.0.5-python3.7.5 | local/.env → MLBACKEND_PASSWORD |
| Pruebas | idem | pruebas/.env → MLBACKEND_PASSWORD |
| Certificacion | idem | certificacion/.env → MLBACKEND_PASSWORD |