Addestrare un modello di deep learning

con AWS Deep Learning Containers in Amazon SageMaker

Gli AWS Deep Learning Containers (DL container) sono immagini Docker preinstallate con framework di deep learning che semplificano la distribuzione di ambienti di machine learning personalizzati in modo rapido poiché ti consentono di saltare il complicato processo di creazione e ottimizzazione di ambienti ex novo.

Attraverso l’uso dei DL Container, gli sviluppatori e i data scientist possono aggiungere facilmente il machine learning alle proprie applicazioni containerizzate distribuite su Amazon Elastic Container Service for Kubernetes (Amazon EKS), Kubernet gestiti dal cliente, Amazon Elastic Container Service (Amazon ECS) e Amazon EC2.

In questo tutorial, imparerai come addestrare un modello di machine learning TensorFlow su un'istanza di Amazon EC2 utilizzando gli AWS Deep Learning Containers.

Informazioni sul tutorial
Durata 10 minuti                                           
Costo Meno di 1 USD
Caso d'uso Machine Learning
Prodotti AWS Deep Learning Containers, Amazon EC2, Amazon ECR
Destinatario Sviluppatori, data scientist
Livello Principiante
Ultimo aggiornamento 27 marzo 2019

1. Registrati ad AWS

Per seguire questo tutorial devi disporre di un account AWS. L’uso di AWS Deep Learning Containers non prevede costi aggiuntivi per questo tutorial - il pagamento è previsto soltanto per l’istanza Amazon c5 utilizzata in questo tutorial, che sarà inferiore a 1$, dopo aver seguito i seguenti passaggi per portare a termine questo tutorial. 

2. Aggiungi permessi per accedere ad Amazon ECR

I Container AWS Deep Learning sono ospitati su Amazon Elastic Container Registry (ECR), un registro di contenitore Docker completamente gestito che semplifica agli sviluppatori la memorizzazione, la gestione e la distribuzione di immagini di contenitori Docker. In questa fase, ti verranno assegnate delle concessioni come utente IAM per accedere ad Amazon ECR (utilizzando AmazonECS_FullAccess Policy).

Se non hai un utente IAM esistente, fai riferimento alla Documentazione IAM per maggiori informazioni.

a. Passaggio alla console IAM

Apri la Console di gestione AWS e tieni sotto mano questa guida dettagliata. Quando viene caricata la schermata, inserisci nome utente e password per iniziare. Poi digita IAM nella barra di ricerca e seleziona IAM per aprire la console di servizio.

b. Seleziona Utenti

Nel riquadro di navigazione a sinistra, fai clic su Utenti.

c. Aggiungi autorizzazioni

Aggiungerai ora delle autorizzazioni per un nuovo utente IAM che hai creato o a un utente IAM esistente. Seleziona Aggiungi Autorizzazioni sulla pagina di riepilogo utente IAM.

d. Aggiungi la politica di piena accessibilità ECS

Seleziona Aggiungi direttamente politiche esistenti e cerca ECS_FullAccess. Seleziona la politica Amazon_FullAccess e fai clic su Verifica e Aggiungi Autorizzazioni.

e. Aggiungi policy in linea

Sulla pagina di riepilogo utente IAM, seleziona Aggiungi Autorizzazioni in linea.

f. Incolla policy JSON

Seleziona la tabella JSON e incolla la seguente policy:

{
       "Version": "2012-10-17",
       "Statement": [
              {
                     "Action": "ecr:*",
                     "Effect": "Allow",
                     "Resource": "*"
              }
       ]
}

Salva questa policy come ‘ECR’ e seleziona Crea Policy.

 

3. Avvio di un’istanza AWS Deep Learning Base AMI.

In questo tutorial, utilizzeremo AWS Deep Learning Containers su una base AWS Deep Learning Amazon Machine Image (AMI), che è preconfezionato con le dipendenze necessarie come Nvidia driver, docker e nvidia-docker. Puoi avviare i container deep learning su tutti questi pacchetti AMI.

a. Accedi alla console di EC2

Ritorna alla schermata principale della console di gestione AWS e digita EC2 nella barra di ricerca, quindi seleziona EC2 per aprire la console di servizio.

b. Avvia un'istanza Amazon EC2

Accedi nuovamente alla console di Amazon EC2 e fai clic sul pulsante Avvia istanza.

c. Scarica l'AWS Deep Learning Base AMI.

Scegli la scheda AWS Marketplace sulla sinistra e quindi cerca deep learning ubuntu. Seleziona Deep Learning Base AMI (Ubuntu). Puoi inoltre selezionare la Deep Learning Base AMI (Amazon Linux).

d. Seleziona il tipo di istanza

Scegli una tipologia di istanza Amazon EC2 Amazon Elastic Compute Cloud (EC2) è un servizio di AWS che consente di creare ed eseguire macchine virtuali nel cloud. In AWS, queste macchine sono denominate "istanze".

In questo tutorial utilizzeremo un’istanza c5.large, tuttavia puoi scegliere tra altri tipologie di istanza tra cui le istanze P3 basate su GPU.

Seleziona Verifica e avvia.

e. Avvia la tua istanza

Verifica i dettagli della tua istanza e seleziona Avvia.

f. Crea un nuovo file chiave privato

Nella schermata seguente ti verrà richiesto di scegliere una coppia di chiavi esistente o di crearne una nuova. Una coppia di chiavi viene utilizzata per accedere in sicurezza alla tua istanza usando SSH. AWS effettua lo storage della porzione pubblica della coppia di chiavi, agendo come la serratura della porta di un’abitazione. L’utente scarica e utilizza la porzione privata della coppia di chiavi, che corrisponde alla chiave per aprire la serratura di cui sopra.

