Nodes/h3-relay/H3 Relay · H3 Hybrid Model Loader
ComfyUI Node

H3 Relay · H3 Hybrid Model Loader

Load a MiniMax H3 diffusion model by merging selected tensor groups from an 'overlay' checkpoint onto a 'base' checkpoint. Useful for combining the higher output quality of fl2va with the reference-conditioning pathway of ref2va. See the companion analysis file for what differs between the two checkpoints. Behaves like the stock 'Load Diffusion Model' node when overlay_preset is 'none'.

By akatz-ai·Created 8 days ago·Updated 4 days ago· 9
H3 Relay · H3 Hybrid Model Loader
    • h3_model
    base_modelminimax_h3_fl2va_int8_convrot.safetensors
    overlay_modelminimax_h3_ref2va_int8_convrot.safetensors
    overlay_presetblock_range_adaln
    manual_cache_revisionv1
    block_range_start25
    block_range_end49
    final_adaln_from_overlayfalse
    custom_overlays
    custom_base
    weight_dtypedefault
    CategoryH3 Relay/loaders

    Inputs (10)

    NameTypeDefaultDescription
    base_modelCOMBOminimax_h3_fl2va_int8_convrot.safetensorsPrimary checkpoint -- every tensor starts here.
    overlay_modelCOMBOminimax_h3_ref2va_int8_convrot.safetensorsSecondary checkpoint -- tensors matched by overlay_preset come from here. May equal base_model (effectively loads base only).
    overlay_presetCOMBOblock_range_adalnWhich tensor groups to take from overlay_model. 'none' = pure base loading (equivalent to stock UNETLoader). 'ref2va_adaln_over_fl2va' (default) = take per-block adaln_proj from the overlay only. 'ref2va_all_adaln_over_fl2va' = also take final_layer.adaln_proj. 'ref2va_full_over_fl2va'/'fl2va_full_over_ref2va' = take everything from the overlay (sanity check). 'block_range_adaln' = take adaln_proj only for blocks in [block_range_start, block_range_end] (inclusive). 'custom' = use custom_overlays only.
    manual_cache_revisionSTRINGv1Manual cache reset only. Change this when replacing model contents without changing the filename; normal model, LoRA, dtype, strength, and attention changes are tracked automatically.
    block_range_startoptINT250–49Only used when overlay_preset == 'block_range_adaln'. Lower-inclusive bound on the block index whose adaln_proj comes from overlay_model. The minimax h3 DiT has 50 blocks indexed 0..49.
    block_range_endoptINT490–49Only used when overlay_preset == 'block_range_adaln'. Upper-inclusive bound on the block index. Set block_range_end < block_range_start to take NO blocks from the overlay (effectively pure base).
    final_adaln_from_overlayoptBOOLEANfalseToggle overlay of final_layer.adaln_proj.linear.{weight,bias} from overlay_model. Additive on top of any preset: - False (default): leave final_layer.adaln on the base (unless a preset already covers it, e.g. ref2va_all_adaln_over_fl2va). - True: pull final_layer.adaln from the overlay in addition to whatever the preset does.
    custom_overlaysoptSTRINGComma-separated keys/prefixes/globs to *also* take from the overlay on top of the preset. E.g. 'blocks.49.,final_layer.video_out.'. Bare prefixes ending in '.' match by prefix; other strings are matched as fnmatch globs (e.g. 'blocks.[0-4].*.attn.qkv_proj.weight').
    custom_baseoptSTRINGComma-separated keys/prefixes/globs that should be forced *back* to the base even if the preset or custom_overlays would take them from the overlay. Useful for keeping e.g. final_layer.adaln_proj on the base while everything else adaln comes from the overlay.
    weight_dtypeoptCOMBOdefaultSame meaning as the stock 'Load Diffusion Model' node. Leave 'default' unless you know what you are doing.

    Outputs (1)

    NameTypeDescription
    h3_modelH3_RELAY_MODEL