¿No sería genial si tuvieras tu propia IA tipo ChatGPT? ¿Y fuera gratis, y pudieras tenerla en tu propio ordenador sin tener que entrenar a la IA? Y también sería genial que no tuvieras que comprarte un ordenador caro, ¿verdad? Pues adivina qué. Pues sí. Hace poco construí un servidor doméstico con algunas funciones interesantes que me ayudarían con mis tareas cotidianas. Quería documentar todo lo que configuré para este chatbot y decidí dividirlo con las diferentes funcionalidades que configuré con él. Así que esta es la primera parte de ese proyecto. Esta fue una de las cosas más divertidas que hice para ese servidor.
Tabla de contenidos
Lo que he creado
Ahora la idea de este proyecto era hacer el servidor lo más económico posible, tratando de no gastar nada extra y fui con el viejo equipo que tenía y del que casi decido deshacerme. Os animo a que intentéis hacer lo mismo ya que es super divertido, pero si queréis usar vuestro propio ordenador en vez de un servidor aparte, esto también puede funcionar.
Yo lo hice en un viejo PC Dell, con un disco duro de 1TB, 8GB de RAM y sin GPU (lo sé, una locura). Lo mejor fue que pude usar mi propio equipo, sin comprar nada extra, y eso incluía el software. Si tienes un ordenador de gama alta con una gran tarjeta gráfica, notarás una diferencia de rendimiento, pero no te preocupes si no es así. Yo pude hacerlo con sólo una CPU y ninguna GPU avanzada.
OS
Así que esta guía no es para Mac OS. Definitivamente hay una manera de hacer esto, pero no lo hice en un Mac, así que mi documentación aquí es para Linux y Windows con WSL. Si no estás seguro de lo que es WSL, echa un vistazo a mi artículo sobre WSL aquí: Ejecutar Linux en tu ordenador Windows.
Por lo que he leído, esto funciona muy bien en los nuevos Macs. Así que si tengo en mis manos uno tal vez lo intente y documentar eso.
He configurado mi servidor con Ubuntu y ¡funciona de maravilla! Ahora, basta de hablar. ¡Pongamos esto en marcha!
Large Language Model (LLM)
Ahora lo primero que vamos a hacer, es instalar algo llamado Ollama que nos permitirá utilizar LLMs. Luego, una vez que lo tengamos instalado, vamos a utilizar un modelo llamado Llama.
¿Qué es Large Language Model te preguntarás? Bueno, es esencialmente la IA que aprende, entiende y genera el lenguaje humano. Es con lo que hablas cuando utilizas un chatbot, como ChatGPT.
El modelo que vamos a utilizar para este proyecto se llama Llama. Desarrollado y entrenado por Meta. Hay Llama, Llama2 y más recientemente Llama3.
Esto es lo realmente genial. Meta entrenó estos modelos con equipos valorados en millones de dólares. Utilizaron potentes ordenadores para construir, entrenar y poner este modelo a disposición del público… ¡gratis! (Por ahora, quién sabe qué pasará en el futuro).
Sí, puedes tener un modelo, entrenado mis potentísimos y carísimos ordenadores por una enorme empresa, Meta, al alcance de tu mano. En tu propio ordenador. Genial, ¿verdad? Deja que te enseñe cómo.
Empecemos
Ok, vamos. Como he mencionado, esto fue configurado en mi servidor Ubuntu, así que vamos a hacer esto con la línea de comandos. Si estás en Windows, sigue adelante y configura WSL.
Ollama recientemente hizo una instalación disponible para Windows. Aún no la he probado, por ahora continuemos con Linux/WSL.
Ollama
Lo primero que vamos a conseguir es Ollama. Vayamos a su sitio web y obtengamos los archivos de instalación. Irás a ollama.ai y haz clic en descargar, luego en Linux.
A continuación, abramos un terminal y sigamos las buenas prácticas actualizando nuestros paquetes:
sudo apt update
Ahora, vuelve a la página de descarga de Ollama, copia y pega el comando en tu terminal y ¡voilá! Ollama comenzará a instalarse.
Estupendo. Eso es todo para Ollama. Ahora vamos a configurar Llama. Por lo tanto, el siguiente comando que vamos a entrar es este de aquí:
ollama pull llama3
Deja que haga su trabajo…
OK, ahora que esto está hecho, vamos a empezar a utilizar Llama3. Introduce el siguiente comando:
ollama run llama3
Ahora, ¡llama3 está funcionando! Estás listo para interactuar con una IA, directamente en tu ordenador. Puedes estar completamente desconectado, ya que esto puede funcionar tanto si tienes conexión a Internet como si no. Lo cual es genial.
Juega un rato y diviértete.
Web UI
Muy bien, ya tienes Llama3 instalado en tu ordenador, corriendo y funcionando. Has jugado con él y has probado algunos prompts.
Pero… hacer esto en la terminal no se ve tan bonito, ¿verdad? Pues claro que no. Tan fascinante como esto es, todavía no tenemos la misma sensación como ChatGPT como mencioné al principio.
Así que, ¡pongamos en marcha esta Web UI! Vamos a usar algo llamado OpenWeb UI. Esta es una fantástica interfaz web que funciona con Ollama.
Esto será configurado en un contenedor Docker. Así que para poner esto en marcha, primero tendremos que configurar Docker.
Docker
Si nunca has utilizado Docker, ¡no te preocupes! No necesitas ser un experto para estos próximos pasos. Además, te guiaré con qué comandos introducir.
Todo lo que voy a hacer aquí está en el sitio web de Docker. Tienen una gran documentación. Puedes consultarla aquí.
De todos modos, vamos a continuar. En primer lugar, vamos a configurar el repositorio apt de Docker. Para ello, utilice estos comandos que muestro a continuación:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Ok, ahora vamos a instalar la última versión de Docker con este comando aquí:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Por último, asegurémonos de que la instalación se ha realizado correctamente ejecutando este comando:
sudo docker run hello-world
Abrir la configuración de WebUI
Excelente, ahora que tenemos Docker instalado. Vamos a seguir adelante y configurar nuestra Web UI.
Vamos a configurar un contenedor Docker para Open WebUI que se integrará con Ollama. Para ello, vamos a ejecutar este comando:
sudo docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Ahora empezará a configurar Open WebUI. Para confirmar que se ha hecho correctamente, puedes ejecutar este comando aquí:
sudo docker ps
Echa un vistazo a continuación para comprobarlo:
Como puedes ver, bajo NAMES muestra open-webui. IMAGE mostrará que ha extraído con éxito la imagen de Open WebUI. Ahora que sabemos que se está ejecutando … ¡echemos un vistazo para ver cómo se ve!
Probar la interfaz
De acuerdo, sé que es largo, ¡pero quédate conmigo! Ya casi estamos.
Abre un navegador y en la barra de direcciones, introduce 127.0.0.1:8080 para acceder a tu nueva interfaz.
Primero, deberías ver una pantalla de registro como esta:
Vas a querer registrarte para obtener una cuenta. Esto es sólo para esta instancia en particular y no una cuenta en línea. Por defecto, la primera cuenta que configures será automáticamente la de administrador.
Una vez hecho esto, deberías acceder a tu interfaz web. En la parte superior izquierda, asegúrate de seleccionar tu modelo. En este caso, es Llama3.
Y ya está. Echa un vistazo al aspecto de la interfaz al iniciar un nuevo chat.
Genial, ¿verdad? Esto se ve mucho mejor que usar la Terminal, tiene una sensación similar a Chat GPT y mejor aún, ¡es privado! Como he dicho, esto funcionará tanto si estás conectado como desconectado.
Esto podría ser una buena opción para las personas que trabajan en empresas que no se les permite utilizar ChatGPT debido a razones de privacidad de datos.
Esto se está haciendo largo, pero haré otro artículo sobre las características interesantes como usuario administrador. Mientras tanto, ¡diviértete con tu nuevo chatbot!