GDG-Lab

TensorFlow: resoconto secondo incontro Meetup "Machine-Learning e Data Science" Roma (19 febbraio 2017)

170219-tensorflow.jpg

Il 16 febbraio 2017 si è svolto a Roma – presso il Talent Garden di Cinecittà - il secondo incontro del Meetup "Machine Learning e Data Science" (web, fb, slideshare): l’incontro - organizzato insieme al Google Developer Group Roma Lazio Abruzzo   - è stato dedicato alla presentazione di TensorFlow,  la soluzione di Google per il deep learning nel machine learning.

Nel seguito una breve sintesi dell’incontro del 16 febbraio 2017.

Prima di iniziare:

•    Cos’è il Machine Learning? Intervista a Simone Scardapane sul Machine Learning Lab (1 dicembre 2016)
•    Cos’è TensorFlow? Andrea Bessi, “TensorFlow CodeLab”, Nov 16, 2016

Resoconto

Premessa

Il 15 Febbraio 2017 a Mountain View (USA) si è tenuto il “TensorFlow Dev Summit” , il primo evento ufficiale di Google dedicato a TensorFlow, la soluzione di deep learning rilasciato circa un anno fa e giunta adesso alla versione 1.0 “production ready”.
Il “TensorFlow Dev Summit” è stato aperto da un keynote di Jeff Dean (wiki, web, lk) - Google Senior Fellow - Rajat Monga (tw) - TensorFlow leader nel Google Brain team - e Megan Kacholia (lk) Engineering Director del TensorFlow/Brain team.

Per approfonsire il #TFDevSummit 2017:

L’incontro del Meetup "Machine-Learning” di Roma è stata un’occasione per rivedere insieme e commentare il video e fare anche una breve presentazione di TensorFlow.
Alla fine dell'evento c’è stato un piccolo rinfresco aperto a tutti gli appassionati di deep learning a Roma.

Simone Scardapane: “TensorFlow and Google, one year of exciting breakthroughs”

Simone (mup, web, fb, lk) ha aperto l’incontro con una breve presentazione sul deep learning e TensorFlow.
“TensorFlow” ha detto Simone “ ha reso accessibili a tutti le reti neurali che sono alla base del deep learning e dell’intelligenza artificiale. Prima di TensorFlow c’era una oggettiva difficoltà nel gestire e allenare reti neurali vaste e complesse”.
Le moderne architetture di deep learning usano infatti reti neurali molto complesse: ad esempio nelle applicazioni di data imaging  i modelli architetturali prevedono decine di milioni di parametri.

170219-reteneurale.jpg

(Rete neurale, immagine tratta da http://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html)

Uno dei grossi vantaggi di TensorFlow è che permette di definire una rete neurale in modo simbolico: lo strumento fornisce inoltre un compilatore efficiente che gestisce in automatico il processo di back-propagation.
TensorFlow può essere utilizzato inoltre con una interfaccia semplificata come Keras arrivando quasi ad una sorta di programmazione dichiarativa.
La prima release di TensorFlow – ha ricordato Simone - è stata rilasciata nel novembre 2015 con licenza aperta Apache 2.0  (cos’è?). Il 15 febbraio 2017 – durante il TFDevSummit - è stata annunciata la versione 1.0 di TensorFlow la prima “production ready”.
La disponibilità di un ambiente deep learning aperto e “user-friendly” ha permesso lo sviluppo di una vasta comunità di esperti, ricercatori e semplici appassionati e il rilascio applicazioni software di grande impatto. Simone ha mostrato alcuni esempi.

1) Neural image captioning: software in grado di riconoscere e descrivere o sottotitolare immagini.

170216-tensorflow-s2.jpg
 

170216-ragazzo-aquilone.jpg

170216-tren-b-n.jpg

2) Google Neural Machine Translation (GNMT)  che ha permesso il rifacimento di “Google translator” grazie al deep learning: invece di tradurre parola per parola ora è possibile analizza il testo nella sua interezza cogliendo significato e il contesto con un livello di accuratezza ormai vicino alla traduzione umana.

nmt-model-fast.jpg

170216-neural-translation.jpg
170216-neural-translation2.jpg

3) Generative Adversarial Networks (GANS) sistemi capaci di generare nuovi dati grazie a un emenorme “training set” e che lavorano con una coppia di reti neurali: la prima produce nuovi dati la seconda controlla la “bontà” del risultato; questi sistemi sono già stati usati per generare immagini artificiali, scenari per video-game, migliorare immagini e riprese video di scarsa qualità.

170216-generative-image

4) Alphago: il deep learning è anche alla base dei recenti spettacolari successi dell’IA nel campo dei giochi da tavolo come la vittoria di Alphago di Google  contro il campione del mondo di GO.

170216-alphago.jpg

5) WaveNet - a generative model for raw audio - capace di generare discorsi che imitano una voce umana con molta più “naturalezza” rispetto ai migliori sistemi di Text-to-Speech oggi esistenti. WaveNet è già stato utilizzato anche per creare musica artificiale.

