Últimamente, existe la necesidad de un servicio de chatbot privado como alternativa completa a ChatGPT de OpenAI. Por lo tanto, decidí implementar uno en casa y hacerlo accesible para todos los miembros de mi familia junto con mi impresora de red y NAS (OpenMediaVault) .
En el pasado, solía recomendar a la gente que usara la serie Llama para tareas en inglés y la serie Qwen para tareas en chino. No existía ningún modelo de código abierto que fuera lo suficientemente sólido para tareas multilingües en comparación con los modelos propietarios (GPT/Claude).
Sin embargo, como todos sabemos, las cosas han cambiado recientemente. He estado usando DeepSeek-V2 ocasionalmente cada vez que me cansaba de Qwen2.5 y me he quedado atrás con DeepSeek V2.5 y V3 debido a la falta de hardware. Pero DeepSeek no me decepcionó, ¡R1 tiene un rendimiento impresionante y proporciona tan solo 1,5 B!
Esto significa que podemos ejecutarlo incluso en CPU con una experiencia de usuario considerable. Como muchas personas tienen GPU para juegos, la velocidad no es un problema. Hacer que los LLM locales procesen documentos e imágenes cargados es una gran ventaja, ya que OpenAI limita este uso para las cuentas gratuitas.
Aunque instalar Open WebUI con soporte Ollama incluido es muy fácil con el comando oficial de una línea:
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
Pero conseguir que RAG (búsqueda web) funcione no es fácil para la mayoría de las personas, por eso me gustaría encontrar alguna solución innovadora.
Como mencioné en mi última publicación , Harbor es un excelente banco de pruebas para experimentar con diferentes conjuntos de LLM. Pero no solo es excelente para eso, también es una solución integral para alojar LLM locales con RAG funcionando de manera inmediata. Entonces, comencemos a implementarlo desde cero y siéntase libre de omitir pasos, ya que la mayoría de las personas no comienzan con la instalación del sistema operativo.
Al igual que anteriormente , realice el proceso de instalación utilizando debian-11.6.0-amd64-netinst.iso
Agregue a sudoer usermod -aG sudo username
y luego reinicie
(Opcional) Agregar intercambio adicional
fallocate -l 64G /home/swapfile chmod 600 /home/swapfile mkswap /home/swapfile swapon /home/swapfile
y hacer que el archivo de intercambio sea persistente nano /etc/fstab
UUID=xxxxx-xxx swap swap defaults,pri=100 0 0 /home/swapfile swap swap defaults,pri=10 0 0
Verifique con swapon --show
o free -h
Deshabilitar el controlador Nouveau
bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf" bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf" update-initramfs -u update-grub reboot
Instalar dependencias
apt install linux-headers-`uname -r` build-essential libglu1-mesa-dev libx11-dev libxi-dev libxmu-dev gcc software-properties-common sudo git python3 python3-venv pip libgl1 git-lfs -y
(Opcional) Realizar la desinstalación si es necesario
apt-get purge nvidia* apt remove nvidia* apt-get purge cuda* apt remove cuda* rm /etc/apt/sources.list.d/cuda* apt-get autoremove && apt-get autoclean rm -rf /usr/local/cuda*
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-debian11-12-4-local_12.4.1-550.54.15-1_amd64.deb sudo dpkg -i cuda-repo-debian11-12-4-local_12.4.1-550.54.15-1_amd64.debsudo cp /var/cuda-repo-debian11-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo add-apt-repository contrib sudo apt-get update sudo apt-get -y install cuda-toolkit-12-4 sudo apt install libxnvctrl0=550.54.15-1 sudo apt-get install -y cuda-drivers
Instale NVIDIA Container Toolkit ya que Harbor está basado en Docker
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
Luego sudo apt-get update
y sudo apt-get install -y nvidia-container-toolkit
Realizar una acción posterior a la instalación de cuda nano ~/.bashrc
export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Luego sudo update-initramfs -u
, ldconfig
o source ~/.bashrc
para aplicar los cambios
Después de reiniciar, confirme con nvidia-smi
y nvcc --version
Instalar Miniconda (opcional, no para puerto)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && sudo chmod +x Miniconda3-latest-Linux-x86_64.sh && bash Miniconda3-latest-Linux-x86_64.sh
# 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/debian/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/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Realizar una instalación posterior para Docker sin sudo
sudo groupadd docker sudo usermod -aG docker $USER newgrp docker docker run hello-world
git clone https://github.com/av/harbor.git && cd harbor ./harbor.sh ln
Verificar con harbor --version
Agregue soporte RAG a los valores predeterminados con harbor defaults add searxng
Utilice harbor defaults list
para verificar, ahora hay tres servicios activos: ollama
, webui
, searxng
Ejecute harbor up
para activar estos servicios en Docker
Utilice harbor ps
como docker ps
y harbor logs
para ver los registros de relaves
Ahora, el frontend open-webui funciona en 0.0.0.0:33801
y se puede acceder a él desde http://localhost:33801
o desde clientes de LAN con la dirección IP del servidor.
Supervise el uso de VRAM con watch -n 0.3 nvidia-smi
Monitorea el registro con harbor up ollama --tail
o harbor logs
Todos los comandos de ollama son utilizables, como harbor ollama list
Es hora de acceder desde otros dispositivos (computadora de escritorio/móvil) para registrar una cuenta de administrador y descargar modelos ahora.
Después de iniciar sesión con la cuenta de administrador, haga clic en el ícono de avatar en la parte superior derecha, abra Admin Panel
y luego Settings
, o simplemente acceda a través de http://ip:33801/admin/settings.
Haga clic en Models
y, en la parte superior derecha, haga clic en Manage Models
, que parece un botón de descarga.
Coloque deepseek-r1
o cualquier otro modelo en el cuadro de texto a continuación. Pull a model from Ollama.com
y haga clic en el botón de descarga en el lado derecho.
Una vez descargado el modelo, es posible que sea necesario actualizarlo y el modelo recién descargado podrá usarse en el menú desplegable de la página New Chat
(inicio).
Ahora, no solo se ejecuta una alternativa de chatbot a ChatGPT, sino también una alternativa de API completamente funcional a OpenAI API, ¡además de una alternativa de motor de búsqueda privado a Google!
Se puede acceder a webui dentro de LAN a través de: http://ip:33801
Se puede acceder a olama dentro de LAN a través de: http://ip:33821
Se puede acceder a searxng dentro de LAN a través de: http://ip:33811
Llame a la API de Ollama con cualquier aplicación con integración de API LLM:
http://ip:33821/api/ps http://ip:33821/v1/models http://ip:33821/api/generate http://ip:33821/v1/chat/completionsb