Git Product home page Git Product logo

101-ai-and-py's Introduction

Welcome to the 101 lab source to discover Python and Artificial Intelligence.

Getting started

When you launch the Gitpod instance on this repository you will prompt to enter a password for use attendee: Enter host password for user 'attendee':.
Ask the speaker to get the password.
After enter it you will see all your environment variable set and displayed:

Downladed parameters:
Your environment variables:
   - STUDENT_ID: <id of the attendee>
   - REGISTRY_NAME: the name of the registry to use with the Docker commands
   - REGISTRY_LOGIN: <login to the remote registry> 
   - REGISTRY_PASSWORD: <password to the remote registry>
   - AI_TOKEN: <AI token to use OVHcloud AI tools>

Following by the information of your Notebook:

$ ovhai notebook list --token $AI_TOKEN

ID                                   NAME            STATE    AGE  FRAMEWORK VERSION                   EDITOR     URL
xxxxxxx-ssss-zzzz-ffff-tttttttttttt jupyterlab-kind RUNNING  65m  conda     conda-py311-cudaDevel11.8 jupyterlab https://xxxxxxx-ssss-zzzz-ffff-tttttttttttt.notebook.gra.ai.cloud.ovh.net

Model creation with AI Notebook

See instructions in the model creation section to do transfer learning of YOLOv8 model to play to the game Rock/Paper/Scissors.

Model training with AI Training

See instructions in the training section to train the model on a large dataset and GPU.

Application creation with AI Deploy

See instructions in the application creation section to use the model and play to Rock/Paper/Scissors.

101-ai-and-py's People

Contributors

mathieubsqt avatar philippart-s avatar titimoby avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

101-ai-and-py's Issues

Préparer les images toutes faites dans la registry

L'upload / fabrication ds images peut être long, pour palier à cela préparer deux images prêtes à l'emploi:

  • ubf2r2if.c1.gra9.container-registry.ovh.net/lab/speaker/yolov8-rock-paper-scissors-training-job:1.0.0
  • ubf2r2if.c1.gra9.container-registry.ovh.net/lab/speaker/yolov8-rock-paper-scissors-app

L'idée est de pouvoir les utiliser lors de la création du job AI Training ou de l'application AI Deploy

Stacktrace au lancement de l'application

Au lancement de l'application une stacktrace apparaît:

File "/usr/local/lib/python3.8/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 552, in _run_script
    exec(code, module.__dict__)
File "/workspace/app.py", line 25, in <module>
    photoPath = save_photo(img_file_buffer)
File "/workspace/app.py", line 7, in save_photo
    photoAbsolutePath = '/workspace/data/rock-paper-scissors/app/' + photo.name

Utiliser la shared registry plutôt qu'Harbor

Il est possible d'utiliser la shared registry des produit IA plutôt qu'un Harbor pour stocker les images.
L'avantage : pas de harbor à configurer ni de comptes.
A voir si on veut utiliser ça.

bug: Positionner un path pour l'entrainement

Le path de sortie de l'entraînement n'est pas positionné ce qui fait que l'on ne maitrise pas l'endroit où sont générés les fichiers de run / prédictions.

Le positionner pour rendre la cellule d'affichage des graphs opérationnelle à coup sûr.

Impossible de mettre à jour la CLI OVHAI

Si la CLI essaie de se mettre à jour on a un message d'erreur:

✔ Downloading new version 3.20.0
  14.06 MiB @ 40.31 MiB/s                                                                                                                                                                                                                                      
✘ IO error: Permission denied (os error 13)

Je pense qu'il faudrait pouvoir la mettre à jour ou au moins avoir la dernière version dans l'image

Avoir un workspace avec plus de stockage

Le workspace par défaut de GitPod offre 30 Go d'espace.
Ce n'est pas assez pour construire l'image d’entraînement et l'image applicative.

A voir si on peut avoir plus de disque, en solution de contournement documenter le "nettoyage"

Reload PATH après installation de la CLI ovhai

Dans le Dockerfile la CLI ovhai est bien installé, le PATH mis à jour mais pas reloadé je pense.

Running this script will download the ovhai binary and add it to your PATH.
The ovhai CLI upgrades itself automatically when you use it.
To uninstall, simply delete the ovhai binary.

Downloading archive from https://cli.gra.training.ai.cloud.ovh.net/ovhai-linux.zip...
Installing ovhai to /home/gitpod/bin...
Updating PATH variable, please open a new terminal or run "source $HOME/.bashrc"
Installation done!

Cela nous oblige à utiliser le chemin absolu, ce serait plus pratique, je pense, de pouvoir utiliser directement ovhai sans mettre de chemin devant.

Ajouter l'utilisation de var d'evt dans GitPod

