1. Iniziare un progetto di DeepLearning: setup delle macchine locali e in cloud

Prerequisiti

Abbiamo fatto tutti i passi che ci consentono di essere operativi, come descritto: qui).

Come prima cosa, sul nostro portatile attiviamo l’ambiente conda che abbiamo creato:

$ source activate corsoDLnoruen

Ci spostiamo nella cartella notebooks e attiviamo il primo:

$ cd notebooks
$ jupyter notebook lezione1.ipynb

Poi mi vado all’indirizzo segnalato (http://localhost:8888/)

Creare la cartella per il progetto

Inziamo dal nostro portatile, avviamo un terminale (Terminal in MacOSX) e creiamo la cartella:

$ mkdir corso-deep-learning-noruen
$ cd corso-deep-learning-noruen/

Aggiungere la cartella al versionamento git

Aggiungiamo il versionamento alla cartella. Siamo nella cartella del progetto e digitiamo:

$ git init
$ echo "inizio" >> README.md
$ git add .
$ git commit -m "Iniziamo il corso sul deep learning"

Creiamo un nuovo repository su github senza inizializzarlo, che sarò il nostro repository remoto. Copiamo l’indirizzo:

dove copiare indirizzo repository su github

e lo aggiungiamo come repository remoto:

$ git remote add origin git@github.com:hertzdog/corso-deep-learning-noruen.git
$ git remote -v
$ git push -u origin master

Enter passphrase for key '/Users/franz/.ssh/id_rsa':
Counting objects: 3, done.
Writing objects: 100% (3/3), 239 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:hertzdog/corso-deep-learning-noruen.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

Se non è andato a buon fine, probabilmente la chiave SSH del computer dove lavoriamo non è stata creata o non è stata aggiunta al nostro profilo github allora dobbiamo farlo: istruzioni qui.

A questo punto ci siamo: il nostro repository locale (con solo il README.md) è stato sincronizzato con quello online.

Ora andiamo sulla macchina in cloud e creiamo anche lì la nostra cartella di lavoro.

Creare le cartelle sul computer remoto con GPU

Anche sul computer remoto abbiamo creato la chiave SSH e l’abbiamo aggiunta a github come spiegato qui e abbiamo impostato le variabili globali:

$ git config --global user.email "la-vostra-email@gmail.com"
$ git config --global user.name "lo-username-su-github"

Dal terminale cloniamo il progetto:

$ git clone git@github.com:hertzdog/corso-deep-learning-noruen.git

A questo punto entriamo nella cartella

$ cd corso-deep-learning-noruen/

e troveremo il nostro file README.md

Installare il software

Ora installiamo quello che serve con conda. Per fare questo ho già preparato due file con i pacchetti necessari (uno per MacOSX e uno per GNU/Linux)

Sul portatile

Sul portatile, scarichiamo il file YML nella cartella del progetto:

$ wget https://raw.githubusercontent.com/hertzdog/corso-deep-learning-noruen/master/noruen-macosx.yml

e poi installiamo l’ambiente:

$ conda env create -f noruen-macosx.yml

Il sistema impiega circa 5 minuti sul mio portatile (dipende dalla connessione, CPU, …).

Per attivarlo è sufficiente:

$ source activate corsoDLnoruen
(corsoDLnoruen) $

Con l’ambiente attivo, possiamo anche salvare una nostra versione dell’environment, se volessimo condividerlo con altri:

(corsoDLnoruen) $ conda env export > corsoDLnoruen_macosx.yml

Nel caso aggiorniamo il progetto:

$ git add .
$ git commit -m "Aggiunto il file ambiente personale"
$ git push

Sul computer remoto con GPU (GNU/Linux)

Nella cartella aggiorniamo il progetto:

$ git pull

Sul computer remoto, dovremmo trovare il file di configurazione scaricato per macOSX e nel caso il nuovo file creato.

Scarichiamo il file YML per l’architettura GNU/Linux nella cartella del progetto e installiamo l’ambiente:

$ wget wget https://raw.githubusercontent.com/hertzdog/corso-deep-learning-noruen/master/noruen-GNU-Linux.yml
$ conda env create -f noruen-GNU-Linux.yml

(attenzione a scegliere il file giusto!)

Il sistema impiega circa 0 minuti.

Per attivarlo è sufficiente:

$ source activate corsoDLnoruen
(corsoDLnoruen) $

Aggiorniamo il progetto:

$ git add .
$ git commit -m "Aggiunto il file ambiente GNU/Linux"
$ git push

Testiamo che funzioni

Con gli ambienti attivi digitiamo:

$ python --version

Dovremmo vedere una versione diversa da quella che otteniamo digitando lo stesso comando da terminale (nel momento in cui scrivo Python 3.5.3).

Nella cartella (online su github, in locale sul Mac e sulla macchina in cloud) dovremmo vedere questi file:

$ ls
README.md		noruen-GNU-Linux.yml	noruen-macosx.yml