Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BiBirra: Serverless Beer Recognition (ITA)

BiBirra: Serverless Beer Recognition (ITA)

Slides of my talk about deploying machine learning models on the cloud using serverless technologies.
The project I describe is an app that can recognize a beer from a picture

Avatar for Matteo Ronchetti

Matteo Ronchetti

December 12, 2017

Other Decks in Programming

Transcript

  1. BiBirra ➔ Scraping Raccogliere automaticamente foto e informazioni dal web

    ➔ Algoritmo Creare un algoritmo funzionante ➔ Deploy Creare una beta utilizzabile dell’applicazione
  2. AWS Lambda + API Gateway FaaS Supporta Python (anche con

    moduli compilati) Deploy non semplici quanto vorrei Massima dimensione del pacchetto 250mb
  3. Zappa Software che permette di fare deploy di applicazioni Flask

    o Django verso Lambda e API gateway senza modificare il codice
  4. Vantaggi One-Click deploy Stages (ex. dev, prod) Versioning (updates e

    rollbacks) Nessun cambiamento al codice Keep-warm automatico
  5. Riduzione del modello Tramite tecniche di Dimensionality Reduction ho ridotto

    la dimensionalità del modello a circa 250mb senza ledere l’accuratezza E’ necessario? No, tuttavia ottenere un modello più leggero è in generale un risultato positivo
  6. Lettura del modello da S3 Per superare il limite si

    può caricare il modello da S3. Esso verrà scaricato solo quando viene instanziato il micro-container dentro il quale viene eseguita la funzione Lambda.
  7. Cold Starts “lenti” Il download del modello da S3 comporterà

    dei tempi di attesa. Questo problema è mitigabile tramite Keep-warm (implementato di default da Zappa) Può essere un ostacolo alla scalabilità
  8. Versionamento e Staging di codice e modello One-click deploy Nessuna

    manutenzione Passaggio veloce da “prototipo in locale” a “prototipo online”
  9. Tips ➔ S3 Transfer Acceleration Permette upload più rapidi verso

    S3 ad un costo trascurabile ➔ Usare Lambda di grossa taglia RAM e CPU scalano insieme nelle lambda. Se il numero di chiamate sarà ridotto il costo non cambia.