L'idée ici est d'éviter d'avoir à taper des URL / comptes / passwords / ... lors du workshop.
De mémoire GitPod permet de définir des variables qui sont ensuite accessibles comme variables d'environnement.

Il faudrait donc rajouter dans la doc de démarrage / init la création de ces variables.
Un début de liste (non exhaustive) si tu es ok sur le principe @titimoby :

  • STUDENT_ID : identifiant unique de la participante ou du participant (réutiliser qd il faut identfiier de manière unique des éléments, par ex le nom des images dans Harbor)
  • OVH_AI_TOKEN : token permettant d'accéder à la CLI et aux Notebooks
  • REGISTRY_NAME : URL de la registry Harbor à utiliser, par ex: .gra7.container-registry.ovh.net/workshop_ia
  • REGISTRY_LOGIN : login pour faire un push / pull sur la registry
  • REGISTRY_PASSWORD : mot de passe du compte pour faire un push / pull sur la registry

feat: ✨ Passer à S3

Remplacer les object container storage Swift par des S3.

Avant de modifier les scripts Terraform vérifier si les scripts de création d’environnement d'Eléa crée ou pas les objets.

Uniformiser les ressources entre 101-lab et rock-paper-scissors

J'ai fait le choix de mettre 101-ai-lab partout sur les noms des ressources (objects storage, notebook ,training, app, ...) mais je me rends compte qu'en reprenant le tuto rock-paper-scissors j'ai pas mal de renommage à faire et que ce n'est pas forcément plus clair que cela s'appelle 101-ai-lab partout.

@titimoby si ça e vas je vais voir si ce n'est pas trop galère à détricoter mais je mettrais bien rock-paper-scissors pour faciliter la future maintenance / évolution du lab.
Notamment en ayant un seul référentiel de sources et pas 3 comme aujourd'hui (lab, démo dans GL, ai-training-examples).

💡 Détection en temps réel

Plutôt que de prendre des photos, nous pourrions afficher les détections de YOLO directement sur le flux vidéo (si Streamlit ne l'empêche pas). Cela rendrait l'application plus "fluide".

Sur des machines personnelles, cela dépendrait des capacités des ordinateurs. Mais puisque l'application tourne dans le Cloud, cela devrait fonctionner sans latence.

feat: ⚙️ Automatiser la récupération des configurations

Idéalement automatiser la récupération des informations du end-point dans le projets GitPod.
Pour le fichier .environment : à la création du workspace, appel du end-point Quarkus et renseignement automatique des champs puis source du fichier.

Pour les users openstack : création automatique de deux variables d'environnement et ensuite générification de la ligne de connection ovhai: ovhai login -u $USER -p $PASSWORD

Faire de même pour l'ensemble des éléments de configuration si il y en a d'autres.

Avoir un end-point pour servir les différentes ressources aux participant·es

Il y a plusieurs ressources dynamiques ou statiques à servir aux participant·es:

  • les users / password openstack
  • les objects storage
  • le dataset

L'idée serait d'avoir un end-point qui permettre de répartir de manière unique ces ressources.
Lorsque, par exemple pour les users et les objects storage il ne faut pas que deux participant·es aient la même ressource il faudra un mécanisme permettant de ne rendre plus éligible la ressource attribuée.

Par exemple:
http://devrel/ai-lab/resource cela renvoie un truc du genre:

{
  "username": "user-xxxxx",
  "password": "zzzzzzzzzz", 
  "object-storage": "attendee-0-data", 
  "student-id": 0,
  "registry-login": "xxx",
  "registry-password": "zzz"
}

Comme ça on évite les doublons et les fautes de frappes ;).
Je vois bien un truc déployé sur le kube du projet lab ou sur une bête instance avec un nginx.

Scripter la création de l'infra

Pour le lab il faudra scripter :

  • création de comptes opensstack
  • création des object storages (au moins ceux avec les datas)

En backup si les participantes / participants n'y arrivent pas :

  • notebooks
  • app

see #15

Facilter le debug / test local

Il faudrait faciliter le test / debug local pour le training et l'app:

  • avec Docker (docker run)
  • avec Python: python train.py

Il y a un début de doc dans docs/training.md mais il faut l'enrichir et surtout rajouter un peu de variabilisation dans le code (CPU vs GPU), récupérer le modèle et faire les pip install, ...

feat: Exécuter le setup_env.sh à l'init du workspace

A l'heure actuelle le fichier setup_env.sh n'est pas exécuté à l'init du workspace.
Ce serait mieux si il était lancé par défaut pour forcer le renseignement du fichier .environment par la suite.

Pensez aussi dans la doc à indiquer de "sourcer" le .environment avant de commencer le lab.

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.