跳至主要内容

如何在本地使用 DeepSeek Janus-Pro

学习如何设置 DeepSeek Janus-Pro 项目、构建您自己的 Docker 镜像,并在笔记本电脑上本地运行 Janus Web 应用。
· 13分钟 阅读

使用 AI 探索

DeepSeek 是一家中国 AI 创业公司,已撼动全球 AI 行业,令美国股市蒸发 1 万亿美元市值,并令 Nvidia 和 OpenAI 等科技巨头为之震动。它迅速在文本生成、推理、视觉模型和图像生成等领域崭露头角。DeepSeek 近期发布了多款最前沿的模型,其中包括 Janus,这是一种能够理解视觉数据并将文本生成图像的多模态模型。

图片作者自制

在本教程中,我们将了解 Janus 系列,设置 Janus 项目,构建一个用于本地运行模型的 Docker 容器,并使用多种图像与文本提示来测试其能力。

了解正在颠覆全球 AI 行业的 DeepSeek 模型:

什么是 DeepSeek Janus 系列?

DeepSeek Janus 系列是一条全新的多模态模型产品线,采用创新框架统一视觉理解与生成任务。该系列包括 Janus、JanusFlow,以及更先进的 Janus-Pro。每一代都在效率、性能和多模态能力上相较前一代有显著提升。

1. Janus

Janus 是一种创新的自回归框架,在统一的 Transformer 架构下,将视觉编码为理解与生成任务分离为不同路径。此方法化解了两种角色之间的冲突,提升了灵活性与有效性。Janus 的表现可与任务特定模型持平或更优,使其成为下一代多模态系统的有力竞争者。

2. JanusFlow

JanusFlow 将自回归语言建模与 rectified flow(先进的生成建模技术)相结合。其极简设计便于在大语言模型框架内进行训练,无需复杂修改。与专用或统一方法相比,JanusFlow 在多项基准上展现出更优性能,有效推动了视觉-语言建模的边界。

3. Janus-Pro

Janus-Pro 通过引入优化的训练策略、扩充训练数据集并扩展更大模型规模,对前代模型进行增强。这些改进显著提升了多模态理解与文本到图像的指令跟随能力,同时确保文本到图像的生成更加稳定。

Janus Pro benchmark

来源:deepseek-ai/Janus

参阅 DeepSeek 的 Janus-Pro:功能、与 DALL-E 3 对比及更多,进一步了解 Janus 系列、获取方式以及与 OpenAI 的 DALL-E 3 的比较。

设置 Janus 项目

Janus 属于相对较新的模型,目前还没有量化版本或可在笔记本或台式机上轻松使用的本地 AI 应用。

不过,GitHub 上的 Janus 仓库提供了一个优秀的 Gradio Web 应用演示,任何人都可以尝试。但问题在于,该演示经常因多个软件包冲突而运行失败。

为解决这一问题,在本项目中,我们将修改原始代码,构建自己的 Docker 镜像,并通过 Docker Desktop 应用在本地运行容器。

1. 安装 Docker Desktop

首先,从Docker 官方网站下载并安装最新版本的 Docker Desktop。

Windows 用户注意:

如果您使用的是 Windows,还需要安装适用于 Linux 的 Windows 子系统(WSL)。打开终端并运行以下命令安装 WSL:

wsl --install

2. 克隆 Janus 仓库

接着,从 GitHub 克隆 Janus 仓库并进入项目目录:

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

3. 修改演示代码

进入 demo 文件夹,在您偏好的代码编辑器中打开 app_januspro.py 文件。进行以下修改:

  1. 更改模型名称:将 deepseek-ai/Janus-Pro-7B 替换为 deepseek-ai/Janus-Pro-1B。

这将加载更轻量的模型版本,大小仅为 4.1 GB,更适合本地使用。

Modifying the janus pro web application file

  1. 更新脚本最后一行:将 demo.queue 函数修改为如下所示:
demo.queue(concurrency_count=1, max_size=10).launch(
    server_name="0.0.0.0", server_port=7860
)

Modifying the janus pro web application file

此更改可确保与 Docker 的 URL 和端口兼容。

4. 创建 Docker 镜像

要将应用容器化,请在项目根目录创建 Dockerfile。在 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"]

Dockerfile 将:

  • 基于 PyTorch 基础镜像创建 Docker 镜像。
  • 在容器中设置工作目录。
  • 将本机的所有必要文件复制到 Docker 容器内的 /app 目录。
  • 安装应用所需的全部依赖。
  • 最后,在容器内启动 Gradio 应用。

