← Parcours
☁️

Cloud, Docker & Déploiement AWS

Avancé
🧠Comprendre en lisant n'est pas savoir écrire.🧠Un module est fini quand tu peux le reproduire fenêtre fermée.🧠Écris le problème en français avant d'écrire du code.🧠Une question impossible cache trois questions faciles.🧠Retape le code à la main. Puis referme et réécris-le.🧠Essaie d'abord, cherche ensuite.🧠Cherche « comment on écrit ça », jamais « qu'est-ce que je dois faire ».🧠Pour comprendre du code, casse-le.⌨️Une fonction qui plante sur un cas limite n'est pas finie.⌨️Si un bloc a un nom clair, il mérite d'être une fonction.⌨️Savoir lire une erreur vaut plus que connaître dix méthodes.⌨️Diagnostiquer, c'est éliminer dans l'ordre — pas essayer au hasard.⌨️Une optimisation sans mesure avant/après est une croyance.🔍Regarde le fichier avant de le charger.🔍Une performance anormalement bonne est une hypothèse à réfuter.🔍Cette valeur existe-t-elle à l'instant où je dois prédire ?🔍fit sur le train, transform partout.🔍Un chiffre qu'on ne sait pas raconter est un chiffre qu'on n'a pas compris.🔍Un graphique sans question n'a rien à dire.🤖Un score d'entraînement parfait n'est jamais une bonne nouvelle.🤖Le jeu de test ne se regarde qu'une fois.🤖Plus tu essaies de configurations, plus ton meilleur score est optimiste.🤖Un seuil de décision est un arbitrage économique, pas un réglage technique.🤖Commence toujours par une baseline. Note son score.🤖Le meilleur modèle n'est pas le plus précis, c'est celui qu'on peut maintenir.🚀Un modèle en production n'est pas un livrable, c'est un système vivant.🚀Un secret publié est un secret compromis.🚀Pour chaque permission : que se passe-t-il si cette machine est compromise ?🚀Un post-mortem qui cherche un coupable ne produit aucune amélioration.🚀« Nous n'utilisons pas cette variable » n'est pas une garantie d'équité.🚀Rends l'arbitrage explicite et chiffré. Ne le tranche pas en silence.🚀Un résultat qu'on ne sait pas reproduire est une anecdote.

🎯 Objectifs d'apprentissage

À l'issue de ce module, tu seras capable de :

  • 01Déployer une application conteneurisée sur une infrastructure cloud
  • 02Configurer des accès selon le principe du moindre privilège
  • 03Estimer et maîtriser le coût d'une architecture ML
  • 04Choisir entre serverless et instance selon le profil de charge

Prérequis

Module Setup Pro (Docker, terminal)

Docker : conteneuriser ses applications ML

55 min

Docker résout le problème "ça marche sur ma machine" : un conteneur embarque ton code + ses dépendances + son environnement d'exécution.

Concepts clés
- Image : le blueprint (recette) — défini dans un Dockerfile

- Conteneur : une instance en cours d'exécution d'une image

- Registry : dépôt d'images (Docker Hub, AWS ECR)

Dockerfile pour une API ML

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY src/ ./src/
COPY model.pkl .

EXPOSE 8000
CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "8000"]

Commandes essentielles

docker build -t mon-api-ml:v1 .     # construire l'image
docker run -p 8000:8000 mon-api-ml  # lancer le conteneur
docker ps                            # conteneurs actifs
docker logs <id>                     # voir les logs
docker stop <id>                     # arrêter

# Docker Compose : orchestrer plusieurs services (API + DB)
docker-compose up -d

Multi-stage build pour réduire la taille de l'image en production :

FROM python:3.11 AS builder
RUN pip install --user -r requirements.txt

FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
COPY . .

Ressource : Docker Docs — https://docs.docker.com/get-started/

✍️ Exercices de la leçon

2 exercices

Fais-les dans l'ordre, dans un vrai fichier .py — pas dans ta tête. Ne déplie la correction qu'après avoir écrit quelque chose, même faux.

🔧

Exercice AConteneuriser une API de prédiction

Application directe · Tu appliques ce que tu viens de lire.

Prends une API FastAPI qui charge un modèle et expose /predict, puis :

  1. 1.écris le Dockerfile
  2. 2.écris un .dockerignore
  3. 3.construis l'image et lance le conteneur sur le port 8000
  4. 4.teste l'endpoint avec curl depuis ta machine
  5. 5.consulte les logs du conteneur, puis arrête-le proprement

Vérifie enfin que l'API répond depuis l'extérieur du conteneur — c'est là que la plupart des gens bloquent la première fois.

🎯

Exercice BL'image de 1,2 Go

Page blanche · Aucun squelette : à toi de choisir la méthode.

Page blanche. Optimisation mesurée.

Ton image Docker fait 1,2 Go. Le déploiement prend huit minutes et coûte cher en stockage et en bande passante.

Réduis-la, et prouve chaque gain.

Ton travail :
1. mesure la taille de départ et identifie est le poids (quelle couche pèse quoi ?)

2. applique au moins trois optimisations de nature différente

3. mesure après chacune, séparément

4. vérifie que l'image réduite fonctionne toujours — une image légère qui ne démarre pas ne vaut rien

5. dis quelle optimisation a le meilleur rapport gain/complexité

Ne te contente pas de changer l'image de base. Il y a plus à gagner ailleurs.

🤖

Un point pas clair ? Clique sur 💬 Demander au tuteur en bas à droite.