Running DeepSeek Janus-Pro 7B on Mac Using ComfyUI

Quick answer. DeepSeek Janus-Pro 7B runs on Apple Silicon Macs via ComfyUI using the CY-CHENYUE/ComfyUI-Janus-Pro custom node. Install ComfyUI by cloning comfyanonymous/ComfyUI (ComfyUI is not a Homebrew package), add the custom node into custom_nodes/, drop the Hugging Face weights into ComfyUI/models/Janus-Pro/Janus-Pro-7B/, and load the model in float16 — bfloat16 is not supported on MPS. Needs ~32 GB unified memory.

Unlock multimodal AI capabilities for image generation and image understanding through a node-based workflow.

Introduction

The DeepSeek Janus-Pro 7B is a unified autoregressive multimodal model — one network handles both vision understanding (image-in, text-out) and image generation (text-in, image-out). This guide walks through running it on macOS via ComfyUI using the community-maintained ComfyUI-Janus-Pro custom node.

Two important corrections up front, because most tutorials get them wrong:

  • Ollama does not serve Janus-Pro. Janus-Pro is a vision-generation model; Ollama's GGUF runtime can't run its image-generation head. Any ollama pull deepseek-ai/janus-pro-7b instruction will fail. Use ComfyUI or the official PyTorch repo instead.
  • ComfyUI is not a Homebrew formula. brew install comfyui does not exist. Install ComfyUI by cloning the GitHub repo or with the ComfyUI Desktop installer.

Want the full picture? Read our continuously-updated Self-Hosting LLMs Complete Guide (2026) — hardware, inference engines, and step-by-step deployment patterns.

Prerequisites

Hardware

  • Apple Silicon (M2 Pro / M3 / M4 / M5 recommended).
  • 32 GB unified memory for the 7B variant. 16 GB Macs can run Janus-Pro-1B instead.
  • ~20 GB free storage for weights plus Python environment.
  • macOS 14+.

Software

Install Homebrew if you don't have it, then Python and git:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python@3.11 git git-lfs

Step-by-step installation

1. Install ComfyUI

Clone the repo and create a virtual environment:

cd ~
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python3.11 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

PyTorch installed via requirements.txt ships with MPS support on Apple Silicon. Verify:

python -c "import torch; print('MPS available:', torch.backends.mps.is_available())"

Prefer a one-click installer? ComfyUI Desktop works on macOS too — but the manual path above gives you a cleaner virtualenv for custom-node dependencies.

2. Install the ComfyUI-Janus-Pro custom node

Clone the custom node into ComfyUI's custom_nodes directory and install its requirements:

cd ~/ComfyUI/custom_nodes
git clone https://github.com/CY-CHENYUE/ComfyUI-Janus-Pro.git
cd ComfyUI-Janus-Pro
pip install -r requirements.txt

If you use ComfyUI Manager, you can instead open the manager, search for "Janus-Pro", and click install.

3. Download the Janus-Pro 7B weights from Hugging Face

The custom node expects weights at ComfyUI/models/Janus-Pro/Janus-Pro-7B/:

cd ~/ComfyUI
mkdir -p models/Janus-Pro
pip install huggingface_hub
huggingface-cli download deepseek-ai/Janus-Pro-7B \
  --local-dir models/Janus-Pro/Janus-Pro-7B

Model card and license: huggingface.co/deepseek-ai/Janus-Pro-7B (code is MIT; weights are released under the DeepSeek Model License with commercial-use allowance).

If you're on a 16 GB Mac, swap Janus-Pro-7B for Janus-Pro-1B in both the URL and the folder name.

4. Launch ComfyUI

From the ComfyUI root, with your virtualenv activated:

cd ~/ComfyUI
source .venv/bin/activate
PYTORCH_ENABLE_MPS_FALLBACK=1 python main.py

Open http://localhost:8188 in your browser.

The PYTORCH_ENABLE_MPS_FALLBACK=1 environment variable is important — it tells PyTorch to fall back to CPU for the handful of ops not yet implemented on MPS, instead of crashing.

5. Load a Janus-Pro workflow

The custom node ships example workflows. In the ComfyUI UI:

  1. Click Load (top right).
  2. Open ComfyUI/custom_nodes/ComfyUI-Janus-Pro/example_workflows/ and pick a workflow — typically one for image understanding, one for text-to-image generation.
  3. If the Janus-Pro Model Loader node prompts for a model path, point it at models/Janus-Pro/Janus-Pro-7B.
  4. Set the dtype to float16 (not bfloat16 — Apple Silicon MPS does not support bfloat16).

