Qualsiasi sviluppatore che abbia avuto a che fare con applicazioni di intelligenza artificiale e machine learning, è consapevole di quanta potenza di calcolo può essere necessaria per implementare modelli sufficientemente robusti ed efficienti. Mentre per i primi test può essere sufficiente affidarsi alla propria macchina, con l'aumentare della dimensione dei dataset l'esecuzione di algoritmi di addestramento complessi come quelli di deep learning diventa rapidamente proibitiva.
Per risolvere questo problema, esistono numerosi servizi cloud che offrono potenza di calcolo, spesso a pagamento o con varie limitazioni. In alternativa ad essi, esiste poi Google Colab, una interessante piattaforma che, seppur con alcune limitazioni, ci permette di eseguire codice direttamente sul Cloud, sfruttando la potenza di calcolo fornita da Google.
In questo articolo di approfondimento forniremo una panoramica di tale piattaforma, in moda da capire cos'è Google Colab, come funziona e come possiamo usarlo.
Google Colab e i Jupyter Notebook
Come già anticipato, Google Colab è una piattaforma che ci permette di eseguire codice direttamente sul Cloud. Per sfruttare le funzionalità di tale piattaforma, tutto ciò di cui abbiamo bisogno è un account Google, mediante il quale potremo effettuare il login ed avere accesso a questa pagina.
Prima di capire meglio come funziona, è bene fare una premessa. Per eseguire codice, Google Colab sfrutta i cosiddetti Jupyter Notebook. Questi non sono altro che documenti interattivi nei quali possiamo scrivere (e quindi eseguire) il nostro codice. Più precisamente, tali documenti permettono di suddividere il nostro codice in celle, ognuna delle quali può contenere anche del testo informativo, eventualmente formattato in Markdown.
![Esempio di Jupyter Notebook su Google Colab](https://static.html.it/app/uploads/2019/12/google-colab-50.png)
L'uso di tali notebook è abbastanza comodo (e, non a caso, piuttosto popolare) per chi si occupa di data science e machine learning. Tramite un unico documento, è infatti possibile sia eseguire tutti gli step di un processo di analisi o processing, sia descriverne il comportamento in linguaggio naturale. Di fatto, i notebook rappresentano un ottimo modo per spiegare o semplicemente mostrare come agisce un algoritmo, e si prestano molto bene alla realizzazione di un portfolio da data scientist.
Sebbene non sia l'unico linguaggio utilizzato, Python è quello più comunemente adoperato quando si lavora su Google Colab con i Jupyter Notebook.
Primi passi su Google Colab
Apprese le nozioni di base sul funzionamento di questa piattaforma, vediamo come utilizzarla. Una volta effettuato l'accesso, ci viene subito mostrata una finestra modale tramite la quale potremo accedere alle varie funzionalità di Google Colab.
Ognuna delle voci rappresenta una insieme di caratteristiche e/o contenuti accessibili mediante Colab:
- Examples: contiene un insieme di notebook con vari esempi
- Recent: mostra i notebook con cui abbiamo lavorato più di recente
- Google Drive: ci permette di visualizzare ed aprire i notebook presenti sul nostro Google Drive
- GitHub: permette di aggiungere notebook direttamente da un account GitHub (che deve essere connesso con Colab)
- Upload: consente di caricare un notebook da una directory locale
In alternativa, possiamo iniziare a lavorare su Google Colab creando il nostro primo notebook. Per farlo è sufficiente chiudere la finestra vista in precedenza, e tramite il menu File (in alto a sinistra), potremo creare un notebook compatibile con le versioni 2 o 3 di Python. Poiché la versione 2 sarà supportata solo fino a Gennaio 2020, la scelta migliore è senza dubbio quella di Python 3.
Una volta creato il nostro nuovo notebook, esso verrà salvato all'interno del nostro Google Drive, in una directory denominata Colab Notebooks.
Non resta quindi che modificare il nostro notebook a piacimento, aggiungendo celle, codice e testo a nostro piacimento.
Configurare il notebook
Prima di mettere le mani sul nostro notebook, è bene imparare a configurare al meglio la macchina su cui esso verrà eseguito. A tal proposito, clicchiamo sul menu Runtime, selezionando quindi la voce Change runtime type. Nella finestra che ci verrà mostrata, potremo scegliere se convertire il nostro notebook in Python 2 (cosa, come già detto, sconsigliata), ma potremo anche decidere se abilitare il supporto all'uso della GPU. Sotto la voce Hardware acceleration, possiamo infatti selezionare GPU, sfruttando la potenza di calcolo parallelo fornita da questo tipo di hardware. In alternativa potremmo decidere di sfruttare le TensorFlow Power Unit (TPU), che però non approfondiremo in questo contesto.
Alcuni esempi
Completiamo questa panoramica di Google Colab mostrando alcuni esempi per realizzare semplici operazioni su questa piattaforma.
Eseguire codice Python
La prima cosa da imparare è il classico "Hello World", che su Python si implementa con una semplice riga di codice:
print("Hello World!")
Nel nostro notebook, sarà sufficiente aggiungere tale riga in una cella, e saremo pronti alla sua esecuzione. Questa potrà essere effettuata cliccando sull'icona che si trova a sinistra del blocco di codice.
Questo semplicissimo esempio implica, ovviamente, che potremo eseguire qualsiasi tipo di codice Python, importare moduli ed eseguire operazioni anche più complesse.
Installare moduli Python
A questo punto può essere comodo volere usare moduli di Python aggiuntivi al nostro notebook. Per farlo, è sufficiente sfruttare la seguente sintassi:
! pip install <module>
Si noti l'uso del carattere !
all'inizio: ciò indica che non si tratta di linguaggio Python, bensì della necessità di eseguire un comando (in questo caso utilizziamo pip per installare un modulo).
Clonare un repository Git
Sfruttando la stessa sintassi appena vista, possiamo anche clonare un intero repository Git sul nostro notebook, per poi lavorare sul codice in esso contenuto:
! git clone https://github.com/my-user/my-repo
Upload di un file
Per richiedere all'utente di caricare un file in modo programmatico sul nostro notebook, sfruttiamo il codice seguente:
from google.colab import files
uploaded = files.upload()
Interazione con Google Drive
Infine, vediamo come utilizzare i file presenti sul nostro Google Drive. Il codice seguente monta "Il mio Drive" all'interno di una directory chiamata "my-drive", all'interno della root del nostro file system:
from google.colab import drive
drive.mount('/my-drive')
A questo punto potremmo anche visualizzare il contenuto dei file del nostro Drive mediante il comando ls
:
! ls "/my-drive/My Drive"
Conclusioni
Google Colab è una piattaforma che, oltre ad essere molto comoda, è anche estremamente utile per qualsiasi data scientist o sviluppatore che si occupi di machine learning. Ciò non significa, comunque, che dobbiamo usarlo solo per questi contesti, ma il vantaggio di sfruttare la potenza di calcolo del Cloud è chiaramente molto significativo quando si ha a che fare con l'analisi o il processing di grandi moli di dati.