Artificial Intelligence

In this category we show you all Artificial Intelligence related blogpost.

augmented reality dashboard

¿Cómo se ve el futuro de la interacción humano-máquina?

Últimamente, la gran pregunta que nos reta todos los días es: ¿cómo podemos hacer que nuestros productos tecnológicos simplifiquen cada vez más la vida de las personas y suplan las limitaciones de la tecnología actual? La idea de llegar a una experiencia agradable y que impacte positivamente a los usuarios desvela tanto a pequeños empresarios como a las grandes multinacionales.

Con el objetivo de empezar a soñar experiencias nuevas, más allá del monitor, el teclado y el ratón; primero, debemos revisar cuál ha sido la historia de la relación humano-máquina para luego – sobre experiencias aprendidas – podamos contemplar las relaciones usuario-interfaz del futuro.

Según lo anterior, este artículo tiene como objetivo hacer un recuento histórico de lo que ha sido tal relación para luego proponer posibles vías de innovación en lo que refiere a este campo, tales como Interfaces invisibles.

Un recorrido por la historia de la relación humano-máquina

man using smartphone

Fotografía por Gilles Lambert en Unsplash

La relación entre los seres humanos y las máquinas (acotando la definición de este concepto a la tecnología computacional) data desde 1980, tras la primera ola de computadores personales y de escritorio. Si bien previamente ya existían las interfaces de líneas de comando (CLIs), no fue hasta que las primeras computadoras invadieron los hogares y oficinas que el público general tuvo la posibilidad de interactuar con estos sistemas electrónicos. A partir de ese momento, se democratizó el uso de estas máquinas por medio de las interfaces gráficas de usuario (GUI) y su metáfora del “escritorio”.

Entre 1990 y principios de los 2000, las personas empezaron a utilizar los computadores como medio de comunicación para socializar con los demás, colaborando y difundiendo conocimiento a través del correo electrónico. A esta nueva experiencia se sumaron las mejoras en la sensibilidad de los ratones al tacto y la presión. No obstante, las innovaciones en las GUIs no fueron demasiadas, manteniendo los conceptos de ventanas y archivos junto con el gesto de “arrastrar y soltar” del cursor.

Durante los siguientes 10 años, los usuarios empezaron a interactuar con el contenido digital de manera revolucionaria gracias a las pantallas táctiles y el infinito universo de las aplicaciones. Estas innovaciones permitieron que la tecnología tomara un rol más amplio en la vida de las personas. Por ejemplo, se empezó a usar como una , un medio de autoexpresión y una herramienta de apoyo en procesos de crecimiento personal, moldeando sus hábitos y protagonizando la paradoja de “estar solos pero acompañados”.

Desde entonces, las interfaces táctiles han permeado todos los aspectos de la vida humana. Sin embargo, en el 2011 surge un nuevo tipo de interacciones humano-máquina. Por un lado, están las asistentes de voz y las interfaces conversacionales, las cuales han ganado popularidad gracias a su interacción natural a partir del lenguaje humano. Por otro lado, existen las experiencias inmersivas que le agregan una nueva dimensión a las interfaces al utilizar la totalidad del campo visual humano; y los ambientes inteligentes (AmI), que toman los avances de la IA, la computación ubicua y los sensores sin contacto para crear espacios físicos sensibles y responsivos.

¿Cuál es el futuro de las interfaces? La necesidad de una nueva generación de interacciones más humanas

augmented reality interface

 

Al mirar hacia atrás, nos damos cuenta que – durante los últimos 30 años – la relación humano-máquina se ha basado principalmente en interacciones generadas a partir de teclados, ratones y paneles táctiles. Sin embargo, estos periféricos no han logrado cerrar la brecha entre las capacidades computacionales y el comportamiento humano. Por ejemplo, estos siguen presentando inconvenientes al resultar inaccesibles para minorías como los adultos mayores (quienes encuentran las pantallas complejas y ambiguas) y las personas con habilidades especiales (que se frustran tras no poder interactuar del todo). Sin tener que ir más lejos, que estas interfaces involucren mayoritariamente el sentido de la vista, hace que al menos 2200 millones de usuarios que sufren de deficiencia visual se vean perjudicados.

A pesar de que las últimas tendencias en tecnología – mencionadas anteriormente – eliminan las barreras físicas y se acercan más a la naturaleza humana, estas sólo corresponden al comienzo de una nueva generación de interfaces. Entonces, ¿cómo sería una relación entre las personas y las máquinas en la que estas últimas entiendan e interpreten los comportamientos humanos físicos y mentales? ¿Qué pasaría si las interfaces permiten una experiencia a partir de los 5 sentidos, percibiendo nuestro cuerpo en el espacio e incluyendo funcionalidades gestuales?

Definitivamente, el siguiente camino de la innovación en interfaces debe salirse de los límites de las pantallas bidimensionales de vidrio, a las que nos hemos acostumbrado. Los nuevos avances tecnológicos deben permitir interacciones más cercanas a la biología humana, favoreciendo que la ejecución de cualquier tarea sea aún más intuitiva y ampliando el espectro de experiencias.

Ahora bien, antes de empezar a imaginarnos un mundo en el que reinen las PVUIs (Projected Visual User Interfaces) o en el que toda solución se inspire en los principios de diseño del HUD (Head-Up Display), considero que se ha de reflexionar acerca de las posibles características que deben tener las relaciones humano-máquina del futuro. Al tomar las propuestas por la startup alemana Senic, a continuación menciono las más relevantes, en mi opinión:

  • Descentralizadas, interfaces invisibles y mágicas.

Las interacciones se alejarán de las GUI y pasarán a ser omnipresentes, estando siempre donde se las necesite. Éstas harán parte de nuestro entorno, en las paredes o ventanas de la casa u oficina, y darán lugar a escenarios en los que podamos hacer un gesto en el aire para prender la luz de una habitación. Incluso, serán capaces de leer nuestras emociones y entender lo que estamos haciendo para anticipar nuestras necesidades. Esta idea resulta valiosa al permitir que las personas no tengan que sostener una pantalla o bajar la mirada para verla, concentrándose en situaciones más importantes.

  • Específicas.

Esta es la premisa más beneficiosa y retadora de todas. Pasar de pensar en soluciones que todo el mundo pueda utilizar, como en su momento lo diseñó Steve Jobs, y empezar a ofrecer experiencias únicas para situaciones concretas. Ejemplo de esto sería diseñar interfaces que brinden interacciones hápticas especiales para personas con profesiones en la industria creativa, o que apliquen métodos de aprendizaje basados en la gamificación para niños.

  • Centradas en los humanos.

Este concepto recalca la necesidad de incursionar con máquinas que perciban, entiendan y procesen tanto el cuerpo como la mente humana desde sus diferentes aproximaciones. Así, esto nos lleva a imaginarnos sistemas que detecten movimientos cerebrales y que entreguen información desde los múltiples sentidos.

  • Instantáneas.

