DeepSeek Janus-Pro 中文教程:从 1B 模型开始安全验证
Janus 用一套模型体系处理图像理解和图像生成。官方在 2025-01-27 发布 Janus-Pro-1B 与 Janus-Pro-7B;仓库还包含 Janus-1.3B 和生成路径不同的 JanusFlow-1.3B。
1. 为什么要把视觉编码拆成两路
图像理解需要把物体、文字和空间关系映射到语言问题;图像生成需要把视觉内容编码成可预测并能解码回图片的表示。Janus-Pro 为理解使用 SigLIP 类视觉编码器,为生成使用视觉 tokenizer 与生成适配器,两路再进入统一自回归 Transformer。这样既共享语言骨干,又减少同一个视觉编码器同时承担两种目标的冲突。
JanusFlow 是另一条分支,它把生成端换成 rectified flow 并额外依赖 diffusers。不要把 Janus-Pro 的类、权重和生成函数直接套到 JanusFlow。
2. 先选 1B 还是 7B
| 模型 | 适合的第一步 | 注意 |
|---|---|---|
| Janus-Pro-1B | 验证安装、图片输入、回答格式和基本生成流程 | 质量可能低于 7B,但试错成本较低 |
| Janus-Pro-7B | 1B 已经跑通且业务样本显示质量不足后再测 | 权重、显存和推理成本更高 |
| Janus-1.3B | 复现初代 Janus | 历史分支,不代表 Janus-Pro |
| JanusFlow-1.3B | 研究自回归理解加 rectified flow 生成 | 代码路径与额外依赖不同 |
官方示例默认把模型转成 bfloat16 并调用 CUDA。本文没有验证 CPU、Apple Silicon 或低精度量化路径,不应假设它们可直接运行。
3. 固定仓库与安装环境
git clone https://github.com/deepseek-ai/Janus.git
cd Janus
git rev-parse HEAD
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
项目要求 Python 3.8 以上,核心依赖包括 PyTorch、Transformers、timm、accelerate、sentencepiece 与 einops。官方 requirements 固定 torch 2.0.1,而 pyproject 允许 torch 2.0.1 以上;团队环境应自己锁定经过测试的组合,避免每台机器解析出不同版本。
4. trust_remote_code 先审后开
官方示例调用 AutoModelForCausalLM.from_pretrained(..., trust_remote_code=True)。这允许 Transformers 下载并执行模型仓库的自定义 Python 代码。正确顺序是先下载并审查模型仓库文件,记录模型 revision,再在没有云密钥、生产数据或宿主目录写权限的容器里加载。
# 示意:把 MODEL_REVISION 换成已审查的模型提交
export MODEL_ID="deepseek-ai/Janus-Pro-1B"
export MODEL_REVISION="<reviewed-model-commit>"
# 加载代码时显式传 revision,并保留 trust_remote_code 风险记录
# from_pretrained(MODEL_ID, revision=MODEL_REVISION, trust_remote_code=True)
固定仓库 commit 只锁住本地 Janus 代码,不能自动锁住 Hugging Face 模型仓库。两边都要记录。
5. 第一轮验收记录什么
只用自有、无敏感信息的一张图片和一个固定提示。记录 GPU 型号、驱动、PyTorch、Transformers、模型 revision、随机种子、峰值显存、加载时间、生成时间和完整输出。理解任务检查事实错误与 OCR;生成任务检查提示遵循、重复图样、不合适内容和文件元数据。
模型输出不是事实来源,也没有自动的版权或内容安全保证。若要进入产品,还需要内容审核、滥用防护、来源说明、删除机制和针对业务数据的评测集。
6. 本地演示不要直接公网暴露
python -m pip install -e ".[gradio]"
python demo/app_januspro.py
这是官方本地演示入口,不是生产服务配置。先保持本机访问,限制上传大小与文件类型,隔离模型进程,确认日志不保存敏感图片。要对外提供服务时,再补身份验证、速率限制、队列、内容审核和资源配额。
7. 许可证要分两份看
仓库代码使用 MIT。模型权重受 DeepSeek Model License 约束,官方说明符合条款时允许商业使用,但许可证包含特定用途限制。分发权重、微调衍生模型或提供托管 API 前,要根据实际用途审查模型条款;代码 MIT 不能覆盖权重许可。
8. 和 Show-o 怎么比较
相比 Show-o,Janus 把理解与生成的视觉编码路径拆开,再共享自回归 Transformer;初代 Show-o 把文本自回归和图像离散扩散放进一个 Transformer,Show-o2 又加入 flow matching 和视频能力。复现 DeepSeek 1B/7B 权重时选 Janus,研究图像、视频和混合模态统一生成时,应把 Show-o2 纳入同一套评测。
9. 当前版本与验证边界
可核对的最新模型公告是 2025-01-27 的 Janus-Pro。pyproject 版本为 1.0.0,仓库当前 HEAD 日期是 2025-02-01;没有官方 Git tag 可把三者绑定为一次正式发布。
验证边界:未验证下载大小、显存、速度、输出质量、基准复现、Gradio、FastAPI、内容安全或商业授权适配。所有性能和质量都要在自己的硬件与数据上复测。
这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
近期变化与关注原因
同一模型体系处理图片问答、描述和文本生成图像,Janus-Pro 官方提供 1B 与 7B 两个规模。理解路径和生成路径使用不同视觉编码方式,再交给统一 Transformer 处理,用来减少两类任务对视觉表征的冲突。
适合谁用
适合研究统一多模态模型、比较图像理解与生成共享骨干的效果、在受控环境做图片问答或文本生成图片原型。它不适合未经内容审核的公网生成服务,也不应直接处理敏感图片、未知大文件或需要确定性结论的高风险任务。
原教程未展开的系统信息
核心功能
理解与生成统一
同一模型体系处理图片问答、描述和文本生成图像,Janus-Pro 官方提供 1B 与 7B 两个规模。
视觉编码解耦
理解路径和生成路径使用不同视觉编码方式,再交给统一 Transformer 处理,用来减少两类任务对视觉表征的冲突。
多模型分支
仓库同时包含 Janus、Janus-Pro 与 JanusFlow。三者的模型类、生成过程和额外依赖不同,不能混用同一段示例。
常见问题
Janus-Pro-1B 和 7B 应该先试哪个?
先试 1B,用一组自有图片确认环境、接口、显存和输出格式;只有质量不足且硬件预算允许时再试 7B。官方示例默认 CUDA 与 bfloat16,CPU 路径没有在本教程验证。
trust_remote_code=True 有什么风险?
它允许 Transformers 执行模型仓库中的自定义 Python 代码。应先审查文件、固定仓库和模型 revision,并在没有生产凭据的隔离环境运行,不能直接追随浮动 main。
Janus 的代码和模型都是 MIT 吗?
不是。仓库代码使用 MIT,模型权重受 DeepSeek Model License 约束。该模型许可证允许符合条款的商业使用,但包含用途限制;分发或托管前要逐条审查。
运行本地 Gradio 演示可以直接开放到公网吗?
不建议直接开放。先保持本机监听并限制上传大小,增加身份验证、内容审核、速率限制和日志脱敏;未知图片也要按不可信输入处理。
Janus-Pro 是 2026 年的新版本吗?
不是。官方 README 记录的 Janus-Pro 发布日是 2025-01-27,仓库 HEAD 为 2025-02-01。pyproject 的 1.0.0 是包版本,不能当作 2026 年模型发布。