Saltar al contenido principal

Cómo utilizar DeepSeek Janus-Pro localmente

Aprende a configurar el proyecto DeepSeek Janus-Pro, construir tu propia imagen de Docker y ejecutar la aplicación web Janus localmente en tu portátil.
Actualizado 5 feb 2025  · 13 min de lectura

DeepSeek, startup china de IA, ha trastocado el sector de la IA en todo el mundo, ha borrado 1 billón de dólares de las bolsas estadounidenses y ha sacudido a gigantes tecnológicos como Nvidia y OpenAI. Se ha convertido rápidamente en líder de generación de texto, razonamiento, modelos de visión y generación de imagen. DeepSeek ha lanzado recientemente modelos de última generación, como Janus, modelo multimodal que comprende datos visuales y genera imágenes a partir de texto.

Imagen del autor

En este tutorial descubriremos la serie Janus, configuraremos el proyecto Janus, construiremos un contenedor de Docker para ejecutar el modelo localmente y probaremos sus capacidades con diferentes imágenes y prompts de texto.

Descubre los modelos de DeepSeek que están trastocando el sector de la IA en todo el mundo:

¿Qué es la serie Janus de DeepSeek?

La serie Janus de DeepSeek es una nueva línea de modelos multimodales diseñados para unificar tareas de comprensión visual y generación con marcos innovadores. La serie incluye Janus, JanusFlow y el avanzado Janus-Pro, cada uno basado en la iteración anterior, con notables mejoras en eficiencia, rendimiento y capacidades multimodales.

1. Janus

Janus es un innovador marco autorregresivo que separa la codificación visual en vías distintas para las tareas de comprensión y generación y utiliza una arquitectura de transformadores unificada. Este enfoque resuelve conflictos entre estas funciones, lo que aumenta la flexibilidad y la eficacia. Janus iguala o supera los modelos de tareas específicas, lo que lo convierte en un candidato con muchas posibilidades en el ámbito de los sistemas multimodales de próxima generación.

2. JanusFlow

JanusFlow combina modelos de lenguaje autorregresivos con flujo rectificado, técnica de modelos generativos de última generación. Su diseño minimalista facilita el entrenamiento en marcos de modelos de lenguaje extenso sin necesidad de modificaciones complicadas. JanusFlow demuestra un rendimiento superior en las pruebas si lo comparamos con los enfoques especializados y unificados, lo que amplía eficazmente los límites del modelos de lenguaje visual.

3. Janus-Pro

Janus-Pro mejora los modelos anteriores introduciendo estrategias de entrenamiento optimizadas, mayores conjuntos de datos de entrenamiento y escalado a modelos más grandes. Estos avances mejoran significativamente la comprensión multimodal y el seguimiento de instrucciones de texto a imagen, además de garantizar una generación de texto a imagen más estable.

Prueba de rendimiento de Janus Pro

Fuente: deepseek-ai/Janus

Lee Janus-Pro de DeepSeek: características, comparación con DALL-E 3 y más para obtener más información sobre la serie Janus, cómo acceder a ella y su comparación con DALL-E 3 de OpenAI.

Configuración del proyecto Janus

Janus es un modelo relativamente nuevo y, en la actualidad, no existen versiones cuantificadas ni aplicaciones locales de IA que puedan usarse con facilidad en ordenadores portátiles o de sobremesa. 

Sin embargo, el repositorio de Janus en GitHub proporciona una excelente demo de la aplicación web Gradio para probarla. El reto, sin embargo, es que la demo falla a menudo debido a varios conflictos de paquetes.

Para resolver este problema, en este proyecto modificaremos el código original, construiremos nuestra propia imagen de Docker y ejecutaremos el contenedor localmente utilizando la aplicación Docker Desktop. 

1. Instala Docker Desktop

Para empezar, descarga la versión más reciente de Docker Desktop del sitio web oficial de Docker e instálala.

Nota para usuarios de Windows:

si utilizas Windows, también tendrás que instalar el Subsistema de Windows para Linux (WSL). Abre tu terminal y ejecuta el siguiente comando para instalar WSL:

