Inteligencia Artificial

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

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

natural language processing poster

Este artículo NLP: la magia detrás de las máquinas que nos entienden habla de Procesamiento de lenguaje natural o NLP, una rama del conocimiento entre Inteligencia Artificial y la Lingüística que tiene como objetivo darles la habilidad a las máquinas de entender el lenguaje de los humanos.

NLP involucra el análisis de:

  1. Sintaxis: identificar el rol sintáctico de cada palabra dentro de una oración.

Ejemplo: en la oración “Yo compraré dulces.”, yo es sujeto, dulces es objeto directo y compraré es el verbo.

  1. Semántica: determinar el significado de las palabras o frases.

Ejemplo: en la oración «El ingeniero fue al cliente», el cliente se refiere a un lugar.

  1. Pragmática: establecer como el contexto comunicativo afecta el significado.

Ejemplo: en la oración «David tomó vino en la fiesta. Era rojo». Rojo se refiere al vino que tomó David.

Estos tres análisis los realizamos todos los días, algunos de manera casi inconsciente. Para nosotros, derivar significado del lenguaje resulta ser algo muy sencillo y es consecuencia no solo de un proceso de desarrollo y aprendizaje, sino de evolución de miles de años. Ahora, piense qué tan difícil puede ser para una máquina, que solo entiende unos y ceros, comprender sus emociones al escribir un review de una película o un producto que haya comprado.

Dentro de los retos más difíciles en NLP está enfrentarse a expresiones ambiguas, la pragmática y el uso implícito de conocimiento previo. Algunas oraciones que muestran este tipo de problemas son:

- Estaré de vacaciones solo unos días. ¿Estará de vacaciones solo, o estará de vacaciones pocos días? (Ambigüedad)

- Vimos a Juan paseando. ¿Vieron que Juan estaba paseando, o vieron a Juan cuándo estaban paseando? (Ambigüedad)

- El primer sprint del proyecto se realizó en un mes. El termino sprint entra dentro de un lenguaje técnico en el desarrollo de proyectos. (Conocimiento previo)

Piensa qué tan difícil es para una máquina derivar significado de este tipo de oraciones si ni siquiera nosotros mismos podemos derivar significado de manera clara.

 

¿DE QUÉ NOS SIRVEN LAS MAQUINAS QUE NOS ENTIENDEN?

El lenguaje es la forma principal que tiene el ser humano para comunicarse de manera efectiva. Piense que usted usa el lenguaje todos los días para poder realizar tareas, hacer análisis, transmitir emociones y muchas otras acciones y necesidades de nuestro día a día. Ahora piense, que pasaría si una máquina que puede hacer tareas y acciones miles de veces más rápido que usted, pudiera comprenderlo, y no solo a usted, sino a miles de personas a la vez.

Es claro que las implicaciones de una máquina que entiende lenguaje natural son muy fascinantes. Acá presentaré algunas aplicaciones y sistemas que hacen uso de NLP.

DIALOG SYSTEMS

Estos sistemas se dividen en dos grandes grupos: sistemas orientados a tareas y chatbots. Los primeros se centran en cumplir tareas útiles, mientras los segundos se centran en mantener una conversación con el usuario sin necesidad de implementar alguna tarea específica.

La siguiente imagen muestra cómo se dividen este tipo de sistemas según puedan realizar tareas útiles y según puedan mantener una conversación social compleja.

dialog system diagram

En muchos ámbitos de negocio se suelen confundir estos términos ya que todas las empresas piden desarrollar chatbots, cuando realmente quieren un sistema orientado a realizar tareas.

Ejemplos de sistemas orientados a desarrollar tareas son asistentes virtuales como Siri, Alexa y Cortana. Los chatbots, por otro lado, se caracterizan por tener personalidades definidas, mantener conversaciones completas, y expresar emociones como miedo, malgenio y desconfianza. La tendencia es a movernos hacia asistentes virtuales que tengan personalidad, que puedan manejar conversaciones sociales más complejas pero que a la vez tengan un gran conocimiento en muchos temas y puedan realizar tareas útiles.

CLASIFICACIÓN DE TEXTO

Este es el proceso de asignar categorías a textos según su contenido. Cuatro de las aplicaciones más comunes de clasificación de textos son:

- El análisis de sentimiento: cuando se quiere determinar si un texto es negativo, positivo o neutro, o cuando se quiere determinar la emoción predominante en un texto. Esto es muy usado para analizar textos en redes sociales o reviews de productos y servicios.

- La clasificación de textos por tema: cuando el objetivo es entender de qué está hablando un texto dado o cuál es su tema principal.

- Detección de lenguaje: se quiere determinar un texto dado en qué lenguaje está escrito.

- Detección de intención: es muy usado en servicio al cliente para clasificar las respuestas de los clientes según su intención (interesado, no interesado, cancelar suscripción, posible comprador…)

EXTRACCIÓN DE INFORMACIÓN

Este es el proceso de transformar información no estructurada en datos estructurados. El objetivo es encontrar entidades importantes dentro de un texto (las entidades pueden ser personas, organizaciones, locaciones, …), descubrir las relaciones entre ellas y almacenarlas en una estructura de datos como un base de datos relacional. Esto tiene como propósito estructurar la información de una manera en la que se puedan realizar mejores análisis, se pueda reutilizar la información y se puedan generar mejores insights.

information extraction example

 

Information Retrieval Systems

Information Retrieval es la ciencia que está detrás de los motores de búsqueda (Ver ejemplo aplicado en Equinox). Tiene como objetivo traer información relevante a los usuarios de fuentes de información no estructurada como textos, imágenes, videos y audio. El ejemplo por excelencia de este tipo de sistemas es el buscador de Google. Sin embargo, piense en todos los beneficios que puede tener su empresa si tuviera un “Google interno” que pudiera traer información relevante dentro de todos los documentos, reportes, emails y hasta redes sociales. Según un criterio de búsqueda que puede ser escrito tal cual usted se expresa normalmente.

information retrieval diagram

¿Y CUÁL ES LA “MAGIA” DETRÁS DE ESTO?

Todos estos sistemas y aplicaciones de NLP están basados en métodos de Machine Learning que parecen a simple vista muy sofisticados. ¿Pero qué tan inteligentes son estos sistemas? Para responder esta pregunta, primero hay que entender qué está detrás de estos sistemas. En general, no hay una convención o un proceso definido para atacar este tipo de proyectos, sin embargo, acá enunciaré tres tareas que suelen ser fundamentales en muchas aplicaciones de NLP.

La primera, es hacer el POS Tagging (Part of Speech Tagging), que tiene como objetivo asignar una etiqueta a cada palabra dentro de una oración según su rol sintáctico.

speech tagging example

La segunda, es hacer el Dependency Parsing, cuyo fin es analizar la estructura gramatical de una oración estableciendo relaciones entre las palabras.

La tercera, es hacer el Named Entity Recognition, que tiene como fin encontrar todas las entidades relevantes dentro de una oración. Estas entidades pueden ser personas, organizaciones o lugares.

named entity recognition example

¿CÓMO SE DESARROLLAN ESTAS TAREAS?

Estas tres tareas son desarrolladas automáticamente por modelos de Machine Learning. Parece casi “mágico” que solo tengamos que pasarles un texto plano a estos modelos para que automáticamente nos hagan estos análisis y tengamos las etiquetas palabra a palabra. Sin embargo, la realidad es que estos modelos no son tan mágicos. Todos estos modelos de Machine Learning son de aprendizaje supervisado, lo que significa que aprenden en base a muchos ejemplos que nosotros los humanos debemos darles. El siguiente ejemplo muestra como un humano debe etiquetar el rol sintáctico de cada palabra (POS tag) en una oración para darle un ejemplo de cómo se hace a la máquina (las etiquetas están en rojo y cada etiqueta tiene un significado):

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

¡Note que hay que una etiqueta hasta para el punto final!

Esto es un proceso terriblemente tedioso. Ahora tenga en cuenta que el ejemplo es solo una oración. Para que este tipo de modelos puedan desempeñar automáticamente estas tareas, las máquinas deben aprender de millones de oraciones que, claramente, un pobre humano tiene que etiquetar manualmente. ¿Sigue pareciendo muy sofisticado?

Ya existen enormes cantidades de documentos etiquetados de acceso gratuito, sin embargo, las diferencias en la calidad al etiquetar los documentos, la cantidad de documentos etiquetados y la variabilidad de tipo de documentos etiquetados entre inglés y español son abismales, lo que hace que los modelos de Machine Learning que ejecutan automáticamente estas tareas ya mencionadas sean mucho mejores en inglés que en español.

Lo cierto es que, a pesar de estas limitaciones, se pueden hacer cosas muy interesantes, funcionales y de mucho valor. El reto es entender qué funciona, qué no y porqué, saber usar las herramientas que mejor funcionan, optimizar su uso y tratar de mejorar su desempeño para cada caso específico de negocio.

¿Cuál es el futuro?

El sueño futuro en este campo es llegar métodos que no necesiten de ejemplos humanos o, por lo menos, que se reduzca su dependencia significativamente. Queremos máquinas que no necesiten de millones de ejemplos de oraciones etiquetadas palabra a palabra para aprender.

Ya se sabe que existen métodos que le permiten a las máquinas aprender sin necesidad de tener ejemplos. Estos son los métodos que están detrás de las máquinas que juegan ajedrez mejor que los grandes maestros ajedrecistas, o las que le ganan a los mejores gamers del mundo en algunos video juegos. ¿Pueden estos métodos ser extrapolados a otras áreas de Inteligencia Artificial como NLP? ¿Podemos llegar a máquinas que solo con “observarnos” hablar puedan llegar a comprender lo que decimos?

alejandro salamanca

Alejandro Salamanca R – Lead Data Scientist

man working on a pc

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

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

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

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 “Ciencia de datos”.

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 Visión por computadora, 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

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

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

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

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

VISITA NUESTRO CENTRO DE CONOCIMIENTO

Creemos en el conocimiento democratizado 

Conocimiento para todos: Infografías, blogs y artículos 

 "Hay una gran diferencia entre lo imposible y lo difícil de imaginar. La primera tal vez lo es, la segunda se trata de ti"

Spanish
Tau

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