Azure AI Services
La Inteligencia Artificial ya no es un concepto nuevo. Chat GPT, de la empresa Open AI, irrumpió en nuestras vidas hace ya un par de año y es, cada día un poco más, un poderoso aliado para muchos de nosotros. También son populares otras implementaciones de Inteligencia Artificial, como Gemini, de Google, y Copilot, de Microsoft, que al estar integrados en los buscadores Google y Bing respectivamente, se han ido haciendo un hueco en nuestro día a día. La Inteligencia artificial ha llegado para quedarse.
Si nos centramos en Microsoft, Azure AI Services es la plataforma en la nube desarrollada por este fabricante para ofrecer servicios y soluciones de inteligencia artificial para diferentes escenarios y necesidades. Con Azure AI Services, podemos acceder a modelos de aprendizaje automático, procesamiento del lenguaje natural, visión por computadora, análisis de datos, generación de contenido (modelos de inteligencia artificial generativa) y mucho más. Los modelos producidos por OpenAI y ofertados dentro de la plataforma de Azure AI Services, como GPT-4 (modelo sobre el que está desarrollado chat-GPT), DALL·E o Wishper son de los más conocidos e implementados habitualmente, pero hay gran cantidad de modelos, generados por otras compañías.
Dentro de la Inteligencia Artificial generativa, uno de los beneficios que podemos obtener usando Azure AI Services, es disponer de acceso un gran catálogo de modelos de IA alternativos a los más comunes de OpenAI, que ofrecen soluciones allí donde los modelos de OpenAI no son los óptimos dándonos un mundo de posibilidades. Para ello, Microsoft ofrece un portal específico, el denominado Azure AI studio, recientemente liberado para uso general, donde podremos descubrir más sobre estos servicios de una manera sencilla y accesible para todos.
El número de modelos que se ofrecen a través de Azure AI Services es inmenso y crece cada día. En este artículo, trataremos sobre la implementación de modelos de IA en Azure, de alguno de estos modelos menos conocidos, como los de la familia Mistral y la inteligencia artificial en la nube.
¿Qué es Mistral?
Mistral AI, una empresa europea con sede en París fundada por antiguos empleados de Google y Meta, que ofrece modelos SMoE (Sparse Mixture-of-Experts) con funcionalidades muy interesantes, como la inteligencia artificial en la nube. Llevan impresionando al sector desde el año pasado liberando modelos de IA cada vez más potentes. El primero, Mistral 7b apareció 2023 y ya superaba a algunas versiones de Llama, la IA desarrollada por Meta y a GPT 3.5, alma de archiconocido ChatGPT. En la actualidad cuentan con varios modelos, algunos especializados y otros de uso general, siendo estos últimos los más interesantes.
El gran éxito de esta empresa tuvo como consecuencia que Microsoft llegara a un acuerdo con la empresa francesa a primeros de 2024 y, gracias a eso, ahora podemos encontrar sus modelos dentro de Azure AI Studio. Según la documentación oficial de Microsoft, a día de hoy, principios de agosto de 2024, se ofrecen hasta 12 modelos diferentes de esta compañía.
Modelos e implementaciones
Antes de comenzar a profundizar en estos modelos alternativos sería interesante aclarar las diferencias entre un modelo y una implementación específica en Inteligencia Artificial, ya que, a menudo, estos conceptos quedan un poco difusos para el público general.
Modelo
El modelo es un diseño finalizado y funcional de una inteligencia artificial. Los ingenieros implementan algoritmos y funcionalidades específicas en un modelo concreto. Algunos modelos realizan tareas específicas (por ejemplo, generación de imágenes con Dall-E) mientras que, poco a poco, se van introduciendo multimodales, capaces de realizar tareas más complejas y con diferentes tipos de datos (por ejemplo, GPT4o). Otros modelos muy extendidos fuera de Open AI son PaLM2 (Google), Llama2 (Meta), Phi3 (Microsoft) y los modelos Mistral, siendo el más reciente Mistral Nemo. Todos estos modelos de IA en Azure están perfectamente definidos y son propiedad intelectual de la empresa que los desarrolla.
Implementación
Una implementación es un despliegue o uso específico de en una herramienta. Digamos que es un uso específico de uno o varios modelos de IA en Azure en un producto para su uso y explotación. Ejemplos de implementaciones serían ChatGPT (basado en modelos GPT de Open AI), Copilot o Gemini.
¿Qué es “Sparse Mixture-of-Experts” (SMoE)?
En diseño de modelos de IA, entrenar un modelo más grande con menos pasos es, en general, mejor que entrenar un modelo más pequeño con más pasos.
Esto es precisamente lo que persiguen los modelos Sparse Mixture of Expert. La “Combinación de Expertos” permite que los modelos se entrenen previamente con mucha menos información, lo que significa aumentar drásticamente el tamaño del modelo o del conjunto de datos con la misma capacidad de computación que un modelo convencional.
Un “Experto” es una red más compleja que la convencional (FFN) que se utilizan en las redes “Transformer” normales. Esta mayor complejidad en la jerarquía de las redes permite una mayor eficacia, al necesitar menos pasos para la Inferencia (proceso de determinar una salida ante una entrada dada)
En los modelos “Sparse MoE” reemplazamos las capas simples de un modelo convencional tipo “Transformer” con capas más complejas, compuestas por estos “Expertos” y “Enrutadores”, componentes que ayudan a determinar cuál es la siguiente ruta o “Experto” que debe tratar la información. Esta combinación de “Expertos” y “Enrutadores” es la que provee a los modelos Sparse MoE de una ventaja competitiva en eficacia.
El elemento “Gating Network” es al que nos referimos como “Enrutadores” en este artículo.
No obstante, esta complejidad conlleva un precio. Aunque los modelos Sparse MoE proporcionan beneficios como un entrenamiento más eficiente y una inferencia más rápida en comparación con otros modelos, también conllevan “desafíos”:
- El entrenamiento requiere un ajuste muy fino para evitar problemas de sobreajuste.
- Los modelos Sparse MoE requieren una mayor cantidad de memoria para cargar todos los parámetros necesarios, lo que aumenta los requisitos para implementarse a gran escala.
En resumen, Sparse MoE son modelos en los que cada subcomponente es más complejo que en una red convencional, haciendo el proceso de entrenamiento e inferencia más eficaz, pero requiriendo un ajuste más fino y más cantidad de memoria para su ejecución, comparado con sus equivalentes tipo “Transformer”.
Implementando Mistral
Mistral ofrece diferentes modelos de su catálogo dentro de AI Services, pero podríamos categorizarlos en dos tipos según su modo de implementarlos (es decir, de “ponerlos a andar” para poder utilizarlos: Modelos de proceso administrado y modelos API sin servidor.
Aunque de primeras parecen conceptos complejos (y la documentación de Microsoft al respecto tampoco ayuda demasiado), al final podríamos resumirlo en lo siguiente: Para los procesos administrados tendremos que preparar una máquina virtual sobre la que montar el modelo y todo lo que conlleva, para la segunda opción, todo será aprovisionado por Microsoft haciéndonos la vida más fácil y nosotros solo tendremos que consumirlo (previo pago, por supuesto) a nuestro gusto.
A modo ilustrativo, vamos a explicar cómo crear estos últimos, ya que resulta especialmente sencillo desde Azure AI Studio. Los más interesantes son el modelo Mistral Large, el LLM de Mistral, y Mistral Nemo, una versión algo más reducido que ha sido lanzada recientemente.
Desde la pantalla principal de Azure AI Studio, accediendo al área de Catálogo de modelos (izquierda), tendremos la oportunidad de buscar los modelos que nos interesen (área centro-izquierda). Entre los resultados, hemos utilizado la opción Mistral-Nemo (en el que han contado con la colaboración de NVIDIA para su desarrollo) para este ejemplo.
Para implementar nuestro modelo, tras leer todos los detalles y, sobre todo, lo que nos va a costar, tendremos que hacer clic en “implementar” (lo cual es muy lógico)
En ese momento, se nos solicitará la creación de un proyecto (a menos que ya tengamos unos creado, claro).
Crear el proyecto es algo común en todas las implementaciones de IA que desarrollemos utilizando AI Studio, por lo que familiarizarse con el proceso nos vendrá bien para Mistral y para otros modelos que queramos montar.
Pensemos que un proyecto es una manera para organizar todo aquello relacionado con una aplicación de IA, lo que incluye modelos y otros servicios, aportando una capita de seguridad más que imprescindible en cualquier entorno empresarial.
Para saber un poquito más sobre proyectos os recomiendo este enlace, donde se explica realmente bien.
Más información sobre los hubs aquí:
El siguiente paso es seleccionar el hub, traducido como “centro de conectividad” en español (no sé si muy acertadamente). Aquí será donde seleccionaremos, propiamente dicho, nuestro recurso en Azure. Si no lo tenemos, no hay problema pues se puede crear todo al vuelo.
Una vez tengamos el proyecto con su hub y sus recursos (veréis que mistral requiere barrios recursos adicionales), es el momento de crear la implementación del modelo, para lo cual solo tendremos que elegir un nombre.
¡Y ya tenemos nuestro modelo! Para probarlo podemos optar por usar el área de juegos, donde se nos ofrecerá un pequeño chat con el que podremos interactuar, al más puro estilo Chat-gpt.
Mistral Nemo desde el área de juegos (o playground), a simple vista, funciona como Chat-GPT, y de hecho, es bastante equivalente a algunos de los modelos más importantes de OpenAI. Mistral Nemo es algo más pequeño que el modelo estrella de esta empresa, el Mistral Large 2 este último con 123 mil millones de parámetros mientras que el Nemo se queda en 12 mil millones. Igualmente, los resultados durante las pruebas para las funciones más típicas como preguntar información, clasificar, resumir o, simplemente, charlar.
Pero para consumirlo de manera realmente profesional la parte interesante es necesario otro tipo de interfaz. Como con otros modelos, se nos ofrece una API para conectarnos, que si lo traducimos al castellano, digamos que es una forma muy estandarizada de interactuar con aplicaciones que hay en la nube. Una vez conocemos como usar una API de tipo REST (como en este caso), sabemos usarlas todas, por lo que no necesitamos reinventar la rueda ni volvemos expertos en tecnologías super avanzadas para hacer uso de los modelos de Mistral. Con una URL, una clave (o key) y un programita (por ejemplo, postman, uno de los más populares a la hora de interactuar con APIs, nos podemos comunicar con nuestro modelo de IA desplegado en Azure.
Y toda esa información la podemos obtener fácilmente desde el botón “Código” que encontramos en el área de juegos.
Autores:
- Celeste Tania Sánchez Fresneda, Arquitecta Azure y Power Platform
- Sergio Rojas Cuervo, Directo TI en VS-SISTEMAS