Aquí, nos cuestionamos si se puede realizar una tarea sin necesidad de pasar por varios pasos, ni siquiera dos o tres. Resolver las actividades humanas al instante y reducir la carga cognitiva de las personas resultará en una mejor y menos estresante experiencia para el usuario.

CONCLUSIÓN

Mejorar la experiencia de los usuarios se trata de un trabajo continuo. Siempre habrá más por aprender acerca de las diversas maneras en las que, como seres humanos, nos relacionamos con la tecnología. Las situaciones actuales nos dan la oportunidad de ser creativos y entregar valor al crear experiencias  que no se limiten a las superficies de interacción existentes. Se ha de seguir aprovechando y potenciando las posibilidades que nos aporta la Inteligencia Artificial, con sus capacidades de procesamiento de lenguaje natural (NLP) y el Computer Vision, o los beneficios que trae consigo la realidad virtual y aumentada. No obstante, se ha de ir aún más lejos y crear experiencias que verdaderamente simplifiquen la vida de todos sin excepción.

REFERENCIAS

AltexSoft Inc. (2018, 1 julio). Principles of Interaction Design: What It Takes to Create Positive Human-Computer Interactions. Medium. UX Planet. https://bit.ly/3aHjQLF

Asher, M. (2017, 18 julio). The History Of User Interfaces—And Where They Are Heading. Adobe. https://adobe.ly/3tYVHrq

Campbell, C. (2021, 22 enero). Ambient Intelligence — The Invisible Interface. Medium. Start It Up. https://bit.ly/3sUS9VR

Ekenstam, L. (2015, 25 octubre). Magic Leap — The next big frontier in human+computer revolution. Medium. https://bit.ly/2PqWp1R

Kim, A. (2018, 11 julio). What is Human Computer Interaction (HCI)? Medium. https://bit.ly/2R4DzxG

La OMS presenta el primer Informe mundial sobre la visión. (2019, 8 octubre). Organización mundial de la Salud. https://bit.ly/3gMDyJX

Senic. (2015, 8 enero). The Future of Human Computer Interaction. Medium. https://bit.ly/3gH7Eyc

Usabilla. (2017, 15 mayo). A Short History of Computer User Interface Design. Medium. The UX Blog. https://bit.ly/3nmT9Bb

What is Human-Computer Interaction (HCI)? (2021). The Interaction Design Foundation. https://bit.ly/2R1To8o

Xiao, L. (2017, 17 julio). A Brief History of Human-Computer Interaction (HCI). Medium. Prototypr.io. https://bit.ly/3vgHsyo

sara feijoo

Sara Feijoo – AI Designer

man working on a pc

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

natural language processing poster

This article NLP: The magic behind understanding machines, talks about Natural Language Processing or NLP, a branch of knowledge between Artificial Intelligence and Linguistics that aims to give machines the ability to understand the language of humans.

NLP involves the analysis of the following:

  1. Syntax: identifying the syntactic role of each word within a sentence.

Example: in the sentence “I will buy a candy”, “I” is the subject, “candy” is the direct object and “I will buy” is the verb.

  1. Semantics: determining the meaning of words or phrases.

Example: in the sentence “The engineer went to the customer’s office”, the customer’s office refers to a place.

  1. Pragmatics: establish how the communicative context affects the meaning.

Example: in the sentence, “David drank wine at the party. It was red.” Red refers to the wine David drank.

We perform these three analyses every day, some almost unconsciously. For us, deriving meaning from language turns out to be very simple and is the consequence not only of a process of development and learning but of thousands of years of evolution. Now, think how difficult it can be for a machine which only understands ones and zeros to understand your emotions when writing a review of a movie or a product you have purchased.

Among the most difficult challenges in NLP are dealing with ambiguous expressions, pragmatics and the implicit use of prior knowledge. Some sentences that show this kind of problem are:

– I will be on the beach with Mary reading. Are you reading, are you both reading or is she reading? (Ambiguity).

– We saw John walking. Did you see that John was walking, or did you see John when you were walking? (Ambiguity)

– The first sprint of the project took one month. The term sprint is technical language in project development (Prior knowledge).

Think how difficult it is for a machine to derive meaning from such sentences if we cannot derive meaning clearly.

 

WHY IS IT VALUABLE TO HAVE UNDERSTANDING MACHINES?

Language is the primary way for humans to communicate effectively. Think that you use the language daily to perform tasks, make analyses, convey emotions and perform many other actions and needs of your life. Now think, what would happen if a machine that can perform tasks and activities thousands of times faster than you, could understand you, and not only you but thousands of people at the same time.

It is clear that the implications of a machine that understands natural language are fascinating. Here I will present some applications and systems that make use of NLP.

DIALOG SYSTEMS

These systems are divided into two main groups: task-oriented systems and chatbots. The former focus on accomplishing valuable tasks, while the latter focus on maintaining a conversation with the user without implementing any specific task.

The following image shows how these types of systems are divided according to whether they can perform practical tasks and maintain a complex social conversation.

dialog system diagram

In many business environments, these terms are often confused as all companies ask to develop chatbots when they really want a task-oriented system.

Examples of task-oriented systems are virtual assistants such as Siri, Alexa and Cortana. Chatbots, on the other hand, are characterised by having defined personalities, carrying on entire conversations, and expressing emotions such as fear, temper, and distrust. The trend is to move toward virtual assistants with characters who can handle more complex social conversations yet are knowledgeable on many topics and can perform functional tasks.

TEXT CLASSIFICATION

This is the process of assigning categories to texts according to their content. Four of the most common applications of text classification are:

– Sentiment analysis: when you want to determine whether a text is negative, positive or neutral, or when you want to determine the predominant emotion in a text. This is widely used to analyse texts in social networks or product and service reviews.

– Classification of texts by topic: the objective is to understand what a given text is talking about or its main subject.

– Language detection: you want to determine a given text’s language.

– Intention detection: it is widely used in customer service to classify customer responses according to their intention (interested, not interested, unsubscribe, potential buyer…).

INFORMATION EXTRACTION

This is the process of transforming unstructured information into structured data. The objective is to find important entities within a text (people, organisations, locations, etc.), discover their relationships, and store them in a data structure such as a relational database. The purpose of this is to structure the information so that better analysis can be performed, information can be reused, and better insights can be generated.

information extraction example

 

Information Retrieval Systems

Information Retrieval is the science behind search engines. It aims to bring users relevant information from unstructured sources such as text, images, videos and audio. The quintessential example of this type of system is the Google search engine. However, consider all the benefits your company could have if it had an “internal Google” that could bring relevant information to expose all documents, reports, emails and even social networks, according to search criteria that can be written as you normally as you express yourself.

information retrieval diagram

WHERE’S THE “MAGIC” BEHIND IT?