构建并运行 Docker 镜像

当 Dockerfile 就绪后,我们将构建 Docker 镜像并运行容器。

您可以学习Introduction to Docker 课程,了解构建与部署 Docker 镜像的基础知识。

在终端中输入以下命令创建 Docker 镜像。该命令会使用位于根文件夹的 Dockerfile,并将镜像命名为 janus:

docker build -t janus . 

从零开始构建镜像大约需要 10 到 15 分钟,具体取决于您的网络速度。

building the Janus Docker image

以下命令将为 Janus 应用启动一个 Docker 容器。它启用 GPU 支持,映射端口 7860 以访问 Gradio 应用,并为 Hugging Face 模型文件提供持久化存储。

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

如果您打开 Docker Desktop 应用并进入“Containers”选项卡,您会看到 janus 容器正在运行。不过,它尚未可以使用。

Running the Janus Image in the container.

要查看进度,请点击 janus 容器,然后转到“Logs”选项卡。在这里,您会注意到容器正在从 Hugging Face Hub 下载模型文件。

Logs on janus Container

模型成功下载后,日志会显示应用已在运行的消息。

The model have successfully downloaded and web application is running.

随后,您可以在浏览器中访问以下 URL 来使用该应用:http://localhost:7860/。

如果您遇到问题,请查看更新版 Janus 项目:kingabzpro/Janus: Janus-Series。

测试 Janus Pro 模型

该 Web 应用界面简洁,一切运行顺畅。在本节中,我们将测试 Janus Pro 的多模态理解与文本到图像生成能力。

测试多模态理解

为评估模型的多模态理解,我们首先从 DataCamp 教程中加载一张图片,并请模型进行解释。结果令人印象深刻——即便是较小的 1B 模型,输出也高度准确且细节到位。                                                     

Janus Web application UI Multimodal Understanding

接着,我们加载另一张图片,请模型概述一幅信息图的内容。模型成功识别了图中的文本,并给出高度准确、连贯的回答。这表明其在处理与理解视觉和文本元素方面具有很强能力。

Janus Web application UI Multimodal Understanding

测试文本到图像生成

向下滚动应用,您会看到“文本到图像生成”部分。在这里,您可以输入任意提示词并点击“Generate Images”按钮。模型会生成五个变体,可能需要几分钟时间。

Janus Web application UI Text to image generations

效果相当出色,生成质量与细节水平可与 Stable Diffusion XL 相媲美。

您还可以学习如何在个人图片上使用 DreamBooth 和 LoRA 微调 Stable Diffusion XL。

Janus Web application UI Text to image generations

我们再试一个提示词:

提示词:

“这幅图呈现一只设计精巧的眼睛,置于环形背景之上,背景装饰着华美的旋纹图案,兼具写实与超现实气息。视觉中心是一只格外鲜明的蓝色虹膜,细致的纹理自瞳孔向外放射,营造出深度与张力。睫毛修长黝黑,在其周围皮肤上投下细微阴影;肌理平滑却略带岁月痕迹与风化质感。

眼睛上方是一处仿石材的结构,类似古典建筑的一部分,为画面增添神秘与永恒的优雅层次。该建筑元素与周围的有机曲线形成强烈却和谐的对比。眼睛下方则有另一处装饰性图案,带有巴洛克艺术的韵味,进一步强化了作品在每个精雕细琢的细节中所蕴含的永恒感。

整体氛围散发出神秘气息,并与象征永恒的元素无缝交织;这通过真实质感与超现实笔触的并置得以实现。从框架眼睛的繁复纹样,到上方仿古的石质构件,每个组成部分都独具贡献,共同塑造出一幅极具吸引力且充满谜样魅力的画面。”

Janus Web application UI Text to image generations

结果再次令人惊艳。生成的图像很好地捕捉了提示词所描述的繁复细节与超现实艺术元素。

结语

为全面测试模型能力,DeepSeek 已在 Hugging Face Spaces 部署了同款 Web 应用。您可访问 Chat With Janus-Pro-7B。Janus Pro 的一大亮点是在较小变体(如 1B 模型)下也能保持很高的准确性。

在本教程中,我们探索了 Janus Pro,这是一款既能理解图像、又能将文本提示生成图像的多模态模型。此外,我们还在笔记本电脑 GPU 上构建了私有本地方案。该方案快速高效,可在有限资源下自由试验。

查看我们的最新指南:微调 DeepSeek R1(推理模型)。您将学习如何在医疗推理链数据集上训练该推理模型,为未来构建更优秀的 AI 医生。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题