Suivez nous sur

Guide des meilleurs outils MLOps : pondĂ©rations et biais, comète et plus

Intelligence Artificielle

Guide des meilleurs outils MLOps : pondĂ©rations et biais, comète et plus

mm
Guide des outils MLOps : pondĂ©rations et biais, comète et plus

Machine Learning Operations (MLOps) est un ensemble de pratiques et de principes qui visent à unifier les processus de développement, de déploiement et de maintenance de modèles d'apprentissage automatique dans les environnements de production. Il combine les principes du DevOps, tels que l'intégration continue, la livraison continue et la surveillance continue, avec les défis uniques de la gestion des modèles et des ensembles de données d'apprentissage automatique.

À mesure que l’adoption de l’apprentissage automatique dans divers secteurs continue de croître, la demande d’outils MLOps robustes a également augmenté. Ces outils aident à rationaliser l'ensemble du cycle de vie des projets d'apprentissage automatique, de la préparation des données et de la formation des modèles au déploiement et à la surveillance. Dans ce guide complet, nous explorerons certains des meilleurs outils MLOps disponibles, notamment Weights & Biases, Comet et autres, ainsi que leurs fonctionnalités, cas d'utilisation et exemples de code.

Qu'est-ce que MLOps?

MLOps, ou Machine Learning Operations, est un domaine multidisciplinaire qui combine les principes des pratiques de ML, d'ingénierie logicielle et DevOps pour rationaliser le déploiement, la surveillance et la maintenance des modèles de ML dans les environnements de production. En établissant des flux de travail standardisés, en automatisant les tâches répétitives et en mettant en œuvre des mécanismes de surveillance et de gouvernance robustes, MLOps permet aux organisations d'accélérer le développement de modèles, d'améliorer la fiabilité du déploiement et de maximiser la valeur dérivée des initiatives de ML.

Création et maintenance de pipelines ML

Lors de la création d'un produit ou d'un service basé sur l'apprentissage automatique, la formation et l'évaluation du modèle sur quelques échantillons réels ne signifient pas nécessairement la fin de vos responsabilités. Vous devez mettre ce modèle à la disposition des utilisateurs finaux, le surveiller et le recycler pour de meilleures performances si nécessaire. Un pipeline d'apprentissage automatique (ML) traditionnel est un ensemble de différentes étapes qui incluent la collecte de données, la préparation des données, la formation et l'évaluation du modèle, le réglage des hyperparamètres (si nécessaire), le déploiement et la mise à l'échelle du modèle, la surveillance, la sécurité et la conformité, ainsi que le CI/CD.

Une équipe d'ingénierie en apprentissage automatique est chargée de travailler sur les quatre premières étapes du pipeline ML, tandis que les deux dernières étapes relèvent des responsabilités de l'équipe des opérations. Puisqu'il existe une démarcation claire entre les équipes d'apprentissage automatique et d'exploitation pour la plupart des organisations, une collaboration et une communication efficaces entre les deux équipes sont essentielles au succès du développement, du déploiement et de la maintenance des systèmes ML. Cette collaboration entre les équipes ML et opérationnelles est ce que vous appelez MLOps et se concentre sur la rationalisation du processus de déploiement des modèles ML en production, ainsi que sur leur maintenance et leur surveillance. Bien que MLOps soit l'abréviation de ML et opérations, ne vous y trompez pas, car il peut permettre des collaborations entre les data scientists, les ingénieurs DevOps et les équipes informatiques.

La responsabilité principale de MLOps est de faciliter une collaboration efficace entre les équipes de ML et d'exploitation afin d'améliorer le rythme de développement et de déploiement des modèles à l'aide de pratiques d'intégration et de développement continus (CI/CD) complétées par la surveillance, la validation et la gouvernance des modèles de ML. Les outils et logiciels qui facilitent le CI/CD automatisé, le développement facile, le déploiement à grande échelle, la rationalisation des flux de travail et l'amélioration de la collaboration sont souvent appelés outils MLOps. Après de nombreuses recherches, j'ai dressé une liste de divers outils MLOps utilisés par certains grands géants de la technologie comme Netflix, Uber, DoorDash, LUSH, etc. Nous allons en discuter tous plus tard dans cet article.

Types d'outils MLOps

