UD00 · Taller 4 — Contenedor de prácticas de IA¶
Entrega · hecho / no hecho
Se entrega en Aules y se califica como hecho / no hecho: se registra en el libro de calificaciones con peso 0 —no puntúa, pero consta— y es requisito. Al terminar tendrás el entorno del curso levantado, que es el que usarás en el resto de las unidades. Sin él no se pueden hacer las prácticas de la UD02.
Objetivo: levantar un entorno Jupyter reproducible con las bibliotecas del curso.
Fase 1 — Estructura de trabajo¶
1 2 3 4 5 | |
Fase 2 — requirements-ia.txt¶
1 2 3 4 5 6 7 8 9 10 | |
¿Y experta?
No va en este fichero: exige frozendict==1.2, y en esta imagen esa versión rompe el propio conda, que necesita la 2.x. Se instala aparte, sin dependencias, en la primera celda de código del notebook N01 (fase 5). El porqué está en el apartado 6.5 de los apuntes.
Fase 3 — docker-compose.yml¶
1 2 3 4 5 6 7 8 9 10 | |
La imagen está en quay.io, no en Docker Hub
Las imágenes jupyter/* de Docker Hub dejaron de actualizarse en 2023: el proyecto Jupyter publica ahora en quay.io/jupyter/…. Escribe el nombre completo, con el prefijo quay.io/.
Fase 4 — Verifica la configuración antes de arrancar¶
1 | |
Comprueba que el puerto 8888:8888 y el token quedan resueltos correctamente.
Fase 5 — Arranca Jupyter¶
1 2 | |
Abre en el navegador http://localhost:8888 y usa el token cursoia.
El contenedor se para nada más arrancar (Exited (1))
Mira el motivo con docker compose logs jupyter. Si aparece un tarfile.ReadError: empty file o cualquier error al leer un fichero de /opt/conda, la imagen se descargó mal (descarga interrumpida o disco lleno). El fallo está en la imagen, no en tu docker-compose.yml: bórrala y descárgala de nuevo.
1 2 3 4 | |
Para comprobar el entorno usa el notebook N01 · Bienvenida al entorno Python para IA: descárgalo en tu carpeta notebooks/ y ábrelo desde la carpeta work de Jupyter. No se entrega, pero es el que demuestra que el entorno funciona.
La imagen ya trae numpy, pandas, matplotlib y scikit-learn; el resto de bibliotecas del curso las instala su primera celda de código, a partir del requirements-ia.txt que el compose monta en /home/jovyan (un nivel por encima de work):
1 2 3 4 5 6 7 | |
La primera vez tarda unos minutos (torch y spacy pesan); si ya están instaladas, pip lo comprueba en unos segundos. La última línea instala experta sin dejar que baje frozendict a la 1.2. El aviso «you may need to restart the kernel» solo importa si alguna biblioteca ya estaba importada antes de instalarla; en ese caso, Kernel → Restart Kernel y sigue.
La celda siguiente importa todas las bibliotecas y muestra sus versiones: si no da ningún error, el entorno está listo.
Los paquetes viven en el contenedor, no en la imagen
Lo que instala %pip desaparece con docker compose down, porque el siguiente up crea un contenedor nuevo a partir de la imagen. Tus notebooks no se pierden (están en notebooks/): basta con volver a ejecutar la celda de instalación del N01. stop y start no borran el contenedor y conservan lo instalado.
Nota para spacy
Algunos modelos de spacy se descargan aparte (python -m spacy download es_core_news_sm). Lo veremos en la UD03.
Fase 6 — Gestiona el servicio¶
1 2 3 4 5 | |
Fase 7 — Persistencia (volúmenes nombrados)¶
Modifica el docker-compose.yml para que la carpeta de Jupyter use un volumen nombrado y comprueba que tus notebooks sobreviven a un down + up:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Entrega¶
Sube a la tarea T04 · Contenedor de prácticas de IA de Aules un único fichero PDF con:
- la memoria con las evidencias pedidas en el apartado «Entrega» (capturas de las fases 5 y 7, salida de
docker compose psy la respuesta razonada).
Aules solo acepta un PDF en esta tarea. El plazo acaba a las 23:59 del día que marca la tarea; después la tarea se cierra y ya no admite entregas.
Qué tiene que verse en la memoria
- Captura de la fase 5 de este taller (Jupyter abierto con el import correcto).
- Salida de
docker compose psmostrando el servicio activo. - Respuesta a: ¿por qué este entorno es reproducible en cualquier equipo?
- Captura de la fase 7 mostrando que un notebook sobrevive a
docker compose down.
Soluciones
Las soluciones no se publican: se corrigen y comentan en clase.