wsl --install

2. Clona el repositorio de Janus

A continuación, clona el repositorio de Janus de GitHub y ve al directorio del proyecto:

git clone https://github.com/deepseek-ai/Janus.git
cd Janus

3. Modifica el código de la demo

Ve a la carpeta de la demo y abre el archivo app_januspro.py en tu editor de código preferido. Realiza los siguientes cambios:

  1. Cambia el nombre del modelo: sustituye deepseek-ai/Janus-Pro-7B por deepseek-ai/Janus-Pro-1B.

Así cargarás la versión más ligera del modelo, de solo 4,1 GB, que es más adecuada para el uso local.

Modificación del archivo de la aplicación web de janus pro

  1. Actualiza la última línea del script: modifica la función demo.queue como se indica a continuación.
demo.queue(concurrency_count=1, max_size=10).launch(
    server_name="0.0.0.0", server_port=7860
)

Modificación del archivo de la aplicación web de janus pro

Este cambio garantiza la compatibilidad con la URL y el puerto de Docker.

4. Crea una imagen de Docker

Para contenedorizar la aplicación, crea un Dockerfile en el directorio raíz del proyecto. Utiliza el siguiente contenido para el Dockerfile:

# Use the PyTorch base image
FROM pytorch/pytorch:latest

# Set the working directory inside the container
WORKDIR /app

# Copy the current directory into the container
COPY . /app

# Install necessary Python packages
RUN pip install -e .[gradio]

# Set the entrypoint for the container to launch your Gradio app
CMD ["python", "demo/app_januspro.py"]

El Dockerfile hará lo siguiente: 

  • Crear una imagen de Docker utilizando la imagen base de PyTorch.
  • Establecerá el directorio de trabajo dentro del contenedor.
  • Todos los archivos necesarios de tu equipo local se copiarán en el directorio /app dentro del contenedor de Docker.
  • El Dockerfile instalará todas las dependencias necesarias para la aplicación.
  • Por último, abrirá la aplicación Gradio dentro del contenedor.

Creación y ejecución de la imagen de Docker 

Una vez que el Dockerfile esté preparado, crearemos la imagen de Docker y ejecutaremos el contenedor.

Puedes hacer el curso Introducción a Docker para conocer los fundamentos de la creación y la implementación de una imagen de Docker. 

Escribe en el terminal el comando indicado a continuación para crear la imagen de Docker. Este comando utilizará el Dockerfile de la carpeta raíz y asignará el nombre janus a la imagen:

docker build -t janus . 

Se tarda entre 10 y 15 minutos, en función de tu velocidad de Internet, en crear la imagen desde cero. 

creación de la imagen de Docker de Janus

El comando indicado a continuación inicia un contenedor de Docker para la aplicación Janus. Activa la compatibilidad con la GPU, asigna el puerto 7860 para acceder a la aplicación Gradio y garantiza el almacenamiento persistente de los archivos de los modelos de Hugging Face.

docker run -it -p 7860:7860 -d -v huggingface:/root/.cache/huggingface -w /app --gpus all --name janus janus:latest

Si abres la aplicación Docker Desktop y vas a la pestaña "Containers", verás que el contenedor de janus se está ejecutando. Sin embargo, aún no está preparado para usarse.

Ejecución de la imagen de Janus en el contenedor.

Para consultar su progreso, haz clic en el contenedor de janus y, a continuación, ve a la pestaña "Logs". En ella verás que el contenedor está descargando el archivo del modelo desde el Hub de Hugging Face.

Registros en el contenedor de janus

Una vez descargado el modelo, los registros mostrarán un mensaje en el que indicará que la aplicación se está ejecutando.

El modelo se ha descargado correctamente y la aplicación web se está ejecutando.

A continuación, puedes acceder a tu aplicación visitando la siguiente URL con tu navegador: http://localhost:7860/.

Si tienes problemas, consulta la versión actualizada del proyecto Janus en kingabzpro/Janus: Janus-Series.

Prueba del modelo Janus Pro

