paint-brush
Ejecute Deepseek (o cualquier otro modelo de IA) en su hogar con unas pocas líneas de códigopor@techshinobi
Nueva Historia

Ejecute Deepseek (o cualquier otro modelo de IA) en su hogar con unas pocas líneas de código

por Tech Shinobi5m2025/01/30
Read on Terminal Reader

Demasiado Largo; Para Leer

Cómo crear un servicio de chatbot local privado con RAG funcionando de manera inmediata.
featured image - Ejecute Deepseek (o cualquier otro modelo de IA) en su hogar con unas pocas líneas de código
Tech Shinobi HackerNoon profile picture
0-item

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

Preparación del sistema (opcional)

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*


Instalar cuda-toolit y 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

Docker y puerto

Instalar Docker

 # 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

Instalación manual de Harbor

 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.

Uso de LLM local

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