Hace aproximadamente un año atrás me autoimpuse la necesidad de comprar una tarjeta de video que según yo iba a ocupar para convertirme en el amo y señor de la inteligencia artificial. Aprovechando que hace poco se habían lanzado las RTX 40xx de Nvidia, y sumado a que la locura por la minería de criptomonedas había pasado, por fin pude comprarme una tarjeta de video de la generación anterior. Me hice con una RTX 3090 que lleva en mi PC juntando polvo y alegrándose esporádicamente por participar de algún que otro juego casual.
En su momento intenté usar la solución que lanzó Nvidia para tener un chat con IA en forma local, pero la guía era bien como el forro y cuando pregunté la respuesta demoró en llegar, así es que ya había perdido el interés.
Hace poco vi una guía en un canal de Youtube que sigo donde comentaban la posibilidad de ejecutar LLMs en forma local en Apple Silicon. Si puede correr en Apple Silicon, como no va a correr (mejor) en una tarjeta de video dedicada, pensé. Y tenía razón. Ahora vengo a compartir con ustedes el resultado de ese experimento: cómo logré (sin mucho esfuerzo) tener mi propio chat con inteligencia artificial auto-hosteado.
Qué necesitamos:
- Un PC. Esta guía se enfoca en Windows, que es donde uso mi tarjeta de video, pero las mismas herramientas están disponibles para su uso en Linux y macOS.
- Memoria suficiente para ejecutar el modelo que quieran. Los modelos de inferencia se van a cargar en memoria al momento de “chatear” con ellos, así es que mientras más memoria tengan disponible, más grande puede ser el modelo a usar. En mi caso, estoy usando mi tarjeta de video para el procesamiento (RTX 3090, 24Gb ram), así es que ese es mi límite.
- Espacio para almacenar los modelos a descargar.
- Docker con docker-compose
Vamos a la web de Ollama, descargamos y ejecutamos el archivo OllamaSetup.exe Una vez finalizada la instalación nos quedará un ícono de una llamita en el panel derecho de Windows, indicando que Ollama se está ejecutando. Para poder probarlo, vamos a abrir nuestro terminal y ejecutamos `ollama`. Esto nos imprimirá las opciones disponibles en el software.
Aún no podemos hacer mucho más, porque no tenemos un modelo descargado en nuestro equipo local, así es que el siguiente paso es descargar un modelo desde la web de ollama. Para ello, vamos a revisar los modelos que están disponibles en la sección “Models” de su sitio web, donde podrán encontrar algunos filtros que ayudan a revisar cuál se ajusta más a lo que queramos hacer.
Por ejemplo, para tareas de programación yo he estado probando qwen2.5-coder, en su versión con 32 mil millones de parámetros. Si tu reacción instantánea al leer esa última parte fue “quisawea?”, podemos resumirlo en que cada modelo es entrenado para tareas específicas y con una cantidad limitada de datos, conocidos como “parámetros”. A mayor cantidad de parámetros, mayor será la precisión que el modelo podrá entregar en sus respuestas. Los modelos que podemos encontrar en la web de ollama están disponibles en distintos tamaños (entrenados con distinta cantidad de parámetros) y conviene comenzar probando los más pequeños para ir viendo si el hardware es capaz de procesar las peticiones. Recordemos que los modelos serán cargados en memoria y a mayor cantidad de parámetros, mayor deberá ser la cantidad de memoria disponible para soportarlo. Como referencia, la RTX 3090 con sus 24Gb me permite utilizar modelos de hasta 32b. Cuando intenté usar un modelo de 70b el PC se colgó, porque al quedarse corto de memoria en la GPU empezó a transferir datos hacia la memoria del PC. Cuando ambas memorias quedaron llenas, todo se fue a las pailas.
Aquí quiero hacer una aclaración: usé "ChatGPT" en el título porque es lo que ayuda a entender más rápido el propósito de la guía, pero la realidad es que no encontraremos el modelo de ChatGPT disponible en ollama, porque no es un modelo de código abierto.
En fin, una vez seleccionado un modelo debemos ejecutar `ollama run nombreDelModelo:tamaño`. Por ejemplo, para ejecutar llama 3.2 (modelo creado por Meta A.K.A. Facebook) en su versión de 3 mil millones de parámetros debemos ejecutar `ollama run llama3.2:3b`. Esto desencadenará la descarga del modelo a nuestro equipo y lo dejará disponible en unos minutos, dependiendo de nuestra conexión a internet.
Una vez que la descarga ha concluido, veremos un prompt esperando a que le enviemos nuestras consultas al modelo:
Y ya podremos comenzar a chatear:
Para terminar la conversación debemos escribir `/bye` y el prompt se cerrará.
Evidentemente, esta forma de comunicarnos con el modelo no es la más cómoda: dependemos de tener la sesión iniciada en el PC en que ollama está instalado, debemos usarlo mediante el terminal, cuya interfaz no es la más amigable, y no podemos compartir el poder de cómputo de nuestro PC con otras personas. Aquí es cuando llega al rescate OpenWebUI. OpenWebUI es otro proyecto gratuito y de código abierto que también podemos hostear de forma local y que nos permitirá tener una aplicación web montada sobre ollama, la que nos permitirá comunicarnos con nuestros modelos usando una interfaz de usuario más amigable, vale decir, nuestros queridos chats web de siempre. El resultado final es algo así:
La forma más sencilla de instalar OpenWebUI es con docker-compose. No me extenderé respecto al uso de Docker o docker-compose, pueden encontrar guías para eso en internet. La misma documentación de Docker es súper buena.
Acá les dejaré el contenido de mi compose para que puedan utilizarlo. Si no tienen una tarjeta de video Nvidia pueden eliminar la sección “deploy”:
services:
# ----------------------------------------
# Open Web UI
# ----------------------------------------
openwebui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
volumes:
- open-webui:/app/backend/data
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
open-webui:
Una vez guardado simplemente debemos ejecutar `docker compose up -d` en el mismo directorio donde está nuestro archivo compose, y listo! Esto iniciará el servidor web y podremos acceder a nuestra aplicación en el puerto 3000. Debemos configurar un usuario y contraseña que serán utilizados para autenticarnos como administrador y luego de eso ya podemos experimentar enviando consultas a nuestro nuevo modelo:
Cada nuevo modelo que descarguen con ollama aparecerá en el menú superior izquierdo, lo que nos permitirá ir probando distintas opciones y seleccionar finalmente el que nos de los mejores resultados. Hay un montón de modelos disponibles en la web de ollama.
Otra de las ventajas de usar OpenWebUI es que nos permite crear múltiples usuarios, por lo que podemos compartir con otros nuestros modelos descargados. Si hacen click sobre su nombre de usuario (esquina superior derecha) podrán acceder al panel del administrador, desde donde se pueden configurar los usuarios, grupos y sus distintos niveles de acceso a los modelos que tenemos instalados en el servidor.
Con esto me despido, espero que les haya gustado la guía y puedan sacarle provecho a los modelos disponibles, y seguir experimentando con las versiones nuevas que van apareciendo.
¡Dejen sus comentarios indicando qué tal les ha funcionado!
Última modificación por un moderador: