Model reference · open weights
Janus-Pro is an open-weight language model from deepseek-community. Janus-Pro-1B (BF16) weighs 4.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the deepseek-community/Janus-Pro-1B model card, 2026-10-01
What it is
| Released by | deepseek-community |
|---|---|
| Released | 2025-03-01 |
| Parameters | 2.1B |
| VRAM | 4.2 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 8K each | |||
| RTX 3060 12 GB | 3 | all 16K | 11.6 GB |
| RTX 4060 Ti 16 GB | 5 | all 16K | 15.4 GB |
| RTX 3090 24 GB | 10 | all 16K | 23.4 GB |
| RTX 4090 24 GB | 10 | all 16K | 23.4 GB |
| RTX 5090 32 GB | 15 | all 16K | 31.0 GB |
| L40S 48 GB | 23 | all 16K | 44.0 GB |
| A100 80 GB | 44 | all 16K | 78.2 GB |
| H100 80 GB | 42 | all 16K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 52 | all 16K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 60 | all 16K | 107 GB |
| H200 141 GB | 79 | all 16K | 138 GB |
| B200 180 GB | 103 | all 16K | 176 GB |
| 2× RTX 3060 12 GB tensor parallel | 9 | all 16K | 11.6 GB a card |
| 2× RTX 4060 Ti 16 GB tensor parallel | 14 | all 16K | 15.4 GB a card |
| Requests at once | 8K tokens each |
|---|---|
| 1 | 7.7 GB |
| 5 | 14.1 GB |
| 8 | 18.9 GB |
| 16 | 31.8 GB |
| 32 | 57.6 GB |
| 64 | 109 GB |
One card, with vLLM's small-card settings.
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| Janus-Pro-1B (above) ↗ | 2.1B | BF16 | 4.2 GB | RTX 3060 12 GB |
| Janus-Pro-7B ↗ | 7.4B | BF16 | 14.8 GB | 2× RTX 3060 12 GB |
From the model card
Janus-Pro is a novel autoregressive framework that unifies multimodal understanding and generation. It addresses the limitations of previous approaches by decoupling visual encoding into separate pathways, while still utilizing a single, unified transformer architecture for processing. The decoupling not only alleviates the conflict between the visual encoder’s roles in understanding and generation, but also enhances the framework’s flexibility. Janus-Pro surpasses previous unified model and matches or exceeds the performance of task-specific models. The simplicity, high flexibility, and effectiveness of Janus-Pro make it a strong candidate for next-generation unified multimodal models.
Janus-Pro is a unified understanding and generation MLLM, which decouples visual encoding for multimodal understanding and generation. Janus-Pro is constructed based on the DeepSeek-LLM-1.5b-base/DeepSeek-LLM-7b-base.
For multimodal understanding, it uses the SigLIP-L as the vision encoder, which supports 384 x 384 image input. For image generation, Janus-Pro uses the tokenizer from here with a downsample rate of 16.
Here is an example of visual understanding with a single image.
import torch
from PIL import Image
import requests
from transformers import JanusForConditionalGeneration, JanusProcessor
model_id = "deepseek-community/Janus-Pro-1B"
# Prepare input for generation
messages = [
{
"role": "user",
"content": [
{'type': 'image', 'url': 'http://images.cocodataset.org/val2017/000000039769.jpg'},
{'type': 'text', 'text': "What do you see in this image?"}
]
},
]
# Set generation mode to 'text' to perform text generation
processor = JanusProcessor.from_pretrained(model_id)
model = JanusForConditionalGeneration.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
generation_mode="text",
tokenize=True,
return_dict=True,
return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)
output = model.generate(**inputs, max_new_tokens=40, generation_mode='text', do_sample=True)
text = processor.decode(output[0], skip_special_tokens=True)
print(text)
Janus can also generate images from prompts by simply setting the generation mode to image as shown below.
import torch
from transformers import JanusForConditionalGeneration, JanusProcessor
model_id = "deepseek-community/Janus-Pro-1B"
# Load processor and model
processor = JanusProcessor.from_pretrained(model_id)
model = JanusForConditionalGeneration.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "A dog running under the rain."}
]
}
]
# Apply chat template
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(
text=prompt,
generation_mode="image",
return_tensors="pt"
).to(model.device, dtype=torch.bfloat16)
# Set number of images to generate
model.generation_config.num_return_sequences = 2
outputs = model.generate(
**inputs,
generation_mode="image",
do_sample=True,
use_cache=True
)
# Decode and save images
decoded_image = model.decode_image_tokens(outputs)
images = processor.postprocess(list(decoded_image.float()), return_tensors="PIL.Image.Image")
for i, image in enumerate(images["pixel_values"]):
image.save(f"image{i}.png")
This code repository is licensed under the MIT License. The use of Janus-Pro models is subject to DeepSeek Model License.
@article{chen2025janus,
title={Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling},
author={Chen, Xiaokang and Wu, Zhiyu and Liu, Xingchao and Pan, Zizheng and Liu, Wen and Xie, Zhenda and Yu, Xingkai and Ruan, Chong},
journal={arXiv preprint arXiv:2501.17811},
year={2025}
}
If you have any questions, please raise an issue or contact us at service@deepseek.com.
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.