Illustrious LoRA Tools
native batch ONNX tagging and in-process SDXL LoRA training; no WD14 node pack or TrainTools-MZ required for new workflows
Nodes (11)
WD14 tagging that won't clobber the captions you wrote yourself
The one input that stops a queue twenty minutes before it wastes your GPU
Bulk caption surgery that can't destroy your originals
A real crop editor inside your node graph, bound by image hash
Already tagged and reviewed? Skip the whole pipeline with this one field
Turn a folder or ZIP into a dataset the trainer will actually eat
See your dataset and its tag counts before you waste an hour training on it
A contact sheet of your checkpoints, because the last epoch is rarely the best
The glue node that turns WD14 captions into a Kohya dataset.json
Training an SDXL LoRA inside ComfyUI, without shelling out to kohya
The 22 settings that decide whether your LoRA is good or mush
Illustrious LoRA Tools — Advanced Native Training
Version 1.2.0. Implemented advanced training features; not yet full-SDXL-GPU/Floyo validated. See TESTING.md for measured checks, not marketing claims.
Batch-tag an authorized dataset and train an SDXL/Illustrious UNet LoRA directly inside ComfyUI, without BSS or TrainTools-MZ. Original integration code uses standard Diffusers/PEFT/PyTorch libraries and separately licensed upstream weights.
Start here
Read ADVANCED_TRAINING_EN.md for installation, crop editor, review and training steps.
Install the complete package including web/ and crop_routes.py under ComfyUI/custom_nodes. Use the host ComfyUI Python to install requirements.txt in an isolated test environment; preserve its CUDA PyTorch installation. Restart server/browser. JSON alone does not install code. Back up an older installation before replacing it.
Training defaults OFF. NOT_RUN is not success. Keep it disabled until crops/captions are reviewed, then use the Reviewed workflow to avoid reimporting and retagging. Floyo must separately approve/install the package and permit GPU training. This export does not publish anything automatically.
Implemented
Interactive private-copy crop editing; aspect-ratio buckets; WD SwinV2/ViT/EVA CPU ONNX tagging; dataset previews and caption edits; repeats; independent rank/alpha; AdamW8bit or AdamW; cosine/constant with warmup; dual-CLIP long-caption chunking; Min-SNR and noise offset; current-adapter sample PNGs every epoch; epoch/final safetensors.
Ten native nodes plus one retained legacy bridge are registered. See exact class IDs. Built-in PreviewImage, PreviewAny and Note are not part of our custom package.
Local SDXL model setup
Supports standard SDXL base-style pipelines and compatible Illustrious checkpoints, not SD1.5, FLUX, refiner, quantized or video training.
Choose either DIFFUSERS_DIRECTORY with a complete local safetensors-only SDXL pipeline, or an installed .safetensors checkpoint plus compatible local SDXL configs/tokenizers. The directory field is relative to ComfyUI/models. Checkpoint selection alone is insufficient. The trainer does not download the base model.
Required configuration layout:
models/diffusers/illustrious_sdxl/
model_index.json
scheduler/scheduler_config.json
tokenizer/vocab.json, merges.txt, tokenizer_config.json
tokenizer_2/vocab.json, merges.txt, tokenizer_config.json
text_encoder/config.json
text_encoder_2/config.json
unet/config.json
vae/config.json
Directory mode additionally requires safetensors weights/shards and indexes in unet, vae and both text encoders. Use a compatible official export; do not rename arbitrary files into this structure. Loading is local-only with standard classes. Python, pickle and legacy binary files in the model directory are rejected.
Compute and limits
CUDA required; BF16 when supported or memory-heavy FP32. No low-VRAM guarantee. VAE and both text encoders remain frozen. No distributed training, latent cache, optimizer resume, text-encoder training or automatic quality scoring. Bucket residual mismatch is center-cropped, not subject-aware. Long captions beyond the configured 75/150/225 content-token limit are truncated.
Samples are generated and saved after each epoch; downstream gallery appears only after training returns, not live streaming. Sample generation costs extra VRAM/time and errors stop the job. A black gallery placeholder when disabled means NO_SAMPLES. INCOMPLETE is not a completed or optimizer-resumable adapter.
Full pretrained SDXL CUDA training, pretrained tagger quality, live ComfyUI frontend and Floyo compatibility require external validation. Process-local locking is not a multi-tenant GPU scheduler. Other loaded models may consume VRAM.
Tagger models
Weights belong to SmilingWolf, not this project. Only model.onnx and selected_tags.csv are downloaded with opt-in, pinned revisions:
| Selection | Upstream | Revision | |---|---|---| | wd-swinv2-v3 | WD SwinV2 v3 | 627aef95638667ddcaa3ac8ae625e88ea5b02f51 | | wd-vit-v3 | WD ViT v3 | 7f6b584d0bd3f55c4531f14ba3d4761b2bccdc0f | | wd-eva02-large-v3 | WD EVA02 large v3 | b25b82a03f7282e41aa2f257a52c7583b710bd1c |
Offline location: models/illustrious_taggers/<selection>/<revision>/. CPU inference; rating tags omitted; general/character thresholds separate. Existing captions retained unless explicit overwrite, with backup on overwrite.
Security, ownership and publishing
No runtime subprocess/shell installer, direct pickle/torch.load, eval/exec or remote custom Python trust. This targeted architecture is not a zero-vulnerability guarantee. Crop preview GET routes inherit host access control and are not tenant-isolated. Never expose private datasets through an unauthenticated server. See SECURITY.md.
MIT applies to project code, not upstream models or datasets. Respect separate licenses and data rights; see NOTICE.md. Legacy bridge remains for compatibility; old BSS/MZ graphs still require their original packages. See PUBLISHING.md for publication, and retain the documented validation limitations until deployment tests pass.