2. Luis Beltrán
• Investigador en Tomas Bata
University in Zlín, República
Checa.
• Docente en Tecnológico Nacional
de México en Celaya, Mexico.
• Xamarin, Azure e Inteligencia
Artificial
@darkicebea
m
luis@luisbeltran.mx
luisbeltran.mx
4. Clasificación de Imágenes
• Es la identificación del contenido
visual en una imagen.
• Tema de interés en el área de
Visión de Computadora.
• Una tarea trivial para los seres
humanos… todo un reto para las
aplicaciones informáticas
7. Servicios Cognitivos de Azure
Percepción Comprensión
Visión Voz Lenguaje Decisión
Computer Vision
Face API
Custom Vision
Text-to-Speech
Speech-to-Text
Speech Translator
Speaker Recognition
Language Understanding
Text Translator
Text Analytics
QnA Maker
Anomaly Detector
Content Moderator
Personalizer
microsoft.com/cognitive
13. Face
Un servicio de IA que analiza rostros en imágenes
Detección de rostros
• Detecta rostros humanos en una imagen
y sus atributos: edad, emoción, género,
pose, sonrisa y vello facial, además de 27
puntos de referencia (face landmarks).
Reconocimiento de rostros
• Verifica la probabilidad de que dos caras
pertenezcan a la misma persona; también
muestra el puntaje de confianza.
• Devuelve una lista de rostros similares a
una cara.
• Agrupa rostros en base a su similitud.
• Identifica una persona a partir de su
rostro.
14.
15. Una variedad de aplicaciones
Vision Speech Language
Natural Language Processing
Intent: PlayCall
Knowledge
Here are the top results:
The purpose of Customer Life-cycle Management (CLM)
is to maximize both customer retention and .... Predictive
trend analysis provides business visibility.
Oct 28, 2015 – Here are FIVE key trends in 2014 that
would help marketers in rolling ... Of late, marketers are
looking at customer lifecycle management (CLM)
Jan 5, 2016 – The top 10 customer service trends for
2016 that .... North American Consumer
Search
Here is what I found:
It also investigates the top three expected
Fraud Detection and Prevention programs, in
terms of demand in key markets…
First, let’s point out that there is not one
absolute answer—there are “pros” and “cons” to
each. Those who favor in-house…
Michael heads fraud prevention tool. Online
and mobile shopping are expected to continue
growing apace…
17. En la mayoría de las empresas, el desarrollo, despliegue y entrega de
software es un proceso con varios pasos bien diferenciados:
18. La computadora donde los usuarios finales
acceden a la aplicación requiere tener
instaladas ciertas dependencias para su
correcta ejecución, por ejemplo:
• Cierta versión de Java o .NET Framework instalada
• Un servidor de aplicaciones (Apache Server, IIS)
• Versiones específicas de librerías o ensamblados
(.dll) instalados
• Inclusive, un sistema operativo específico.
19. Una solución al problema anterior es la
virtualización:
• El cliente cuenta con un equipo host, que
consta de su propio hardware y un sistema
operativo instalado.
• Al host se le instala un hypervisor, donde se
crea una imagen de máquina virtual, a la cual
se le asignan:
• recursos virtuales (descontados de los recursos del
host)
• un sistema operativo determinado
• Finalmente, se comienza a instalar y configurar
el entorno virtual para que la aplicación
objetivo pueda existir dentro de la imagen y
cumplir su función.
20. El “problema” con la virtualización es que puede derivar
en una gran cantidad de recursos desperdiciados.
Por ejemplo, una empresa que requiere levantar:
• 10 máquinas virtuales,
• cada una con 4 GB de RAM,
• 10 GB de espacio en disco duro para levantar un
servidor Linux
• y 2 núcleos de procesador…
Necesitaría un total de 40 GB de memoria, 100 GB de
disco y 20 cores que debería obtener del host.
Son muchos recursos desperdiciados de forma
innecesaria.
21. La alternativa son los contenedores: entornos ligeros en
tiempo de ejecución que proporcionan a las aplicaciones los
recursos necesarios (archivos, bibliotecas, …) para ser
ejecutadas, maximizando su portabilidad.
A diferencia de las máquinas virtuales, los contenedores
utilizan el sistema operativo del host en vez de proporcionar
uno propio, siendo rápidos y fáciles de instalar. Esta
eficiencia permite que se implementen en clústeres, con
contenedores individuales que encapsulan componentes
únicos de aplicaciones complejas.
En resumen, los contenedores son un enfoque de
distribución de software en el que una aplicación o servicio
se empaqueta como una imagen junto con sus
dependencias y configuración.
22. Docker es la tecnología por excelencia en
cuanto a contenedores se refiere. Docker es
una herramienta para iniciar, detener y
gestionar contenedores mediante
comandos. Es una tecnología open-source
cuyo engine (motor) aprovecha el Sistema
Operativo sobre el cual se ejecuta a fin de
que todas las virtualizaciones de
contenedores compartan el Kernel del Host.
Docker permite crear entornos de ejecución
aislados e independientes para lanzamiento
y despliegue de aplicaciones.
¡Con Docker, se eliminan los problemas de
dependencia o compilación!
23. ¿Por qué usar Docker como desarrollador?
• Docker es rápido.
• Docker es multiplataforma.
• Los contenedores se pueden construir y
destruir más rápido que una máquina
virtual.
• No más dificultades para configurar un
entorno de trabajo. Es portable
• Mantiene su espacio de trabajo limpio,
pues cada entorno estará aislado.
• Será más fácil implementar su proyecto
en su servidor para ponerlo en línea.
24. Docker Hub es un repositorio donde los usuarios de Docker pueden
compartir las imágenes (contenedores) que han creado con otros
usuarios. La descarga desde el Docker Hub se realiza mediante
comandos y se ejecuta en el propio sistema.
28. Consideraciones al implementar Servicios
Cognitivos en una solución informática
• ¿Qué sucede si no puede cargar una
imagen o texto a la nube debido a
limitaciones en ancho de banda o el
acceso a Internet?
• ¿Qué procede si el envío de datos fuera de
la red de la empresa está sujeto a políticas
regulatorias, de confidencialidad o de
privacidad?
Si pudiera analizar los datos en un contexto
local, seguramente la aplicación podría
beneficiarse de una menor latencia y ancho
de banda…
29.
30. ¡Ahora, varias de las API de Azure Cognitive Services
están disponibles como contenedores Docker!
• Puedes descargar y ejecutar un contenedor que
proporciona la misma funcionalidad que los servicios
basados en la nube.
• Los datos se procesan directamente en el contenedor,
nunca se envían a la nube.
• Se requiere una conexión a Azure solo para la
facturación (sólo en el servidor) al mismo costo (incluye
free tier).
• El soporte de contenedores en Azure Cognitive Services
permite a los desarrolladores implementar soluciones
de IA y brinda flexibilidad hacia dónde implementar y
hospedar los servicios que vienen con los contenedores
Docker.
31. Características y beneficios
• Infraestructura inmutable
• Control sobre los datos
• Control sobre las actualizaciones de los modelos
• Arquitectura portable
• Alto rendimiento y baja latencia
• Escalabilidad
32. ¿Qué servicios están disponibles como
contenedores?
Actualmente hay un subconjunto de Servicios Cognitivos de Azure disponibles como
contenedores Docker (otros estuvieron disponibles en su momento):
• Anomaly Detector
• Language Understanding (LUIS)
• Text Analytics
• Translator
• Computer Vision
• Speech Service
• Computer Vision
• Face (ya no disponible)
• Spatial Analysis
33.
34.
35.
36.
37. Requerimientos
• Docker Engine: Docker proporciona paquetes que configuran el entorno
Docker en macOS, Linux y Windows.
En Windows, Docker debe estar configurado para admitir contenedores de
Linux. Los contenedores Docker también pueden implementarse de forma
directa en Azure Kubernetes o en las instancias de Azure Container.
• Recurso de Servicio Cognitivo creado en Azure: Docker debe estar
configurado para permitir a los contenedores establecer una conexión con
Azure y enviar datos de facturación.
40. • Descargar la imagen del contenedor del Servicio Cognitivo respectivo
desde el Microsoft Container Registry.
Contenedor Repositorio
Anomaly Detector mcr.microsoft.com/azure-cognitive-services/decision/anomaly-detector:latest
Computer Vision mcr.microsoft.com/azure-cognitive-services/vision/read:3.2
Text Translation mcr.microsoft.com/azure-cognitive-services/translator/text-translation
LUIS mcr.microsoft.com/azure-cognitive-services/language/luis:latest
Speech-to-text mcr.microsoft.com/azure-cognitive-services/speechservices/speech-to-text:latest
Custom Speech-to-text mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text:latest
Text-to-speech mcr.microsoft.com/azure-cognitive-services/speechservices/text-to-speech:latest
Key Phrase Extraction mcr.microsoft.com/azure-cognitive-services/textanalytics/keyphrase:latest
Language Detection mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest
Sentiment Analysis mcr.microsoft.com/azure-cognitive-services/textanalytics/sentiment:3.0-en
Text Analytics for Health mcr.microsoft.com/azure-cognitive-services/textanalytics/healthcare:latest
Neural Text-to-speech mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest
Speech Language identification mcr.microsoft.com/azure-cognitive-services/speechservices/language-detection:latest
54. ¡Muchas gracias por tu atención!
Luis Beltrán
Tomás Bata University in Zlín
Tecnológico Nacional de México en Celaya
luis@luisbeltran.mx luisbeltran.mx @darkicebeam
/icebeam /darkicebeam /luisantoniobeltran
/icebeam7 about.me/luis-beltran
Notas del editor
You prepare your data, for example in this case you see some text in Spanish. You include it in your HTTP request along with an key to authorize the request. Then, you send it to an endpoint and you'll get a response as a JSON string that you can process in your application to extract the results and present it to your users.
Funciona con keys y endpoint xDFIN JAJJAJA
Finally, use this information in your code. Of course, this depends on the technology, programming language and cognitive service. In this example you see a node js application; we add the azure/ai-text-analytics library; then in our code we can create a TextAnalyticsClient that uses the endpoint and keys for authentication of each operation. After that, we can call the specific methods such as analyze sentiment or detect language, which take an array of strings, then send a request to the Azure endpoint and we get the result so we can use it in the application. For this artificial intelligence part, only few lines of code are needed! Now Carlita will demonstrate a powerful scenario of Cognitive Services that involve several technologies.
¿Por qué usar Docker como desarrollador?
Docker es rápido. Una aplicación puede iniciarse en unos segundos y detenerse con la misma rapidez.
Docker es multiplataforma: cualquier sistema operativo.
Los contenedores se pueden construir y destruir más rápido que una máquina virtual.
No más dificultades para configurar un entorno de trabajo. Una vez que el contenedor está configurado, no hay que reinstalar dependencias de forma manual. Es portable: Si cambias de equipo, solo llévate la configuración.
Mantiene su espacio de trabajo limpio, pues cada entornos estará aislado y puede eliminarlos en cualquier momento sin afectar el resto.
Será más fácil implementar su proyecto en su servidor para ponerlo en línea.
Immutable infrastructure: Enable DevOps teams' to leverage a consistent and reliable set of known system parameters, while being able to adapt to change. Containers provide the flexibility to pivot within a predictable ecosystem and avoid configuration drift.
Control over data: Allow customers to choose where these Cognitive Services process their data. This is essential for customers that cannot send data to the cloud but need access to Cognitive Services technology. Support consistency in hybrid environments – across data, management, identity, and security.
Control over model updates: Provide customers flexibility in versioning and updating of models deployed in their solutions.
Portable architecture: Enable the creation of a portable application architecture that can be deployed on Azure, on-premises and the edge. Containers can be deployed directly to Azure Kubernetes Service, Azure Container Instances, or to a Kubernetes cluster deployed to Azure Stack. For more information, see Deploy Kubernetes to Azure Stack.
High throughput / low latency: Provide customers the ability to scale for high throughput and low latency requirements by enabling Cognitive Services to run physically close to their application logic and data. Containers do not cap transactions per second (TPS) and can be made to scale both up and out to handle demand if you provide the necessary hardware resources.
Scalability: With the ever growing popularity of containerization and container orchestration software, such as Kubernetes; scalability is at the forefront of technological advancements. Building on a scalable cluster foundation, application development caters to high availability.