All these NLP systems and applications are based on Machine Learning methods that seem, at first glance, very sophisticated. But how intelligent are these systems? To answer this question, you must first understand what is behind these systems. In general, there is no convention or a defined process to attack this type of project; however, here, I will state three tasks that are usually fundamental in many NLP applications.

The first one is to do POS Tagging (Part of Speech Tagging), which aims to assign a tag to each word in a sentence according to its syntactic role.

speech tagging example

The second is to perform Dependency Parsing, which aims to analyse the grammatical structure of a sentence by establishing relationships between words.

The third is to perform Named Entity Recognition, which aims to find all relevant entities within a sentence. These entities can be people, organisations or places.

named entity recognition example

HOW ARE THESE TASKS PERFORMED?

These three tasks are performed automatically by Machine Learning models. It seems almost “magic” that we only have to pass plain text to these models so that they automatically perform these analyses, and we have the labels word by word. However, the reality is that these models are not so magical. All these Machine Learning models are supervised learning, meaning they learn based on many examples we humans must give them. The following example shows how a human must tag the syntactic role of each word (POS tag) in a sentence to provide the machine with an example of how it is done (the tags are in red, and each tag has a meaning):

The/DT grand/JJ jury/NN commented/VBD on/IN a/DT number/NN of/IN other/JJ topics/NNS ./.

Note that there is a tag even for the period!

This is a terribly tedious process. Now note that the example is only one sentence. For such models to automatically perform these tasks, the machines must learn from millions of sentences that a poor human must manually tag. Still, sounds very sophisticated?

There are already vast amounts of tagged documents freely available; however, the differences in the quality of tagging documents, the number of tagged documents and the variability of type of tagged documents between English and Spanish is abysmal, which makes Machine Learning models that automatically perform these tasks mentioned above much better in English than in Spanish or other langauges.

The truth is that, despite these limitations, very interesting, functional and valuable things can be done. The challenge is to understand what works, what doesn’t and why, to know how to use the best tools, optimise their use and try to improve their performance for each specific business case.

What’s the future?

The future dream in this field is to arrive at methods that do not need human examples or, at least, to reduce their dependence significantly. We want machines that do not need millions of examples of labelled word-by-word sentences to learn.

It is already known that some methods allow machines to learn without needing examples. These are the methods behind the machines that play chess better than the great chess masters or those that beat the best gamers in the world in some video games. But can these methods be extrapolated to other areas of Artificial Intelligence, such as NLP? For example, can we reach machines that just by “observing” us talking, can understand what we say?

alejandro salamanca

Alejandro Salamanca R – Lead Data Scientist

man working on a pc

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

deep learning poster

Si estás pensando en implementar tu primera solución de inteligencia artificial, este artículo te interesa

El aprendizaje profundo (deep learning) es un subconjunto de los algoritmos de aprendizaje autónomo, que se ha convertido en un estándar de facto y es una de las primeras opciones a considerar cuando se aborda un nuevo problema. Internet está lleno de información sobre por qué hacerlo, cómo hacerlo y quién está dando el salto a lo profundo. En este momento es como el martillo que todo lo ve como un clavo. No sobra una aclaración, no pretendo decir que el aprendizaje profundo sea inútil o que no sea un gran avance, porque indiscutiblemente lo es. Por el contrario, el propósito de este artículo es explicar a una audiencia fuera de la ciencia de datos, ¿Cuándo el Deep Learning es la mejor opción? y cuándo es mejor optar por un enfoque más convencional. Si está pensando en implementar su primera solución de inteligencia artificial, este artículo le interesa.

Machine Learning y aprendizaje profundo

A modo de introducción y para dar algo de contexto, explicaré brevemente algunos conceptos. En primer lugar, el aprendizaje autónomo (machine learning) agrupa un conjunto de algoritmos y herramientas estadísticas para que un SISTEMA DESEMPEÑE UNA TAREA SIN SER PROGRAMADO explícitamente en la forma de resolverla. Los modelos de aprendizaje autónomo aprenden de la experiencia. En este contexto, experiencia significa “datos” (principalmente ejemplos resueltos y etiquetados de la tarea a realizar). Aunque existe un conjunto amplio de posibilidades entre estos algoritmos, las redes neuronales son probablemente las más conocidas.

neural network bottleneck

El aprendizaje profundo se refiere estrictamente a las redes neuronales profundas, es decir, aquellas redes que tienen más de una capa de entrada y una de salida. También es posible decir que son aquellas redes con una capa oculta o más. En la práctica, se va mucho más allá de estos números. Más de 50 capas y millones de parámetros están detrás de los grandes titulares de la inteligencia artificial (conducción autónoma, visión por computador, procesamiento de lenguaje natural, reconocimiento de voz, entre muchos más ejemplos). Cada capa adicional le brinda al modelo de reconocer patrones más complejos detectando patrones en la capa anterior. La imagen a continuación busca explicar este concepto.

abstraction levels in deep learning

By Sven Behnke – Own work, CC BY-SA 4.0, MULTIPLE LEVELS OF ABSTRACTION in Deep Learning

En el ejemplo se observa que las capas iniciales están basadas en conceptos simples como rectas, pero estas van evolucionando (profundizando) a conceptos más complejos como figuras geométricas, hasta llegar a conceptos del contexto del problema que se está abordando (en este caso, representaciones de animales).

Retos y dificultades del aprendizaje profundo

-Exigencia por grandes volúmenes de datos
El incremento de capas hace a las redes más flexibles, de manera que, con la arquitectura adecuada, pueden modelar un gran numero de patrones y funciones. Su capacidad de representación crece con cada capa y estos modelos pueden resultar bastante grandes. De hecho, este es el primer problema que se puede presentar: estos son modelos de peso pesado. Las redes neuronales profundas necesitan cantidades gigantescas de información para entrenar sus decenas de capas y millones de parámetros.

 

-Así que la primera regla sería “no use aprendizaje profundo si no tiene información para alimentarlo”.
Ahora es donde vienen las objeciones de ¿y la transferencia de aprendizaje (transfer learning)? Sí, es una opción. La transferencia de aprendizaje toma un modelo existente funcional y entrena de nuevo parte de él para un nuevo propósito. No obstante, el desempeño de la solución lograda usando transferencia de aprendizaje depende también de la cantidad de datos. Entrenar exitosamente solo las capas finales del modelo también necesita una cantidad significativa de datos (aunque menor que para entrenar la red entera).Hago un paréntesis para profundizar un poco en la transferencia de aprendizaje (transfer learning). Ésta es una técnica en la que una red neuronal entrenada para una tarea es adaptada para cumplir otra función. Por ejemplo, una aplicación para reconocer gatos puede ser adaptada para en su lugar, reconocer leones o algún otro animal. El principio es que las capas más bajas de la red aprenden a reconocer bordes y otros patrones, mientras que el conocimiento necesario para separar un gato de un león depende de características más complejas y, por ende, más adelante en el proceso. Para hacer la transferencia, se “congelan” las capas más bajas de la red y se usan ejemplos de la nueva tarea para continuar el entrenamiento de las capas superiores, aprovechando lo que el modelo ya ha aprendido en niveles más básicos.

 

