Como instalar y utilizar DeepSeek R1 en tu servidor casero

Spread the love

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

  1. 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).
  2. 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! 😊

Deja un comentario