sábado, 1 de febrero de 2025

Instalando DeepSeek con interfaz web en docker y soporte nvidia


En este post vamos a instalar DeepSeek usando docker y aprovechando la gráfica nvidia.

¿Por qué usando contenedores? Por que no soy cochino instalando cosas que no sé qué haran en mi sistema y no tengo tiempo de ponerme a leer el script de instalación.

Aquí te dejo el video para que veas cómo lo realizo:


## Pre requisitos

Instala los pre-requisitos para usar tu tarjeta gríafica:

libnvidia-container nvidia-container-toolkit

## Configuración de Pre requisitos

Para que el contenedor pueda acceder al GPU tenemos que configurar nvidia-container-toolkit y docker:

editamos el archivo /etc/nvidia-container-runtime/config.toml y agregamos la siguiente línea:

```bash
    no-cgroups = true
```

Ejecutamos los siguientes comandos:

```bash
    $ sudo nvidia-ctk runtime configure --runtime=docker
    $ sudo systemctl restart docker
```

Nota: a open-webui lo llamaré solamente webui

Vamos a crear dos carpetas en nuestro directorio de trabajo:

```bash
    $ mkdir ollama
    $ mkdir webui
```

Dentro de estas carpetas guardaremos los datos de ollama y webui respectivamente.

Ahora iniciamos el contenedor de ollama:

```bash
    $ docker network create net-ollama

    $ docker run -d --network net-ollama --gpus=all  -p 11434:11434 -v ./ollama:/root/.ollama --name=ollama ollama/ollama

    $ docker run -d --network net-ollama --name webui -p 3000:8080 -v ./webui:/app/backend/data -e OLLAMA_BASE_URL=http://ollama:11434 --add-host=host.docker.internal:host-gateway  ghcr.io/open-webui/open-webui:cuda
```

Lo que hacemos es crear una red para que los contenedores puedan comunicarse entre ellos y aislarlos del resto de contenedores que tengamos en nuestra máquina.

Si bien puedes instalar open-webui y desde ahí instalar los modelos, prefiero trabajarlos de forma independiente.

## Instalación de DeepSeek

Para instalar DeepSeek en el contenedor de ollama:

```bash
    $ docker exec -it ollama ollama run deepseek-r1:7b
```

Esto tomará un tiempo dependiendo del ancho de banda que tengas, ya que descargará el modelo DeepSeek de 7b.
Nota: Si tu computadora cuenta con recursos limitados puedes elegir modelos más pequeños:

    1.5b: Uso mínimo de recursos.
    7b: Rendimiento y requisitos de recursos equilibrados.
    8b, 14b, 32b: Opciones intermedias para un rendimiento más alto.

El tamaño de descarga para estos modelos varía:

    1.5b: ~2.3GB
    7b: ~4.7GB
    70b: ~40GB+

La lista completa está [aquí](https://ollama.com/library/deepseek-r1)

Listo tenemos instalado DeepSeek en nuestro contenedor de ollama, puedes empezar a hacer las preguntas que quieras.

# Interacción con DeepSeek

Ahora con tu navegador entra a la ruta http://localhost:3000 rellena los campos que se te solicitan, con esto podrás empezar a hacer preguntas a DeepSeek.

Así se verá la interfaz y arriba estará seleccionado el modelo de deepseek que instalaste:
## Bonus

Aquí te dejo un docker-compose.yaml por si quieres hacer todo de una sola vez:

```yaml
services:
  webui:
    image: ghcr.io/open-webui/open-webui:cuda
    container_name: webui
    ports:
      - 3000:8080
    volumes:
      - ./webui:/app/backend/data
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
    extra_hosts:
      - "host.docker.internal:host-gateway"
    depends_on:
      - ollama

  ollama:
    image: ollama/ollama
    container_name: ollama
    expose:
      - 11434/tcp
    ports:
      - 11434:11434/tcp
    healthcheck:
      test: ollama --version || exit 1
    volumes:
      - ./ollama:/root/.ollama
```

Nota: Solo recuerda que después de ejecutar el docker-compose.yaml tienes que ejecutar el comando para instalar DeepSeek:

```bash
    $ docker exec -it ollama ollama run deepseek-r1:7b
```

No hay comentarios.: