Guía paso a paso para instalar y utilizar una versión local de DeepSeek R1 en tu servidor casero con Ubuntu Server 24.04
En éste tutorial: Te guiaré paso a paso para instalar y utilizar una versión local de DeepSeek R1 en tu servidor casero con Ubuntu Server 24.04 y una tarjeta gráfica NVIDIA RTX 4060 Ti 16 GB (en mi caso). Además, configuraremos un entorno web para acceder a DeepSeek desde la red local (por ejemplo, 192.168.1.100
).
Requisitos Previos
- Hardware:
- Servidor con Ubuntu Server 24.04.
- Tarjeta gráfica NVIDIA RTX 4060 Ti 16 GB.
- Conexión a la red local (por ejemplo,
192.168.1.100
).
- Software:
- Docker (para contenerizar la aplicación).
- NVIDIA Container Toolkit (para usar la GPU en Docker).
- Un entorno web (usaremos Flask para simular una interfaz como la de DeepSeek).
Paso 1: Instalar Docker y NVIDIA Container Toolkit
Actualizar el sistema:
sudo apt update && sudo apt upgrade -y
Instalar Docker:
sudo apt install docker.io -y
sudo systemctl enable docker
sudo systemctl start docker
Instalar NVIDIA Container Toolkit:
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
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
Installing the NVIDIA Container Toolkit
Verificar la instalación de NVIDIA:
sudo docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi
Deberías ver la información de tu tarjeta gráfica NVIDIA RTX 4060 Ti.
Paso 2: Configurar DeepSeek R1 en un Contenedor Docker
Crear un directorio para el proyecto:
mkdir ~/deepseek-r1
cd ~/deepseek-r1
Crear un archivo Dockerfile
:
nano Dockerfile
Agrega el siguiente contenido:
# Usar una imagen base compatible con CUDA
FROM nvidia/cuda:12.3.2-runtime-ubuntu22.04
# Actualizar e instalar herramientas necesarias, incluyendo python3-venv
RUN apt update && apt install -y \
apt-utils \
software-properties-common \
python3 \
python3-pip \
python3-venv \
git \
&& apt clean && rm -rf /var/lib/apt/lists/*
# Crear el directorio de trabajo
WORKDIR /app
# Copiar los archivos locales dentro del contenedor
COPY . /app
# Instalar dependencias de Python
RUN pip3 install --no-cache-dir -r requirements.txt
# Crear un entorno virtual
RUN python3 -m venv /env
# Especificar el comando por defecto al ejecutar el contenedor
CMD ["/env/bin/python3", "app.py"]
Crear un archivo requirements.txt
:
nano requirements.txt
Agrega las dependencias necesarias (ajusta según el repositorio de DeepSeek R1):
torch>=2.0.0+cu12.0 --extra-index-url https://download.pytorch.org/whl/cu120
transformers>=4.30.0
flask>=2.0.0
gradio>=3.0.0
Crear un archivo app.py
:
nano app.py
Agrega el siguiente contenido (esto es un ejemplo básico de una interfaz web con Flask):
from flask import Flask, request, jsonify
import torch
from transformers import pipeline
app = Flask(__name__)
# Cargar el modelo de DeepSeek R1 (reemplaza con el modelo correcto)
model = pipeline("text-generation", model="deepseek-ai/deepseek-r1")
@app.route("/", methods=["GET"])
def home():
return "DeepSeek R1 está funcionando. Usa /generate para generar texto."
@app.route("/generate", methods=["POST"])
def generate():
data = request.json
prompt = data.get("prompt", "")
output = model(prompt, max_length=100)
return jsonify(output)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
Paso 3: Construir y Ejecutar el Contenedor
Construir la imagen Docker:
sudo docker build -t deepseek-r1 .
Ejecutar el contenedor:
sudo docker run --gpus all -d -p 5000:5000 --name deepseek-r1 deepseek-r1
Verificar que el contenedor esté en ejecución:
sudo docker ps
Paso 4: Acceder a DeepSeek R1 desde la Red Local
Obtener la dirección IP del servidor:
hostname -I
Deberías ver algo como <strong>192.168.1.100</strong>
.
Acceder a la interfaz web:
Abre un navegador en cualquier dispositivo conectado a la red local.
Ingresa la dirección <strong>http://192.168.1.100:5000</strong>
.
Deberías ver el mensaje: «DeepSeek R1 está funcionando. Usa /generate para generar texto.»
Probar la generación de texto:
Puedes usar herramientas como curl
o Postman para enviar una solicitud POST a <strong>http://192.168.1.100:5000/generate</strong>
con un JSON como:
{
"prompt": "Hola, ¿cómo estás?"
}
La respuesta será el texto generado por DeepSeek R1.
Paso 5: Mejorar la Interfaz Web (Opcional)
Si deseas una interfaz web más amigable (como la que usamos ahora), puedes usar Streamlit o Gradio en lugar de Flask. Aquí te dejo un ejemplo con Gradio:
Instalar Gradio:
Si no lo has echo en el paso anterior, agrega <strong>gradio</strong>
al archivo <strong>requirements.txt</strong>
:
gradio>=3.0.0
Modificar app.py
:
import gradio as gr
from transformers import pipeline
# Cargar el modelo de DeepSeek R1 con trust_remote_code=True
model = pipeline("text-generation", model="deepseek-ai/deepseek-r1", trust_remote_code=True)
def generate_text(prompt):
output = model(prompt, max_length=100)
return output[0]['generated_text']
# Crear la interfaz de Gradio
iface = gr.Interface(
fn=generate_text,
inputs="text",
outputs="text",
title="DeepSeek R1",
description="Genera texto con DeepSeek R1."
)
iface.launch(server_name="0.0.0.0", server_port=5000)
Reconstruir y ejecutar el contenedor:
sudo docker build -t deepseek-r1 .
sudo docker run --gpus all -d -p 5000:5000 --name deepseek-r1 deepseek-r1
Acceder a la nueva interfaz:
Abre <strong>http://192.168.1.100:5000</strong>
en tu navegador.
Verás una interfaz gráfica para generar texto.
Algunos atajos:
parar:
sudo docker stop deepseek-r1
borrar:
sudo docker rm deepseek-r1
reconstruir:
sudo docker build -t deepseek-r1 .
ejecutar:
sudo docker run --gpus all -d -p 5000:5000 --name deepseek-r1 deepseek-r1
Y el log:
sudo docker logs deepseek-r1
Conclusión
Ahora tienes DeepSeek R1 funcionando en tu servidor casero con Ubuntu Server 24.04 y una GPU NVIDIA RTX 4060 Ti. Puedes acceder a la interfaz web desde cualquier dispositivo en tu red local (192.168.1.100
). Si necesitas más funcionalidades, como autenticación o almacenamiento de datos, puedes expandir el proyecto. ¡Disfruta de tu IA local! 😊