Les outils MLOps jouent un rôle central à chaque étape du cycle de vie du machine learning. Dans cette section, vous verrez une répartition claire des rôles d'une liste d'outils MLOps à chaque étape du cycle de vie du ML.

Outils d'orchestration de pipelines

L'orchestration de pipeline en termes d'apprentissage automatique fait référence au processus de gestion et de coordination de diverses tâches et composants impliqués dans le flux de travail ML de bout en bout, du prétraitement des données et de la formation des modèles au déploiement et à la surveillance des modèles.

Le logiciel MLOps est très populaire dans cet espace car il fournit des fonctionnalités telles que la gestion des flux de travail, la gestion des dépendances, la parallélisation, le contrôle des versions et l'automatisation du déploiement, permettant aux organisations de rationaliser leurs flux de travail de ML, d'améliorer la collaboration entre les scientifiques et les ingénieurs des données et d'accélérer la livraison du ML. solutions.

Modèles de cadres de formation

Cette étape implique le processus de création et d'optimisation de modèles prédictifs avec des données étiquetées et non étiquetées. Pendant la formation, les modèles apprennent les modèles et les relations sous-jacentes dans les données, ajustant leurs paramètres pour minimiser la différence entre les résultats prévus et réels. Vous pouvez considérer cette étape comme l’étape la plus gourmande en code de l’ensemble du pipeline ML. C'est la raison pour laquelle les data scientists doivent être activement impliqués dans cette étape car ils doivent essayer différents algorithmes et combinaisons de paramètres.

Des frameworks d'apprentissage automatique comme scikit-apprendre sont très populaires pour la formation de modèles d'apprentissage automatique tout en TensorFlow et PyTorch sont populaires pour former des modèles d’apprentissage profond comprenant différents réseaux de neurones.

Déploiement de modèles et plates-formes de service

Une fois que l'équipe de développement a fini de former le modèle, elle doit rendre ce modèle disponible pour inférence dans l'environnement de production où ces modèles peuvent générer des prédictions. Cela implique généralement le déploiement du modèle sur une infrastructure de service, la configuration d'API pour la communication, la gestion et la gestion des versions du modèle, la mise à l'échelle et l'équilibrage de charge automatisés, ainsi que la garantie de l'évolutivité, de la fiabilité et des performances.

Les outils MLOps offrent des fonctionnalités telles que la conteneurisation, l'orchestration, la gestion des versions de modèles, les tests A/B et la journalisation, permettant aux organisations de déployer et de servir des modèles ML de manière efficace et efficiente.

Outils de suivi et d’observabilité

Le développement et le déploiement des modèles ne sont pas un processus ponctuel. Lorsque vous développez un modèle sur une certaine distribution de données, vous vous attendez à ce que le modèle fasse également des prédictions pour la même distribution de données en production. Ce n'est pas idéal car la distribution des données est susceptible de changer dans le monde réel, ce qui entraîne une dégradation de la puissance prédictive du modèle, c'est ce que vous appelez la dérive des données. Il n’existe qu’une seule façon d’identifier la dérive des données : en surveillant en permanence vos modèles en production.

La surveillance et l'observabilité des modèles dans l'apprentissage automatique incluent la surveillance de mesures clés telles que la précision des prédictions, la latence, le débit et l'utilisation des ressources, ainsi que la détection des anomalies, des dérives et des changements de concepts dans la distribution des données. Les outils de surveillance MLOps peuvent automatiser la collecte de données de télémétrie, permettre une analyse et une visualisation en temps réel des métriques et déclencher des alertes et des actions en fonction de seuils ou de conditions prédéfinis.

Plateformes de collaboration et de suivi des expériences

Supposons que vous travailliez au développement d'un système ML avec une équipe de collègues data scientists. Si vous n’utilisez pas un mécanisme permettant de suivre quels modèles ont été essayés, qui travaille sur quelle partie du pipeline, etc., il vous sera difficile de déterminer quels modèles ont déjà été essayés par vous ou par d’autres. Il se pourrait également que deux développeurs travaillent au développement des mêmes fonctionnalités, ce qui constitue en réalité une perte de temps et de ressources. Et comme vous ne suivez rien en rapport avec votre projet, vous ne pouvez certainement pas utiliser ces connaissances pour d'autres projets, limitant ainsi la reproductibilité.