Simone ha concluso il suo intervento ricordando che di deep learning e ML si parlerà anche in un track specifico alla Data Driven Innovation Roma 2017   che si terrà presso la 3° università di Roma il 24 e 25 febbraio 2017.

Sintesi del keynote di Jeff Dean, Rajat Monga e Megan Kacholia su TensorFlow

Il keynote di apertura del TF DevSummit 2017 condotto da Jeff Dean, Rajat Monga e Megan Kacholia  ha trattato:

  • origini e storia di TensorFlow
  • i progressi da quanto è stata rilasciata la prima versione opensource di TensorFlow
  • la crescente comunità open-source di TensorFlow
  • performance e scalabilityà di TensorFlow
  • applicazioni di TensorFlow
  • exciting announcements!

Jeff Dean

jeff dean.jpg

Jeff ha detto che l’obiettivo di Google con TensorFlow è costruire una “machine learning platform” utilizzabile da chiunque.
TensorFlow è stato rilasciato circa un anno fa ma le attività di Google nel campo del machine learning e deep learning sono iniziati 5 anni fa.
Il primo sistema realizzato – nel 2012 – è stato DistBelief un sistema proprietario di reti neurali adatto ad un ambiente produzione come quello di Google basato su sistemi distribuiti (vedi “Large Scale Distributed Deep Networks” in pdf). DistBelief è stato utilizzato in molti prodotti Google di successo come Google Search, Google Voice Search, advertising, Google Photos, Google Maps, Google Street View, Google Translate, YouTube.
Ma DistBelief aveva molti limiti: “volevamo un sistema molto più flessibile e general purpose” ha detto Jeff “che fosse open source e che venisse adottato e sviluppato da una vasta comunità in tutto il mondo e orientato non solo alla produzione ma anche alla ricerca. Così nel 2016 abbiamo annunciato TensorFlow, una soluzione capace di girare in molteplici ambienti compreso IOS, Android, Raspberry PI, capace di girare su CPU, GPU e TPU, ma anche sul Cloud di Goole ed essere interfacciata da linguaggi come Python, C++, GO, Hasknell, R”.

170216-tensorflow-keynote1.jpg
TensorFlow ha anche sofisticati tool per la visualizzazione dei dati e questo ha facilitato lo sviluppo di una vasta comunità open source intorno a TensorFlow.

170216-tensorflow-keynote2.jpg

Rajat Monga

rajatmonga2.jpg

Rajat Monga ha ufficialmente annunciato il rilascio della versione 1.0 di TensorFlow illustrandone le nuove caratteristiche.

170216-tensorflow-keynote3.jpg

170216-tensorflow-keynote4.jpg

Rajat ha poi illustrato le nuove API di TensorFlow

170218-tf-model.jpg

TensorFlow 1.0 supporta IBM's PowerAI distribution, Movidius Myriad 2 accelerator, Qualcomm SnapDragon Hexagon DSP. Rajat ha annunciato anche la disponibilità di XLA an experimental TensorFlow compiler  specializzato nella compilazione just-in-time e nei calcoli algebrici.

170218-tf-xla.jpg

Megan Kacholia

megankacholia2.jpg

Megan Kacholia ha approfondito il tema delle performancedi TensorFlow 1.0.

170216-tensorflow-keynote7.jpg

In ambiente di produzione si possono utilizzare  molteplici architetture: server farm, CPU-GPU-TPU, server a bassa latenza (come nel mobile) perché TensorFlow 1.0 è ottimizzato per garantire ottime performance in tutti gli ambienti.

170218-tf-performance1.jpg

Megan ha poi illustrato esempi dell’uso di TensorFlow in ricerche d'avanguardia - cutting-edge research – e applicazioni pratiche in ambiente mobile.

170218-tf-research2.jpg

170218-tf-research1.jpg

Conclusione del keynote

In conclusione del Keynote è di nuovo intervenuto Jeff per ringraziare tutti coloro che contribuiscono alla comunità di TensorFlow pur non facendo parte di Google.
“Dalla comunità” ha detto Jeff “arrivano suggerimenti, richieste e anche soluzioni brillanti a cui in Google non avevamo ancora pensato” citando il caso di un agricoltore giapponese che ha sviluppato un’applicazione con TensorFlow su Raspberry PI per riconoscere i cetrioli storti e scartarli nella fase di impacchettamento.
Nel campo della medicina – ha ricordato Jeff – TensorFlow è stato usato per la diagnostica della retinopatia diabetica (qui una sintesi) e all’università di Stanford per la cura del cancro della pelle .

Contatti

•    Meetup “Machine-Learning e Data Science” di Roma: - sito web e pagina Facebook

Approfondimenti

Video

Ulteriori informazioni su TensorFlow

Leggi anche

AG-Vocabolario: 

