TTP_JoyCaption_BetaOne_Full
The newer, self-contained model — no manual downloads
- image
- caption
JoyCaption Alpha Two is great, but it's three pieces you have to assemble and a checkpoint you place by hand. Beta One fixes the annoying part: it's a single self-contained LLaVA-style model, and this node - TTP_JoyCaption_BetaOne_Full - downloads it for you on first run. No manual model placement, no folder gymnastics. If you're setting up image captioning for LoRA training and you don't want to babysit model files, this is the version to reach for.
How it works
The Beta One model (fancyfeast/llama-joycaption-beta-one-hf-llava) is a full vision-language model - vision tower, projector, and Llama backend baked into one checkpoint. On first queue the node pulls it into ComfyUI/models/LLM_llava/ and loads it with LlavaForConditionalGeneration. Because it's one model instead of a SigLIP-plus-adapter-plus-LoRA sandwich, you get three quantization choices instead of two: bf16 (the default, needs serious VRAM), nf4, and int8 - both via bitsandbytes. There's also an optional LIGER kernel speedup for the Llama attention/MLP math; when it's installed the node exposes an enable_liger_kernel switch (CUDA only), and when it isn't you get a hidden info_liger_unavailable status string telling you so. Nice touch, that.
The model is cached globally across nodes in this pack, so switching between Full and Simple doesn't re-download the 9GB. cache_model defaults to on here (unlike the Alpha Two nodes, where it defaults off) - the author clearly expects you to keep it resident.
The inputs that matter
- caption_type - 12 presets, and this is where Beta One outguns Alpha Two. Same Descriptive / MidJourney / Art Critic / Product Listing / Social Media Post crew, plus Danbooru tag list, e621 tag list, and Rule34 tag list with proper
artist:,character:,species:prefix syntax. If you're captioning for an anime or furry base, these are the ones. - caption_length - words or counts, same idea as Alpha Two.
- quantization_mode - bf16 / nf4 / int8. The model is bigger than the Alpha Two LLM, so on a 10–16GB card nf4 is your friend.
- custom_prompt - a free-text override. If it's non-empty it replaces the caption type and all extras entirely, which is the escape hatch when you want a bespoke instruction.
- character_name - feeds
{name}into the "refer to them as {name}" extra. - temperature / top_p / max_new_tokens - defaults are 0.6 / 0.9 / 512; temperature up to 2.0 here if you want chaos.
- The 27 extra-option toggles below those, covering lighting, camera angle, depth of field, SFW/NSFW classification, orientation, even one that asks for vulgar slang. Each is a real instruction sentence the model appends to its prompt - they're baked into this Full node so you don't need a companion.
Output is caption as a list: one caption per input image, straight into a text-writer node or a training dataset.
Install
ComfyUI Manager → search Comfyui_JC2, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TTPlanetPig/Comfyui_JC2
pip install -r requirements.txt
The optional LIGER kernel speedup: run 安装liger-kernel.bat in the pack folder (Windows official build) or pip install liger-kernel==0.5.9 --no-deps.
Common issues
The usual suspects apply: quantization errors mean updating bitsandbytes, and this node is CUDA-only (device only offers cuda:0) - the nf4/int8 paths need CUDA and silently fall back to bf16 on CPU. First run downloads ~9GB, so the queue will look frozen. If you want Beta One without the 27 toggles on the node, use the JoyCaptionBetaOne_Simple sibling with ExtraOptionsNode_Beta.
Inputs (39)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| caption_type | COMBO | 12 options: Descriptive, Descriptive (Casual), Straightforward, Stable Diffusion Prompt, MidJourney, Danbooru tag list, +6 | |
| caption_length | COMBO | 31 options: any, very short, short, medium-length, long, very long, +25 | |
| quantization_mode | COMBO | bf16 | 3 options: bf16, nf4, int8 |
| custom_prompt | STRING | — | |
| character_name | STRING | — | |
| temperature | FLOAT | 0.600–2 | — |
| top_p | FLOAT | 0.900–1 | — |
| max_new_tokens | INT | 5121–2048 | — |
| device | COMBO | 1 options: cuda:0 | |
| cache_model | BOOLEAN | true | — |
| info_liger_unavailable | STRING | LIGER Kernel not installed/available. | — |
| extra_option_0_if_there_is_a_person_character | BOOLEAN | false | — |
| extra_option_1_do_not_include_information_abo | BOOLEAN | false | — |
| extra_option_2_include_information_about_ligh | BOOLEAN | false | — |
| extra_option_3_include_information_about_came | BOOLEAN | false | — |
| extra_option_4_include_information_about_whet | BOOLEAN | false | — |
| extra_option_5_include_information_about_whet | BOOLEAN | false | — |
| extra_option_6_if_it_is_a_photo_you_must_incl | BOOLEAN | false | — |
| extra_option_7_do_not_include_anything_sexual | BOOLEAN | false | — |
| extra_option_8_do_not_mention_the_image's_res | BOOLEAN | false | — |
| extra_option_9_you_must_include_information_a | BOOLEAN | false | — |
| extra_option_10_include_information_on_the_ima | BOOLEAN | false | — |
| extra_option_11_do_not_mention_any_text_that_i | BOOLEAN | false | — |
| extra_option_12_specify_the_depth_of_field_and | BOOLEAN | false | — |
| extra_option_13_if_applicable,_mention_the_lik | BOOLEAN | false | — |
| extra_option_14_do_not_use_any_ambiguous_langu | BOOLEAN | false | — |
| extra_option_15_include_whether_the_image_is_s | BOOLEAN | false | — |
| extra_option_16_only_describe_the_most_importa | BOOLEAN | false | — |
| extra_option_17_if_it_is_a_work_of_art,_do_not | BOOLEAN | false | — |
| extra_option_18_identify_the_image_orientation | BOOLEAN | false | — |
| extra_option_19_use_vulgar_slang_and_profanity | BOOLEAN | false | — |
| extra_option_20_do_not_use_polite_euphemisms—l | BOOLEAN | false | — |
| extra_option_21_include_information_about_the_ | BOOLEAN | false | — |
| extra_option_22_mention_whether_the_image_depi | BOOLEAN | false | — |
| extra_option_23_do_not_mention_the_mood_feelin | BOOLEAN | false | — |
| extra_option_24_explicitly_specify_the_vantage | BOOLEAN | false | — |
| extra_option_25_if_there_is_a_watermark,_you_m | BOOLEAN | false | — |
| extra_option_26_your_response_will_be_used_by_ | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| caption | STRING | — |