Portada! Guía: tu propio ""chatGPT"" en local.

Ollama.jpeg

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
¿Y ahora qué? Pues bien, ahora vamos a instalar Ollama. Ollama es una especie de “gestor” de modelos. Nos va a permitir descargar distintos modelos grandes de lenguaje (LLMs) de código abierto que podremos usar en forma local para “chatear” con ellos mediante nuestro emulador de terminal.

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.

1734220261246.png


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.

1734220471148.png


Una vez que la descarga ha concluido, veremos un prompt esperando a que le enviemos nuestras consultas al modelo:

1734220486970.png


Y ya podremos comenzar a chatear:

1734220503625.png


Para terminar la conversación debemos escribir `/bye` y el prompt se cerrará.

1734220525690.png


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í:

1734220564450.png


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:

1734220642145.png


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.

1734220661382.png


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.

1734220677765.png


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:

cliobrando

Capo
Se incorporó
6 Mayo 2021
Mensajes
236
He estado programando con qwen2.5-coder y la verdad me tiene bastante decepcionado. Es bueno haciendo sugerencias de solucion de codigo, pero es terrible haciendo analisis de codigo proporcionado y ni hablar cuando le das la orden de implementar la solucion en tu codigo base o que siga instrucciones precisas (por muy sencilla que sea la solucion) cosa que chatgpt, cuando no colapsa, lo hace brillantemente. Tambien hay que decir que la velocidad no es muy buena, no se si hay opciones para que la IA ocupe todos los recursos necesarios para que sus repuestas sean mas rapidas. (Ojo que tengo un intel i9 de 14, RTX 3090 y 64GB en RAM con NVME de 4ta gen)

Seguire jugando a ver si dando las instrucciones de cierta manera hace mejor el trabajo.
El problema con QWEN, es que para obtener resultados mas precisos tienes que utilizar el modelo de 72B, o sino anda peor que ChatGPT con las mismas preguntas, pero incluso usando el modelo de 72B el codigo muchas veces es basura.
 
Subir