Inferencia rápida y portable de Llama2 en edge heterogéneo
(secondstate.io)Stack Rust+Wasm: una poderosa alternativa a Python
- Las aplicaciones Rust+Wasm tienen un tamaño 1/100 del de Python, son 100 veces más rápidas y pueden ejecutarse de forma segura en cualquier lugar sin cambiar en absoluto la aceleración de hardware.
- Rust es el lenguaje para la AGI (inteligencia artificial general), y se crea un programa simple en Rust para hacer inferencia del modelo llama2 a velocidad nativa.
- La aplicación binaria compilada a Wasm (2 MB) es completamente portable entre dispositivos con distintos aceleradores de hardware.
- El runtime de Wasm (WasmEdge) ofrece un entorno de ejecución seguro y protegido en la nube.
Instalación y ejecución del programa en Rust
- Step 1. Instalar WasmEdge y el plugin GGML: en un dispositivo Linux o Mac, usar los siguientes comandos para instalarlo.
- Step 2. Descargar la app Wasm precompilada y el modelo: descargar el modelo llama2 en formato GGUF y, como ejemplo, descargar la versión del modelo de chat ajustado llama2 7B cuantizada con pesos de 5 bits.
- Step 3. Ejecutar: usar WasmEdge para ejecutar la aplicación de inferencia wasm, pasar el modelo GGUF e ingresar una pregunta para conversar con el modelo.
Configuración del funcionamiento del modelo
- Se puede configurar la forma de interacción con el modelo mediante opciones de línea de comandos.
- Por ejemplo, se puede especificar una longitud de contexto determinada, establecer la cantidad máxima de tokens a predecir en cada respuesta, imprimir estadísticas y transmitir la respuesta del modelo por
stdout. - El programa genera alrededor de 25 tokens por segundo en una MacBook M2 de gama baja.
Agentes y apps con LLM
- Se crea un servidor API compatible con OpenAI usando Rust y WasmEdge.
- Esto permite crear agentes y aplicaciones con LLM usando herramientas de desarrollo compatibles con OpenAI.
Ventajas de Rust+Wasm frente a Python
- El stack Rust+Wasm es una alternativa sólida al stack de Python para aplicaciones de inferencia de IA y proporciona infraestructura de cómputo en la nube.
- Ultraligero: la aplicación de inferencia pesa solo 2 MB, incluyendo todas las dependencias.
- Muy rápido: ofrece velocidad nativa de C/Rust en todas las partes de la aplicación de inferencia.
- Portabilidad: la misma aplicación en bytecode Wasm puede ejecutarse en todas las principales plataformas de cómputo que soportan aceleración de hardware heterogénea.
- Fácil de instalar, desarrollar y desplegar: no tiene dependencias complejas, y se puede compilar un único archivo Wasm con herramientas estándar en una laptop y desplegarlo en cualquier lugar.
- Seguro y listo para la nube: el runtime de Wasm está diseñado para aislar código de usuario no confiable, puede ser administrado por herramientas de contenedores y desplegarse fácilmente en plataformas cloud-native.
Programa de inferencia en Rust
- El programa de inferencia de demostración está escrito en Rust y compilado a Wasm.
- El código fuente en Rust es muy simple y consta de solo 40 líneas de código.
- El programa en Rust administra la entrada del usuario, lleva el historial de la conversación, convierte el texto a la plantilla de chat de llama2 y ejecuta tareas de inferencia usando la API WASI NN.
Ejecutarlo en la nube o en el edge
- Una vez que se tiene el archivo de bytecode Wasm, se puede desplegar en cualquier dispositivo compatible con el runtime WasmEdge.
- WasmEdge se instala junto con el plugin GGML y aprovecha automáticamente distintas aceleraciones de hardware para ejecutar el modelo llama2.
Próximos pasos
- Las herramientas GGML de WasmEdge ya están disponibles y son usadas por clientes cloud-native, pero aún se encuentran en una etapa temprana.
- Si te interesa contribuir al proyecto open source y ayudar a definir la dirección de la futura infraestructura de inferencia para LLM, hay varias tareas de bajo nivel en las que puedes colaborar.
Otros modelos de IA
- WasmEdge y WASI NN permiten construir aplicaciones de inferencia ligeras, rápidas, portables y seguras como alternativa a Python.
- Por ejemplo, el proyecto mediapipe-rs ofrece una API Rust+Wasm para los modelos Tensorflow mediapipe de Google.
Opinión de GN⁺
Lo más importante de este artículo es que presenta una alternativa a Python para la inferencia de IA usando Rust y WebAssembly (Wasm), con ventajas notables en tamaño, velocidad, portabilidad y seguridad. Este stack tecnológico integra infraestructura de cómputo en la nube para mejorar el rendimiento en diversos dispositivos y entornos cloud, resolver problemas complejos de dependencias y simplificar el desarrollo y el despliegue. Este enfoque podría tener implicaciones importantes especialmente para el futuro del edge computing y la inferencia de IA, lo que lo convierte en un tema muy interesante para quienes siguen esta tecnología.
1 comentarios
Comentarios de Hacker News