Aller au contenu

Partie 4 – Écosystème, architectures et conclusion

  • 15h00 – 17h00
  • Deep Learning 10 min · SparkR 5 min · atelier 30 min · récap 15 min · QCM 20 min · conclusion 25 min
  • Slides 31 à 40

Et si on devait concevoir demain l'architecture de données de notre application de taxis ?

Modèle pré-entraîné Couches gelées Nouvelle tête
ex. ResNet, 14 millions ──► le savoir général : ──► votre problème
d'images (ImageNet) formes, textures (quelques milliers d'exemples)

Transfer learning : on réutilise ce qu’un modèle a appris sur un énorme jeu de données. Un réseau entraîné sur ImageNet sait déjà reconnaître bords, textures et formes ; on gèle ces couches et on n’entraîne qu’une petite « tête » pour son problème (classer des photos de véhicules, d’état de chaussée, de reçus). Quelques milliers d’exemples suffisent au lieu de millions.

Le rôle de Spark : il n’entraîne pas lui-même les réseaux de neurones.

BesoinOutil Spark
Préparer à grande échelle (images, texte)Source binaryFile
Inférence distribuéepredict_batch_udf, pandas UDF
Entraînement distribuéTorchDistributor (PyTorch), Spark 3.4+

Schéma d’usage (illustratif : le modèle de vision et la bibliothèque d’inférence sont à votre choix) :

from pyspark.sql.types import IntegerType
from pyspark.ml.functions import predict_batch_udf
def fabrique(): # appelée UNE fois par Executor : charge le modèle
modele = charger_un_modele_de_vision() # par ex. torchvision, ONNX Runtime…
def predire(lot): # lot : numpy array de 64 images
return modele.classer(lot) # renvoie un tableau de 64 entiers
return predire
classer = predict_batch_udf(fabrique, return_type=IntegerType(), batch_size=64)
images = spark.read.format("binaryFile").load("data/images/")
images.withColumn("classe", classer("content")).show() # en parallèle sur le cluster
SparkR : inclus dans Sparksparklyr : l’alternative maintenue
API R officielle : SparkDataFrame, SQL, MLlibProjet Posit (ex-RStudio), communauté active
sparkR.session(), read.df(), spark.glm()…Syntaxe dplyr : filter(), group_by(), summarise()
Déprécié depuis Spark 4.0 : « SparkR is deprecated and will be removed in a future version »Traduit en Spark SQL : Catalyst optimise
À savoir lire dans l’existant, pas pour un nouveau projetAccès à MLlib : ml_random_forest(), ml_kmeans()…

SparkR existe depuis Spark 1.4. Pour une équipe R aujourd’hui, sparklyr est le choix recommandé : le code dplyr est traduit en SQL Spark, donc optimisé comme le reste.

Lambda : deux chemins Kappa : un seul chemin
┌─► Batch (exact, toutes les nuits) ─┐ Journal Streaming
Source ────┤ ├─► Service (Kafka, ─► (un seul ─► Service
événements └─► Speed (streaming, rapide) ───────┘ rejouable) code)
Recalculer = rejouer le journal
avec le nouveau code
LambdaKappa
Code2 versions à maintenir1 seul code
RecalculBatch complet, simpleRejouer le journal
Idéal pourRapports exacts + temps réelÉvénements, temps réel d’abord
OrigineNathan MarzJay Kreps

Lambda : une couche batch recalcule tout, exactement, périodiquement ; une couche speed donne une vue approximative en temps réel ; la couche service fusionne. Inconvénient : deux codes à garder cohérents. Kappa : tout est flux, les événements sont gardés dans un journal rejouable ; pour recalculer, on rejoue le journal avec le nouveau code.

Avec Spark, la frontière s’estompe : la même API sert le batch et le streaming, et availableNow permet de lancer un « streaming » comme un batch planifié. Vous avez déjà construit les deux couches : le batch du jour 1 et le streaming du jour 3, avec la même API.

Atelier – Lambda ou Kappa pour notre application de taxis ? (30 min, en groupes de 3).

Faites reformuler chaque idée par un participant différent. Reprenez la liste des attentes notées au jour 1 : cochez celles qui sont couvertes ; pour les autres, donnez une piste (documentation, ressource).

IdéeEn une phrase
1Diviser pour régnerPartitions, DAG, évaluation paresseuse : 1 shuffle = 1 stage.
2DataFrames + CatalystÉcrire en SQL ou DataFrame ; Parquet ; lire le plan.
3Pipeline MLfit / transform, train / test, la bonne métrique, pas de fuite.
4Flux = table sans finFenêtres, watermark, checkpoint : temps réel fiable.
5Une seule APIBatch, ML et streaming : choisir l’architecture selon le besoin.

Pour aller plus loin : la documentation officielle (guides SQL, MLlib, Structured Streaming), le dépôt de la formation et ses bonus, la page Ressources. La semaine prochaine : choisissez un cas de votre métier et refaites le fil rouge dessus. Cette question « comment je vais l’appliquer » prépare celle du questionnaire : « Pensez-vous pouvoir mettre en pratique ces compétences dans les semaines à venir ? »

QCM de validation des acquis, puis questionnaire de satisfaction (16h00 – 16h20)

Section intitulée « QCM de validation des acquis, puis questionnaire de satisfaction (16h00 – 16h20) »

À 16h, deux questionnaires sont envoyés automatiquement, à remplir dans cet ordre :

  1. QCM de validation des acquis : vérifie la maîtrise des objectifs de la formation. C’est aussi le moment de poser les dernières questions.
  2. Questionnaire de satisfaction : deux questions essentielles : avez-vous acquis de nouvelles compétences ? Pensez-vous pouvoir les mettre en pratique dans les semaines à venir ?

Les réponses du QCM ne sont pas commentées pendant la passation ; les questions difficiles sont reprises juste après.

Tour de table : chacun complète au moins une case de chaque colonne.

Les éléments à conserverLes éléments à revoir
Ce que j’ai apprisCe qui m’a manqué
Ce que j’ai appréciéCe qui m’a ennuyé ou déplu
Comment je me projetteCe que je changerais

Les retours alimentent l’amélioration continue du programme. Le site et le dépôt restent accessibles après la formation, et les corrigés de tous les TP sont publiés sur la branche participants du dépôt.

Dépôt des participants : formations2026/formation-spark-ml (branche participants)

Contenu pédagogique © Ambient IT · 140 Avenue Jean Lolive, 93500 Pantin · formation@ambient-it.net · +33 (0)1 48 10 09 46

Organisme de formation enregistré sous le numéro 11 75 54743 75. Cet enregistrement ne vaut pas agrément de l'État.