-Sobreajuste vs generalización: El segundo problema que puede presentarse con el aprendizaje profundo es el sobreajuste (overfitting). Un modelo con sobreajuste ha aprendido *demasiado* bien de los datos de entrenamiento, llegando así a un modelo que no generaliza suficientemente bien y presenta un desempeño más bajo en los casos generales. Las redes neuronales, sobre todo las más grandes, son propensas al sobreajuste por su gran cantidad de parámetros a entrenar. Por supuesto, existen muchos métodos para solucionar esto y obtener un modelo de buen desempeño, pero se salen del alcance de este texto.

 

-Dificultad para interpretar cómo funciona el modelo: Ahora bien, hay suficientes datos, hay cómo solucionar el sobreajuste, ¿usamos aprendizaje profundo? No tan rápido. Los modelos de aprendizaje profundo son cajas negras en su mayoría. Con la excepción de algunas aplicaciones de visión por computador, es difícil, si no imposible, saber qué está haciendo el modelo internamente. Si se requiere comprensión del modelo por parte de las personas, opte por algo más convencional como un árbol de decisión o cualquier otro modelo “traducible” para los seres humanos.

 

-Poder de cómputo exigido: Parece que ya lo hemos revisado todo, pero aún nos falta un punto crítico: el poder de cómputo necesario para el entrenamiento. Hemos hablado del tamaño gigantesco de estos modelos, de la cantidad de datos que requieren y un par de cosas más. Bueno, todo lo anterior se traduce en una demanda enorme de poder de procesamiento para entrenar un modelo de aprendizaje profundo. No es extraño escuchar tiempos de entrenamiento de días o meses. Más poder de cómputo significa casi siempre menos tiempo de entrenamiento y, entre más grande sea la red a entrenar, más lento será su entrenamiento. Es necesario prever el costo de una estación de trabajo equipada con varias GPUs (tarjetas gráficas) o estar dispuesto a rentar en la nube una máquina como ésta por horas.

CONCLUSIONES

En resumen, ¿Qué se debe tener en cuenta antes de dar un salto a lo profundo? Aquí está la lista de chequeo:

» HAY SUFICIENTES DATOS.

» HAY COMO SUPERAR EL SOBREAJUSTE.

» NO ES NECESARIO COMPRENDER EL FUNCIONAMIENTO INTERNO DEL MODELO.

» HAY PODER DE CÓMPUTO PARA ENTRENAR (O CÓMO PAGARLO).

¿ESTÁ TODO? ¡FELICITACIONES! DÉ EL SALTO Y DISFRUTE DE LAS VENTAJAS DEL APRENDIZAJE PROFUNDO. ¿FALTA UNO DE LOS CUATRO PUNTOS?

Piénselo, tal vez hay otras alternativas de solución a lo que busca. Pero si faltan dos o más puntos, mi sugerencia es antes de sumergirse en lo profundo, nadar en la orilla.

man working on a pc

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

brain illustration with lights

Lo que debe saber sobre despliegue y arquitecturas de solución en Inteligencia Artificial

Este artículo aborda las consideraciones de arquitectura para el despliegue y arquitecturas de solución en AI. Está orientado a personas o equipos que se encuentren interesados en iniciar un proyecto de dicha naturaleza, e incluso también es una guía para aquellos que consideren iniciar en un ambiente de pruebas.

Es importante no perder de vista que la inteligencia artificial hace parte de un sistema más grande y que entre sus funciones está apoyar objetivos de negocio específicos. Desde luego es una ciencia que debe ser integrada con otros sistemas nuevos y legados. Para este caso, vale la pena mencionar que la tarea del científico de datos debe incluir estas preocupaciones.

La inteligencia artificial se centra en IDENTIFICAR INSIGHTS SOBRE LOS DATOS Y ENTRENAR MODELOS que permitan hacer inferencia sobre escenarios definidos. Las técnicas usadas en este tipo de estudios están cobijadas bajo el término “Data Science”.

Ciclos de experimentación en inteligencia artificial

 Un ciclo de experimentación en inteligencia artificial se compone de tres acciones fundamentales: idear, programar y experimentar. Los Jupyter Notebooks, por ejemplo, son una herramienta que permite apoyar estos ejercicios de experimentación en ambientes en la nube. En términos generales, los notebooks son documentos que contienen una mezcla de markdown (Lenguaje de marcado para documentación) y código ejecutable en vivo en lenguajes de programación  como Python o R.

Estos ejercicios son interesantes, debido a que permiten generar resultados con gran agilidad, pero pierden visibilidad por numerosas razones, la principal de ellas es que este tipo de ambiente es experimental. Por lo anterior, haré hincapié en algunas consideraciones importantes que hay que tener en cuenta a la hora de desplegar soluciones de inteligencia artificial, con el fin de que se conviertan en una herramienta útil de las organizaciones que deseen implementar esta ciencia.

Soluciones de inteligencia artificial

Un modelo de machine learning eventualmente se convierte en una caja negra que, dado un input de datos, genera un output con la inferencia (que puede ser una predicción, una clasificación, etc.). Esto pasa ya sea, aplicado a un sistema de predicción como el clásico ejemplo de los precios de las viviendas, que dadas características como el tamaño (área construida o habitable), el número de baños, la localización geográfica entre otras cosas permite predecir el precio del inmueble. También podemos verlo en los ejemplos de visión por computadora como el clasificador de gatos y perros que recibe como input una imagen y determina si contiene un gato o un perro. Así mismo, podemos encontrarlo en un chatbot que recibe el input de conversación de un usuario y retorna la respuesta adecuada de acuerdo a su intención.

information input and output

Uso y necesidad de usuarios de soluciones AI

Teniendo en cuenta este hecho, es más fácil entender qué se quiere hacer con el despliegue de una solución de AI. Ahora puede pensar más en la forma del input de su modelo, ¿se trata de un sistema de respuesta inmediata, como en un chatbot, con una entrada de texto único? O ¿puede ser un sistema de conteo, donde el usuario puede cargar múltiples imágenes para ser procesadas en batch (procesamiento por lotes)?. Lo anterior pone en evidencia que independientemente del modelo, esta es una característica que está definida por el caso de uso y la necesidad de sus usuarios.

Con esto en mente, es momento de pensar en los recursos necesarios para ejecutar la predicción. ¿Su modelo requiere procesamiento que usa de forma intensiva los recursos de hardware?. Si es así, deberá ejecutar estos procesos sobre la GPU (unidad de procesamiento gráfico). ¿Está su modelo preparado para usarla? ¿Requiere que su predicción se haga en tiempo real? ¿Cuántos usuarios van a realizar predicciones? ¿Cuál es el volumen de los datos que van a pasar por el modelo?

