Chroma模型配置器
Wire up Chroma, the community's uncensored Flux-architecture base, for training
- model_path
If you want Flux-class quality without Black Forest Labs' license, Chroma is the community's answer - an 8.9B Apache 2.0 rework of Flux Schnell, crowdfunded and trained solo by LodestoneRock on roughly $220K of donated compute. The KB calls it "the closest thing the Flux architecture has to a Pony: the default recommendation for uncensored work on a modern base." ChromaModelNode is the piece of this pack that makes Chroma trainable from ComfyUI.
What it does
Standard model-config-node behavior: it collects file paths and emits a model_path config for GeneralConfig. But Chroma has a slightly unusual layout, and the inputs reflect it - Chroma's weights live as a single standalone transformer file, while its VAE and text encoder come from a regular Flux diffusers folder:
diffusers_path(required) - a full path to a FLUX.1-dev style diffusers folder, e.g./data/models/FLUX.1-dev. This is where the pack pulls the VAE and text encoder from. The tooltip says "Flux diffusers" and the example is literally a FLUX.1-dev path, so if you already run Flux locally you likely have this.transformer_path(required) - the Chroma single-model file, e.g.chroma-unlocked-v10.safetensors. That's the actual Chroma weights.flux_shift(optional, default true) - the resolution-dependent timestep shift that biases sampling toward more noise. Chroma ships with this on by default here, and it's part of what makes the model behave - leave it unless you know why you're turning it off.
One required input missing, one error on startup. The source checks both required paths and returns an error dict if either is empty, so this node will at least tell you loudly when you've forgotten something.
Fitting it into the workflow
Same skeleton as every training run in this pack: ChromaModelNode → GeneralConfig.model_config, alongside an AdapterConfigNode, a dataset config, and the optimizer. The README table gives Chroma LoRA ✅, full fine-tune ✅, and fp8/quantization ✅ - so you can go beyond LoRA here if you have the VRAM. One caution from the KB is worth carrying into your expectations: "LoRA training is gradient-fragile" on Chroma. Don't be shocked if the first run needs a lower rank or a gentler learning rate than you're used to from Flux itself.
Installing the pack
The usual drill for TianDongL/Diffusion_pipe_in_ComfyUI - it's the Linux/WSL2 branch (Windows has its own repo), and the submodules carry the actual training code:
cd ComfyUI/custom_nodes/
git clone --recurse-submodules https://github.com/TianDongL/Diffusion_pipe_in_ComfyUI.git
git submodule update
pip install -r Diffusion_pipe_in_ComfyUI/requirements.txt
Then restart ComfyUI and import the example workflow from example_workflows/ - it's the fastest way to see the correct wiring, including this node.
Common issues
The classic stumble is assuming Chroma's single file is everything you need. It isn't - this node still wants a Flux diffusers folder for the VAE and text encoder, and pointing it at just the safetensors leaves you with an error dict. The other usual suspects are path problems: full absolute paths only, and remember the pack's WSL2 convention of Windows drive-letter paths (Z:/..., not /mnt/z/...). And if training starts but looks bad, revisit flux_shift and drop your LoRA rank before touching anything else.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| diffusers_path | STRING | Flux diffusers模型文件夹的完整路径(用于加载VAE和text encoder,如:/data/models/FLUX.1-dev) | |
| transformer_path | STRING | Chroma单模型文件的完整路径(如:/data2/imagegen_models/chroma/chroma-unlocked-v10.safetensors) | |
| flux_shiftopt | BOOLEAN | true | 分辨率相关的时间步偏移,向更多噪声偏移 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model_path | model_path | — |