Google Colaboratory

Partager cet article

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.

Partager cet article