Pourquoi une solution cloud ?
Dans un précédent article, je vous suggérais fortement d’utiliser Jupyter pour concevoir et travailler sur vos modèles de Machine Learning. Bien sur je n’ai pas changé d’avis, c’est véritablement un outil pratique surtout quand on teste ou que l’on évalue des solutions. Néanmoins Jupyter tel quel présente au moins un gros inconvénient : il faut l’installer ! Bien sur avec Anaconda, pas de soucis vous avez juste un bouton à cliquer. Un second inconvénient, quand vous commencez à traiter des données volumineuses et que vous avez besoin de puissance, et bien votre ordinateur de maison risque de vite trouver ses limites.
A moins que vous ayez une machine de guerre à votre disposition (chanceux que vous êtes) vous aurez à un moment donné besoin de puissance surtout comme je le disais quand vous aller traiter des gros volumes et faire du Deep Learning (avec des images, vidéos, son, etc.) . Tout le monde n’a pas à sa disposition des GPU/TPU !
Une réponse simple consiste à s’orienter vers une solution Cloud !
En la matière vous allez avoir quelques solutions qui se présentent à vous pour faire du Jupyter en mode cloud. Que diriez-vous d’utiliser une solution 100% gratuite ? et bien je vous recommande fortement Google Colaboratory (colab pour les intimes). Vous pouvez aussi utiliser Kaggle (qui fournit aussi des notebooks boostés aux GPUs, mais qui est quand même moisn intuitif/pratique à mon goût).
Google Colaboratory en bref
Colaboratory est à l’origine un projet d’incubation de Google créé dans un but de collaboration (comme son nom l’indique), de formation et de recherche relatives au Machine Learning. Colaboratory est un environnement de notebook Jupyter qui ne nécessite réellement aucune configuration et qui s’exécute entièrement dans le cloud Google.
Une contrainte : les notebooks Colaboratory sont enregistrés dans Google Drive (ou Github) et peuvent d’ailleurs être partagés comme les documents Google Docs ou Sheets. Une passerelle GitHub (peut être pas pour longtemps) est aussi disponible.
Super nouvelle, Google Colaboratory est disponible gratuitement, vous devez juste posséder un compte Google. SI ce n’est pas le cas allez vite créer un compte GMail ici
Pour plus d’informations sur Google Colaboratory je vous invite à aller sur la FAQ.
Ce qui est vraiment génial c’est que vous pouvez utiliser gratuitement une GPU pendant 12 heures (en utilisation continue) ! néanmoins attention car il n’y a pas de garantie de service et l’environnement alloué (pendant ces 12 heures) est volatile, il faut donc songer à faire des sauvegardes.
Prise en main de Google Colaboratory
Bon aller, tapez dans votre browser l’URL : https://colab.research.google.com/
Rapidement Google Colaboratory vous propose soit de créer un notebook soit d’en récupérer un de Google Drive ou Github, soit d’en importer un directement depuis votre ordinateur :
Vous avez même quelques exemples intéressants à consulter pour bien prendre en main l’outil.
Créez donc un notebook ou faites comme moi récupérez-en un de Google Drive. Bonne nouvelle à propos les notebook Jupyter sont bien sur compatible avec Google Colaboratory.
La prise en main est rapide pour ceux qui sont déjà habitués à Jupyter. L’environnement est quasi-identique à part quelques artifices et autres petites fonctionnalités rajoutées (et bien utiles d’ailleurs).
Juste un hic : les fichiers de données !
Et oui nous étions dans un doux rêve jusque là. Si le monde du cloud permet en effet de se simplifier la vie coté installation et plus généralement puissance machine il reste un hic:
Il faut pouvoir interagir avec le reste du monde, et donc pouvoir à minima lire/écrire des fichiers plats !
Ça parait être en effet juste du bon sens. Malheureusement ce n’est pas le coté le plus fun de la solution. Je vous l’ai dit vos notebooks sont stockées dans Google Drive (ou GitHub). C’est une chose, maintenant les données peuvent provenir de plusieurs endroits. Je vous propose dans le cadre de cet article de placer vos fichiers dans Google Drive. Nous allons voir comment les récupérer dans Google Colaboratory … car ce n’est malheureusement pas automatique !
Vous trouverez plusieurs exemples et manière de faire (via PyDev, API, etc.) dans des exemples fournis par Google. Malgré ces exemples j’ai un peut galéré dans la phase de récupération de fichier. Voici comment faire simplement avec PyDev.
Méthode simple
Google Colaboratory permet assez simplement de faire un pont entre son environnement volatile et votre répertoire Google Drive. Pour celà cliquez sur le petit bouton qui présente un réprtoire dans le volet de gauche. le volet Fenêtre s’ouvre alors, cliquez sur le bouton qui représente un répertoire avec le symbole Google Drive comme suit :
2 solutions ici, soit vous êtes déjà connecté à votre compte Google et Google Colab vous demande ensuite de confirmer:
Soit vous devez confirmer l’anthentification, dans ce cas là colab créé automatiquement dans une cellule 2 lignes de code :
from google.colab import drive drive.mount('/content/drive')
Il vous suffit d’exécuter la cellule:
Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=...=code
Enter your authorization code:
Cliquez sur l’URL, authentifiez vous (Google) et saisissez le code que vous avez reçu dans la cellule …
Vous avez maintenant accès au répertoire colab Notebooks de votre Google Drive !
Télécharger un fichier à partir de Google Drive -> Colaboratory
Tout d’abord j’ai un fichier (ici sample1000.csv) placé dans Google Drive :
Pour pouvoir récupérer ce fichier il me faut son ID Google, voici comment faire :
- Clic droit sur le fichier
- Choisissez Obtenir le lien partageable dans le menu déroulant :
- Copiez l’URL. mais ne récupérez que l’ID.
NB: Nous ne récupérerons par exemple ici que la partie en gras : https://drive.google.com/open?id=1Pl-GxINYFcXL2ASaQjo_BFFiRVIZUObB
Maintenant retournons à notre Notebook, entrez ce code dans une cellule
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials # Authentification Google auth.authenticate_user() gauth = GoogleAuth() gauth.credentials = GoogleCredentials.get_application_default() drive = GoogleDrive(gauth) # Download du fichier id = '1Pl-GxINYFcXL2ASaQjo_BFFiRVIZUObB' downloaded = drive.CreateFile({'id': '1Pl-GxINYFcXL2ASaQjo_BFFiRVIZUObB'}) downloaded.GetContentFile('sample1000.csv')
Voilà c’est fait, le fichier est maintenant présent dans l’environnement Colaboratory. Vous avez remarqué ? pas besoin de préciser le répertoire, l’ID permet à Google le retrouver où qu’il soit dans votre Drive.
Il ne vous reste plus qu’à le lire comme d’habitude avec Pandas par exemple :
pd.read_csv('sample1000.csv').head()
Attention avant toute chose il vous faudra installer la librairie PyDev. Cela s’effectue via la commande pip directement dans une cellule du notebook. Vous pouvez par exemple rajouter cette ligne de commande au début du code précédent :
!pip install -U -q PyDrive
Importer un fichier de Colaboratory –> Google Drive
Maintenant que vous pouvez travailler sur vos données, vous voudrez certainement récupérer le résultat de votre travail (vos prédictions par exemple).
Pour cela cette portion de code va vous aider :
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials # 1. Authenticate and create the PyDrive client. auth.authenticate_user() gauth = GoogleAuth() gauth.credentials = GoogleCredentials.get_application_default() drive = GoogleDrive(gauth) # 2. Create & upload a file ()from here to Google drive) text file. uploaded = drive.CreateFile({'title': 'sample1000_resultat.csv'}) uploaded.SetContentString('Contenu du fichier ici :-)') uploaded.Upload() print('Uploaded file with ID {}'.format(uploaded.get('id')))
Importer un fichier sur internet
SI vous voulez importer un fichier à partir d’internet. Vous avez par exemple un fichier de données qui est sur Github et vous voulez travailler sur ses données … rien de plus simple car vous pouvez utiliser quelques commande linux directement à partir d’une cellule. Pour cela vous devez préfixer par un point d’exclamation la commande.
Pour télécharger un fichier on utilisera la fonction shell wget :
!wget 'https://raw.githubusercontent.com/datacorner/les-tutos-datacorner.fr/master/datasources/films/allocine_bigfoot_avis.csv'
--2021-01-31 09:28:56-- https://raw.githubusercontent.com/datacorner/les-tutos-datacorner.fr/master/datasources/films/allocine_bigfoot_avis.csv
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2401 (2.3K) [text/plain]
Saving to: ‘allocine_bigfoot_avis.csv’
allocine_bigfoot_av 100%[===================>] 2.34K --.-KB/s in 0s
2021-01-31 09:28:56 (22.1 MB/s) - ‘allocine_bigfoot_avis.csv’ saved [2401/2401]
Le fichier est maintenant « uploadé » et disponible comme un fichier local au notebook.
Les commandes
Ce qui est pratique dans colab c’est que vous pouvez interagir avec le système via des lignes de commandes linux.
Vous pouvez donc utiliser des commandes du type cd, pwd, etc. mais pour celà il vous faudra les préfixer par un %
%pwd
/content/My Drive
On peut aussi lancer des programmes via les cellules colab, pour cela on utilise le préfixe ! (comme on l’a vu précédemment avec wget).
!rm myfile
file deleted
Utiliser les GPU de colab
C’est aussi l’un des grand interets de Google colab: pouvoir utiliser gratuitement des GPUs !
Mais avant de vous montrer comment parametrer votre notebook pour être exécuté avec une GPU, notez que Google vous prete gratuitement cette GPU, mais il ne vous dit pas pour combien de temps … et quand ce fameux temps est écoulé ! et bien l’exécution s’arrete tout simplement … et vous devrez alors attendre (en général jusqu’au lendemain) pour pouvoir ré-exécuter votre notebook configuré avec une GPU !
Pour palier à cette limitation qui peut parfois être gênante, voici une astuce (gratuite) plutôt simple pour contourner ce problème de GPUs limitées:
- Créez plusieurs comptes Google (j’ai du en créer trois pour cet article)
- Partagez le répertoire (si besoin) avec les données du Google Drive d’un des utilisateurs Google avec les autres
- Partagez le Notebook aussi
- Vous n’aurez plus qu’à exécuter tour à tour selon les utilisateurs Google le même Notebook … le tour est joué 😉
Revenons à nos moutons et voyons comment activer l’exécution de votre notebook avec une GPU, pour cela dans le menu Exécution, choisissez « Modifier le type d’exécution », la boite de dialogue suivante s’ouvre … sélectionnez simplement GPU comme accélarateur matériel et enregistrez !
Conclusion
Et voilà de quoi vous mettre le pied à l’étrier avec cet outil.
N’hésitez pas à me faire part de vos remarques dans les commentaires ci-dessous.
Pingback: Traitement d’images (partie 7: Les Réseaux de neurones à convolution - CNN) - datacorner par Benoit Cayla
Pingback: Fake news ? - datacorner par Benoit Cayla
Pingback: VGG et Transfer Learning - datacorner par Benoit Cayla
Pingback: Gradio : une interface web pour les modèles (Tuto) - datacorner par Benoit Cayla
Pingback: La détection d'objets avec YOLO v4 - datacorner par Benoit Cayla
Pingback: Détection d'objet avec YOLO & OpenCV - datacorner par Benoit Cayla
Pingback: YOLO (Partie 3) Non Maxima Suppression (NMS) - datacorner par Benoit Cayla
Pingback: YOLO (Partie 4) Réduire le scope de détection - datacorner par Benoit Cayla
Pingback: La dataViz avec Plotly - datacorner par Benoit Cayla
Pingback: YOLO (Partie 5) Créer son modèle avec YOLO : Préparation des données - datacorner par Benoit Cayla
Pingback: YOLO (Partie 6) Créer son modèle avec YOLO : Préparer le modèle - datacorner par Benoit Cayla
Pingback: Evaluez l'importance des variables ("Feature Importance") - datacorner par Benoit Cayla
Pingback: Filtrer vos données avec la Variance - datacorner par Benoit Cayla
Pingback: Introduction à LIME (XAI) - datacorner par Benoit Cayla
Pingback: Faites vos premiers pas avec un LLM - datacorner par Benoit Cayla
Pingback: "Augmenter" votre LLM avec un fichier pdf en 5 mins - datacorner par Benoit Cayla
Pingback: Utiliser (facebook) BART pour faire un résumé (4 méthodes !) - datacorner par Benoit Cayla
Pingback: Document chunking ! - datacorner par Benoit Cayla