Así, empezamos a encontrar algunas soluciones a las necesidades que de pronto ya está empezando a adoptar y que no tienen relación al entrenamiento de un modelo de machine learning, de redes generativas o de cualquier otra técnica de Inteligencia Artificial. Como lo dije anteriormente, un chatbot requiere respuesta inmediata y un manejo del estado de la intención. En este caso se hace preferible el uso de aplicaciones con estado. Si desarrolló su modelo en Python puede usar un framework como Flask o Django, también puede manejar el estado de la conversación desde el frontend y desplegar su modelo como un servicio sin estado al que debe recordarle constantemente el flujo de la conversación.

ai at the edge diagram with azure stack

¿Qué es aconsejable para cada modelo?

En modelos de predicción y clasificación que no son intensivos en cómputo, es aconsejable manejar servicios web. Los contenedores, vistos como unidades de software que empaqueta el código y sus dependencias, son una forma fácil de desplegar este tipo de modelos en instancias que pueden ser escaladas vertical y horizontalmente. Normalmente los contenedores son desplegados sobre servicios de virtualización de costo continuo.

Si su modelo es para un uso más granular o si se trata de un modelo que se ejecuta como una tarea programada, se recomienda el uso de funciones en la nube. Las funciones en la nube son unidades de cómputo que se cobran por segundos de ejecución, en este tipo de servicios la preocupación no radica en la infraestructura, sino en la eficiencia del código.  Si se diera el uso continuo en el tiempo de este servicio, el costo sería mucho más alto que el de una virtualización tradicional.

learning model architecture without servers

Clusters de predicción

Por último, suponga que quiere hacer predicciones sobre los datos haciendo uso de un modelo con altos requerimientos computacionales, donde probablemente la predicción toma bastante tiempo en terminar. Una buena solución para este tipo de requerimientos es la creación de clusters de predicción, que no son más que grupos de máquinas virtuales que cumplen las características necesarias para la ejecución del modelo. Estos clusters son fácilmente escalables horizontalmente. La idea de lo anterior es registrar la tarea de predicción en un datastore (Base de datos, cola, etc.) de su elección, un nodo del cluster se apropia de la tarea y escribe el resultado de la predicción asociado a esta tarea.

Este tipo de arquitecturas de solución también es muy usado para la predicción en batch, por medio del uso de colas y definición de servicios sin estado. Las peticiones de los usuarios pueden cambiar de un servidor a otro. En este caso los servidores, nodos o contenedores de inferencia son vistos como trabajadores cuya función es sacar la siguiente tarea de la cola para hacer la inferencia. Nuevamente el resultado de la inferencia debe ser persistido con el registro de la tarea invocada.

Despliegues en la nube

Los proveedores de infraestructura en la nube como Azure, Amazon y Google tienen frameworks de desarrollo de machine learning, estos frameworks tienen las herramientas adecuadas para lograr este tipo de despliegues en la nube y se puede llegar a resultados muy interesantes de forma ágil. Sin embargo, la herramienta más útil es el registro de modelos. Un registro de modelos es simplemente un repositorio, donde es posible versionar y aprovisionar los modelos de machine learrning para ser desplegados fácilmente.

On the edge

Hablamos del despliegue de modelos en infraestructuras en la nube, pero también se puede deplegar modelos “on the edge”. Este tipo de despliegues es altamente usado en arquitecturas para IoT y para dispositivos móviles. Un ejemplo de este tipo de despliegues es el reconocimiento facial, que puede ser desplegado en dispositivos móviles o en dispositivos como Raspberry o Jetson.

Se trata del entrenamiento de modelos de forma tradicional y una conversión del modelo para el despliegue en dispositivos con menor capacidad computacional o con requerimientos energéticos especiales. Esta conversión del modelo desfavorece ligeramente la precisión de la inferencia y se hace posible por medio de librerías como Tensorflow. Sin embargo, no todos los modelos pueden ser convertidos y deben ser muy bien diseñados para lograr este cometido.

En el caso de Computer Vision, la mayoría de estos modelos detectan características genéricas de lo que se desea identificar o son modelos de clasificación aun limitados. No es común ver modelos que clasifiquen una gran variedad de personas en imágenes y que estén disponibles para todos los dispositivos móviles del mercado.

machine learning on home devices diagram

En conclusión

Para finalizar, quiero destacar que las ideas presentadas anteriormente, no son inherentes a esta área de trabajo, por el contrario, funcionan para todos los procesos que puedan consumir una cantidad prudente de recursos computacionales y de tiempo. De tal forma que, espero que pueda llevar a la realidad con mayor claridad las estrategias de su próximo proyecto de despliegue de AI. De la misma manera espero que tenga mayor capacidad de respuesta a inconvenientes que se presenten en la implementación de este.

man working on a pc

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

lights coming out from a computer

Las soluciones a las que lleguemos pueden ser tan inteligentes como las bases sobre las cuales las construimos

Desde el inicio de los tiempos, las ciencias han acompañado al ser humano, quien impulsado por la lógica y la razón que lo caracterizan, ha logrado avances significativos en este campo tan amplio y complejo. Sin ir tan lejos, podemos evidenciar la creatividad y el ingenio humano en un hecho tan simple (aparentemente) como construir un objeto redondo y ponerlo a rodar, tal invención combina ciencias como la física y las matemáticas.

Y es que a medida que la humanidad ha ido avanzando, las ciencias se han ido desarrollando de tal manera que se han convertido en el motor evolutivo del hombre en la sociedad, un gran reflejo de ello son todos los avances tecnológicos que ya hacen parte de la cotidianidad.

En años recientes con el auge de la INTELIGENCIA ARTIFICIAL, hemos visto como las máquinas han sido capaces de aprender y analizar información, el desarrollo de estas capacidades es conocido en las ciencias de la computación como Machine Learning – ML. Así pues, el objetivo de este artículo es explicar cómo en este momento de la humanidad, las matemáticas continúan jugando un papel protagónico (aunque se tenga poca conciencia de ello), en la implementación de Modelos matemáticos detrás de Machine Learning.

¿Cuáles son los modelos matemáticos detrás de Machine Learning?

Generalmente, se tiene la concepción que para construir modelos de machine learning basta con utilizar aquellos que se encuentran en librerías, con lenguajes de programación predeterminados y que sólo requieren de la acción de introducir la información necesaria.

Lo anterior es totalmente incorrecto, ya que, primero se debe saber qué información es relevante para el correcto funcionamiento de un modelo, pues como dice un conocido dicho dentro de este campo «basura entra, basura sale», y segundo y más importante, no conocer los fundamentos de estas herramientas generalmente, termina en alternativas que al final no van a solucionar ningún problema.

Por tal razón a continuación, desarrollaré los fundamentos a los que hice referencia anteriormente:

Álgebra lineal

Vectores, ecuaciones lineales, matrices todos estos conceptos son claves dentro del Machine Learning, y obligatoriamente deben conocerse, pues de entrada nos encontramos soluciones donde operaciones cíclicas como un For o While son reemplazadas por operaciones entre matrices, con el fin de buscar eficiencia al realizar estos cálculos, si seguimos avanzando encontramos representaciones de objetos en espacios vectoriales, temas complejos como el análisis de componentes principales (PCA siglas en inglés), en donde a través de operaciones matriciales y proyección de vectores, podemos reducir las características dentro de un análisis.

machine learning mathematical models diagram

¿De qué manera se aplica al mundo real?

Para dar claridad a lo anterior tomemos como ejemplo el campo de la psicología de la personalidad; todos tenemos diferentes personalidades y estas tienen diferentes matices, alguien se puede parecer mucho a otra persona en unos aspectos, pero a su vez diferir completamente en otros. ¿Existe alguna manera de cuantificar esto?

Desde hace aproximadamente 100 años se ha intentado dar respuesta a esta pregunta, con resultados que, si bien no acaban de abarcar toda la magnitud de esta incógnita, si han podido representar de manera parcial la personalidad de un ser humano.

Ahora cabe aclarar que dichas interpretaciones siempre se han realizado a través de criterios cualitativos, pero ¿será posible representar la personalidad de alguien de una manera cuantitativa? Para ello tomaremos como referente principal, la hipótesis léxica cuya idea principal se basa en que cualquier rasgo de la personalidad de un individuo siempre debe corresponder a una palabra del idioma, por ejemplo, una persona es valiente, sensible o tímida.

En un principio, psicólogos que se dedicaron al estudio del tema, encontraron alrededor de 4500 palabras que describían los diferentes rasgos humanos, más adelante profesionales de la misma rama se dieron a la tarea de agrupar dichas palabras hasta reducir la cifra a 500. ¿Pero qué ocurre si experimentalmente tomamos estas 500 palabras y les aplicamos PCA?

Lo que obtenemos es la reducción de estas 500 características a 5 rasgos con los cuales se puede clasificar la personalidad de un individuo (extroversión, responsabilidad, neocriticismo, cordialidad y apertura a la experiencia), dichos rasgos son conocidos en psicología como el modelo de los 5 grandes. Una muestra del porque el álgebra lineal jamás pasará de moda.

Cálculo diferencial, integral, multivariado

Implícito en los otros modelos matemáticos detrás de Machine Learning, resulta bastante útil conocer sobre integrales y derivadas parciales al momento de revisar las funciones de optimización, o para hallar matrices Hessianas, con las cuales podemos encontrar la convexidad de una función, esta característica es muy importante debido a que nos ayuda a elegir o descartar dicha función, así como a su vez para hallar sus puntos mínimos, lo que se traduce a la respuesta más óptima que podemos hallar en dicho procedimiento. Esto también es conocido como un híper parámetro, una variable dentro de una función que a medida que es ajustada hace que el modelo que estamos generando mejore o empeore.

correlation matrix

Hay que tener en cuenta que cuando hablamos de entrenar modelos, estamos hablando de analizar cantidades gigantes de información, acción que supone tiempo y costos elevados de procesamiento, por lo que responder a preguntas como: ¿cuál será ese número mágico que debemos colocar en nuestro híper parámetro, que hará que nuestro modelo funcione a la perfección?, a través del instinto y experiencia no es suficiente. Se debe conocer la teoría sobre cómo funciona el modelo que estamos aplicando para de esta manera tener la certeza de que lo que estamos haciendo tiene sentido y no hay nada mejor que el cálculo para respaldar este tipo de decisiones.

Estadística y probabilidad

Gran parte de modelos matemáticos detrás de Machine Learning son o conllevan elementos estadísticos y probabilísticos, de esta manera los conocimientos sobre teoría de probabilidad, combinatorias, teoría de conjuntos, ley de Bayes entre los más relevantes, sirven de aliados para enfrentarnos a los diversos problemas que se nos planteen.

Un ejemplo de lo anterior se ve en los árboles de decisión, una técnica muy popular dentro del ML cuyas raíces están en el teorema de la probabilidad condicional. De la misma manera encontramos las máquinas de soporte vectorial que en palabras coloquiales se pueden definir como algoritmos clasificadores, cuyas respuestas están sustentadas en la probabilidad de que un punto pertenezca a una u otra clase, dentro de un espacio vectorial.

machine learning decision tree

Se han preguntado alguna vez de qué manera funciona la predicción del clima o las predicciones demográficas. La respuesta es modelos de series de tiempo, que no es más que la aplicación de

diversos métodos estadísticos tales como estimaciones de tendencias, cálculo de estacionalidad, análisis de correlaciones, entre los más destacados, para un conjunto de datos que se han medido en diferentes etapas del tiempo y están ordenados de manera cronológica. Así sin duda alguna nos podemos referir a la estadística y probabilidad como el núcleo del ML.

Optimización

El concepto matemático para optimización está basado en unos criterios de selección y un conjunto de elementos, el reto está en hallar el elemento que mejor se ajuste a dichos criterios, siempre teniendo en cuenta la eficiencia del proceso y el uso de recursos, no es lo mismo encontrar un resultado exacto gastándose 3 días en encontrarlo y la capacidad de 10 servidores, a hallar un resultado no tan exacto, pero en 10 minutos y con un solo servidor.

Un claro ejemplo de este tema se da en el Gradiente Descendiente el cual es un algoritmo que aplica técnicas de optimización para encontrar un valor mínimo local dentro de una función. Explicado de una forma sencilla , suponga que usted está caminando en una montaña y de repente la niebla cubre el ambiente, en ese momento, su único objetivo es bajar la montaña para encontrar la planicie, así que precavidamente y paso a paso usted empieza a bajar hasta que en un punto encuentra terreno plano, en este escenario su mínimo local sería el terreno plano, su función seria bajar de esa montaña y el gradiente seria usted mismo pues es quien va recorriendo toda la montaña para encontrar el punto plano.

gradient-descent-method

¿Cómo podría empezar a aprender del tema?

El principal problema que enfrentan la mayoría de las personas que quieren aprender de este campo tan interesante de la AI, es la gran cantidad frentes de acción que tiene, lo que se traduce en aprender sobre conceptos nuevos, herramientas nuevas, temas que a primera vista parecen enredados, pero que en la medida en que se conozcan sus bases, se hacen más sencillos de entender.

Así que, desde un punto de vista más personal, y como recomendación lo mejor es empezar por la raíz de todo, la estadística y probabilidad, para tener un acercamiento a los tipos de problemas que nos enfrentaremos, de allí podremos continuar con un repaso de algebra lineal, la cual me resulta

divertida pero no deja de ser desafiante, siguiendo nuestra hoja de ruta estaría todo lo relacionado con cálculo, tener claros conceptos básicos de derivadas, integrales y dimensiones es lo primordial para así finalizar con optimización que como ya lo vimos anteriormente tiene por dentro álgebra lineal y cálculo.

Conclusión

Conocer los modelos matemáticos detrás de Machine Learning, nos ayuda en el día a día a resolver cuestiones que son clave dentro de nuestra labor, como, por ejemplo: seleccionar el algoritmo que más se ajuste a nuestro problema, escoger los híper parámetros que mejor se ajustan a nuestro modelo, identificar problemas en los modelos como sesgos o sobre entrenamiento, hallar una función óptima para resolver nuestro problema, entre las tareas de gran relevancia.

Es por lo anterior que este tema es indispensable para alguien que está interesado en aprender de ML. Hay que recordar que, a grandes rasgos estamos intentando construir tecnología capaz de emular tareas y comportamientos humanos, y si no sabemos cómo estamos construyendo estas tecnologías, lo más probable es que las soluciones a las que lleguemos sean tan inteligentes como las bases sobre las cuales las construimos.

johnatan zamora

Johnatan Zamora – Data Scientist

man working on a pc

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

gpu vs fpga

La capacidad de ejecución de hardware para el éxito en implementación de proyectos de AI

Actualmente, Inteligencia Artificial es uno de los términos más utilizados en muchas áreas, no solo en entornos de tecnología pura, sino también en economía, leyes, medicina, entretenimiento, entre otros. Uno de los objetivos principales de la inteligencia artificial es mejorar el núcleo del negocio en el que está presente. Tradicionalmente, la mejora de un negocio se lleva a cabo por expertos, sin embargo, no siempre es rápida o eficiente. La Inteligencia Artificial (IA) permite en distintos escenarios delegar las tareas más complejas a una máquina, e increíblemente, sin decirle explícitamente cómo hacerlo.

Sin embargo, la INTELIGENCIA ARTIFICIAL no es algo nuevo, pues la teoría básica de esta existe hace más de 50 años, hay áreas de IA como el Machine Learning (ML) o el Deep Learning (DL) que hacen un trabajo complejo en términos computacionales. ML y DL son el resultado de algoritmos matemáticos complejos que aprovechan la probabilidad y la estadística aplicadas, buscando soluciones óptimas a problemas específicos.

Hoy en día, esta tecnología está presente en cada área de conocimiento, hace algunos años hemos visto grandes mejoras en las implementaciones de algoritmos. El elemento más relevante es la nueva capacidad de hardware, es decir, las máquinas pueden ejecutar miles de millones de operaciones matemáticas por segundo.

Alcance y capacidades: Graphics Processing Units – GPU

Un computador está compuesto por procesador (CPU), Memoria (RAM), Almacenamiento (Disco duro) y periféricos (Teclado, Mouse, Pantalla y cualquier dispositivo que se pueda conectar), estos elementos trabajan en perfecta sincronía gracias a la CPU, esta es la encargada de controlar cada una de las partes del computador. *CPU por sus siglas en inglés, Central Processing Unit.

Existe un elemento que no está presente en todos los computadores, de manera general se conocen como dispositivos de refuerzo (Boosting Devices), pues esta es su tarea justamente, son dispositivos especializados en una sola tarea por lo que la realizan excepcionalmente bien y a su vez liberan a la CPU de esta tarea. Las nuevas capacidades en cada una de las partes de estas máquinas han permitido realizar las aplicaciones que hoy usamos de INTELIGENCIA ARTIFICIAL.

cpu and gpu graphic

Núcleos de Procesamiento CPU vs GPU

Para ser más precisos, la llegada de elementos de refuerzo como las GPU (Por sus siglas en Ingles, Graphics Processing Units) nos da una gran parte de esas capacidades. Esta es posible debido a la gran cantidad de procesadores dedicados que componen estos dispositivos. Las GPU son hasta ahora el dispositivo de refuerzo más popular, pero no es el único, otra opción para hacer esas toneladas de matemáticas son los FPGA (Por sus siglas en Ingles, Field Programble Gate Array). Estos dispositivos no son realmente populares, porque son más difíciles de configurar.

Por lo general, la eficiencia se mide en la cantidad de operaciones de punto flotante por segundo (FLOPS) que es capaz de ejecutar y la energía necesaria para hacerlo. Una de las mejores GPU es la Tesla V100 que puede realizar 125 Tera FLOPS y utiliza 250 vatios de potencia, por otro lado, una de las mejores FPGA es la Virtex UltraScale+ VU19P que tiene una capacidad de 256 Tera FLOPS para esto requiere 225 vatios. Como se ve claramente en términos de eficiencia relativa, es mejor usar la FPGA con más de 1 Tera FLOP/W que la GPU con 500 Giga FLOP/W. Esa es una declaración que ocurre bajo condiciones desiguales.

Las GPU como se mencionó anteriormente son dispositivos de refuerzo, esto significa que no pueden realizar ninguna tarea por sí mismos, pero son excelentes para mejorar el rendimiento de una máquina que los aloja. Bajo esta claridad, los FPGA no son dispositivos de refuerzo, ya que ellos son capaces de realizar cualquier tarea de manera eficiente. Si estos dos dispositivos se evalúan en igualdad de condiciones, lo correcto sería configurar una FPGA para ser utilizada como dispositivo de refuerzo. Donde evidentemente por capacidad de computo ganaría la FPGA.

Entonces, ¿por qué las GPU se usan más que los Field Programable Gate Array FPGA?

Principalmente por la dificultad de programarla / configurarla.

Las GPU son dispositivos de arquitectura basados en instrucciones, como las CPU, mientras que las FPGA requieren un lenguaje de descripción de hardware (HDL). Es decir, los primeros están programados con lenguajes como C, Python o Java, los segundos están configurados con VHLD o Verilog. Es necesario aclarar que a través de cualquiera de los lenguajes es posible implementar cualquier cálculo deseado, pero el desarrollo en FPGA sigue siendo un conocimiento más difícil o más especializado.

Existe una alternativa aún más compleja de desarrollar y mucho más eficiente, son los ASIC (por sus siglas en Ingles, Application-Specific Integrated Circuit). No tendremos en cuenta este dispositivo, pues sus costos de fabricación son muy elevados y solo se justifica para producción en masa.

azure machine learning fpga comparison

La síntesis de alto nivel (HLS) es una tendencia en este momento, ya que permite la distribución del circuito diseñado en el espacio disponible en el FPGA a través de un proceso de optimización, sin embargo, esta sigue siendo una de las dificultades de desarrollo en estos dispositivos, porque La compilación típica de un programa puede tomar entre 4 y 12 horas.

Ventajas de las implementaciones basadas en FPGA

Dejando en claro que el tiempo de desarrollo en FPGA puede ser más largo, estos dispositivos nos permiten adaptarnos a nuevas arquitecturas que nos permiten mejorar el rendimiento de nuestra aplicación sin tener que invertir en nuevo hardware. Esto no es posible cuando se usa una GPU, ya que en el fondo es un circuito integrado de aplicación específica (ASIC), por lo tanto, no es posible modificar su arquitectura, que, aunque está optimizado para ciertas operaciones, no es para todos y todavía es un circuito de propósito general para procesamiento de imágenes.

Los FPGA son especialmente buenos si la aplicación requiere baja latencia, lo que significa que el tiempo de respuesta entre el estímulo de entrada y el resultado de salida debe ser muy bajo. En este caso, las GPU son más lentas porque requieren comunicación con la CPU y ejecutar instrucciones. Un buen tiempo de respuesta para una GPU es de 50 microsegundos, mientras que un FPGA puede obtener tiempos de alrededor de 1 microsegundo o menos. Una de las razones de esta baja latencia es que no depende de un sistema operativo o comunicación entre sus partes mediante protocolos estándar como PCIe o USB. Esta baja latencia en gran medida está dada por no tener que usar dichos protocolos y así maximizar el ancho de banda de las comunicaciones.

Finalmente, la comunicación entre sensores o actuadores es más eficiente porque pueden conectarse directamente a los pines del procesador y una vez más la eliminación del uso de protocolos estándar lo que nuevamente permite incrementar el ancho de banda. Adicionalmente las FPGA gracias a su mayor capacidad de memoria Cache pueden almacenar modelos mucho más grandes que una GPU por lo que la eficiencia se ve potenciada.

benefits gpu fpga chart

En resumen, los FPGA son quizás la mejor opción para la implementación de algoritmos que requieren una gran capacidad de computo con una latencia increíblemente baja. Es en estas aplicaciones específicas donde tiene sentido el costo adicional de desarrollo en FPGA, ya que los beneficios son considerables.

¿En qué tipo de aplicaciones existentes sería razonable el desarrollo en FPGA?

BLOCKCHAIN es actualmente una de las industrias que está optando por esta implementación, porque no solo se obtiene una mejora en el tiempo de ejecución, sino también una reducción en el consumo de energía en comparación con las GPU. Esta mejora se debe principalmente a la naturaleza de las operaciones realizadas allí. Esto permite determinar que, aunque los FPGA tienen un rendimiento más alto que las GPU, esto se debe también a la naturaleza de las operaciones. Las operaciones de punto flotante no son el punto más fuerte de los FPGA, pero las operaciones que realizan modificaciones a nivel de bit se realizan en menos tiempo.

Esto nos permite volver al tema de la inteligencia artificial IA, ya que este es un campo que, beneficiado por la potencia de procesamiento que ofrecen las GPU, es un candidato perfecto para analizar si las operaciones que deben llevarse a cabo se beneficiarán de implementarse en un FPGA. La IA está en auge, por lo que nada está escrito en piedra y el estado del arte se reinventa nuevamente, esto permite que el hardware reconfigurable como FPGA proporcione adaptabilidad a medida que se desarrollan nuevos algoritmos.

Independientemente del algoritmo utilizado o la categoría a la que pertenece (ML o DL), es posible generalizar correctamente los procesos de un algoritmo de inteligencia artificial en dos pasos (una vez que se procesa previamente la información). Estos son entrenamiento e inferencia, el entrenamiento consiste en utilizar la información existente para que el modelo (algoritmo) se adapte de manera generalizada a la información de entrada. La inferencia utiliza el resultado del entrenamiento para determinar un nuevo resultado basado en su entrada.

self car driving dashboard

La inferencia en aplicaciones como la conducción autónoma, la detección de objetos en tiempo real, el seguimiento de objetos en tiempo real o cualquier evento en el que la baja latencia desempeñe un papel determinante, motiva la investigación del desarrollo de arquitecturas de inteligencia artificial en FPGA. Esto no significa que el entrenamiento de modelos no sea posible, esto también tendría una mejora, pero el fuerte de estas implementaciones está en la inferencia.

¿Para mi implementación qué es mejor? Graphics Processing Units – GPU vs FPGA

Las GPU son más comerciales y no requieren un desarrollo previo para implementar modelos de inteligencia artificial, pues entre desarrolladores y fabricantes trabajan para facilitar el trabajo de los usuarios, el desempeño es óptimo y se han solucionado inconvenientes a lo largo de los años.

El uso de FPGA actualmente se limita a investigaciones o aplicaciones puntuales en donde la baja latencia es un factor importante, por lo tanto, la decisión de que dispositivo usar para una implementación de inteligencia artificial radica en el tiempo y costo de desarrollo dispuesto a invertir, buscando no solo una buena solución, sino la mejor solución posible para cada aplicación.

El desarrollo de herramientas de refuerzo da mayor capacidad de computo por lo tanto permite dar soporte a modelos más complejos y ejecutarlos de manera más ágil, si se desea buscar una GPU que soporte cualquier modelo que este implementando, NVIDIA tiene hoy la batalla ganada en este mercado, por otro lado si le interesa el mundo de las FPGA la solución la tiene Intel, esta compañía trabaja en cerrar la brecha entre estos dispositivos y regresar a la pelea por el mercado del desarrollo de inteligencia artificial.

Las GPU son dispositivos especializados, aunque cumplen con distintas funciones, todas ellas dentro del procesamiento de matrices, es decir, imágenes, video, modelos de IA, entre otros, todos ellos de fácil uso. No es posible modificar la arquitectura interna del dispositivo, por lo tanto, si se requiere una arquitectura más veloz se debe comprar un nuevo dispositivo.

La FPGA permite cualquier tipo de aplicación, obteniendo los mejores resultados posibles, en contra parte se deberá desarrollar por completo cualquier funcionalidad. En caso de desear modificar la aplicación o cambiarla es posible, también modificar la arquitectura interna del dispositivo, por lo cual no requiere una nueva inversión en equipo.

Recomendaciones finales

Actualmente solo es recomendable realizar un desarrollo en FPGA cuando la aplicación requiere capacidad computacional extremadamente elevada y tiempos de respuesta muy cortos, pues solo cumpliendo con estos requisitos la aplicación sacaría el mayor provecho a una FPGA respecto a una GPU en términos de tiempo y costos. En el resto de situaciones el uso de una GPU es muy apropiado pues reduce los costos respecto a un FPGA y otorga un rendimiento muy superior al prestado por una CPU.

cristian diaz

Cristian Diaz – Data Scientist

VISIT OUR KNOWLEDGE CENTER

We believe in democratized knowledge 

Understanding for everyone: Infographics, blogs, and articles 

 ” There’s a big difference between impossible and hard to imagine. The first is about it; the second is about you “

English
Tau

Did you know that AI can boost productivity by 40%?