Saltar al contenido principal

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_data en /var/moodle-ml — conserva los modelos entrenados entre reinicios del contenedor.
  • Credenciales via ${MLBACKEND_PASSWORD} en local/.env (nunca comitear).

Configuracion en Moodle

Ajustada desde Administracion del sitio > Analisis > Configuracion y verificada en base de datos:

ParametroValorDescripcion
enableanalytics1Subsistema de analitica habilitado
predictionsprocessor\mlbackend_python\processorProcesador Python seleccionado (no PHP)
logstorelogstore_standardFuente de logs para el analisis
onlycli1Predicciones solo via CLI/cron (no en peticiones web)
calclifetime35 diasVida util de los calculos cacheados
modeltimelimit1200 segundosTiempo maximo por ejecucion de modelo
percentonline0Sin umbral de porcentaje de actividad online

Conexion Moodle → contenedor

ParametroValor
Hostmlbackend (nombre del servicio Docker, resolucion interna)
Puerto5000
Usuariomoodle
Contrasenaconfigurada en local/.env como MLBACKEND_PASSWORD
Seguro (TLS)No (red interna Docker, no necesario)
Usar servidorSi (useserver = 1)

Modelos de analitica activos

Moodle incluye 5 modelos predictivos de serie. Estado actual:

IDTarget (objetivo)HabilitadoEntrenado
1course_dropout — Riesgo de abandono del cursoNoNo
2no_teaching — Curso sin actividad docenteSiSi
3upcoming_activities_due — Proximas actividades con fecha limiteSiSi
4no_access_since_course_start — Sin acceso desde inicio del cursoSiSi
5no_recent_accesses — Sin accesos recientesSiSi

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 curso
  • quarters — cuartos independientes del curso
  • single_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:

EntornoImagenCredencial
Localmoodle-mlbackend-python:3.0.5-python3.7.5local/.envMLBACKEND_PASSWORD
Pruebasidempruebas/.envMLBACKEND_PASSWORD
Certificacionidemcertificacion/.envMLBACKEND_PASSWORD