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
245
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.
 

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.673
Ya que hay hartas noticias de DeepSeek. Alguien lo ha probado aca?
Yo. Están interesantes las respuestas con razonamiento incluido. Y ya lo he usado para programar exitosamente. Pasándole un buen prompt, con el contexto necesario, es capaz de generar muy buenas respuestas.
 

Ejecutor_Hanzo

Closcapchon.
Se incorporó
1 Marzo 2006
Mensajes
5.343
Yo. Están interesantes las respuestas con razonamiento incluido. Y ya lo he usado para programar exitosamente. Pasándole un buen prompt, con el contexto necesario, es capaz de generar muy buenas respuestas.
Lo tienes instalado local o usando en web? la web colapsa cada pregunta y media :zippy
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.659
Local funciona bien, aunque a veces se taldea y se demora caleta, habiendo dicho eso, las muy pocas pruebas que he hecho son bastante satisfactorias:

Con Llama3.2: (3b)

IMG_20250129_021040_883.jpg


Con deepseek 7b:

IMG_20250129_021045_219.jpg


En cuanto a velocidad es bastante aceptable este modelo, yo tengo una gfx970 y le pregunté pq el cielo era azul:

IMG_20250129_021346_793.jpg


La respuesta con razonamiento:


Why is the sky blue?
<think>
Alright, so someone asked why the sky is blue. Hmm, that's an interesting question. I remember when I was a kid, I used to think it was because of something like pollution in the air making everything look blue or maybe some magical reason like fairies painting it with blue paint.

But now, as I've grown up and learned more about science, I know there's a much simpler explanation involving physics. So let me try to unpack this step by step.

First off, when sunlight reaches Earth's atmosphere, it doesn't just pass through without any changes. Sunlight is made up of different colors, which we perceive as white light. These colors are part of the visible spectrum, ranging from red to violet.

Now, here's where things get a bit tricky. As sunlight travels through the Earth's atmosphere, it interacts with tiny particles of gas and dust in the air—like molecules of nitrogen and oxygen. These small particles scatter the incoming light.

But not all wavelengths are scattered equally. I remember learning that shorter wavelengths, which correspond to colors like blue and violet, get scattered more than longer wavelengths, which include red and orange. This phenomenon is due to something called Rayleigh scattering.

Rayleigh scattering occurs because the scattering of light by particles in the atmosphere depends inversely on the square of the wavelength of the light. In simpler terms, shorter wavelengths (blue light) are scattered more efficiently than longer ones (red light). That's why we see blue sky instead of red or violet.

However, there's an interesting twist here. The sun is closer to the horizon during sunrise and sunset, which means its light has to pass through a longer path through Earth's atmosphere. This extended scattering path scatters more of the blue and green wavelengths (which combine to make white) away from our line of sight, leaving us with the red hues of sunrise or sunset.

So putting it all together: when sunlight enters Earth's atmosphere, it interacts with tiny particles that scatter shorter wavelengths (blue light) more than longer ones. During midday, when the sun is overhead, blue and green are scattered in all directions evenly, so we see a blue sky. But during sunrise or sunset, as sunlight has to pass through more of the atmosphere, most of the blue light is scattered away, leaving us with the redder hues.

This explains why the sky appears blue on a clear day when there's no haze or pollution to interfere with the light. However, if the atmosphere were thicker (like on Venus) or if there were particles blocking shorter wavelengths more effectively, we might see other colors in the sky.

In summary, the sky is blue because of Rayleigh scattering, which scatters shorter wavelengths of visible light more efficiently through Earth's atmosphere than longer wavelengths. This creates the beautiful blue color we associate with a clear day.
</think>

The sky appears blue due to a phenomenon called Rayleigh scattering. Here's a step-by-step explanation:

1. **Sunlight Composition**: Sunlight consists of various colors, collectively referred to as white light.

2. **Interaction with Atmosphere**: As sunlight enters Earth's atmosphere, it interacts with tiny gas particles (molecules and atoms) present there.

3. **Rayleigh Scattering**: When sunlight scatters off these small particles, the scattering is more effective for shorter wavelengths of light—primarily blue and violet.

4. **Shorter vs. Longer Wavelengths**: Blue light has a shorter wavelength compared to red or orange. Because of Rayleigh scattering, blue light is scattered in all directions more than longer wavelengths like red.

5. **Clear Sky Observation**: On a clear day, the sky appears blue because we are not obstructed by any particles or smog that could scatter other colors.

6. **Red Sunset/Sunset**: During sunrise and sunset, sunlight travels through a greater thickness of Earth's atmosphere. This extended path scatters most of the shorter wavelengths (blue) away from our line of sight, leaving the longer wavelengths—like red and orange—to dominate, resulting in the red hues we observe during these times.

In essence, Rayleigh scattering explains why the sky is blue on a clear day, while the colors observed at sunrise or sunset are due to this extended scattering path.

Saludos.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.659
Pd: la de 32b da respuestas mucho mejores si, pero no tengo el hardware para correr eso :(

IMG_20250129_021719_180.jpg


Saludos.
 

Ejecutor_Hanzo

Closcapchon.
Se incorporó
1 Marzo 2006
Mensajes
5.343
Mañana lo voy a probar programando en php+sql como lo hago usualmente en chatgpt. Lo que me molesta es que a pesar de tener una buena maquina, se demora harto en responder.
 

Ejecutor_Hanzo

Closcapchon.
Se incorporó
1 Marzo 2006
Mensajes
5.343
Yap, tengo novedades.

Desde hace rato que estaba usando ollama con qwen coder 2.5 32b y si bien el rendimiento no es el mejor, salva para cuando se me agotan los tokens de chatgpt. Ahora siempre mi queja era que el rendimiento de mi ollama local era malisimo (muy lento) a pesar de tener hw mas que suficiente para correr holgadamente ias grandes (i9 14, 64gb ram, rtx3090 24vram, NVME 1tb 4th gen) pero descubri que por algun motivo inexplicable, ollama no estaba agarrando mi vga (RTX3090) asi que le reinstale CUDA y mejoro notablemente la velocidad. Aproveche de instalar Deepseek R1 32b con Ollama y lo hace bastante bien, pero ChatGPT o1 lo supera, y o3 mini lo supera por mucho en mi caso de uso (analisis y propuestas de codigo). A pesar de lo anterior, estoy bastante conforme con el rendimiento de R1, ya que agoto rapido los tokens diarios de GPT. Lo estoy usando junto a Chatbox (que a mi gusto, va mas rapido que el metodo a traves de Docker con OpenWebui) todo bajo Windows 11.
 

Ejecutor_Hanzo

Closcapchon.
Se incorporó
1 Marzo 2006
Mensajes
5.343
A medida que voy ocupando mas y mas deepseek y o3-mini, se va notando la enorme diferencia entre ambos modelos. o3 esta muuuuy por delante de R1, el cual al menos localmente, muchas veces no hace caso de las indicaciones especificas que le doy, y hasta se pone a responder en chino, o da codigo que no tiene nada que ver con lo que se le pide.
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.659
A medida que voy ocupando mas y mas deepseek y o3-mini, se va notando la enorme diferencia entre ambos modelos. o3 esta muuuuy por delante de R1, el cual al menos localmente, muchas veces no hace caso de las indicaciones especificas que le doy, y hasta se pone a responder en chino, o da codigo que no tiene nada que ver con lo que se le pide.
qué tal te anda qwen coder en comparación con deepseek?
 
Subir