GDG Rome Devfest 2014 - An introduction to Go by Alessandro Mancini (8th January 2015)

(This post is part of a serie on GDG Rome DevFest 2014)

150108-alessandro-mancini-golang.jpg

(Alessandro Mancini)

Agatino Grillo: Hi Alessandro. Can you introduce yourself?

Alessandro Mancini: I am a software developer with several years of experience in military defense area, particularly focused in Human-Machine interface system, Real-Time radar system, Object Oriented application using C/C++ and Java.
I am an active member of Google Developers Group - Lazio/Abruzzo (GDG lab) since the summer of 2013.
I am a Go enthusiast and an Android developer and a speaker in several IT conferences.
Beside this geek/nerd things, my interests are music (I am a very expert and enthusiast of many genres of music and spend hours of my days listen good albums) and I try sometimes to snowboard.

Agatino Grillo: You get a talk at Rome Google Developer Group (GDG) Fest on 8th November 2014 in a code-lab dedicated to Go language. What about it?

Alessandro Mancini: GDG DevFest’s codelabs are hands-on lab sessions to allow attendees to learn Google technologies by practical examples from experts sharing their knowledge and passion. Rome Devefest 2014  was hosted by Rome University TRE. The full agenda of Rome Devefest 2014 is available here. I was the speaker of GO codelab that was a sort of “introduction of Go language”: why adopt it, its advantages against other programming languages, etcetera. You can find the slides here  with the code examples I proposed.

Agatino Grillo: Okay let’s start from basics. What is Go? Why another web programming language?

Alessandro Mancini: Go language (better known as Go lang or just GO) was conceived in 2007 by Google to solve some of the problems born by the interconnection of modern software infrastructures: multicore processors, networked systems, massive computation clusters, and the continuous update of web programs. Go was designed and developed to improve productivity in this complex environment. Its better-known aspects are built-in concurrency and garbage collection but Go has other important features: a rigorous dependency management, adaptability of software architecture as systems grow, robustness across the boundaries between components.
The article "Go at Google"  discusses the background and motivation behind the design of the Go language, as well as providing more details.

Agatino Grillo: That means Go is the best choice only for construction of system software on multicore machines?

Alessandro Mancini: Absolutely no. Go is efficient, scalable, and productive in every architectures and some programmers find it fun to work in. The goals of the Go project were to eliminate the slowness and clumsiness of software development and thereby to make the process more productive and scalable. The language was designed by and for people who write and read and debug and maintain large software systems.

Agatino Grillo: What are the most important characteristics of Golang?

Alessandro Mancini: To summarize Golang is

  • lightweight, avoids unnecessary repetition
  • statically typed
  • object oriented, but not in the usual way
  • concurrent, in a way that keeps you sane
  • designed for working programmers
  • funny.

Agatino Grillo: What does it mean “Object Oriented, but not in the usual way”?

Alessandro Mancini: Golang requires a different way to think about Object Oriented Programming. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that is more easy to use and in some ways more general. There are also ways to embed types in other types to provide something analogous - but not identical - to subclassing. Moreover, methods in Go are more general than in C++ or Java: they can be defined for any sort of data, even built-in types such as plain, “unboxed” integers. They are not restricted to structs (classes).
Go has types and values rather than classes and objects.
Go doesn’t fit the typical schema of other OOP language but it provides many of the same features, in a different way:

  • methods on any type we define, with no boxing or unboxing
  • automatic message delegation via embedding
  • polymorphism via interfaces
  • namespacing via exports.

There is no inheritance in Go and so you have to realize OO design in terms of composition.

Agatino Grillo: Your suggestions on getting started with Golang?

Alessandro Mancini: At Google I/O 2012 the Google Developers team launched the Google Developers Academy, a program that provides training materials on Google technologies. Go is one of those technologies. A good point to start is for example: “Getting Started with Go, App Engine and Google+ API”  an introduction to writing web applications in Go updated on September 2014. It demonstrates how to build and deploy App Engine applications and make calls to the Google+ API using the Google APIs Go Client. This is a great entry point for Go programmers to get started with Google’s developer ecosystem.
After going through basic materials the second step for acquiring knowledge in Go is to get started writing code solving actual problems. And of course joining Go community https://groups.google.com/forum/#!forum/golang-nuts . There are a lot of gophers eager to help you improve your skills.

tipi-google-2.jpg

Agatino Grillo: Alessandro you’re a member of the Google Developer Group Rome. What’s the tech scene in Rome? What about Golang spread in Italy?

Alessandro Mancini: The tech scene in Rome is growing up thanks to developer groups like GDG Roma and GolangIt http://www.meetup.com/golangit/ which have a key role in bringing innovation and tech knowledge into the programmers communities. In Italy in the last years there has been a relevant growth of tech events as well as tech communities.

Agatino Grillo: Thanks Alessandro

Alessandro Mancini: Thank you

How to contact Alessandro Mancini

Slides

Links

Connected posts