Les outils MLOps de collaboration et de suivi des expériences permettent aux scientifiques des données et aux ingénieurs de collaborer efficacement, de partager des connaissances et de reproduire des expériences pour le développement et l'optimisation de modèles. Ces outils offrent des fonctionnalités telles que le suivi des expériences, la gestion des versions, le suivi du lignage et le registre des modèles, permettant aux équipes d'enregistrer les expériences, de suivre les modifications et de comparer les résultats entre différentes itérations de modèles ML.

Stockage des données et gestion des versions

Tout en travaillant sur les pipelines ML, vous apportez des modifications importantes aux données brutes lors de la phase de prétraitement. Pour une raison quelconque, si vous ne parvenez pas à entraîner votre modèle immédiatement, vous souhaitez stocker ces données prétraitées pour éviter un travail répété. Il en va de même pour le code, vous aurez toujours envie de continuer à travailler sur le code qu'il vous reste lors de votre session précédente.

Les outils de stockage de données et de gestion de versions MLOps offrent des fonctionnalités telles que la gestion des versions des données, la gestion des artefacts, le suivi des métadonnées et le traçage des données, permettant aux équipes de suivre les modifications, de reproduire les expériences et d'assurer la cohérence et la reproductibilité entre les différentes itérations des modèles ML.

Calcul et infrastructure

Lorsque vous parlez de formation, de déploiement et de mise à l’échelle des modèles, tout se résume à l’informatique et à l’infrastructure. Surtout à l’heure actuelle où les grands modèles de langage (LLM) font leur chemin dans plusieurs projets d’IA générative basés sur l’industrie. Vous pouvez sûrement former un simple classificateur sur un système doté de 8 Go de RAM et sans périphérique GPU, mais il ne serait pas prudent de former un modèle LLM sur la même infrastructure.

Les outils de calcul et d'infrastructure offrent des fonctionnalités telles que la conteneurisation, l'orchestration, la mise à l'échelle automatique et la gestion des ressources, permettant aux organisations d'utiliser efficacement les ressources cloud, l'infrastructure sur site ou les environnements hybrides pour les charges de travail de ML.

Meilleurs outils et plateformes MLOps pour 2024

Bien que Weights & Biases et Comet soient des startups MLOps de premier plan, plusieurs autres outils sont disponibles pour prendre en charge divers aspects du cycle de vie de l'apprentissage automatique. Voici quelques exemples notables :

  • MLflow: MLflow est une plate-forme open source qui permet de gĂ©rer l'ensemble du cycle de vie de l'apprentissage automatique, y compris le suivi des expĂ©riences, la reproductibilitĂ©, le dĂ©ploiement et un registre central de modèles.
  • Kubeflow: Kubeflow est une plateforme open source conçue pour simplifier le dĂ©ploiement de modèles de machine learning sur Kubernetes. Il fournit un ensemble complet d'outils pour la prĂ©paration des donnĂ©es, la formation des modèles, l'optimisation des modèles, la diffusion de prĂ©dictions et la surveillance des modèles dans les environnements de production.
  • BentoML: BentoML est un premier outil Python pour dĂ©ployer et maintenir des modèles d'apprentissage automatique en production. Il prend en charge l'infĂ©rence parallèle, le traitement par lots adaptatif et l'accĂ©lĂ©ration matĂ©rielle, permettant une diffusion de modèles efficace et Ă©volutive.
  • Tableau Tenseur: DĂ©veloppĂ© par l'Ă©quipe TensorFlow, TensorBoard est un outil de visualisation open source pour les expĂ©riences d'apprentissage automatique. Il permet aux utilisateurs de suivre les mĂ©triques, de visualiser des graphiques de modèles, des intĂ©grations de projets et de partager les rĂ©sultats des expĂ©riences.
  • Évidemment: Évidemment, AI est une bibliothèque Python open source permettant de surveiller les modèles d'apprentissage automatique pendant le dĂ©veloppement, la validation et la production. Il vĂ©rifie la qualitĂ© des donnĂ©es et des modèles, la dĂ©rive des donnĂ©es, la dĂ©rive des cibles ainsi que les performances de rĂ©gression et de classification.
  • Amazon Sage Maker: Amazon Web Services SageMaker est une solution MLOps complète qui couvre la formation des modèles, le suivi des expĂ©riences, le dĂ©ploiement des modèles, la surveillance, etc. Il fournit un environnement collaboratif pour les Ă©quipes de science des donnĂ©es, permettant l'automatisation des flux de travail ML et la surveillance continue des modèles en production.

Qu’est-ce que les pondĂ©rations et les biais ?

Weights & Biases (W&B) est une plateforme populaire de suivi et de visualisation des expériences d'apprentissage automatique qui aide les scientifiques des données et les praticiens du ML à gérer et analyser facilement leurs modèles. Il propose une suite d'outils qui prennent en charge chaque étape du flux de travail ML, de la configuration du projet au déploiement du modèle.

Principales caractéristiques des pondérations et des biais

  1. Suivi et journalisation des expériences: W&B permet aux utilisateurs d'enregistrer et de suivre les expériences, en capturant des informations essentielles telles que les hyperparamètres, l'architecture du modèle et les détails des ensembles de données. En enregistrant ces paramètres, les utilisateurs peuvent facilement reproduire des expériences et comparer les résultats, facilitant ainsi la collaboration entre les membres de l'équipe.
import wandb

# Initialize W&B
wandb.init(project="my-project", entity="my-team")

# Log hyperparameters
config = wandb.config
config.learning_rate = 0.001
config.batch_size = 32

# Log metrics during training
wandb.log({"loss": 0.5, "accuracy": 0.92})
  1. Visualisations et tableaux de bord: W&B fournit un tableau de bord interactif pour visualiser les résultats des expériences, facilitant ainsi l'analyse des tendances, la comparaison des modèles et l'identification des domaines à améliorer. Ces visualisations incluent des graphiques personnalisables, des matrices de confusion et des histogrammes. Le tableau de bord peut être partagé avec des collaborateurs, permettant une communication et un partage de connaissances efficaces.
# Log confusion matrix
wandb.log({"confusion_matrix": wandb.plot.confusion_matrix(predictions, labels)})

# Log a custom chart
wandb.log({"chart": wandb.plot.line_series(x=[1, 2, 3], y=[[1, 2, 3], [4, 5, 6]])})
  1. Versionnement et comparaison des modèles: Avec W&B, les utilisateurs peuvent facilement suivre et comparer différentes versions de leurs modèles. Cette fonctionnalité est particulièrement utile lors de l'expérimentation de différentes architectures, hyperparamètres ou techniques de prétraitement. En conservant un historique des modèles, les utilisateurs peuvent identifier les configurations les plus performantes et prendre des décisions basées sur les données.
# Save model artifact
wandb.save("model.h5")

# Log multiple versions of a model
with wandb.init(project="my-project", entity="my-team"):
# Train and log model version 1
wandb.log({"accuracy": 0.85})

with wandb.init(project="my-project", entity="my-team"):
# Train and log model version 2
wandb.log({"accuracy": 0.92})
  1. Intégration avec les frameworks ML populairesW&B s'intègre parfaitement aux frameworks de ML populaires tels que TensorFlow, PyTorch et scikit-learn. Il offre des intégrations légères nécessitant un minimum de modifications de code, permettant aux utilisateurs d'exploiter les fonctionnalités de W&B sans perturber leurs flux de travail existants.
import wandb
import tensorflow as tf

# Initialize W&B and log metrics during training
wandb.init(project="my-project", entity="my-team")
wandb.tensorflow.log(tf.summary.scalar('loss', loss))

C'est quoi Comète ?

Comet est une plateforme d'apprentissage automatique basée sur le cloud où les développeurs peuvent suivre, comparer, analyser et optimiser les expériences. Il est conçu pour être rapide à installer et facile à utiliser, permettant aux utilisateurs de commencer à suivre leurs expériences de ML avec seulement quelques lignes de code, sans recourir à une bibliothèque spécifique.

