Running DeepSeek Janus-Pro 7B on Mac Using ComfyUI
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-7binstruction will fail. Use ComfyUI or the official PyTorch repo instead. - ComfyUI is not a Homebrew formula.
brew install comfyuidoes 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:
- Click Load (top right).
- Open
ComfyUI/custom_nodes/ComfyUI-Janus-Pro/example_workflows/and pick a workflow — typically one for image understanding, one for text-to-image generation. - If the Janus-Pro Model Loader node prompts for a model path, point it at
models/Janus-Pro/Janus-Pro-7B. - 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 tofloat16in 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
eagerin the loader node, or removeflash-attnfrom 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 ranpip install -r requirements.txtinside 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.