La aplicación web tiene una interfaz limpia, y todo parece funcionar a la perfección. En esta sección, probaremos las capacidades de comprensión multimodal y generación de texto a imagen de Janus Pro.

Prueba de la comprensión multimodal

Para evaluar la comprensión multimodal del modelo, primero cargamos una imagen del tutorial de DataCamp y pedimos al modelo que la explique. Los resultados son impresionantes: incluso con el modelo de menor tamaño, 1B, la respuesta es muy exacta y detallada.                                                                                                    

Comprensión multimodal de IU de aplicación web Janus

A continuación, cargamos otra imagen y pedimos al modelo que resuma el contenido de una infografía. El modelo comprende el texto de la imagen y proporciona una respuesta muy exacta y coherente. Esto demuestra la excelente capacidad del modelo para procesar e interpretar elementos visuales y textuales.

Comprensión multimodal de IU de aplicación web Janus

Prueba de la generación de texto a imagen

Si te desplazas hacia abajo en la aplicación, verás la sección "Text-to-Image Generation". En ella puedes introducir el prompt que quieras y hacer clic en el botón "Generate Images". El modelo genera cinco variaciones de la imagen, que pueden tardar unos minutos en completarse.

Generaciones de texto a imagen de IU de aplicación web Janus

Los resultados son notables, y producen resultados comparables a los de Stable Diffusion XL en cuanto a calidad y detalle.

Puedes aprender a aplicar ajuste fino a Stable Diffusion XL con DreamBooth y LoRA en tus imágenes personales.

Generaciones de texto a imagen de IU de aplicación web Janus

Probemos otro prompt:

Prompt:

"The image features an intricately designed eye set against a circular backdrop adorned with ornate swirl patterns that evoke both realism and surrealism. At the center of attention is a strikingly vivid blue iris surrounded by delicate veins radiating outward from the pupil to create depth and intensity. The eyelashes are long and dark, casting subtle shadows on the skin around them, which appears smooth yet slightly textured as if aged or weathered over time.

Above the eye, there's a stone-like structure resembling part of classical architecture, adding layers of mystery and timeless elegance to the composition. This architectural element contrasts sharply but harmoniously with the organic curves surrounding it. Below the eye lies another decorative motif reminiscent of baroque artistry, further enhancing the overall sense of eternity encapsulated within each meticulously crafted detail.

Overall, the atmosphere exudes a mysterious aura intertwined seamlessly with elements suggesting timelessness, achieved through the juxtaposition of realistic textures and surreal artistic flourishes. Each component—from the intricate designs framing the eye to the ancient-looking stone piece above—contributes uniquely towards creating a visually captivating tableau imbued with enigmatic allure."

Generaciones de texto a imagen de IU de aplicación web Janus

Una vez más, los resultados son asombrosos. Las imágenes generadas captan los complicados detalles y los elementos artísticos surrealistas descritos en el prompt.

Conclusión

Para probar todas las capacidades del modelo, DeepSeek ha implementado la misma versión de la aplicación web en Hugging Face Spaces. Puedes acceder a ella en Chat With Janus-Pro-7B. Una de las características destacadas del modelo Janus Pro es su gran exactitud, incluso usando variantes de menor tamaño, como el modelo 1B.

En este tutorial hemos explorado Janus Pro, modelo multimodal que comprende imágenes y genera imágenes a partir de prompts de texto. Además, hemos creado nuestra propia solución local para utilizar el modelo de forma privada en la GPU de un portátil. Esta configuración es rápida y eficiente y te permite experimentar libremente con recursos limitados.

Consulta nuestra guía más reciente sobre Ajuste fino de DeepSeek R1 (modelo de razonamiento). Aprenderás a entrenar el modelo de razonamiento con el conjunto de datos de cadena de pensamiento médico para conseguir mejores médicos de IA para el futuro.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.

Temas

Los mejores cursos de IA

Certificación disponible

curso

Introducción a los LLM en Python

4 hr
12K
Aprende los elementos básicos de los LLM y la revolucionaria arquitectura de transformadores en la que se basan.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow