SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
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)

Más contenido relacionado

Similar a 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
 

Similar a 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
 

Último

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
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
 
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
 
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
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
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
 
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
 
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
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
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
 

Último (20)

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
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ú
 
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
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
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
 
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
 
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
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
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
 

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)