Cómo montar tu propio servidor de Inteligencia Artificial: Modelos Open Source, Parámetros y Hardware NVIDIA
La privacidad es algo que nos preocupa (y cada vez más) en general, y en el ámbito de la Inteligencia Artificial en particular, también es importante para las personas y las organizaciones. Cada vez que escribimos un prompt y lo enviamos a servicios en la nube como ChatGPT o Claude, estamos compartiendo datos que, potencialmente, pueden almacenarse y reutilizarse.
Esto es particularmente preocupante cuando la información enviada es sensible, ya que existe el riesgo de que termine en un Data-leak, afectando tanto a empresas como a individuales. Además, algunos modelos en la nube utilizan los datos recibidos para mejorar sus sistemas mediante re-entrenamientos, lo que podría provocar que esa información apareciera inesperadamente si alguien realiza las preguntas adecuadas en el futuro.
Figura 1: Cómo montar tu propio servidor de Inteligencia Artificial.
Modelos Open Source, Parámetros y Hardware NVIDIA
Por otro lado, está, cómo no, el factor económico. Los servicios de IA en la nube suelen cobrar por uso, basándose en la cantidad de tokens procesados por cada consulta o interacción. Para desarrolladores o pequeñas empresas que quieren integrar IA en sus aplicaciones, estos costos pueden acumularse rápidamente y convertirse en una barrera complicada. En este artículo - que tiene dos partes - veremos un recorrido sobre diferentes opciones para esto.
Figura 2: Libro de Machine Learning aplicado a Ciberseguridad de Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández |
Sin embargo, no todo está perdido: los modelos LLM de código abierto ofrecen una alternativa asequible. Estas soluciones nos permiten desplegar IA de forma local (on-premise), eliminando la dependencia de terceros y ofreciendo un control total sobre los datos y los costes (básicamente, el precio de la luz eléctrica). Algo que muchos hechos hecho también para entrenar nuestros modelos de Machine Learning, con lo que para investigadores es una solución perfecta.
Está claro que, el rendimiento de estas alternativas, dependerá del hardware disponible, pero con la infraestructura adecuada, es posible construir entornos locales que pueden ejecutar proyectos de gran complejidad sin poner en peligro nuestra privacidad y tampoco quedarnos sin fondos. Pero vayamos por partes.
Los modelos LLM Open Source
Un modelo LLM (Large Language Model) de código abierto es un modelo de IA entrenado con grandes cantidades de texto para realizar tareas de procesamiento de lenguaje natural (NLP), como generación de texto, traducción, clasificación, entre muchas otras. Al ser de código abierto, los pesos del modelo, el código fuente y, en muchos casos, los datos o el proceso de entrenamiento están disponibles públicamente, permitiendo a cualquiera personalizar, adaptar o reutilizar el modelo para sus propios proyectos.
Está claro que, el rendimiento de estas alternativas, dependerá del hardware disponible, pero con la infraestructura adecuada, es posible construir entornos locales que pueden ejecutar proyectos de gran complejidad sin poner en peligro nuestra privacidad y tampoco quedarnos sin fondos. Pero vayamos por partes.
Los modelos LLM Open Source
Un modelo LLM (Large Language Model) de código abierto es un modelo de IA entrenado con grandes cantidades de texto para realizar tareas de procesamiento de lenguaje natural (NLP), como generación de texto, traducción, clasificación, entre muchas otras. Al ser de código abierto, los pesos del modelo, el código fuente y, en muchos casos, los datos o el proceso de entrenamiento están disponibles públicamente, permitiendo a cualquiera personalizar, adaptar o reutilizar el modelo para sus propios proyectos.
La gran mayoría de estos modelos se basan en arquitecturas de Transformers, que ya conocemos bien, que fueron introducidas por Vaswani et al. en 2017, y que utilizan mecanismos de autoatención para analizar el contexto global de las palabras en una secuencia, capturando relaciones complejas entre términos en largos rangos de texto.
El funcionamiento de un LLM se divide en dos fases principales: preentrenamiento y ajuste fino (fine-tuning). En el preentrenamiento, el modelo aprende patrones lingüísticos generales a partir de grandes corpus de texto no supervisados, utilizando tareas como predicción de palabras “enmascaradas” (BERT) o predicción autoregresiva (GPT).
El funcionamiento de un LLM se divide en dos fases principales: preentrenamiento y ajuste fino (fine-tuning). En el preentrenamiento, el modelo aprende patrones lingüísticos generales a partir de grandes corpus de texto no supervisados, utilizando tareas como predicción de palabras “enmascaradas” (BERT) o predicción autoregresiva (GPT).
Posteriormente, en el fine-tunning, el modelo es adaptado a tareas concretas mediante conjuntos de datos etiquetados, lo que mejora su precisión en dominios específicos. Estos tienen una escalabilidad exponencial (el rendimiento tiende a mejorar con el aumento del tamaño del modelo y los datos de entrenamiento), capacidades multi-idioma, y flexibilidad para realizar múltiples tareas con el mismo modelo base.
Los “Billions” son la clave …
Es importante dejar claro un tema antes de continuar: los “Billions”. Los “billions” son esa “B” que podemos ver cuando se describe cada modelo. La “B” en los modelos LLM, como 7B, 13B o 70B, nos muestra la cantidad de billones (americanos) de parámetros que tiene el modelo, donde un parámetro es un coeficiente ajustable aprendido durante el entrenamiento.
Estos parámetros determinan cómo el modelo procesa la entrada (texto) y genera la salida (respuesta), y esto es clave para su capacidad de comprensión y generación de lenguaje natural. En términos técnicos y simplificando mucho, los parámetros son los pesos y sesgos de las capas de la arquitectura Transformer, ajustados a lo largo de millones de iteraciones de entrenamiento para minimizar la pérdida en tareas como predicción de texto. Un mayor número de parámetros permite al modelo capturar patrones más complejos y sutiles en los datos de entrenamiento, mejorando su rendimiento en tareas más complejas.
Pero claro, el aumento en el número de parámetros tiene implicaciones directas en el rendimiento, el coste y la infraestructura necesaria. Modelos más grandes, como uno de 70B, requieren una cantidad exponencialmente mayor de memoria GPU (mínimo aproximadamente 40 GB por GPU para inferencia eficiente) y un mayor tiempo de cómputo, tanto para entrenamiento como para inferencia (no os preocupéis de momento por esto, lo veremos en el siguiente apartado).
Los “Billions” son la clave …
Es importante dejar claro un tema antes de continuar: los “Billions”. Los “billions” son esa “B” que podemos ver cuando se describe cada modelo. La “B” en los modelos LLM, como 7B, 13B o 70B, nos muestra la cantidad de billones (americanos) de parámetros que tiene el modelo, donde un parámetro es un coeficiente ajustable aprendido durante el entrenamiento.
Estos parámetros determinan cómo el modelo procesa la entrada (texto) y genera la salida (respuesta), y esto es clave para su capacidad de comprensión y generación de lenguaje natural. En términos técnicos y simplificando mucho, los parámetros son los pesos y sesgos de las capas de la arquitectura Transformer, ajustados a lo largo de millones de iteraciones de entrenamiento para minimizar la pérdida en tareas como predicción de texto. Un mayor número de parámetros permite al modelo capturar patrones más complejos y sutiles en los datos de entrenamiento, mejorando su rendimiento en tareas más complejas.
Esto impacta en la calidad de las respuestas, especialmente en contextos complejos, pero también introduce latencia y un consumo energético. En cambio, modelos más pequeños como 7B son más rápidos y pueden ejecutarse en hardware más asequible, como un Mac M1 con 16 GB de RAM o una GPU de consumo medio como una NVIDIA RTX 3060 con 12GB de VRAM. Pero mejor vamos a centramos en el hardware para ver qué necesitaremos.
El hardware: Opción NVIDIA
Ya sabemos las restricciones y características que nos ofrecen los modelos de código abierto, ahora necesitamos la electrónica para poder ejecutarlos. Aquí es donde debemos tener en cuenta varias variables. La primera es tener clara la inversión que vamos a hacer y la segunda decidir la posible arquitectura base (x86 vs ARM o dicho de otra manera, NVIDIA vs Apple Silicon). Como todo en la vida, a más dinero mejor ;) pero vamos a ver algunas que no sean una locura de inversión. Cada una de ellas tiene sus ventajas y sus problemas.
Si seleccionamos una arquitectura clásica basada en NVIDIA y x86, el primer paso es tener un buen ordenador. Los ordenadores tipo “gaming” son una gran opción ya que estos suelen llevar una buena configuración de hardware de base. Es importante que tengamos un buen microprocesador de arquitectura x86 ya sea Intel o AMD pero seguro que esto lo vemos mejor con un ejemplo. ¡Ojo!, por supuesto hay más opciones y más sencillas, esto es sólo una recomendación basada en mi experiencia.
El hardware: Opción NVIDIA
Ya sabemos las restricciones y características que nos ofrecen los modelos de código abierto, ahora necesitamos la electrónica para poder ejecutarlos. Aquí es donde debemos tener en cuenta varias variables. La primera es tener clara la inversión que vamos a hacer y la segunda decidir la posible arquitectura base (x86 vs ARM o dicho de otra manera, NVIDIA vs Apple Silicon). Como todo en la vida, a más dinero mejor ;) pero vamos a ver algunas que no sean una locura de inversión. Cada una de ellas tiene sus ventajas y sus problemas.
Si seleccionamos una arquitectura clásica basada en NVIDIA y x86, el primer paso es tener un buen ordenador. Los ordenadores tipo “gaming” son una gran opción ya que estos suelen llevar una buena configuración de hardware de base. Es importante que tengamos un buen microprocesador de arquitectura x86 ya sea Intel o AMD pero seguro que esto lo vemos mejor con un ejemplo. ¡Ojo!, por supuesto hay más opciones y más sencillas, esto es sólo una recomendación basada en mi experiencia.
Y nada mejor mi que mi caso concreto ;) que es un buen equipo para empezar. Mi servidor de IA también lo utilizo para otras tareas más genéricas (virtualización) y es un AMD Ryzen 9 3900X, con 64GB de RAM y 3TB de disco duro. La tarjeta gráfica que tengo es una RTX 4070 con 12GB de VRAM (estoy esperando a las nuevas 5090 que salen a principios de 2025). La pegatina de Alan Turing también es importante ponerla ;)
Como he comentado antes, esta configuración no la tengo exclusivamente para IA, ya que quiero aprovechar el hardware. Por eso tengo instalado Proxmox como hipervisor (consejo de mi gran amigo Rafael Troncoso, alias "Tuxotron"). La ventaja es que me sirve para gestionar máquinas virtuales y usando la característica “GPU Passthrough” puedo conectar la tarjeta gráfica a la VM que necesite ejecutar IA en local. De esta forma puedo estar levantando y apagando las VM con diferentes sistemas operativos (eso sí, sólo una VM puede gestionar la gráfica a la vez).
Figura 7: Mi servidor local de IA y VMs, con la pegatina de Alan Turing.
Como he comentado antes, esta configuración no la tengo exclusivamente para IA, ya que quiero aprovechar el hardware. Por eso tengo instalado Proxmox como hipervisor (consejo de mi gran amigo Rafael Troncoso, alias "Tuxotron"). La ventaja es que me sirve para gestionar máquinas virtuales y usando la característica “GPU Passthrough” puedo conectar la tarjeta gráfica a la VM que necesite ejecutar IA en local. De esta forma puedo estar levantando y apagando las VM con diferentes sistemas operativos (eso sí, sólo una VM puede gestionar la gráfica a la vez).
Figura 8: NVidia A100
Esta configuración es más que suficiente para levantar modelo 7B y alguno más a una velocidad decente de ejecución. Aquí la clave está en la memoria VRAM de la tarjeta gráfica, ya que es lo que te permitirá levantar y hacer inferencias a modelos grandes.
El problema de esta configuración x86 basada en NVIDIA, como podéis haber imaginado, es el precio. Una 4090 con 24GB de VRAM está alrededor de los 2.000€ aunque es posible que el precio baje cuando salgan las nuevas 5090. De todas formas, hay soluciones decentes 3090 TI con 24GB a buen precio e incluso podrías conectarlas usado NVLink o SLI y así aumentar la VRAM y su potencia que te permitiría hasta ejecutar modelos de 70B, como puedes ver en el vídeo siguiente.
Ya si queremos opciones más profesionales como una A100 por ejemplo con 80GB de VRAM ya estamos hablando de precios que oscilan entre los 10.000 y 20.000€ aproximadamente. Pero hay otras opciones, y hay más cosas que tener en cuenta para montar tu propio servidor de Inteligencia Artificial, lo vemos en la siguiente parte.
Happy 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 |
No hay comentarios:
Publicar un comentario