SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Construyendo modelos para
dispositivos edge TPU
Moisés Martínez
GDG DevFest Galicia 2019
PhD en Ciencias de la computación
AI & Big Data Architect Sngular
Investigador en diferentes universidades
Orgulloso organizador de T3chFest y
Profe en Fictizia, UNIR, Structuralia, ...
Speaker en Codemotion, Machine Learning Spain, T3chFest,
GDG Spain, GDG UK, ...
About me
2
Moisés Martínez
@moisipm
@momartinm
Las máquinas podrán hacer cualquier cosa que hagan las
personas, porque las personas no son más que máquinas
3
Marvin Minsky, 1996
¿Quíen es Marvin Minsky?
La computación EDGE
5
1950 1960 199019801970 2010
Evolución de los modelos de computación
2000 2020
Secuencial MainFrame
Paralela
Cloud Fog Edge
Quantum
Paralela Paralela
¿Por qué surgió la
computación edge?
La era de los dispositivos
8
INTERNET of Things
9
La era de los dispositivos
¿Cómo funciona?
11
CloudFogDispositivos
Edge
Aprendizaje Automático
Aprendizaje Automático
Instancia
Atributos
Aprendizaje Automático
Instancia
Atributos Clase
?
Aprendizaje Automático
Instancia
Atributos Clase
?
Ficheros de entrenamiento,
Ficheros de test
Ficheros de pruebas
16
Aprendizaje Automático
?
Supervisado
ejemplos + classes
17
Aprendizaje Automático
? ?
?
?
Supervisado No supervisado
ejemplos + classes ejemplo
18
Aprendizaje Automático
? ?
?
?
Supervisado No supervisado Refuerzo
ejemplos + classes ejemplo acciones + estados + refuerzo
19
Aprendizaje Automático
? ?
?
?
Supervisado No supervisado Refuerzo
ejemplos + classes ejemplo acciones + estados + refuerzo
Aprendizaje automático es un conjunto de técnica que nos permiten
identificar patrones para la construcción de modelos
20
Aprendizaje Automático - El proceso de aprendizaje
EntrenamientoDespliegue
TPUs y EDGE TPUs
22
NPU - Neural Processing Unit
Es un tipo de procesador especializado en la aceleración de algoritmos de Machine Learning y procesamiento
de imágenes, principalmente porque su arquitectura se parece una “red de neuronas”.
NVDLA de Nvidia NNP de Intel TPU de Google
23
TPU - Tensor Processing Unit
TPU es un motor de multiplicación matricial de 8 bits
¿Por qué matrices?
Redes de Neuronas = capas de matrices
¿Por qué las TPUs?
CPUs - Recordando a Von Neumann
Sistemas de procesamiento de operaciones
Procesamiento mediante instrucciones basadas en almacenamiento en memoria
Cálculos se realizan mediante la Unidad Aritmético-Lógica (ALU)
27
Sistema de Propósito general
CPUs - Recordando a Von Neumann
28
Cuello de botella de von Neumann
Operación = 1 lectura + 1 ALU + 1 escritura
Sistemas de procesamiento de operaciones
Procesamiento mediante instrucciones basadas en almacenamiento en memoria
Cálculos se realizan mediante la Unidad Aritmético-Lógica (ALU)
Sistema de Propósito general
GPUs - Superando a Von Neumann
Son sistemas de procesamiento de operaciones
Cálculos se realizan mediante múltiples ALUs (Entre 2.500 y 5.500 Alu x GPU)
29
Sistema de Propósito general
GPUs - Superando a Von Neumann
Son sistemas de procesamiento de operaciones
Cálculos se realizan mediante múltiples ALUs (Entre 2.500 y 5.500 Alu x GPU)
30
Sistema de Propósito general
Cuello de botella de von Neumann
Operación = 1 lectura + 1 ALU + 1 escritura
Miles de operaciones paralelas
TPUs - Tensor processor Unit
Sistemas de procesamiento matricial
Miles de multiplicadores y sumadores distribuidos en forma de gran matriz física de
operadores
31
Sistema de Propósito específico - Arreglo sistólico
TPUs - Tensor processor Unit
Sistemas de procesamiento matricial
Miles de multiplicadores y sumadores distribuidos en forma de gran matriz física
de operadores
32
Sistema de Propósito específico - Arreglo sistólico
33
EDGE Devices
Coral Edge TPU
Accelerator
Intel NCS 2 Coral Edge TPU
Board
Jetson Nano
Nvidia
34
SOM: CPU, GPU y ML accelerator
● CPU: NXP i.MX 8M SOC (quad Cortex-A53,
Cortex-M4F)
● GPU: Integrated GC7000 Lite Graphics
● ML accelerator: Google Edge TPU coprocessor
RAM: 1 GB LPDDR4
Flash memory: 8 GB eMMC
Wireless: Wi-Fi 2x2 MIMO (802.11b/g/n/ac 2.4/5GHz)
Bluetooth 4.1
Base Board:
Flash memory: MicroSD slot
Connections: USB Type C and Micro-B
Audio y video: 3.5mm audio jack y HDMI 2.0a
EDGE Devices - Coral Edge TPU Board
35
EDGE Devices - Coral Edge TPU Board
ML accelerator
Google Edge TPU coprocessor
Connector
USB 3.0 Type-C* (data/power)
36
EDGE Devices - Coral Edge TPU Board
ML accelerator
Google Edge TPU coprocessor
Connector
USB 3.0 Type-C* (data/power)
4 trillones de operaciones (tera-operations) por segundo
(TOPS), usando 0.5 watios por cada TOPS (2 TOPS por
watio)
37
import cv2 as opencv
import src.edge.detection.engine import DetectionEngine
from PIL import Image, ImageDraw
engine = DetectionEngine(model_file)
labels = read_labels_file(label_file)
camera = opencv.VideoCapture(0)
camera.set(opencv.CAP_PROP_FPS, 10)
has_frames_waiting, frame = camera.read()
input_image = Image.fromarray(frame)
result = engine.DetectWithImage(input_image,
threshold=0.05,
keep_aspect_ratio=True,
relative_coord=False,
top_k=1)
Cámara 8 Mpxs
CPU
TPU Edge accelator
● Google Edge TPU coprocessor
TensorFlow Lite Model (fichero): CDNN para la
detección de objetos
Etiquetas de clases (fichero): Etiquetas sobre
las clases numéricas de la CDNN
Frames (camera): Información
Hardware Source code
Entradas (Inputs)
Cargamos el modelo (tflite) y las etiquetas
Sincronizamos la cámara y el número de frames por segundo
Leemos un frame de la camara
Transformamos las componentes del frame en una image (PIL)
Solicitamos el objeto (k=1) con mayor porcentaje de acierto
Cámara 16 Mpxs
CPU processor: Core i7 - 8th Generation
RAM Memory: 16 GBs
TPU Edge accelator
● Google Edge TPU coprocessor
Edge TPU - Desplegando nuestra primera app
38
------------------------------
person
score = 0.99609375
box = [188.82, 191.72, 523.07, 480.0]
------------------------------
Edge TPU - Desplegando nuestra primera app
Proceso de identificación de un objeto sobre una imagen mediante TPU edge
Modo pitufo en la Sngular hub Madrid
39
------------------------------
person
score = 0.99609375
box = [188.82, 191.72, 523.07, 480.0]
------------------------------
Edge TPU - Desplegando nuestra primera app
Proceso de identificación de un objeto sobre una imagen mediante TPU edge
Modo pitufo en la Sngular hub Madrid
40
import cv2 as opencv
import src.edge.detection.engine import DetectionEngine
from PIL import Image, ImageDraw
engine = DetectionEngine(model_file)
labels = read_labels_file(label_file)
camera = opencv.VideoCapture(0)
camera.set(opencv.CAP_PROP_FPS, 10)
has_frames_waiting, frame = camera.read()
input_image = Image.fromarray(frame)
result = engine.DetectWithImage(input_image,
threshold=0.05,
keep_aspect_ratio=True,
relative_coord=False,
top_k=4)
Cámara 8 Mpxs
CPU
TPU Edge accelator
● Google Edge TPU coprocessor
TensorFlow Lite Model (fichero): CDNN para la
detección de objetos
Etiquetas de clases (fichero): Etiquetas sobre
las clases numéricas de la CDNN
Frames (camera): Información
Hardware Source code
Entradas (Inputs)
Cargamos el modelo (tflite) y las etiquetas
Sincronizamos la cámara y el número de frames por segundo
Leemos un frame de la camara
Transformamos las componentes del frame en una image (PIL)
Solicitamos los 4 objetos (k=4) con mayor porcentaje de acierto
Cámara 16 Mpxs
CPU processor: Core i7 - 8th Generation
RAM Memory: 16 GBs
TPU Edge accelator
● Google Edge TPU coprocessor
Edge TPU - Desplegando nuestra primera app
41
Edge TPU - Desplegando nuestra primera app
Proceso de identificación de múltiples objetos sobre una imagen mediante TPU
edge
Clase Puntuación Localización
person 0.99 [136.71, 161.88, 539.96, 474.13]
tv 0.26 [52.82, 82.65, 627.55, 480.0]
tv 0.12 [254.06, 69.67, 625.56, 480.0]
chair 0.12 [166.81, 198.87, 257.67, 344.81]
Construyendo mis modelos
Construyendo mis modelos - Proceso de creación
Tensor
N-dimensional array
Flow+
vector 1-D tensor
matriz 2-D tensor
Conjunto de operaciones
44
Construyendo mis modelos - Proceso de transformación
45
● Tensores tienen que estar quantizados (números de punto fijo 8-bit).
● Los tamaños de los tensores tienen que constantes en tiempo de compilación.
● Parámetros del modelo tienen que ser constantes en tiempo de compilación.
● Los tensores sólo pueden ser de 1, 2 o 3 dimensiones.
● Todos los operadores no están soportados
(*) Operador soportado con restricciones
(-) Operador soportado con pérdida de precisión
Información detallada sobre operadores
Construyendo mis modelos - Proceso de transformación
46
Construyendo mis modelos - Generando el archivo tflite
converter = tf.lite.TFLiteConverter.from_session(sess, [in_tensor], [out_tensor])
converter.post_training_quantize = True
tflite_model = converter.convert()
Generación del archivo tflite
converter = lite.TFLiteConverter.from_saved_model(saved_model_path)
converter.post_training_quantize = True
tflite_model = converter.convert()
converter = lite.TFLiteConverter.from_concrete_functions([func])
converter.post_training_quantize = True
tflite_model = converter.convert()
47
Construyendo mis modelos - Compilación al edge
sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" |
sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt-get update
sudo apt-get install edgetpu
Instalación del compilador edgetpu
48
Construyendo mis modelos - Compilación al edge
sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" |
sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
sudo apt-get update
sudo apt-get install edgetpu
Instalación del compilador edgetpu
edgetpu_compiler [options] path_model_quantizied.tflite
Compilación del modelo
49
Construyendo mis modelos - Compilación al edge
Edge TPU Compiler version 2.0.267685300
Model compiled successfully in 773 ms.
Input model: inception_v2_224_quant_medical_data.tflite
Input size: 10.74MiB
Output model: inception_v2_224_quant_medical_data_edgetpu.tflite
Output size: 11.95MiB
On-chip memory available for caching model parameters: 6.55MiB
On-chip memory used for caching model parameters: 6.55MiB
Off-chip memory used for streaming uncached model parameters: 4.97MiB
Number of Edge TPU subgraphs: 1
Total number of operations: 96
Compilación del modelo
¿Qué hace el proceso de
compilación?
51
Construyendo mis modelos - Compilación al edge
fichero FlatBuffer TFLite (*.tflite)
Compilador Edge TPU
Operación soportada Operación no soportada
CPUTPU Edge
fichero Edge TPU TFLite
52
Construyendo mis modelos - Compilación al edge
fichero FlatBuffer TFLite (*.tflite)
Compilador Edge TPU
Operación soportada Operación no soportada
CPUTPU Edge
fichero Edge TPU TFLite
53
Construyendo mis modelos - Compilación al edge
fichero FlatBuffer TFLite (*.tflite)
Compilador Edge TPU
Operación soportada Operación no soportada
CPUTPU Edge
fichero Edge TPU TFLite
54
¿Esto tiene futuro?
55
Posibles ventajas de Edge computing
● Latencia (no se produce petición y respuesta)
● Coste (el almacenamiento es menor)
● Privacidad (la información no se mueve a el cloud)

Contenu connexe

Similaire à Construyendo modelos para dispositivos edge tpu dev fest galicia

Informe fase 1
Informe fase 1Informe fase 1
Informe fase 1juansleon
 
Arquitectura de un pc ideal fase1 (2)
Arquitectura de un pc  ideal fase1 (2)Arquitectura de un pc  ideal fase1 (2)
Arquitectura de un pc ideal fase1 (2)7283204
 
Evaluación Nacional Fase I
Evaluación Nacional Fase IEvaluación Nacional Fase I
Evaluación Nacional Fase IAlbeiro Vargas
 
Plantilla fase1
Plantilla fase1Plantilla fase1
Plantilla fase1davel777
 
Informe ejecutivo fase1
Informe ejecutivo fase1Informe ejecutivo fase1
Informe ejecutivo fase1Gabito0417
 
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)DvdM1
 
Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1 Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1 Juan Pablo
 
Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1HaroldCortez
 
Curso de arquitectura
Curso de arquitecturaCurso de arquitectura
Curso de arquitecturalualcama0882
 
Plantilla fase1 arquitectura_del_computador
Plantilla fase1 arquitectura_del_computadorPlantilla fase1 arquitectura_del_computador
Plantilla fase1 arquitectura_del_computadorlmg_93
 
T fase1 103380_grupo_103380_47
T fase1 103380_grupo_103380_47T fase1 103380_grupo_103380_47
T fase1 103380_grupo_103380_47edwarsm2015
 
Ensamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresEnsamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresJose9750
 
Ensamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresEnsamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresJose9750
 
diseño de centro de computo
diseño de centro de computodiseño de centro de computo
diseño de centro de computoMarcelo Thalos
 
centro
centrocentro
centroryldo
 
Aporte fase 1 evaluacion final
Aporte fase 1 evaluacion finalAporte fase 1 evaluacion final
Aporte fase 1 evaluacion finalRoger Amaya
 
Mi computadora
Mi computadoraMi computadora
Mi computadoragermanr
 

Similaire à Construyendo modelos para dispositivos edge tpu dev fest galicia (20)

Informe fase 1
Informe fase 1Informe fase 1
Informe fase 1
 
Arquitectura de un pc ideal fase1 (2)
Arquitectura de un pc  ideal fase1 (2)Arquitectura de un pc  ideal fase1 (2)
Arquitectura de un pc ideal fase1 (2)
 
Evaluación Nacional Fase I
Evaluación Nacional Fase IEvaluación Nacional Fase I
Evaluación Nacional Fase I
 
Plantilla fase1
Plantilla fase1Plantilla fase1
Plantilla fase1
 
Informe ejecutivo fase1
Informe ejecutivo fase1Informe ejecutivo fase1
Informe ejecutivo fase1
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)
ARQUITECTURA DEL COMPUTADOR (Plantilla fase 1)
 
