Blog.

AWS Lambda e RNN Tensorflow Model | Log Italiano


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
Logs, machine-learning

aws-lambda-rnn-tensroflow-model-data-science-machine-learning-trading-deep-learning

In questo Log configuriamo una AWS Lambda Function basata su un RNN (LSTM) Tensorflow Model scritto in Python, chiamabile attraverso un web API.

Prima di procedere, alcuni chiarimenti.

Questo è un Log, e come da definizione, è un viaggio con un obiettivo chiaro in testa.

NON E’ UNA GUIDA.

Quella arriverà dopo.

La differenza?

In breve, un log è la successione temporale dei processi, delle decisioni, degli errori, delle prove e dei successi di un progetto.

A mio avviso più interessante di una guida sempliciotta, che va dritta al punto, un log consente di cogliere l’effort, la fatica e il sudore che si cela dietro una grande, o piccola conquista.

L’altra grande differenza è l’esito: certo per una guida, che narra di un’impresa compiuta, di un successo raggiunto; probabile ma irresoluto per un log.

Quindi qual è l’obiettivo?

Questo: portare online il nostro modello di machine learning, una RNN con architettura (LSTM) creta attraverso Tensorflow.

La manderemo on-line con l’ausilio di una AWS Lambda Function.

Procediamo.

AWS Lambda Function

Ho già creato un account AWS, che permette l’uso di diversi servizi gratuiti purché l’utilizzo degli stessi rimanga sotto determinate soglie mensili.

Non avremo problemi, poiché la natura del nostro progetto prevede pochi accessi e scarse risorse.

Modello alla mano, procediamo a redigere il codice per la AWS Lambda Function.

Prima però avremo bisogno di una bussola: questa guida sarà per noi il riferimento.

Inizializzeremo un progetto in locale, lo configureremo affinché funzioni a dovere e procederemo al caricamento in Cloud usando l’utility AWS Serverless.

Per il momento ho clonato la repository indicata nell’articolo e rimosso il riferimento a ogni origine remota.

Ho aperto VsCode, configurandolo per l’handling dei file pyhton. Ecco cosa ho installato, fra pacchetti e dipendenze varie:

  • Kite (Python Autocomplete with AI)
  • pylint
  • autopep8

Modifico il file dei requirments.txt

Dobbiamo cambiare runtime: nell’editor stiamo usando Python 3.5, che non è nell’elenco runtime compatibili con AWS lambda.

In locale abbiamo 4 environment creati negli anni in fase di testing: procediamo alla pulizia, cancellando qualche environment di troppo.

La doc di conda, torna qui molto utile. In alternativa, per guadagnare tempo:

conda env remove -n ENV_NAME

e aggiorniamo pip:

python -m pip install --upgrade pip

Aggiorniamo quindi protobuf, richiesto da TF2.0

Nuovamente incappati nell’errore:

ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Possiamo consultare queste info per trovare qualche spunto aggiuntivo, e qui pure.

AWS Lambda Update 15/04

A causa di eccessiva lentezza nell’installazione di nuovi pacchetti attraverso la piattaforma Anaconda, ho rimosso tutto.

Quindi, ho installato miniconda: un installer leggero, senza interfaccia grafica con incredibile miglioramento delle performance.

Puoi trovare il link al download qui.

Abbiamo attivato un nuovo virtual envronment (con python 3.6.10, quindi compatibile con la AWS Lambda) per tenere le cose pulite e installato pip, poi tensorflow:

conda create --name deep-learning
conda install -c anaconda pip
pip install tensorflow

Chiariamo l’obiettivo: installare le dipendenze di cui abbiamo bisogno per scriver in locale una funzione che faccia inferenza su un modello di RNN con architettura LSTM prima di passare ai Transformer.

Creata la funzione, occorre caricarla su AWS, nello specifico renderla disponibile al web attraverso il servizio AWS Lambda.

Con un endpoint REST operativo possiamo completare lo sviluppo della nostra web-app react.

Un caldo abbraccio, Andrea.

Taggeddeep learningmachine learningMachine Learning in productionweb development


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum