Coder Social home page Coder Social logo

cvops's Introduction

Computer Vision Ops

A simple template for static image analysis operations in computer vision, with a list of automation tool used. This can be a nice primer for anyone starting with in ML Ops to understanding the basics of setting up a production grade project.

Project features:

  • A fully functionning U-Net implementation
  • Documented list of tools used to setup this project
  • Some tutorials for setting up tools used in this project

This repo is in active development and still finding its purpose...

Setup your environment

Once you've cloned or forked this project, cd to the project root from your terminal and run the following commands.

pip install poetry
poetry install

Running command poetry install will create a venv and install all dependencies using poetry.lock file.

Running training

To run training, use poetry run wich will ensure that the right venv is used.

poetry run python ./cvops/train.py

Running tests

This project uses pytest for running tests. To run test, run this command from the

poetry run pytest

Project documentation

Project documentation is located here : https://cvops.readthedocs.io/

cvops's People

Contributors

francisquintallauzon avatar

Stargazers

Hector D Orozco Perez avatar

Watchers

 avatar Bertha Vazquez Rodriguez avatar Francis Pelletier avatar

cvops's Issues

Déploiement et observabilité

Pour cette dernière étape d'implémentation, nous allons expérimenter avec le déploiement d'un modèle et l'observabilité.

Les façons de déployer et observer un modèle sont bien nombreuses. Pour les besoins de cette formation, nous irons avec une approche plus minimaliste.

Malgré que ceci représente notre dernière étape pour ce module, elle n'est bien souvent que le début de la vie d'une application. Les outils et automatisations que vous avez implémentés lors des chapitres précédents seront cruciaux pour faciliter sa maintenance.

Pour cette leçon, vous devrez:

  • Exposer le modèle à l'aide d'un service déployé sur une plateforme d'infonuagique
  • Choisir une plateforme de PaaS, par exemple Heroku, Fly.io, PythonAnywhere, ou Render
  • Tester le service une fois déployé
  • (Optionnel) Ajouter une étape CI/CD pour un déploiement automatisé (Instructions varient en fonction de la plateforme choisie)
  • Ajouter des métriques pour l'observabilité du modèle
  • Informations/statistiques sur les intrants, sur le modèle, etc.
  • Exposer ces métriques à travers l'API (ex: sur une route nommée /model/logs)
  • (Optionnel) relier à Sentry ou une application similaire, afin de permettre le lancement d'alertes
  • (Optionnel) Ajouter une nouvelle fonction ou route à votre application, ou alors un changement significatif afin de tester toute votre chaîne d'outils.
  • L'observabilité est utilisé ici comme pour n'importe quelle autre application en production, mais dans le contexte d'une application ML, elle est aussi très utile pour l'apprentissage continue.

Nous ne nous aventurerons pas trop en profondeur sur ce sujet dans le cadre de ce module, mais l'objectif de tout ce que nous avons construit dans ce module est de faciliter l'apprentissage continu en favorisant la reproductibilité des processus d'entrainement, de validation et de déploiement d'une application.

Lire la vidéo

Documentation et références

https://towardsdatascience.com/mlops-model-monitoring-101-46de6a578e03
https://neptune.ai/blog/how-to-monitor-your-models-in-production-guide
https://mlops-guide.github.io/MLOps/Monitoring/
https://sentry.io/welcome/

Work Environment Creation

Création de l'environnement de travail

Il faut tout d'abord avoir un espace de travail.
Comme l'opérationnalisation est un travail d'équipe, l'espace de travail doit être collaboratif.
Un dépôt de code sera donc utilisé pour ce module. Les rétroactions et questions tout au long du module pourront se faire à travers le mécanisme de Pull Requests.

Pour cette leçon, vous devez:

Créer un compte GitHub, au besoin
Créer un dépôt de code ouvert
Dans une nouvelle branche
Créer une structure de package Python avec Setuptools
Créer un environnement virtuel avec Conda

Documentation et références