Principales caractéristiques de Comet

  1. Visualisations personnalisées: Comet permet aux utilisateurs de créer des visualisations personnalisées pour leurs expériences et données. De plus, les utilisateurs peuvent exploiter les visualisations fournies par la communauté sur les panneaux, améliorant ainsi leur capacité à analyser et interpréter les résultats.
  2. Surveillance en temps réel: Comet fournit des statistiques et des graphiques en temps réel sur les expériences en cours, permettant aux utilisateurs de suivre la progression et les performances de leurs modèles pendant leur entraînement.
  3. Comparaison des expériences: Avec Comet, les utilisateurs peuvent facilement comparer leurs expériences, y compris le code, les métriques, les prédictions, les informations, etc. Cette fonctionnalité facilite l’identification des modèles et configurations les plus performants.
  4. Débogage et suivi des erreurs: Comet permet aux utilisateurs de déboguer les erreurs de modèle, les erreurs spécifiques à l'environnement et d'autres problèmes pouvant survenir pendant le processus de formation et d'évaluation.
  5. Surveillance du modèle: Comet permet aux utilisateurs de surveiller leurs modèles et de recevoir des notifications lorsque des problèmes ou des bugs surviennent, garantissant ainsi une intervention et une atténuation en temps opportun.
  6. La collaboration: Comet prend en charge la collaboration au sein des équipes et avec les parties prenantes de l'entreprise, permettant un partage transparent des connaissances et une communication efficace.
  7. Intégration du framework: Comet peut facilement s'intégrer aux frameworks ML populaires tels que TensorFlow, PyTorch et autres, ce qui en fait un outil polyvalent pour différents projets et cas d'utilisation.

Choisir le bon outil MLOps

Lors du choix d'un outil MLOps pour votre projet, il est essentiel de prendre en compte des facteurs tels que la maîtrise de certains frameworks par votre équipe, les exigences du projet, la complexité du ou des modèles et l'environnement de déploiement. Certains outils peuvent être mieux adaptés à des cas d'usage spécifiques ou s'intégrer plus facilement à votre infrastructure existante.

De plus, il est important d'évaluer la documentation de l'outil, le soutien de la communauté et la facilité d'installation et d'intégration. Un outil bien documenté et doté d'une communauté active peut considérablement accélérer la prise en main et faciliter le dépannage.

Meilleures pratiques pour des MLOps efficaces

Pour optimiser les avantages des outils MLOps et garantir le succès du dĂ©ploiement et de la maintenance des modèles, il est essentiel de suivre les bonnes pratiques. Voici quelques points clĂ©s Ă  prendre en compte :

  1. Journalisation cohĂ©rente : assurez-vous que tous les hyperparamètres, mĂ©triques et artefacts pertinents sont enregistrĂ©s de manière cohĂ©rente dans toutes les expĂ©riences. Cela favorise la reproductibilitĂ© et facilite une comparaison efficace entre les diffĂ©rentes analyses.
  2. Collaboration et partage: exploitez les fonctionnalités de collaboration des outils MLOps pour partager des expériences, des visualisations et des informations avec les membres de l'équipe. Cela favorise l’échange de connaissances et améliore les résultats globaux du projet.
  3. Documentation et remarques: Conservez une documentation et des notes complètes dans l'outil MLOps pour capturer les détails de l'expérience, les observations et les informations. Cela aide à comprendre les expériences passées et facilite les itérations futures.
  4. Intégration et déploiement continus (CI/CD): Implémentez des pipelines CI/CD pour vos modèles d'apprentissage automatique afin de garantir des tests, un déploiement et une surveillance automatisés. Cela rationalise le processus de déploiement et réduit le risque d’erreurs.

Exemples de code et cas d'utilisation

Pour mieux comprendre l’utilisation pratique des outils MLOps, explorons quelques exemples de code et cas d’utilisation.

Suivi des expériences avec pondérations et biais

Weights & Biases offre une intĂ©gration transparente avec les frameworks de machine learning les plus rĂ©pandus, tels que PyTorch et TensorFlow. Voici un exemple de journalisation et de visualisation des mĂ©triques lors de l'entraĂ®nement d'un modèle avec PyTorch :

import wandb
import torch
import torchvision

# Initialize W&B
wandb.init(project="image-classification", entity="my-team")

# Load data and model
train_loader = torch.utils.data.DataLoader(...)
model = torchvision.models.resnet18(pretrained=True)

# Set up training loop
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = torch.nn.CrossEntropyLoss()

for epoch in range(10):
for inputs, labels in train_loader:
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()

# Log metrics
wandb.log({"loss": loss.item()})

# Save model
torch.save(model.state_dict(), "model.pth")
wandb.save("model.pth")

