Uso de modelos de Machine Learning en la aplicación de Windows
Esta guía pretende ayudar a los desarrolladores de aplicaciones sin experiencia en trabajar con modelos de inteligencia artificial (IA) y Machine Learning (ML), ya que aborda preguntas habituales, comparte conceptos y recursos básicos y ofrece recomendaciones sobre cómo usar modelos de IA y ML en una aplicación de Windows.
Machine Learning (ML) es una ramificación de la inteligencia artificial (IA) que permite a los ordenadores aprender de los datos y realizar predicciones o tomar decisiones.
Los modelos de ML son algoritmos que se pueden entrenar con datos y, posteriormente, implementar para realizar diversas tareas, como generar contenido, razonar sobre contenido, reconocer imágenes, procesar el lenguaje natural, realizar análisis de sentimiento y mucho más.
Formas en que las aplicaciones de Windows pueden sacar provecho de los modelos de ML para mejorar su funcionalidad y la experiencia del usuario:
- Las aplicaciones pueden usar modelos de IA generativa para comprender temas complejos y resumirlos, reescribirlos, hacer informes sobre ellos o expandirlos.
- Las aplicaciones pueden usar modelos que transforman contenido de formato libre en un formato estructurado que la aplicación pueda comprender.
- Las aplicaciones pueden usar modelos de búsqueda semántica que permiten a los usuarios buscar contenido por significado y encontrar rápidamente contenido relacionado.
- Las aplicaciones pueden usar modelos de procesamiento del lenguaje natural para razonar sobre requisitos complejos de lenguaje natural y planear y ejecutar acciones para responder a la pregunta del usuario.
- Las aplicaciones pueden usar modelos de manipulación de imágenes para modificar imágenes forma inteligente, borrar o agregar temas, escalar verticalmente o generar contenido nuevo.
- Las aplicaciones pueden usar modelos de diagnóstico predictivo para ayudar a identificar y predecir problemas y guiar al usuario o hacerlo por él.
Windows Copilot Runtime combina varias maneras de interactuar con el sistema operativo que utiliza la IA. Esto incluye características respaldadas por IA listas para usar denominadas Windows Copilot Runtime APIs. Consulte Introducción al uso de api respaldadas por IA en la aplicación de Windows para obtener instrucciones sobre estas características y API listas para usar que admiten los escenarios enumerados anteriormente.
La Windows Copilot Runtime APIs ejecución localmente, directamente en el dispositivo Windows, aunque también puede optar por usar un modelo basado en la nube a través de una API lista para usar. Tanto si ejecutan una instancia local como en la nube, estas API abstraen el modelo de ML subyacente para que no usted tenga que optimizar, formatear ni ajustar nada.
Sin embargo, es posible que quiera encontrar su propio modelo de ML para usarlo localmente en Windows. Es posible que tenga que optimizar este modelo para que se ejecute correctamente en los dispositivos Windows o ajustar un modelo para entrenarlo con sus propios datos personalizados específicos para el caso de uso o la empresa concretos. En este artículo se tratan algunos de los conceptos, herramientas y bibliotecas de código abierto que le guiarán a través de este proceso.
Los modelos de lenguaje pequeños (SLM) están diseñados para ser compactos y eficientes, a menudo se entrenan para tareas o dominios específicos en conjuntos de datos más pequeños para permitir almacenar y ejecutar el modelo a nivel local con un tiempo de rendimiento para la inferencia más rápido. Los SLM cuentan con una restricción en la cantidad de datos que se usan para entrenarlos, por lo que no proporciona un conocimiento o un razonamiento complejo tan amplio como un modelo de lenguaje grande (LLM). Sin embargo, los SLM pueden ofrecer una alternativa más segura y rentable que los LLM cuando se usan localmente, ya que requieren menos potencia de cálculo para ejecutarse y la privacidad de los datos es mayor, al mantener la información de la conversación segura a nivel local en el dispositivo.
Los SLM son más idóneos para el uso local, ya que ejecutar un modelo de ML en un dispositivo significa que el tamaño no debe superar la capacidad de almacenamiento y procesamiento del dispositivo que lo ejecuta. La mayoría de los LLM serían demasiado grandes para ejecutarse localmente.
Los modelos Phi-2 y Phi-3 de Microsoft son ejemplos de SLM.
Los modelos de lenguaje grandes (LLM) se han entrenado con grandes cantidades de datos y un mayor número de parámetros, por lo que son más complejos y tienen un mayor tamaño para el almacenamiento. Debido a su tamaño, es posible que los LLM dispongan de una mayor capacidad para comprender patrones más complejos y con más matices en los datos, de modo que abarcan un espectro de conocimiento más amplio y permiten trabajar con patrones más complejos. También requieren mayores recursos computacionales para el entrenamiento y la inferencia. La mayoría de los LLM no podrían ejecutarse en un dispositivo local.
Los modelos de lenguaje OpenAI GPT-4o, GPT-4 Turbo, GPT-3.5 Turbo, DALL-E y Whisper son ejemplos de LLM.
Para obtener más instrucciones sobre la diferencia entre usar un SLM localmente frente a un LLM en la nube, consulte Consideraciones a tener en cuenta para usar las API respaldadas por IA locales frente a las basadas en la nube en la aplicación de Windows.
Los modelos de ML de código abierto que están listos para usarse y que se pueden personalizar con sus propios datos o preferencias están disponibles en diversos lugares, de los cuales algunos de los más populares son:
- Hugging Face: un centro de distribución de más de 10 000 modelos de ML previamente entrenados para el procesamiento de lenguaje natural, con tecnología de la biblioteca Transformers. Puede encontrar modelos para la clasificación de texto, la respuesta a preguntas, el resumen, la traducción, la generación y mucho más.
- ONNX Model Zoo: una colección de modelos de ML previamente entrenados en formato ONNX que abarcan una amplia variedad de dominios y tareas, como visión artificial, procesamiento del lenguaje natural, voz, etc.
- Qualcomm AI Hub: una plataforma que proporciona acceso a diferentes modelos y herramientas de ML optimizados para dispositivos Qualcomm Snapdragon. Puede encontrar modelos para el procesamiento de imágenes, vídeos, audio y sensores, así como marcos, bibliotecas y SDK para compilar e implementar aplicaciones de ML en dispositivos móviles. Qualcomm AI Hub también ofrece tutoriales, guías y soporte de la comunidad para desarrolladores e investigadores.
- Pytorch Hub: un repositorio de modelos previamente entrenados diseñado para facilitar la reproducibilidad de la investigación y habilitar nuevas investigaciones. Se trata de API y un flujo de trabajo sencillos que proporcionan los bloques de creación básicos para mejorar la reproducibilidad de la investigación del aprendizaje automático. PyTorch Hub consta de un repositorio de modelos previamente entrenados diseñado específicamente para facilitar la reproducibilidad de la investigación.
- TensorFlow Hub: un repositorio de modelos de ML previamente entrenados y componentes reutilizables para TensorFlow, que es un popular marco para crear y entrenar modelos de ML. Puede encontrar modelos para el procesamiento de imágenes, texto, vídeo y audio, así como para el aprendizaje por transferencia y la optimización.
- Model Zoo: una plataforma que recopila y clasifica los mejores modelos de ML de código abierto para varios marcos y tareas. Puede explorar los modelos por categoría, marco, licencia y clasificación, y ver demostraciones, código y documentos de cada modelo.
Algunas bibliotecas de modelos no están diseñadas para personalizarse y distribuirse a través de una aplicación, pero son herramientas útiles para explorar y descubrir de manera práctica como parte del ciclo de vida de desarrollo, como por ejemplo:
- Ollama: Ollama es un marketplace de modelos de ML listos para usar para diversas tareas, como la detección de caras, el análisis de sentimiento o el reconocimiento de voz. Puede examinar, probar e integrar los modelos en la aplicación con unos pocos clics.
- LM Studio: Lmstudio es una herramienta que permite crear modelos de ML personalizados a partir de sus propios datos, mediante una interfaz basada en arrastrar y colocar. Puede elegir entre diferentes algoritmos de ML, preprocesar y visualizar los datos, y entrenar y evaluar los modelos.
Siempre que encuentre un modelo de ML con el objetivo de usarlo en la aplicación de Windows, le recomendamos encarecidamente seguir las instrucciones de Desarrollo de características y aplicaciones de IA generativa responsables en Windows. Esta guía le ayudará a comprender las directivas, los procedimientos y los procesos de gobernanza, identificar los riesgos, recomendar métodos de prueba y usar medidas de seguridad como moderadores y filtros, y expone consideraciones específicas a la hora de seleccionar un modelo seguro y responsable con el que trabajar.
Hay diferentes maneras de usar modelos de ML en aplicaciones de Windows, según el tipo, el origen y el formato de los modelos, y el tipo de aplicación.
Algunos de los formatos en los que encontrará los modelos de ML son:
ONNX: estándar abierto para representar e intercambiar modelos de ML en distintos marcos y plataformas. Si encuentra un modelo de ML previamente entrenado en formato ONNX, puede usar ONNX Runtime (ORT) para cargar y ejecutar el modelo en la aplicación de Windows. ORT permite acceder a las funcionalidades de inferencia aceleradas por hardware del dispositivo y optimizar el rendimiento del modelo de ML. Si tiene un modelo de ML previamente entrenado en un formato diferente, como PyTorch o TensorFlow, puede convertirlo a ONNX mediante una herramienta de optimización de modelos como Olive. Para obtener ayuda con el uso de Olive, consulte Ajuste de SLM con Microsoft Olive (Serie de recorridos sobre la arquitectura de aplicaciones con IA generativa). Para ver tutoriales sobre cómo crear y usar modelos ONNX, consulte Tutoriales de ONNX en GitHub. Para ver ejemplos que muestren cómo usar modelos ONNX en una aplicación de Windows, consulte la Galería de ejemplos de IA en Windows.
PyTorch: un marco de aprendizaje profundo de código abierto muy popular disponible con interfaz de Python y C++. Es probable que este sea el formato más común que encontrará para los modelos de ML. Si quiere usar modelos de Ml de PyTorch en la aplicación de Windows (C# o C++) o en una aplicación web, puede usar TorchSharp y LibTorch, que son enlaces de .NET y C++ para la biblioteca de PyTorch. TorchSharp y LibTorch permiten crear, cargar y manipular tensores, compilar y ejecutar redes neuronales y guardar y cargar modelos mediante el formato PyTorch. Para obtener ejemplos, consulte los ejemplos de TorchSharp, TorchScript para implementación y ejemplos de C++ de PyTorch. En el caso de las aplicaciones web, consulte Creación de una aplicación web con ONNX Runtime. Para ver ejemplos de cómo ejecutar modelos de PyTorch con DirectML, consulte la galería de ejemplos de IA en Windows.
TensorFlow es otra conocida biblioteca de software de código abierto para el aprendizaje automático y la inteligencia artificial que se usan para compilar e implementar modelos de Machine Learning para diversas tareas.
API de WebNN para aplicaciones web: estándar web para acceder a la aceleración de hardware de red neuronal en exploradores, basado en las API de WebIDL y JavaScript. Permite a los desarrolladores web crear y ejecutar modelos de Machine Learning de forma eficaz en el cliente, sin depender de servicios en la nube o bibliotecas nativas. Ejemplos de WebNN en GitHub. Ejemplos de WebNN con ONNX Runtime en la galería de ejemplos de IA en Windows.
AI Toolkit para Visual Studio Code es una extensión de VS Code que le permite descargar y ejecutar modelos de IA localmente. AI Tookit también puede ayudarle con:
- Probar modelos en un área de juegos intuitiva o en la aplicación con una API de REST.
- Ajustar el modelo de IA, tanto de forma local como en la nube (en una máquina virtual), para crear nuevas capacidades, mejorar la confiabilidad de las respuestas y establecer el tono y el formato de la respuesta.
- Ajustar modelos populares de lenguaje pequeño (SLM), como Phi-3 y Mistral.
- Implementar la característica de inteligencia artificial en la nube o con una aplicación que se ejecute en un dispositivo.
¿Cómo puedo sacar provecho de la aceleración de hardware para mejorar el rendimiento con las características de IA?
DirectML es una API de bajo nivel que permite que el hardware del dispositivo Windows acelere el rendimiento de los modelos de ML mediante la GPU o la NPU del dispositivo. El enlace de DirectML con el ONNX Runtime suele ser la forma más sencilla que los desarrolladores usan para llevar la IA acelerada mediante hardware a sus usuarios a gran escala. Más información: Introducción a DirectML.