ARQUITECTURA DEL COMPUTADOR
ARQUITECTURA DEL COMPUTADOR ARQUITECTURA DEL COMPUTADOR
ARQUITECTURA DEL COMPUTADOR
 
Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1 Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1
 
Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1Informe Ejecutivo Fase 1
Informe Ejecutivo Fase 1
 
Sistema Experto para Mantenimiento de PCs
Sistema Experto para Mantenimiento de PCsSistema Experto para Mantenimiento de PCs
Sistema Experto para Mantenimiento de PCs
 
Curso de arquitectura
Curso de arquitecturaCurso de arquitectura
Curso de arquitectura
 
Plantilla fase1 arquitectura_del_computador
Plantilla fase1 arquitectura_del_computadorPlantilla fase1 arquitectura_del_computador
Plantilla fase1 arquitectura_del_computador
 
T fase1 103380_grupo_103380_47
T fase1 103380_grupo_103380_47T fase1 103380_grupo_103380_47
T fase1 103380_grupo_103380_47
 
Ensamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresEnsamble y mantenimiento de computadores
Ensamble y mantenimiento de computadores
 
Ensamble y mantenimiento de computadores
Ensamble y mantenimiento de computadoresEnsamble y mantenimiento de computadores
Ensamble y mantenimiento de computadores
 
diseño de centro de computo
diseño de centro de computodiseño de centro de computo
diseño de centro de computo
 
centro
centrocentro
centro
 
Aporte fase 1 evaluacion final
Aporte fase 1 evaluacion finalAporte fase 1 evaluacion final
Aporte fase 1 evaluacion final
 
Mi computadora
Mi computadoraMi computadora
Mi computadora
 

Dernier

Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 

Dernier (20)

El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 

Construyendo modelos para dispositivos edge tpu dev fest galicia

  • 1. Construyendo modelos para dispositivos edge TPU Moisés Martínez GDG DevFest Galicia 2019
  • 2. PhD en Ciencias de la computación AI & Big Data Architect Sngular Investigador en diferentes universidades Orgulloso organizador de T3chFest y Profe en Fictizia, UNIR, Structuralia, ... Speaker en Codemotion, Machine Learning Spain, T3chFest, GDG Spain, GDG UK, ... About me 2 Moisés Martínez @moisipm @momartinm
  • 3. Las máquinas podrán hacer cualquier cosa que hagan las personas, porque las personas no son más que máquinas 3 Marvin Minsky, 1996 ¿Quíen es Marvin Minsky?
  • 5. 5 1950 1960 199019801970 2010 Evolución de los modelos de computación 2000 2020 Secuencial MainFrame Paralela Cloud Fog Edge Quantum Paralela Paralela
  • 6. ¿Por qué surgió la computación edge?
  • 7. La era de los dispositivos
  • 9. 9 La era de los dispositivos
  • 15. Aprendizaje Automático Instancia Atributos Clase ? Ficheros de entrenamiento, Ficheros de test Ficheros de pruebas
  • 17. 17 Aprendizaje Automático ? ? ? ? Supervisado No supervisado ejemplos + classes ejemplo
  • 18. 18 Aprendizaje Automático ? ? ? ? Supervisado No supervisado Refuerzo ejemplos + classes ejemplo acciones + estados + refuerzo
  • 19. 19 Aprendizaje Automático ? ? ? ? Supervisado No supervisado Refuerzo ejemplos + classes ejemplo acciones + estados + refuerzo Aprendizaje automático es un conjunto de técnica que nos permiten identificar patrones para la construcción de modelos
  • 20. 20 Aprendizaje Automático - El proceso de aprendizaje EntrenamientoDespliegue
  • 21. TPUs y EDGE TPUs
  • 22. 22 NPU - Neural Processing Unit Es un tipo de procesador especializado en la aceleración de algoritmos de Machine Learning y procesamiento de imágenes, principalmente porque su arquitectura se parece una “red de neuronas”. NVDLA de Nvidia NNP de Intel TPU de Google
  • 23. 23 TPU - Tensor Processing Unit TPU es un motor de multiplicación matricial de 8 bits
  • 25. Redes de Neuronas = capas de matrices
  • 26. ¿Por qué las TPUs?
  • 27. CPUs - Recordando a Von Neumann Sistemas de procesamiento de operaciones Procesamiento mediante instrucciones basadas en almacenamiento en memoria Cálculos se realizan mediante la Unidad Aritmético-Lógica (ALU) 27 Sistema de Propósito general
  • 28. CPUs - Recordando a Von Neumann 28 Cuello de botella de von Neumann Operación = 1 lectura + 1 ALU + 1 escritura Sistemas de procesamiento de operaciones Procesamiento mediante instrucciones basadas en almacenamiento en memoria Cálculos se realizan mediante la Unidad Aritmético-Lógica (ALU) Sistema de Propósito general
  • 29. GPUs - Superando a Von Neumann Son sistemas de procesamiento de operaciones Cálculos se realizan mediante múltiples ALUs (Entre 2.500 y 5.500 Alu x GPU) 29 Sistema de Propósito general
  • 30. GPUs - Superando a Von Neumann Son sistemas de procesamiento de operaciones Cálculos se realizan mediante múltiples ALUs (Entre 2.500 y 5.500 Alu x GPU) 30 Sistema de Propósito general Cuello de botella de von Neumann Operación = 1 lectura + 1 ALU + 1 escritura Miles de operaciones paralelas
  • 31. TPUs - Tensor processor Unit Sistemas de procesamiento matricial Miles de multiplicadores y sumadores distribuidos en forma de gran matriz física de operadores 31 Sistema de Propósito específico - Arreglo sistólico
  • 32. TPUs - Tensor processor Unit Sistemas de procesamiento matricial Miles de multiplicadores y sumadores distribuidos en forma de gran matriz física de operadores 32 Sistema de Propósito específico - Arreglo sistólico
  • 33. 33 EDGE Devices Coral Edge TPU Accelerator Intel NCS 2 Coral Edge TPU Board Jetson Nano Nvidia
  • 34. 34 SOM: CPU, GPU y ML accelerator ● CPU: NXP i.MX 8M SOC (quad Cortex-A53, Cortex-M4F) ● GPU: Integrated GC7000 Lite Graphics ● ML accelerator: Google Edge TPU coprocessor RAM: 1 GB LPDDR4 Flash memory: 8 GB eMMC Wireless: Wi-Fi 2x2 MIMO (802.11b/g/n/ac 2.4/5GHz) Bluetooth 4.1 Base Board: Flash memory: MicroSD slot Connections: USB Type C and Micro-B Audio y video: 3.5mm audio jack y HDMI 2.0a EDGE Devices - Coral Edge TPU Board
  • 35. 35 EDGE Devices - Coral Edge TPU Board ML accelerator Google Edge TPU coprocessor Connector USB 3.0 Type-C* (data/power)
  • 36. 36 EDGE Devices - Coral Edge TPU Board ML accelerator Google Edge TPU coprocessor Connector USB 3.0 Type-C* (data/power) 4 trillones de operaciones (tera-operations) por segundo (TOPS), usando 0.5 watios por cada TOPS (2 TOPS por watio)
  • 37. 37 import cv2 as opencv import src.edge.detection.engine import DetectionEngine from PIL import Image, ImageDraw engine = DetectionEngine(model_file) labels = read_labels_file(label_file) camera = opencv.VideoCapture(0) camera.set(opencv.CAP_PROP_FPS, 10) has_frames_waiting, frame = camera.read() input_image = Image.fromarray(frame) result = engine.DetectWithImage(input_image, threshold=0.05, keep_aspect_ratio=True, relative_coord=False, top_k=1) Cámara 8 Mpxs CPU TPU Edge accelator ● Google Edge TPU coprocessor TensorFlow Lite Model (fichero): CDNN para la detección de objetos Etiquetas de clases (fichero): Etiquetas sobre las clases numéricas de la CDNN Frames (camera): Información Hardware Source code Entradas (Inputs) Cargamos el modelo (tflite) y las etiquetas Sincronizamos la cámara y el número de frames por segundo Leemos un frame de la camara Transformamos las componentes del frame en una image (PIL) Solicitamos el objeto (k=1) con mayor porcentaje de acierto Cámara 16 Mpxs CPU processor: Core i7 - 8th Generation RAM Memory: 16 GBs TPU Edge accelator ● Google Edge TPU coprocessor Edge TPU - Desplegando nuestra primera app
  • 38. 38 ------------------------------ person score = 0.99609375 box = [188.82, 191.72, 523.07, 480.0] ------------------------------ Edge TPU - Desplegando nuestra primera app Proceso de identificación de un objeto sobre una imagen mediante TPU edge Modo pitufo en la Sngular hub Madrid
  • 39. 39 ------------------------------ person score = 0.99609375 box = [188.82, 191.72, 523.07, 480.0] ------------------------------ Edge TPU - Desplegando nuestra primera app Proceso de identificación de un objeto sobre una imagen mediante TPU edge Modo pitufo en la Sngular hub Madrid
  • 40. 40 import cv2 as opencv import src.edge.detection.engine import DetectionEngine from PIL import Image, ImageDraw engine = DetectionEngine(model_file) labels = read_labels_file(label_file) camera = opencv.VideoCapture(0) camera.set(opencv.CAP_PROP_FPS, 10) has_frames_waiting, frame = camera.read() input_image = Image.fromarray(frame) result = engine.DetectWithImage(input_image, threshold=0.05, keep_aspect_ratio=True, relative_coord=False, top_k=4) Cámara 8 Mpxs CPU TPU Edge accelator ● Google Edge TPU coprocessor TensorFlow Lite Model (fichero): CDNN para la detección de objetos Etiquetas de clases (fichero): Etiquetas sobre las clases numéricas de la CDNN Frames (camera): Información Hardware Source code Entradas (Inputs) Cargamos el modelo (tflite) y las etiquetas Sincronizamos la cámara y el número de frames por segundo Leemos un frame de la camara Transformamos las componentes del frame en una image (PIL) Solicitamos los 4 objetos (k=4) con mayor porcentaje de acierto Cámara 16 Mpxs CPU processor: Core i7 - 8th Generation RAM Memory: 16 GBs TPU Edge accelator ● Google Edge TPU coprocessor Edge TPU - Desplegando nuestra primera app
  • 41. 41 Edge TPU - Desplegando nuestra primera app Proceso de identificación de múltiples objetos sobre una imagen mediante TPU edge Clase Puntuación Localización person 0.99 [136.71, 161.88, 539.96, 474.13] tv 0.26 [52.82, 82.65, 627.55, 480.0] tv 0.12 [254.06, 69.67, 625.56, 480.0] chair 0.12 [166.81, 198.87, 257.67, 344.81]
  • 43. Construyendo mis modelos - Proceso de creación Tensor N-dimensional array Flow+ vector 1-D tensor matriz 2-D tensor Conjunto de operaciones
  • 44. 44 Construyendo mis modelos - Proceso de transformación
  • 45. 45 ● Tensores tienen que estar quantizados (números de punto fijo 8-bit). ● Los tamaños de los tensores tienen que constantes en tiempo de compilación. ● Parámetros del modelo tienen que ser constantes en tiempo de compilación. ● Los tensores sólo pueden ser de 1, 2 o 3 dimensiones. ● Todos los operadores no están soportados (*) Operador soportado con restricciones (-) Operador soportado con pérdida de precisión Información detallada sobre operadores Construyendo mis modelos - Proceso de transformación
  • 46. 46 Construyendo mis modelos - Generando el archivo tflite converter = tf.lite.TFLiteConverter.from_session(sess, [in_tensor], [out_tensor]) converter.post_training_quantize = True tflite_model = converter.convert() Generación del archivo tflite converter = lite.TFLiteConverter.from_saved_model(saved_model_path) converter.post_training_quantize = True tflite_model = converter.convert() converter = lite.TFLiteConverter.from_concrete_functions([func]) converter.post_training_quantize = True tflite_model = converter.convert()
  • 47. 47 Construyendo mis modelos - Compilación al edge sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list sudo apt-get update sudo apt-get install edgetpu Instalación del compilador edgetpu
  • 48. 48 Construyendo mis modelos - Compilación al edge sudo curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list sudo apt-get update sudo apt-get install edgetpu Instalación del compilador edgetpu edgetpu_compiler [options] path_model_quantizied.tflite Compilación del modelo
  • 49. 49 Construyendo mis modelos - Compilación al edge Edge TPU Compiler version 2.0.267685300 Model compiled successfully in 773 ms. Input model: inception_v2_224_quant_medical_data.tflite Input size: 10.74MiB Output model: inception_v2_224_quant_medical_data_edgetpu.tflite Output size: 11.95MiB On-chip memory available for caching model parameters: 6.55MiB On-chip memory used for caching model parameters: 6.55MiB Off-chip memory used for streaming uncached model parameters: 4.97MiB Number of Edge TPU subgraphs: 1 Total number of operations: 96 Compilación del modelo
  • 50. ¿Qué hace el proceso de compilación?
  • 51. 51 Construyendo mis modelos - Compilación al edge fichero FlatBuffer TFLite (*.tflite) Compilador Edge TPU Operación soportada Operación no soportada CPUTPU Edge fichero Edge TPU TFLite
  • 52. 52 Construyendo mis modelos - Compilación al edge fichero FlatBuffer TFLite (*.tflite) Compilador Edge TPU Operación soportada Operación no soportada CPUTPU Edge fichero Edge TPU TFLite
  • 53. 53 Construyendo mis modelos - Compilación al edge fichero FlatBuffer TFLite (*.tflite) Compilador Edge TPU Operación soportada Operación no soportada CPUTPU Edge fichero Edge TPU TFLite
  • 55. 55 Posibles ventajas de Edge computing ● Latencia (no se produce petición y respuesta) ● Coste (el almacenamiento es menor) ● Privacidad (la información no se mueve a el cloud)