Dans cet exemple, nous initialisons une exécution W&B, entraînons un modèle ResNet-18 sur une tâche de classification d'images et enregistrons la perte d'entraînement à chaque étape. Nous enregistrons également le modèle entraîné en tant qu'artefact en utilisant wandb.save(). W&B suit automatiquement les métriques du système telles que l'utilisation du GPU, et nous pouvons visualiser la progression de la formation, les courbes de perte et les métriques du système dans le tableau de bord W&B.

Surveillance du modèle avec évidemment

Evidly est un outil puissant pour surveiller les modèles de machine learning en production. Voici un exemple d'utilisation pour surveiller les dĂ©rives de donnĂ©es et les performances des modèles :

import evidently
import pandas as pd
from evidently.model_monitoring import ModelMonitor
from evidently.model_monitoring.monitors import DataDriftMonitor, PerformanceMonitor

# Load reference data
ref_data = pd.read_csv("reference_data.csv")

# Load production data
prod_data = pd.read_csv("production_data.csv")

# Load model
model = load_model("model.pkl")

# Create data and performance monitors
data_monitor = DataDriftMonitor(ref_data)
perf_monitor = PerformanceMonitor(ref_data, model)

# Monitor data and performance
model_monitor = ModelMonitor(data_monitor, perf_monitor)
model_monitor.run(prod_data)

# Generate HTML report
model_monitor.report.save_html("model_monitoring_report.html")

Dans cet exemple, nous chargeons des données de référence et de production, ainsi qu'un modèle entraîné. Nous créons des instances de DataDriftMonitor et PerformanceMonitor pour surveiller respectivement la dérive des données et les performances du modèle. Nous exécutons ensuite ces moniteurs sur les données de production en utilisant ModelMonitor et générez un rapport HTML avec les résultats.

Déploiement avec BentoML

BentoML simplifie le dĂ©ploiement et la diffusion des modèles de machine learning. Voici un exemple de package et de dĂ©ploiement d'un modèle scikit-learn avec BentoML :

import bentoml
from bentoml.io import NumpyNdarray
from sklearn.linear_model import LogisticRegression

# Train model
clf = LogisticRegression()
clf.fit(X_train, y_train)

# Define BentoML service
class LogisticRegressionService(bentoml.BentoService):
@bentoml.api(input=NumpyNdarray(), batch=True)
def predict(self, input_data):
return self.artifacts.clf.predict(input_data)

@bentoml.artifacts([LogisticRegression.artifacts])
def pack(self, artifacts):
artifacts.clf = clf

# Package and save model
svc = bentoml.Service("logistic_regression", runners=[LogisticRegressionService()])
svc.pack().save()

# Deploy model
svc = LogisticRegressionService.load()
svc.start()

Dans cet exemple, nous formons un modèle LogisticRegression scikit-learn et définissons un service BentoML pour servir les prédictions. Nous empaquetons ensuite le modèle et ses artefacts en utilisant bentoml.Service et enregistrez-le sur le disque. Enfin, nous chargeons le modèle enregistré et démarrons le service BentoML, le rendant disponible pour diffuser des prédictions.

Conclusion

Dans le domaine en évolution rapide du machine learning, les outils MLOps jouent un rôle crucial dans la rationalisation de l'ensemble du cycle de vie des projets de machine learning, de l'expérimentation et du développement au déploiement et à la surveillance. Des outils tels que Weights & Biases, Comet, MLflow, Kubeflow, BentoML et Evidently offrent une gamme de fonctionnalités et de capacités pour prendre en charge divers aspects du flux de travail MLOps.

En tirant parti de ces outils, les équipes de science des données peuvent améliorer la collaboration, la reproductibilité et l'efficacité, tout en garantissant le déploiement de modèles d'apprentissage automatique fiables et performants dans les environnements de production. À mesure que l’adoption de l’apprentissage automatique continue de croître dans tous les secteurs, l’importance des outils et pratiques MLOps ne fera qu’augmenter, stimulant l’innovation et permettant aux organisations d’exploiter tout le potentiel de l’intelligence artificielle et des technologies d’apprentissage automatique.

J'ai passé les cinq dernières années à m'immerger dans le monde fascinant du Machine Learning et du Deep Learning. Ma passion et mon expertise m'ont amené à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique du langage naturel, un domaine que j'ai hâte d'explorer davantage.