https://setuptools.pypa.io/en/latest/userguide/quickstart.html#
https://www.fullstackpython.com/application-dependencies.html
https://docs.python-guide.org/dev/virtualenvs/
https://realpython.com/python-virtual-environments-a-primer/
https://towardsdatascience.com/a-guide-to-conda-environments-bc6180fc533

Continuous integration of ML with CML

Tâches

  • Intégrer Continuous Machine Learning (CML) dans le projet
  • Modifier votre dépôt de code afin d'exécuter un entrainement automatisé à chaque nouvelle contribution
  • Gérer la connexion avec vos données
  • Valider que tout fonctionne

Approche

Documentation et références

Considérations et améliorations

Considérations et améliorations
Dans le cadre de ce cours, un modèle générique a été exposé via un service web générique.

Au niveau de l'exposition de modèles, des options telles que TorchServe pour exposer les modèles construits via PyTorch et TensorFlow Serving pour les modèles ayant été faits dans l'écosystème de TensorFlow peuvent rehausser la qualité du service exposé puisque ces façons de faire sont optimisées pour des besoins spécifiques.

Idées de sujets pour aller plus loin

  • Données

    • Droit à l'oubli, GDPR
    • Versionnement de modèles
    • Conformité et gouvernance
    • Gestion du changement
    • Lignage, provenance et reproductibilité des données
  • Modèles

    • Consolidation de features dans des feature store
  • Exposition

    • Choix de plateformes intégrées (ex: AWS SageMaker)
    • Mise à l'échelle dynamique d'infrastructure (ex: Kubernetes)
    • Authentification et autorisation

Contenarization avec Docker

Conteneurisation avec Docker
Une fois que nous avons un API, nous pouvons alors la conteneuriser afin de faciliter son déploiement, qu'il s'agisse d'une machine locale, un serveur distant ou un service de déploiement.

Pour cette leçon, vous devrez:

  • Créer un Dockerfile
  • Encapsulation de l'API et du modèle
  • Ajouter une étape au d'intégration continue pour la construction de l'image
  • À rajouter à chaque commit d'une Pull Request
  • Explorer le GitHub Container Repository
  • Ajouter une étape au CI pour envoyer l'image docker dans le GitHub Container Repository
  • À rajouter lors d'un Merge sur la branche principale

Documentation et références

Package the API with Docker
https://docker-curriculum.com/
https://www.fullstackpython.com/docker.html

Création d'une API pour l'utilisation du modèle

FDSL 2022 Leçon 5

https://youtu.be/W3hKjXg7fXM

Un modèle, c'est bien, mais pour l'utiliser dans un contexte de production, il faut le rendre facilement accessible à d'autres processus ou services. Pour les besoins de cette formation, nous encapsulerons notre modèle dans une API web.

Pour cette leçon, vous devrez:

  • Mettre sur pied un service web de type REST API
  • Fast API est une bibliothèque populaire pour les applications d'apprentissage automatique
  • Possède une documentation OpenAPI dynamique créée automatiquement
  • Alternativement, Flask est une bibliothèque souvent utilisée vu sa simplicité.
  • Ajouter une route de prédiction sous /api/v1/predict permettant d'utiliser le modèle ML
  • Ajouter une route qui expose la documentation OpenAPI sous /api/v1/docs
  • Ajouter un test d'intégration continue pour tester automatiquement l'API
  • Il est conseillé d'utiliser GitHub Actions puisque c'est une solution nativement intégrée à GitHub
  • Ajouter une route afin de pouvoir utiliser le modèle, ex: /model/eval
  • Il sera probablement nécessaire de modéliser les intrants et extrants afin que ceux-ci puissent être transmis à travers l'API

Documentation et références

https://fastapi.tiangolo.com/tutorial/
https://medium.com/machine-learning-india/deploy-machine-learning-models-using-fastapi-a-step-by-step-walkthrough-f812ca8043ad
https://neptune.ai/blog/packaging-ml-models
https://towardsdatascience.com/how-to-deploy-a-machine-learning-model-with-fastapi-docker-and-github-actions-13374cbd638a
https://medium.com/analytics-vidhya/serve-a-machine-learning-model-using-sklearn-fastapi-and-docker-85aabf96729b

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.