ShowUI 2B

Click a block to read its description, or select it with Tab and Enter.

ShowUI 2BPoint. P = image patches; L = combined tokens (runtime axes). Model widths below are resolved.LibreYOLOShowUI 2BPoint. P = image patches; L = combined tokens (runtime axes). Model widths below are resolved.Image encoderImage processorNominal runner size 1344; native tiling/resizeConv3d patch embeddingpatch=14; output P × 12802D rotary position informationP × 1280Vision transformer blocksn=32; width 1280; heads=16VV carries final visual features to the projector.Patch counts vary with processor output, not model size.Projection and multimodal sequenceVVisual projector1280 channels become 1536 channelsVisual token sequencePatch grouping factor 2 per axisPrompt and image placeholdersClick instructionTokenizerRuntime text lengthToken embeddingVocabulary 151936; width 1536Replace image-token placeholdersL × 1536; image and text in one sequenceSVisual features replace placeholders before language layers.Text and image masks preserve their positions.S denotes the multimodal token sequence.Language model and generated outputSText decoder layersn=28; width 1536Final RMSNorm1536 channelsLanguage head Linear1536 to 151936Greedy token generationmax_new_tokens=64; do_sample=FalseOO is the generated reply; prompt tokens are removed.The adapter decodes O into task geometry below.Vision transformer layerInputS × 1280LayerNorm1280 channelsVision attention+LayerNorm1280 channelsVision MLP+OutputS × 1280S is the token count of this sublayer.Text decoder layerInputS × 1536RMSNorm1536 channelsCausal attention+RMSNorm1536 channelsGated MLP+OutputS × 1536S is the token count of this sublayer.Vision attentionInput width 1280; Q heads 16; K/V heads 16.Q Linear1280 to 1280Split heads80 per headK Linear1280 to 1280Split heads80 per headV Linear1280 to 1280Split heads80 per headRotary positioncos/sin half rotationRotary positioncos/sin half rotationQ × transpose(K)Scale by 1/sqrt(80)Softmax over keysWithin the image; padding maskAttention weights × V16 query heads, weighted valuesConcat headsOutput Linear1280 to 1280RoPE: x*cos + rotate_half(x)*sin.Distinct projections share the same normalized input.Text attentionInput width 1536; Q heads 12; K/V heads 2.Q Linear1536 to 1536Split heads128 per headK Linear1536 to 256Split heads128 per headV Linear1536 to 256Split heads128 per headRotary positioncos/sin half rotationRotary positioncos/sin half rotationAlign K heads2 to 12Align V heads2 to 12Q × transpose(K)Scale by 1/sqrt(128)Softmax over keysCausal mask; cached K/V optionalAttention weights × V12 query heads, weighted valuesConcat headsOutput Linear1536 to 1536RoPE: x*cos + rotate_half(x)*sin.Cached decode appends past K/V before head alignment.Vision MLPInputS × 1280Linear1280 to 5120quick_geluDown Linear5120 to 1280OutputS × 1280Residual addition is in the enclosing layer diagram.S is the token count of this sublayer.Text MLPInputS × 1536Gate Linear1536 to 8960Up Linear1536 to 8960SiLUElementwise multiplyS × 8960Down Linear8960 to 1536OutputS × 1536Residual addition is in the enclosing layer diagram.S is the token count of this sublayer.Visual projectorLayerNorm1280 channels (main merger)Group spatial neighbors2 × 2; packed width 5120Linear5120 to 5120GELULinear5120 to 1536Rotary vision positions are applied before merging.Output width equals the language-model embedding.LibreYOLO output adapterODecode generated tokensRetain reply textExtract click coordinatesBare [x,y] or parsed pointAttach active query labelOne requested click targetScale to original image0 to1 coordinatesValidate and filterConfidence / classes; at most one pointResults.pointsPixel coordinates + synthetic score1Scores are adapter placeholders, not calibrated confidence.Scope: native backend architecture from pinned config metadata; no pretrained execution. The image path is shown.Source: libreyolo/models/ground/showui.py; Transformers 5.16.1. Revision a4d0ecc9e17f.libreyolo.com