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
220
Algunas detalles:
- La cantidad de parametros de un modelo no es necesariamente proporcional al tamaño del dataset.
- Los modelos de Ollama por defecto estan quantizados en 4Bits (un modelo de 7B de parametros debe usar unos 4 o 5Gb de VRAM), puedes usar los tags para otras especificaciones.
- En LLM, modelos de 7B quantizados en 4 bits son suficiente para uso general. Mas parametros son utiles cuando quieres hacer rentrenamiento o ajustarlos para tareas especificas.
 

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.668
Algunas detalles:
- La cantidad de parametros de un modelo no es necesariamente proporcional al tamaño del dataset.
- Los modelos de Ollama por defecto estan quantizados en 4Bits (un modelo de 7B de parametros debe usar unos 4 o 5Gb de VRAM), puedes usar los tags para otras especificaciones.
- En LLM, modelos de 7B quantizados en 4 bits son suficiente para uso general. Mas parametros son utiles cuando quieres hacer rentrenamiento o ajustarlos para tareas especificas.
Muchas gracias por la corrección!
 

Ejecutor_Hanzo

Closcapchon.
Se incorporó
1 Marzo 2006
Mensajes
5.331
Tengo una 3090 que ni uso para jugar, y justo estoy usando harto las IA para programar, asi que voy a probar a esto y en una de esas dejo de pagar por chatgpt :zippy
 

Stormbringer

Maestro Chasquilla
Se incorporó
27 Octubre 2008
Mensajes
81
Oie pero que buen post, agradecido! Por ahora estaba trabajando solo con stability matrix, a ver si le doy una miradita. A ver como anda en una 2060 6GB mobile.
 

doncoyote

The ignored one
Se incorporó
23 Mayo 2006
Mensajes
2.740
Excelente guia!
Creo que sería importante agregar algunas preguntas triviales para hacer el entendimiento más transversal:

¿Por qué montaría un "chatgpt" local si puedo consumir los distintos bots disponibles en linea?
¿Qué ventajas o desventajas puede ofrecerme más allá del desafío de armarlo localmente?
 

Carlos E. Flores

Zombie
Miembro del Equipo
MOD
Se incorporó
17 Marzo 2005
Mensajes
28.548
Excelente guia!
Creo que sería importante agregar algunas preguntas triviales para hacer el entendimiento más transversal:

¿Por qué montaría un "chatgpt" local si puedo consumir los distintos bots disponibles en linea?
¿Qué ventajas o desventajas puede ofrecerme más allá del desafío de armarlo localmente?

¿Tendrá la misma cantidad de respuestas erróneas que los otros?

Pregunto por que he estado probando harto tiempo las AI y aún no consigo que respondan bien en algunas tareas aún cuando les doy la respuesta en un segundo, tercer, cuarto y quizás cuántos intentos.

Por ejemplo, contar de una lista ciertos parámetros.
 

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.668
Excelente guia!
Creo que sería importante agregar algunas preguntas triviales para hacer el entendimiento más transversal:

¿Por qué montaría un "chatgpt" local si puedo consumir los distintos bots disponibles en linea?
¿Qué ventajas o desventajas puede ofrecerme más allá del desafío de armarlo localmente?
Ventajas:

  • Una de las ventajas es lo que comentó @Ejecutor_Hanzo: dejar de pagar por la versión de pago de alguno de esos servicios en línea.
  • Los que no son de pago generalmente tienen restricciones a la cantidad de peticiones que puedes hacer en cierto periodo de tiempo, así es que ahí tienes otra ventaja: no tienes restricciones a la cantidad de peticiones que puedes hacer.
  • Servicios como chatGPT o Claude cobran un valor más alto para sus modelos más avanzados, por lo que en la versión gratuita sólo podrás acceder a los modelos más básicos (que suelen tener desventaja en benchmarks, en comparación a los modelos más avanzados).
  • El servicio se puede configurar para funcionar off-line, en cuyo caso el modelo funcionará sólo con datos locales. Esta es una ventaja si estás interesado en la privacidad: tus datos/prompts no van a terminar en el servidor de terceros, no serán usados para entrenar otros modelos ni hay riesgo de data leaks.

Desventajas:

  • Tienes un costo inicial más alto. Si no tienes hardware disponible, necesitas comprar un PC con hardware que sea capaz de llevar a cabo esta tarea.
  • Va a subir la cuenta de la luz.
  • Los modelos open source carecen de funcionalidades avanzadas que se pueden encontrar en modelos cerrados/de pago, como por ejemplo la posibilidad de controlar acciones en el PC mediante instrucciones en lenguaje natural, algo que hace poco anunció Anthropic.

¿Tendrá la misma cantidad de respuestas erróneas que los otros?

Pregunto por que he estado probando harto tiempo las AI y aún no consigo que respondan bien en algunas tareas aún cuando les doy la respuesta en un segundo, tercer, cuarto y quizás cuántos intentos.

Por ejemplo, contar de una lista ciertos parámetros.

Cada modelo ha sido entrenado con distintos datos, así es que debes ir testeando diferentes modelos para ver cuál se ajusta más a tu uso. Otro punto que hará la diferencia es si se activa o no el acceso a internet para hacer consultas. Acá dejo un ejemplo de cómo distintos modelos dan diferentes respuestas a una misma consulta. o incluso el mismo modelo, cuando se le da o se le quita acceso a las búsquedas en internet.

1734448722953.png


Una forma de evitarse la paja de ir testeando modelo por modelo es buscar benchmarks en internet, como este: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard#/


Edit: actualizado con las desventajas.
 
Última modificación:

Carlos E. Flores

Zombie
Miembro del Equipo
MOD
Se incorporó
17 Marzo 2005
Mensajes
28.548
Ya, pero para ese tipo de cosas cualquier buscador es más acertivo.

Hasta donde sé, estas AI son modeladores de lenguaje (o como se diga), por lo que en lo que es tareas diferentes como que aún no los han potenciado bien (salvo en multimedia) no se les puede pedir mucho.
 

cliobrando

Capo
Se incorporó
6 Mayo 2021
Mensajes
220
Opinion personal:
Creo que una de las principales ventajas de correr un modelo como ollama, codellama, etc. localmente en el pc tiene que ver con privacidad y compliance.
Por ejemplo con Langchain puedes crear un RAG (Retrieval Augmented Generation), le dices a ollama o llamacpp que se entrenen usando documentos que tengas almacenados en alguna parte, y asi puedes obterner respuestas desde la base de vectores que se genera.

No solamente pueden ser libros, pueden ser planillas de exel, PDF, etc. que seria una locura subirlos al ChatGPT o a otra parte (cosa que la gente hace actualmente). Con eso puedes pedirle que te haga el resumen del libro, o que te diga cuales fueron los resultados economicos de una planilla, y asi.

Si tienes un server en la casa puedes crear tu propio servidor de inferencias, y generar pipelines entre modelos. Ej que la salida de texto del ollama pase por un T2S y se convierta en audio.
 

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.668
Ya, pero para ese tipo de cosas cualquier buscador es más acertivo.

Hasta donde sé, estas AI son modeladores de lenguaje (o como se diga), por lo que en lo que es tareas diferentes como que aún no los han potenciado bien (salvo en multimedia) no se les puede pedir mucho.
"Contar de una lista de ciertos parámetros" también es algo que se puede hacer de otras formas, a mano, por ejemplo. ¿cuál es tu punto?

Te di un enlace a un benchmark donde puedes comprobar los modelos que tienen mejores resultados en tareas matemáticas, si ese es el uso que le quieres dar. Puedes descargar alguno y probar o buscar más documentación o reviews, si estás interesado en obtener más información al respecto.
 

senbe

Asesino de ferrules.
Miembro del Equipo
MOD
Se incorporó
25 Julio 2006
Mensajes
12.058
Pregúntenle la edad de Oveja Negra, a ver si le achunta haha

Fuera de bromas. ¿Esto se puede implementar en un entorno educativo? Como ayudante de estudio.
 

mario2130

Miembro Regular
Se incorporó
22 Junio 2023
Mensajes
31
Excelente aporte amigo. Sin duda el mejor aporte para mi es la privacidad, y la capacidad de pasarles promp enormes. Lo único penca que no tengo hw como dicen arriba y nica me correra en mi notebook
 

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.668
Excelente aporte amigo. Sin duda el mejor aporte para mi es la privacidad, y la capacidad de pasarles promp enormes. Lo único penca que no tengo hw como dicen arriba y nica me correra en mi notebook
Corre hasta en un raspberry pi, mientras tengas memoria suficiente.
 
Subir