Seleziona Crea una nuova coppia di chiavi e assegnale un nome. Successivamente, seleziona Scarica coppia di chiavied effettua lo storage della tua chiava in una posizione sicura. Se perdi la chiave, non potrai più accedere alla tua istanza. Se qualcun altro ottiene l'accesso alla chiave, potrà accedere alla tua istanza.

Se in precedenza hai creato un file contenente una chiave privata a cui sei ancora in grado di accedere, puoi utilizzare la tua chiave privata esistente anziché selezionare l’opzione Scegli una coppia di chiavi esistente.

g. Visualizza di dettagli dell’istanza

Seleziona l’ID dell’istanza per visualizzare sulla console i dettagli relativi all’istanza Amazon EC2 appena creata. 

4. Collegati all'istanza

In questa fase ti collegherai all’istanza avviata in precedenza utilizzando SSH. Le seguenti istruzioni fanno riferimento a un ambiente Mac/Linux. Se utilizzi Windows, attieniti alla fase 4 di questo tutorial.

a. Trova e copia il DNS pubblico della tua istanza

Sotto il tab Descrizione, copia il DNS pubblico (IPv4) della tua istanza Amazon EC2.

b. Apri il terminale a riga di comando.

All’interno del terminale utilizza i seguenti comandi per accedere alla directory dove è posizionata la chiave di sicurezza, quindi collegati all’istanza tramite SSH.

cd /Users/<your_username>/Downloads/

chmod 0400 <your .pem filename>

ssh -L localhost:8888:localhost:8888 -i <your .pem filename> ubuntu@<your instance DNS>

5. Accedi ad Amazon ECR

Le immagini di Amazon Elastic Container sono presenti in hosting su Amazon Elastic Container Registry (ECR), un registro di container Docker completamente gestito che permette agli sviluppatori di effettuare lo storage, gestire e distribuire immagini di container Docker con maggiore semplicità. In questa fase accederai e verificherai l’accesso ad Amazon ECR.

a. Configura la tua istanza EC2 con le tue credenziali AWS

Dovrai fornire il tuo ID chiave di accesso e la chiave di accesso segreta per AWS. Se non sei già in possesso di queste informazioni, puoi creare un ID chiave di accesso e una chiave di accesso segreta qui.

b. Accedi ad Amazon ECR

Utilizzerai il comando sottostante per accedere ad Amazon ECR:

$(aws ecr get-login --region us-east-1 --no-include-email --registry-ids 763104351884)

Nota: Devi includere ‘$’ e le relative parentesi nel tuo comando. Al termine di questa fase visualizzerai la dicitura “Login completato con successo”.

 

6. Avvia il flusso Trensor con i container di deep learning

In questa fase utilizzeremo un’immagine di AWS Deep Learning Container per l’addestramento in TensorFlow su istanze CPU con Python 3.6.

a. Avvia container di deep learning AWS

Avvierai quindi il container di immagini AWS deep learning su un’istanza EC2 utilizzando il comando sottostante. Questo comando estrarrà automaticamente l’immagine del Deep Learning Container nel caso in cui non esista localmente.

docker run -it 763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.13-cpu-py36-ubuntu16.04

Nota: questa fase può richiedere alcuni minuti a seconda delle dimensioni dell’immagine. Se stai utilizzando un’istanza GPU, usa “nvidia-docker” al posto di “docker”. Una volta completata questa fase entrerai in un bash prompt relativo al tuo container.

 

b. Estrai un modello campione da addestrare

Cloneremo un repository Keras, comprensivo di script python campione per l’addestramento dei modelli.

git clone https://github.com/fchollet/keras.git

c. Comincia il training

Avvia il training del modello canonico MNIST CNN con il seguente comando:

python keras/examples/mnist_cnn.py

Hai appena avviato con successo la formazione con il tuo AWS Deep Learning Container.

 

7. Interruzione delle risorse

In questa fase interromperai le istanze Amazon EC2 che hai creato durante il tutorial.

Importante: l'interruzione delle risorse che non vengono utilizzate attivamente consente di ridurre i costi e costituisce una best practice. La mancata interruzione delle risorse potrebbe determinare costi non desiderati.

a. Seleziona l’istanza in esecuzione

Seleziona Istanze in esecuzione nella console di Amazon EC2.

 

b. Interrompi la tua istanza EC2

Seleziona l’istanza EC2 che hai creato in precedenza e scegli Azioni > Stato dell’istanza > Interrompi.

c. Conferma l’interruzione

Ti verrà richiesto di confermare l’interruzione. Seleziona Sì, interrompi.

Nota: il completamento di questo processo richiederà diversi secondi. Una volta interrotta l'istanza, lo “Stato dell’Istanza” passerà a “interrotta” sulla tua console EC2.

 

Congratulazioni

La formazione è andata a buon fine nel modello MNIST CNN con TensorFlow utilizzando AWS Deep Learning Containers.

Puoi utilizzare i container AWS DL per la formazione e l’inferenza sulle risorse CPU e GPU su Amazon EC2, Amazon ECS, Amazon EKS e Kubernetes.

Utilizza queste immagini di deep learning, che sono state ottimizzate per la performance e la scalabilità su AWS, per creare i tuoi ambienti di deep learning personalizzati.

Questo tutorial è stato utile?