Cómo montar tu propio servidor de Inteligencia Artificial: Apple Silicon, Ollama, LMStudio & Pinockio
Ayer vimos en la primera parte de este artículo de «Cómo montar tu propio servidor de Inteligencia Artificial: Modelos Open Source, Parámetros y Hardware NVIDIA» cómo elegir un modelo de lenguaje LLM Open Source, en qué nos debemos fijar, y una serie de alternativas con NVIDIA o, como ejemplo, cómo es mi servidor. Hoy vamos a ver otras alternativas y más cosas a tener en cuenta para poder tener nuestro entorno de pruebas para entrenar algoritmos de Machine Leaning y ejecutar proyectos con Inteligencia Artificial on-premise.
Figura 10: Cómo montar tu propio servidor de Inteligencia Artificial.
Apple Silicon, Ollama, LMStudio & Pinockio
Además de las alternativas descritas, tenemos también la opción Apple Silicon, que también utilizo ya que tengo un Macbook Pro M1 Max con 1TB de disco duro y 32GB de RAM – el jefe tiene un M3 – Con esta configuración puedo levantar modelos de 7B (y algunos de más billions) a una velocidad más que decente, aunque teniendo ya la generación M4 se empieza a notar. Ahora con los M4 la potencia y la velocidad como podéis imaginar es mayor, aunque como pasa siempre en Apple, tenemos que pagarla (a veces a precio de oro).
Figura 11: Libro de Machine Learning aplicado a Ciberseguridad de Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández |
Una configuración mínima para poder ejecutar modelos decentes sería un Macbook Pro M4 con 32GB de RAM y 1TB de disco duro. Esta configuración ronda los 3.000€ pero vas a tener el rendimiento “parecido” (sólo se equipara si tienes el M4 Max) al de una 4090 a la hora de entrenar y ejecutar modelos LLMs (no hablo de juegos ni FPS). Pero recuerda el precio de una 4090 … los Silicon de Apple se han convertido en una buena opción. Pero eso sí, en principio siempre serán más rápidas las NVIDIA pero a mayor consumo energético.
Figura 12: Arquitectura M4 con 10 core GPU
Otra configuración que se está poniendo de moda es usar los Mac mini que rondan los 800€ y crear con ellos clústeres a través del puerto Thunderbolt o de red. Esto nos permite poner por ejemplo 3 Mac mini digamos 16GB por menos de 2.500€ y conectarlos entre ellos para sumar su potencia. Ojo con esto que no es del todo así (hay más factores que influyen en la velocidad que ahora veremos), no tendremos 48GB de VRAM pero sí más o menos unos 30GB. Con la opción de poder añadir nodos bajo demanda de manera muy sencilla. En este vídeo tienes un ejemplo completo de cómo se pueden conectar usando exo que te permite unir cualquier ordenador Mac Silicon en formato clúster.
Un pequeño disclaimer. No sólo es la VRAM, también tenemos que tener en cuenta parámetros tan opuestos en su naturaleza como por la velocidad el bus de memoria de los Silicon, el contexto del LLM o la cuantización. Pero sí podemos hacernos una idea del consumo de VRAM usando por ejemplo esta fórmula en este artículo o usar alguna calculadora online como esta para modelos de HuggingFace. Por ejemplo, usando la fórmula del artículo anterior, para levantar un modelo Llama 2 a 70B con cuantización de 4 bits necesitaríamos 42GB de VRAM (en principio y según esta fórmula, yo creo que con menos se podría).
Figura 14: Cálculo de memoria GPU para un LLM
Bien, pues ya tenemos nuestro servidor preparado, es hora de instalar el software necesario para ejecutar todo tipo de modelos o de utilidades que usen la IA. Se me olvidaba algo importante … el consumo eléctrico. En esto los Mac Silicon están a años luz de las gráficas NVidia. Estas requieren fuentes de alimentación mínimo de 750W para gráficas como la 4070 y de 1000W o más para las 4090 mientras que los mac consumen mucha menos electricidad.
Los tokens por segundo marcan la usabilidad
La velocidad de generación medida en tokens por segundo es el factor que define el rendimiento y usabilidad de los modelos locales de LLMs. Los tokens ya sabemos que representan las unidades mínimas en las que se descompone el texto (palabras, sílabas o incluso caracteres), y la rapidez con la que un modelo puede procesar y generar estas unidades determina su eficiencia en tareas como la creación de texto, la traducción o el análisis de datos que hagamos.
Esta velocidad depende de varios factores: la arquitectura del modelo (por ejemplo, cuántos parámetros tiene), la capacidad de cómputo (potencia de la GPU o CPU utilizada) y la optimización del software (uso de librerías como CUDA, cuDNN o frameworks optimizados como Hugging Face Transformers). En nuestro caso, para entornos locales, la limitación de recursos suele ser más estricta que en soluciones en la nube por lo que es importante justar tanto el hardware como el software para maximizar el número de tokens por segundo.
Para optimizar los tokens por segundo en un modelo local LLM, se pueden implementar diversas estrategias enfocadas en hardware y software. Por ejemplo, utilizar una buena GPU compatible con librerías como CUDA y cuDNN nos permite acelerar los cálculos matriciales de la arquitectura Transformer, optimizando la inferencia.
A nivel de software, podemos aplicar técnicas como la cuantización que ya hemos mencionado antes, que reduce la precisión de los parámetros del modelo (por ejemplo, de FP32 a INT8) sin sacrificar significativamente el rendimiento, logrando una mayor velocidad de procesamiento. Por otro lado, el uso de batching eficiente y librerías optimizadas como PyTorch con operadores adaptados a hardware específico, o herramientas como TensorRT, permite ejecutar el modelo de forma más rápida y con un menor consumo de recursos.
Por último, reducir el tamaño del modelo mediante técnicas como pruning o utilizar modelos más ligeros, como los LLMs optimizados para dispositivos locales (por ejemplo, LLaMA 7B o GPTQ), también ayuda obtener una aceptable generación de tokens por segundo en un hardware limitado.
Software a utilizar: Ollama, LMStudio & Pinockio
Lo que voy os a contar ahora es independiente de si tienes un GNU/Linux, Windows o Mac Silicon, todos sirven en las tres plataformas. Voy a centrarme solamente en tres que creo que son indispensables y sobre todo sencillas de utilizar. Vamos a empezar con dos que serán el motor principal de nuestro servidor: Ollama y LMStudio.
Ollama es una plataforma pensada para que puedas ejecutar modelos de lenguaje directamente en tu máquina de una manera sencilla y eficiente. Es como el “plug and play” de los LLMs: descargas, configuras y en unos minutos tienes funcionando modelos como LLaMA, Mistral o Vicuna. Su gran ventaja es que está optimizado para funcionar en hardware local, ya sea un Mac con Apple Silicon o una GPU NVIDIA decente, lo que te permite usar modelos bastante potentes sin depender de la nube ni complicarte con instalaciones infernales. Además, la biblioteca de modelos de Ollama ya viene ajustada y lista para usar, lo que te ahorra tiempo y dolores de cabeza.
Figura 15: Ollama
Por otro lado, LMStudio tiene otro enfoque porque está pensado más para el fine-tuning y personalización de modelos, RAG, etcétera. Aquí no solo ejecutas un LLM, sino que lo adaptas a lo que necesitas: puedes entrenar tu propio modelo con datasets específicos y ajustar los parámetros para obtener resultados optimizados y personalizados. Es ideal si tienes un proyecto concreto y necesitas que el modelo “hable” o “sepa” del contexto que quieras.
Figura 16: LMStudio
Mientras que Ollama te permite desplegar un modelo rápidamente y sin complicaciones, LMStudio te da el control completo sobre el proceso de entrenamiento. ¿La diferencia clave? Ollama es perfecto para usar modelos preexistentes, mientras que LLMStudio es tu herramienta si quieres crear o hacer fine-tunning de un modelo a medida (aunque por supuesto, también te permite ejecutar modelos).
Pinokio es en cambio una herramienta que nos va facilitar mucho la vida. Se trata de una especie de “hub” de aplicaciones que permite instalar, ejecutar y controlar de manera programada y local cualquier aplicación de IA con un solo clic. Pinokio automatiza todo el proceso, por lo que sólo tienes que centrarte en utilizar la herramienta.
Esto sabiendo lo complicado que es a veces ejecutar entornos de IA (por ejemplo por las dependencias), la verdad es que es una gran ayuda. Pinokio tiene su propio repositorio de GitHub aunque se puede instalar directamente en MacOS, GNU/Linux o MS Windows descargando la aplicación desde su web.
Figura 18: Repositorio GitHub de Pinockio
A partir de este punto ya tenemos todo lo necesario para poder ejecutar todo tipo de aplicaciones de IA en local, ya sea para generar imágenes, vídeo, texto, LLMs, etcétera. Existen herramientas como Ollama WebUI (que puedes instalar desde Pinokio) que te ofrecen una interfaz parecida a ChatGPT para tus modelos locales de Ollama, puedes llamar a tu modelo a través de una API, usar RAG, etcétera.
This is the way …
El futuro, en mi humilde opinión, se basa en agentes y el uso de IA local (ambos combinados) para crear una especie de ecosistema de “microservicios” inteligentes locales creando tareas complejas partiendo de tareas más sencillas. Con la llegada de GPUs más potentes (como la RTX 5090), nuevas tecnologías de hardware como Groq, el desarrollo de clústeres accesibles (como los Mac mini) y soluciones de cuantización más eficientes, la capacidad de ejecutar modelos LLM de alta complejidad en hardware asequible será cada vez algo más habitual. Además, herramientas que faciliten el fine-tuning local y las APIs conectadas a servicios propios permitirán que cada usuario o empresa ajuste la IA a su medida.
Figura 19: Libros para Hardware Makers en 0xWord que deberías tener:
Prácticamente cada día entramos en nueva era de la inteligencia artificial, donde la privacidad, el control de costes y la potencia accesible son cada vez más una parte importante a tener en cuenta. El hardware sigue mejorando, el software simplificándose y los modelos avanzando; el objetivo, poder controlar nosotros mismos esta tecnología (democratizarla) que está cambiando día a día toda la Humanidad (por mucho que haya gente que no crea aún en la IA o diga que estamos en un punto muerto o sin salida).
Happy Hardware Hacking Hackers!!!
Autor: Fran Ramírez, es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro «Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)«, del libro «Docker: SecDevOps«, también de «Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.
Contactar con Fran Ramírez en MyPublicInbox |
Powered by WPeMatico