Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Foundry Local es una solución de inteligencia artificial local de un extremo a otro que se distribuye como una sola biblioteca nativa dentro de la aplicación. Además de conectarse a un servicio o proceso en segundo plano independiente, el código carga la API central de Foundry Local Core en proceso y la llama a través de kits de desarrollo de software (SDK) específicos de lenguaje para C#, JavaScript, Python y Rust. El resultado es una aplicación independiente que ejecuta modelos de lenguaje pequeños en hardware local sin dependencias externas.
En este artículo se explican los componentes que componen el entorno de ejecución local de Foundry y cómo funcionan juntos para ofrecer inferencia de IA en el dispositivo.
Introducción a los componentes
En el diagrama siguiente se muestra cómo se ajusta Foundry Local dentro de la aplicación. El código interactúa con core API a través de llamadas directas a funciones. La API central llama a Open Neural Network Exchange (ONNX) Runtime para la inferencia y se integra con Foundry Catalog para adquirir los modelos y se integra con WinML en Windows para registrar el proveedor de ejecución.
Dado que todo el entorno de ejecución está incrustado, la aplicación empaqueta todo lo que necesita. Los usuarios finales reciben un único distribuible sin ningún instalador independiente ni servicio en segundo plano para administrar.
Foundry Local Core API
Foundry Local Core API es el componente central del entorno de ejecución. Es una biblioteca nativa específica de la plataforma, .dll en Windows, .so en Linux y .dylib en macOS, que la aplicación carga internamente.
Core API controla:
- Administración del ciclo de vida del modelo : descarga, carga, ejecución de inferencia y descarga de modelos mediante una única interfaz.
- Abstracción de hardware: detectar hardware disponible, seleccionar el mejor proveedor de ejecución y administrar la caché del modelo local, por lo que el código de la aplicación no necesita controlar estos detalles.
- Inferencia basada en sesiones y seguras para subprocesos : admite solicitudes simultáneas de varios subprocesos sin necesidad de sincronización externa.
Los SDK de lenguaje para C#, JavaScript, Python y Rust encapsulan esta biblioteca nativa y exponen las API idiomáticas para cada ecosistema:
| Language | Package |
|---|---|
| C# | Microsoft.IA.Foundry.Local (NuGet) |
| JavaScript | foundry-local-sdk (npm) |
| Python | foundry-local-sdk (PyPI) |
| Óxido | foundry-local-sdk (crates.io) |
El código de tu aplicación llama al SDK, que realiza llamadas de función directas al Core API dentro del proceso.
ONNX Runtime
ONNX Runtime es el motor de inferencia que ejecuta modelos de IA. Core API llama a ONNX Runtime para toda la ejecución del modelo.
ONNX Runtime proporciona:
- Creación de particiones y optimización de grafos : análisis de gráficos de modelos y aplicación de optimizaciones antes de la ejecución.
- Proveedores de ejecución de complementos : cargando complementos de aceleración específicos del hardware en tiempo de ejecución para dirigirse a unidades de procesamiento de gráficos (GPU), unidades de procesamiento neuronal (NPUs) u otros aceleradores.
- Ejecución entre hardware : ejecutar modelos en el mejor hardware disponible al administrar la memoria y la transferencia de datos entre proveedores de ejecución.
- Reserva de CPU: el proveedor de ejecución de CPU siempre está disponible, por lo que los modelos se ejecutan en cualquier dispositivo aunque el hardware no sea especializado.
ONNX Runtime admite modelos cuantificados, que reducen el uso de memoria y mejoran la velocidad de inferencia en dispositivos con restricciones de recursos.
WebGPU y Apple Silicon
En macOS con Apple Silicon, Foundry Local usa el proveedor de ejecución WebGPU para acceder a la GPU. ONNX Runtime implementa WebGPU a través de Dawn, la implementación de WebGPU de código abierto de Google. Dawn actúa como una capa de traducción que compila sombreadores de cómputo de WebGPU en Metal Shading Language (MSL), que luego se ejecuta de forma nativa en la GPU de Apple Silicon a través del framework Metal de Apple.
Este enfoque permite la inferencia acelerada por GPU en macOS sin necesidad de un proveedor de ejecución metal dedicado. La cadena de traducción es: modelo ONNX → ONNX Runtime (proveedor de ejecución de WebGPU) → Dawn → Metal → APPLE Silicon GPU. Entre las optimizaciones clave se incluyen la aritmética de precisión media (FP16) para un rendimiento más rápido, la administración del tensor del lado GPU para minimizar las transferencias de datos de CPU a GPU y la captura de grafos para los pasos de inferencia repetidas.
En Windows, el mismo proveedor de ejecución de WebGPU utiliza Direct3D a través de Dawn, lo que significa que el código de la aplicación no necesita lógica específica de la plataforma para beneficiarse de la aceleración de GPU.
Catálogo de Fundición
Foundry Catalog es un registro de modelos hospedado en la nube con el que se integra Core API para la adquisición de modelos.
El catálogo proporciona:
- Variantes de modelo optimizadas para hardware: modelos ONNX precompilados optimizados para configuraciones de hardware específicas (CPU, GPU, NPU).
- Descargar en el primer uso : los modelos se extraen del catálogo la primera vez que la aplicación los solicita y, a continuación, se almacenan en caché localmente para las ejecuciones posteriores.
- Almacenamiento en caché local : los modelos descargados se almacenan en el disco, por lo que están disponibles inmediatamente sin volver a descargarse.
- Actualizaciones compatibles con versiones: el catálogo realiza un seguimiento de las versiones del modelo y extrae las actualizaciones cuando hay disponibles versiones más recientes.
Nota:
Foundry Local usa la red para descargar modelos y proveedores de ejecución desde el catálogo. Después de la descarga inicial, los modelos se ejecutan completamente sin conexión desde la caché local.
No se limita a los modelos del Foundry Catalog. También puede compilar y optimizar sus propios modelos en formato ONNX. Para obtener más información, consulte Compile Hugging Face models to run on Foundry Local (Compilar modelos de Face hugging para ejecutarse en Foundry Local).
WinML (solo Windows)
En Windows, Foundry Local se integra con WinML para el registro del proveedor de ejecución. WinML es una plataforma de aprendizaje automático nativa de Windows que puentea la brecha entre ONNX Runtime y los complementos de aceleración de hardware disponibles en el sistema.
Identificadores de WinML:
- Adquisición de complementos del proveedor de ejecución — aprovisionamiento de complementos del proveedor de ejecución coincidentes con el hardware desde el sistema operativo y el Windows Update.
- Registro en entorno de ejecución: se registran los proveedores de ejecución adquiridos con ONNX Runtime para que estén disponibles durante la inferencia.
- Compatibilidad de controladores : negociación de versiones de controladores y control de comprobaciones de compatibilidad para garantizar una ejecución estable.
En Linux y macOS, core API registra proveedores de ejecución directamente con ONNX Runtime sin un intermediario de plataforma. El SDK agrupa los complementos de proveedor de ejecución necesarios para cada plataforma de destino, por lo que el registro se controla internamente durante la carga del modelo.
API REST opcional
En escenarios que requieren comunicación basada en HTTP, el SDK local de Foundry puede iniciar un punto de conexión REST opcional compatible con OpenAI dentro del proceso de aplicación. Esto resulta útil para la integración con herramientas que se comunican a través de HTTP, como LangChain o Open WebUI.
La API REST no es necesaria para el uso del SDK nativo. Al llamar directamente al SDK, la aplicación realiza llamadas a funciones en proceso sin sobrecarga HTTP.
Abstracción de hardware
Foundry Local abstrae el hardware subyacente para que el código de la aplicación no necesite detectar dispositivos ni seleccionar proveedores de ejecución. Core API identifica automáticamente el hardware disponible y elige el mejor proveedor de ejecución para cada modelo.
En la tabla siguiente se resumen los proveedores de ejecución y los tipos de dispositivo admitidos:
| Proveedor de ejecución | Tipo de dispositivo | Plataforma |
|---|---|---|
| NVIDIA CUDA | Unidad de Procesamiento Gráfico (GPU) | Windows, Linux |
| WebGPU (a través de Dawn) | Unidad de Procesamiento Gráfico (GPU) | Windows, Linux, macOS |
| AMD Vitis | NPU | Windows |
| Qualcomm | NPU | Windows |
| Intel OpenVino | Unidad de Procesamiento Gráfico (GPU) | Windows |
| Unidad Central de Procesamiento (CPU) | Unidad Central de Procesamiento (CPU) | Windows, Linux, macOS |
El proveedor de ejecución de CPU siempre está disponible como reserva. Si no se detecta ninguna GPU o NPU, Foundry Local ejecuta la inferencia en la CPU automáticamente.
Ciclo de vida del modelo
El SDK local de Foundry administra el ciclo de vida completo del modelo a través de core API. Cada fase se produce en proceso dentro de la aplicación:
- Descargar : el SDK solicita un modelo por alias. Si el modelo no está en la memoria caché local, core API la descarga desde el catálogo de Foundry y la almacena en el disco.
- Carga : el SDK carga el modelo en memoria, que inicializa la sesión en tiempo de ejecución de ONNX y selecciona el proveedor de ejecución adecuado para el hardware disponible. Para más información sobre cómo se seleccionan los proveedores de ejecución, consulte Abstracción de hardware.
- Inferencia : la aplicación envía mensajes al modelo cargado y recibe respuestas. Core API admite modos de inferencia de streaming y sincrónicos.
- Descarga : cuando se completa la inferencia, el SDK descarga el modelo de la memoria para liberar recursos. Los archivos de modelo almacenados en caché permanecen en el disco para su uso futuro.
Este ciclo de vida es el mismo en todos los idiomas admitidos. El SDK controla cada fase mediante un patrón de API coherente: obtener un modelo del catálogo, descargarlo y cargarlo, crear un cliente y ejecutar la inferencia.