6. Test image generation

In the text-to-image workflow, enter a prompt such as "a serene mountain landscape at sunset, oil painting", hit Queue Prompt, and wait.

Expect 30-90 seconds per 384x384 image on an M2 Pro / M3 with 32 GB unified memory. Janus-Pro is autoregressive — it generates image tokens one at a time — so it is materially slower than a diffusion model like Flux or SDXL on the same Mac. The tradeoff is a single unified model that also does image understanding.

7. Test image understanding

Switch to the understanding workflow, load an image via the Load Image node, and prompt the Janus-Pro node with something like "Describe the contents of this image." Queue the prompt. Output should appear as text in a few seconds.

Troubleshooting

  • TypeError: BFloat16 is not supported on MPS — switch the dtype to float16 in the Janus-Pro Model Loader node. Apple Silicon's MPS backend does not implement bfloat16. (PyTorch tracking issue)
  • Flash-attention import errors — Apple Silicon has no flash-attn-2. Set the attention implementation to eager in the loader node, or remove flash-attn from any inherited requirements.
  • Operator not implemented for MPS — make sure you launched ComfyUI with PYTORCH_ENABLE_MPS_FALLBACK=1.
  • OOM / kernel restart — close other GPU-heavy apps. If you only have 16 GB, drop to Janus-Pro-1B.
  • Custom node doesn't appear — confirm it lives at ComfyUI/custom_nodes/ComfyUI-Janus-Pro/ and that you ran pip install -r requirements.txt inside the same virtualenv ComfyUI uses. Restart ComfyUI.
  • Model path errors — the custom node looks under ComfyUI/models/Janus-Pro/Janus-Pro-7B/ by default. The folder name must match exactly.

Performance notes

  • Apple Silicon is best for development, not volume. A single CUDA RTX 4090 will generate Janus-Pro images several times faster than an M3 Max. The Mac path shines for prototyping, image-understanding workflows, and offline use.
  • Batch size of 1. Memory pressure on a 32 GB Mac usually means you keep batch size at 1 for generation.
  • First inference is slow. Model load plus MPS warm-up takes time; subsequent inferences are much faster.
  • Resolution matters. 384x384 is the Janus-Pro native generation size. Going larger means upscaling externally (e.g., a downstream ESRGAN node).

FAQ

Why not Ollama?

Ollama serves chat-style LLMs through GGUF and does not support Janus-Pro's vision-generation architecture. The deepseek-ai/janus-pro-7b tag is not in the official Ollama library, and the community GGUF uploads that exist are language-backbone only — they cannot generate images. Use ComfyUI or the upstream PyTorch repo.

Why isn't brew install comfyui a thing?

ComfyUI is distributed as a Git repo and a desktop installer; there is no official Homebrew formula. Clone comfyanonymous/ComfyUI or use ComfyUI Desktop.

ComfyUI Desktop vs CLI clone?

Functionally similar. The CLI clone gives you a clean virtualenv that lines up with custom-node dependencies, which matters once you have several custom nodes. Desktop is fine if you just want to click around.

How much RAM do I need?

32 GB unified memory for Janus-Pro 7B. 16 GB works for Janus-Pro-1B. The fp16 weights of the 7B model are about 14 GB on disk and real working-set is closer to 22-26 GB.

How fast is image generation on Mac?

Roughly 30-90 seconds for one 384x384 image on an M2 Pro / M3 with 32 GB. A CUDA GPU is materially faster — the Mac path is best for development and image-understanding workflows.

Is it free to use commercially?

ComfyUI is GPL-3. The custom node is MIT. Janus-Pro code is MIT, and the weights ship under the DeepSeek Model License, which permits commercial use with attribution. Re-read the current license text before shipping.

Conclusion

Running Janus-Pro 7B in ComfyUI on a Mac is a clone-three-repos exercise: ComfyUI itself, the ComfyUI-Janus-Pro custom node, and the Hugging Face weights. Set the dtype to float16, launch with PYTORCH_ENABLE_MPS_FALLBACK=1, and you have a node-based interface to a unified vision-understanding-and-generation model running entirely on local hardware. Expect modest generation speed — but full offline use and a GUI workflow worth the trade.

Prefer pure Python over a node graph? See our companion guide: Run DeepSeek Janus-Pro 7B on Mac: Step-by-Step Guide.