初始化项目,由ModelHub XC社区提供模型

Model: Kezmark/Mordant-12B-Think
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-07-10 01:33:10 +08:00
commit 32c0d34dc5
20 changed files with 10149 additions and 0 deletions

39
.gitattributes vendored Normal file
View File

@@ -0,0 +1,39 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
gguf/Mordant-12B-bf16.gguf filter=lfs diff=lfs merge=lfs -text
gguf/Mordant-12B-Q6_K.gguf filter=lfs diff=lfs merge=lfs -text
gguf/Mordant-12B-Q8_0.gguf filter=lfs diff=lfs merge=lfs -text
tokenizer.json filter=lfs diff=lfs merge=lfs -text

432
README.md Normal file
View File

@@ -0,0 +1,432 @@
---
license: apache-2.0
language:
- en
pipeline_tag: text-generation
tags:
- Mordant
- mistral
- composition
- image-generation
- reasoning
- prompt-engineering
- prompt-enhancement
base_model:
- mistralai/Mistral-Nemo-Instruct-2407
base_model_relation: finetune
---
# Mordant-12B-Think
A full fine-tune of a [Mistral-Nemo-2407-based model](https://huggingface.co/DavidAU/Mistral-Nemo-2407-12B-Thinking-Claude-Gemini-GPT5.2-Uncensored-HERETIC) focused on AI image generation composition with chain-of-thought reasoning.
---
## Overview
Mordant-12B-Think is the flagship model of the Mordant family. It produces the most detailed and narratively rich compositions of the lineup — not just describing spatial relationships but constructing deliberate meaning through composition choices. The thinking phase demonstrates genuine analytical depth, frequently self-critiquing decisions and explaining *why* specific elements are placed where they are. The personality is at its sharpest here.
The model was trained on a personally curated dataset of **7,203 highly detailed compositions** spanning a wide variety of tasks, genres, universes, art styles, and emotional contexts. All training examples include reverse-engineered chain-of-thought thinking bubbles with a consistent "sharp, caustic, professional mentor" personality — present only within the reasoning phase, not the final output.
**Intended use:**
- Generating detailed, spatially structured image prompts from a short description
- Hero-tier composition work where quality matters more than speed
- Complex multi-element scenes requiring narrative-level spatial reasoning
- Enhancing an existing prompt with the deepest compositional treatment in the family
---
## Model Family
| Model | Base | Size | Best For |
|-------|------|------|----------|
| [Mordant-1.2B-Think](https://huggingface.co/Kezmark/Mordant-1.2B-Think) | LFM2.5-1.2B | ~1.3 GB (Q8) | Speed, PE, style infusion |
| [Mordant-3B-Think](https://huggingface.co/Kezmark/Mordant-3B-Think) | Granite-4.1-3B | ~3.5 GB (Q8) | Balanced quality and speed |
| [Mordant-7B-Think](https://huggingface.co/Kezmark/Mordant-7B-Think) | OLMo-3-7B | ~8 GB (Q8) | Strong compositional reasoning |
| **Mordant-12B-Think** | Mistral-Nemo-12B | ~13 GB (Q8) | Flagship quality |
---
## GGUF Files (Recommended)
Quantized GGUF files for local inference (LM Studio, llama.cpp, KoboldCpp, Comfy-UI with the provided node, etc.) are in the **[gguf/](gguf/)** folder.
| File | Size | Notes |
|------|------|-------|
| `Mordant-12B-Think-BF16.gguf` | ~24 GB | Lossless |
| `Mordant-12B-Think-Q8_0.gguf` | ~13 GB | Near-lossless, recommended |
| `Mordant-12B-Think-Q6_K.gguf` | ~10 GB | Good quality/size trade-off |
## Safetensors (Full Weights)
Full weights for further fine-tuning or conversion are in the **[safetensors/](safetensors/)** folder alongside the tokenizer and chat template.
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained(
"Kezmark/Mordant-12B-Think",
subfolder="safetensors",
trust_remote_code=True,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(
"Kezmark/Mordant-12B-Think",
subfolder="safetensors"
)
```
---
## Inference Format
The model uses ChatML format with a `<think>` block pre-seeded on generation. A custom Jinja chat template is included in the safetensors folder.
```
<|im_start|>system
You are an expert composition writer.
<|im_end|>
<|im_start|>user
{your prompt}
<|im_end|>
<|im_start|>assistant
<think>
{reasoning — Mordant's internal critique and spatial breakdown}
</think>
{final composition}
<|im_end|>
```
The system prompt is optional, but highly recommended, espeically for generation. The model is anchored in its composition output behavior without one, but a minimal prompt helps ensure consistency:
```
You are an expert composition writer.
```
---
## Art Styles
The model has been trained on the following named art styles. Use the full name followed by "art style" for best results (e.g. *"rendered in Watercolor art style"*). The model may handle styles beyond this list, but these are the ones explicitly trained on.
- 16-bit Pixel Art
- 8-bit Pixel Art
- 90s Anime-OVA
- American Superhero Comics - Silver Age
- Architectural Fantasy Linework
- Art Nouveau
- Atmospheric Impasto Oil Painting
- Charcoal Drawing
- Chinese Landscape Relief Sculpture
- Cinematic Fantasy Illustration
- Disney Afternoon Animation
- Expressionist Digital Illustration
- Franco-Belgian Comic - Ligne Claire
- French Graphic Novel - Metal Hurlant
- Golden Age Book Illustration
- Gouache Illustration
- Grunge Collage
- Hanna-Barbera Flat Animation
- High Energy Flat Graphic Anime
- Japanese Ink Wash
- Layered Anime Scenery Illustration
- Low Poly 3D
- Manga - Seinen
- Mirrors Edge Clean Style
- Oil Painting - Classical
- Oil Painting - Impressionist
- Painterly Fantasy Matte Illustration
- Painterly Neon Digital Art
- Painterly Strong Graphic Novel
- Pastel - Soft
- Pen and Ink Sketch
- Pencil Sketch
- Pop Art Graphic Illustration
- Psychedelic Expressionist Horror
- Retro Graphic Novel Poster Illustration
- Risograph Print
- Studio Ghibli Aesthetic
- Technical Graphic Illustration - Duotone
- Vaporwave Aesthetic
- Vintage Pulp Fiction
- Watercolor
- Woodblock Print - Japanese Ukiyo-e
---
## Examples
All of the following examples are generated using LM Studio and the BF16 gguf of all models. These were all extracted with a script, without me checking so they are all as is, first generation.
All of them generated with the following settings:
SYSTEM PROMPT: You are an expert composition writer.
TEMPERATURE = 0.7
TOP_P = 0.95
TOP_K = 50
MIN_P = 0.05
MAX_TOKENS = 4096
REPEAT_PENALTY = 1.0/off
<details>
<summary>Example 1 — A lone cargo hauler drifting past a derelict space station o...</summary>
**Prompt:** A lone cargo hauler drifting past a derelict space station orbiting a dying sun, rendered in matte painting concept art style.
**Thinking:**
> vertical comp essential for drama—space is inherently vast but needs framing to feel immersive not empty diagonal drift from lower left to upper right creates kinetic flow while anchoring viewers gaze through implied trajectory of the ship toward station or oblivion whichever comes first matte painting style demands painterly texture over realism so every surface must scream handcrafted grit rust patina on hull isnt just corrosion its a narrative device aging machinery in hostile environment amber lights inside cockpit are tactical warm pools against cool void to imply human presence without cluttering frame with figures clever the red warning beacon on station is subtle but critical visual anchor for tension between decay and active danger that flickering light could be last gasp or impending explosion depending on how you squint at it structural composition hinges on contrast—rough metal textures versus smooth gradient sky bands make the industrial elements pop like rusted teeth in a black holes mouth perspective lines from stations jagged hull receding into distance enforce scale but keep focus tight on foreground action ships thrusters glowing faintly blue against dark hull are just enough to suggest propulsion without becoming neon distractions gradients of ochre and burnt umber across the sky arent random they map stellar wind patterns or volcanic eruptions below casting long shadows that stretch toward upper right light source must be dying sun positioned offscreen left its golden rays slicing through debris field creating depth cues via atmospheric haze those floating rocks arent just set dressing their jagged silhouettes mirror stations decay reinforcing thematic unity color palette is a masterstroke cool teals and deep blacks dominate but warm accents on ship and station create visual hierarchy forcing eye to linger where story beats the horizon line placement is deliberate station looms midframe dominating vertical axis while ship skims lower thirds creating dynamic tension between grounded object and infinite void backgrounds hazy atmosphere isnt just fog its a narrative filter softening distant details to imply vastness without overloading viewer with irrelevant info every element serves spatial logic or emotional subtext no filler only friction
**Composition:**
This vertical composition depicts a solitary space-faring vessel drifting through the void near an abandoned orbital station, framed by a dynamic sense of movement and immense scale. The scene is rendered in a matte painting concept art style, emphasizing painterly texture over photorealism.
The Foreground Action:
Dominating the lower-left quadrant is a rugged cargo hauler, its hull weathered from long-term exposure to cosmic dust. The metal surface shows visible brushwork—subtle ridges and patina that catch the light in uneven patches. Its dark grey plating contrasts sharply with warm amber lights glowing inside the cockpit windows; these lights cast soft pools of illumination on control panels just visible through the glass, creating a cozy focal point against the cold exterior. Small thruster nozzles protrude from its rear underside, emitting faint blue exhaust trails that drift lazily into darkness behind it—a subtle hint of propulsion in this otherwise still moment.
The Mid-Ground Object:
Looming large on the right side is a derelict space station, its structure partially dismantled and overgrown with rust. The metal surface shows heavy corrosion patterns rendered as expressive brushstrokes—thick orange-brown streaks running vertically down panels that once gleamed silver. Patches of peeling paint reveal darker layers beneath in irregular shapes, adding to the decayed aesthetic. A large circular docking bay yawns open at its center-right; inside, deep shadow obscures details but reveals a faint red warning beacon flickering intermittently on an interior wall—its light spills out as a dim glow that barely reaches beyond the station's rim.
The Background Atmosphere:
Above and behind these objects stretches an atmospheric gradient rendered with broad painted strokes—a sky transitioning from warm dusty ochre near horizon lines to deep charcoal-black at zenith. Floating debris—jagged rocks and metallic fragments varying in size—are scattered across mid-distance, their silhouettes sharp against the glowing backdrop; some pieces drift toward viewer while others recede into darkness behind station structures.
The primary light source—a distant star or dying sun positioned off-frame left—casts long shadows from both ship and station onto this painted sky. The illumination creates a gradient of warm golden hues that gradually fade to cool blues at upper edges, reinforcing depth through atmospheric perspective.
Lighting:
The scene is lit by directional warm sunlight coming from the left side; it strikes vessel's forward hull creating bright specular highlights on metal ridges while casting deep shadows on its portside flank. The station receives partial illumination—sunlight hits top surfaces with moderate intensity but undersides remain in heavy shadow, emphasizing its vertical scale and decayed structure through contrast between lit areas and dark recesses within docking bay.
The overall color palette balances cool teal blues of space environment against warm amber/red accents from ship lights and station warning beacons; this temperature opposition guides viewer's eye toward central narrative elements while reinforcing the mood of isolation and exploration in hostile frontier regions.
</details>
<details>
<summary>Example 2 — fantasy potion shop interior with shelves full of colorful b...</summary>
**Prompt:** fantasy potion shop interior with shelves full of colorful bottles, a shopkeeper behind the counter, in 16-bit pixel art with a limited 32-color palette.
**Thinking:**
> spatial hierarchy first—foreground needs immediate impact without clutter so those five potion bottles on dark shelves scream contrast redorange yellowblue green against black wood their jagged shapes cutting through shadow like pixelated teeth. brass scale must anchor the counters edge weight distribution matters even in 16-bit or this whole scene tips into cartoonish chaos. shopkeeper profile leftward gaze creates negative space pulling viewer toward center aisle midground shelves recede via lighter palette and blurred background detail—cant afford depth cues with only 32 colors so dithering does the heavy lifting gradients on apron fabric suggest texture without polygons smart move. that hovering blue potion above the scale? subtle narrative hook customer interaction implied but not overdone. background window as primary light source explains everything—the gold sunlight shafts are hardcoded color blocks slicing through dust motes rendered in 2x2 pixel clusters. stained glass dithering is a cheat for complexity within limits those redyellowblue gradients mimic leaded glass without wasting palette slots. distant rooftops muted via desaturated hues and low-contrast dither patterns keep them atmospheric not distracting. lighting logic ruthless directional from upper left casting knife-edge shadows under bottles shelves counter edges no softness here—16-bit doesnt do diffusion so every shadow is a sharp line of black pixels. highlights on glass rims are solid color blocks not gradients because the palette cant bleed between shades without looking muddy. dust motes as sparse whiteyellow pixels against dark background? genius minimalism theyre there just enough to suggest movement in stillness. spatial framing tightens toward center aisle guiding eye through layers like a funnel—foreground bottles draw you in midground shelves hold focus background window expands the world but keeps it contained within 32 colors. composition mechanics all serve the palette restriction no room for sentimentality every pixel must earn its place or this becomes another generic fantasy shop. that brass scale? necessary visual anchor without it the counter floats arbitrarily. profile view of shopkeeper maximizes silhouette recognition at low resolution—side-on posture screams “merchant” in four pixels. hovering potion bottles blue glow dithered against wood grain implies magic but stays within palette limits because neon is a modern luxury we cant afford here. stained glass colors must clash with interior tones to create that holy vs profane vibe without adding new hues—redorangeyellowbluegreen plus blackwhite for shadows thats it. background rooftops in muted greysbrowns prevent competition their simplicity contrasts the shops meticulous detail reinforcing scale. lighting direction from upper left isnt arbitrary it forces depth perception through overlapping shapes and shadow lengths making this 2D space feel three-dimensional via pixel trickery. no ambient occlusion because rendering engines didnt exist then—just brute force dithering and color blocking. every choice here is a compromise between vision and technical constraint but the result? a scene that feels both epic and intimate like looking through a stained glass window into another world while standing in a dusty shop full of magic potions. smart tradeoffs.
**Composition:**
Here is a detailed composition description based on the image:
Foreground
The lower third of the frame depicts a dark wooden counter surface, rendered in deep brown pixels with subtle dithering patterns for texture. Five distinct glass bottles are arranged on this surface; each bottle's shape is defined by crisp pixel edges containing vibrant liquids—red-orange, yellow, blue, and green—that stand out sharply against the black wood. The bottle closest to the bottom center contains a glowing blue liquid that emits a soft inner glow, achieved through dithered light-blue pixels within its structure.
Mid-Ground
The central aisle is framed by tall wooden shelves extending from the floor to near the ceiling on both sides. These shelves are laden with hundreds of bottles, each rendered in varying colors—reds, oranges, yellows, blues, and greens—and arranged meticulously in rows that recede into the background. The shopkeeper stands behind a glass scale at the center; his figure is depicted in profile facing left, looking towards the viewer's perspective. He wears a heavy apron over dark clothing, with subtle pixel-level highlights on the fabric suggesting texture. His hands are positioned near the counter surface as if weighing or measuring an ingredient.
Background
The upper portion of the image features a large window framed by stained-glass panels that depict religious icons in red, orange, yellow, and blue dithered patterns. This primary light source bathes the interior with warm golden tones achieved through carefully placed color blocks. Dust motes dance in the air as tiny white or pale-yellow pixels scattered across the frame.
Through this window, a distant cityscape is visible—rooftops and spires rendered in muted greys and browns that contrast sharply with the vibrant interior colors of the shop. The high-contrast lighting creates deep shadows behind shelves and highlights on glass surfaces through deliberate pixel placement.
Lighting & Atmosphere
The scene is illuminated by directional light from the upper left, casting sharp-edged shadows defined by black pixels beneath objects and along counter edges. Highlights are rendered as bright white or pale yellow blocks on metallic surfaces like the brass scale and glass rims of bottles. The atmosphere feels dusty and quiet, with a sense of stillness conveyed through the precise arrangement of dithered pixels creating subtle gradients in the air between elements.
Spatial Logic
The composition uses a central aisle perspective that draws the viewer's eye from the foreground counter up toward the shopkeeper and finally to the background window. The shelves on either side create depth layers, with mid-ground bottles slightly softer due to pixel density, while distant rooftops are rendered in lower contrast through muted colors. This layered approach guides focus through the scene without relying on modern rendering techniques.
</details>
<details>
<summary>Example 3 — A quiet, melancholic autumn park bench under a single lamp p...</summary>
**Prompt:** A quiet, melancholic autumn park bench under a single lamp post at dusk, leaves falling, in watercolor and ink illustration style.
**Thinking:**
> spatial logic starts with isolation—bench centered but off-axis to avoid symmetrys sterility. diagonal slats on the seat create kinetic tension against verticals like tree trunks and lamppost. those parallel planks arent just woodgrain; theyre a grid holding chaos at bay while leaves riot below. smart move placing the figure slightly right—it lets negative space swallow their loneliness, posture angled inward to collapse into self. coats crosshatched folds? not just texture but narrative: every stroke is a memory pressing down on fabric. muted purple and gray arent colors theyre emotional filters—autumnal decay without being cliché. scarf loose at the neck screams vulnerability or exhaustion; either way its a visual metaphor for something left undone.
>
> midground trees framing like cathedral arches—rough bark strokes contrast with precise lamppost lines to separate organic from man-made. their canopies blur into washes because distance demands softness, but those falling leaves? jagged ink splatters that defy gravitys logic. deliberate imperfection there—the artist knows watercolor bleeds and leans into it for atmosphere. leaf piles on path arent just debris; theyre layered transparencies building depth like sedimentary rock of neglect. scattered papers with their corners curling upward—subtle storytelling. could be love letters or bills, but who cares? ambiguity is the point.
>
> background lamppost as a solitary sentinel—its sharp outlines carve order from twilights murk. amber glow isnt just light; its a warm island in cool blues and grays. that halo effect around the figure? not accidental—the artist wants us to see their face half-lit, eyes shadowed but mouth relaxed into something like acceptance or resignation. streetlamps position left of center creates asymmetrical balance: weight on the right (bench) countered by vertical thrust on the left (pole). smart—avoids static equilibrium.
>
> lighting is a character here. diffused washes for sky and distant trees because subtlety in background keeps focus where it belongs—the figures quiet despair under that stark lamppost. color palette isnt autumnal; its melancholic monochrome with hints of bruised fruit (purple) and overcast days (gray). no vibrant oranges—too cheerful for the briefs unspoken theme: lingering dusk, not celebration.
>
> every element arranged to whisper loneliness through composition mechanics. negative space around the figure amplifies their smallness against vast trees; parallel slats on bench mirror falling leaves descent lines. even the scarfs loose end echoes leaf shapes—repetition without being obvious. watercolor and ink blend because one medium softens, the other sharpens: duality of emotion rendered in technique.
>
> snarky critique? the leaves are overdone but thats the point—theyre a cliché weaponized into atmosphere via texture overload. lamppost couldve been rusted for authenticity but clean lines keep it timelessly sad instead of decrepit. figures posture avoids melodrama by being slightly too still—like theyre holding breath or waiting for something that wont come. papers arent litter; theyre relics of a quieter time, now just detritus in the narrative.
>
> spatial hierarchy is clear: foreground intimacy (bench), midground transition (trees and leaves), background order (lamppost). each layer tells part of the story—decay meets light meets structure. no element redundant; every stroke serves mood or metaphor. quiet genius lies in how mundane details become profound through arrangement alone.
**Composition:**
Foreground: A weathered wooden bench, its slats running parallel to the frame's diagonal, occupies the lower third of the composition. The wood grain is rendered with fine ink lines that catch the light on their edges, while watercolor washes bleed softly into the shadows between the slats. On this bench sits a solitary figure—slightly right of center—with shoulders rounded inward as if collapsing under an unseen weight. Their coat, painted in muted purple and gray strokes, falls to mid-calf; the fabric's folds are defined by subtle cross-hatching that suggests texture without hard lines. A scarf is loosely knotted at their neck, its ends trailing toward the ground where it meets a small pile of fallen leaves rendered as soft, blurred washes with visible paper texture showing through in lighter areas.
Midground: To both sides of the bench stretch rows of trees whose trunks are thickened by rough strokes that contrast sharply with smooth watercolor washes for their bark. Their canopies form an irregular archway overhead; individual leaves caught mid-fall drift downward at steep angles, rendered as delicate ink splatters against a sky painted in pale blue and gray washes. The path beneath the bench is littered not only with leaves but also scattered papers—some crumpled into tight balls defined by crisp outlines, others flattened underfoot showing faint text lines through translucent layers of wash.
Background: Beyond the midground trees rises a single streetlamp on its own pole, positioned left of center. Its warm amber glow is painted as soft halos bleeding into surrounding darkness; this light catches the figure's face in profile with gentle highlights that fade at edges without harsh transitions. The lamppost itself stands tall against the twilight sky—a vertical element balancing the bench's horizontal plane.
Lighting and Atmosphere: The scene exists between dusk and full night, where natural ambient light is low but not yet gone; artificial illumination from the streetlamp provides primary contrast through its warm tones against cool blue-gray washes of atmosphere. This creates gentle color separation that draws eye to the figure under the lamppost's glow while leaving surrounding trees in cooler, muted hues rendered as translucent layers building depth. The overall palette is dominated by quiet desaturation with subtle pops of amber and muted purple where light hits surfaces—all achieved through layered washes and precise ink lines that define structure without rigidity.
</details>
<details>
<summary>Example 4 — Infuse the following composition in Oil Painting - Classical...</summary>
**Prompt:** Infuse the following composition in Oil Painting - Classical: This is a horizontal composition depicting a striking architectural complex isolated in a serene landscape during twilight. The scene is divided into three distinct spatial zones to establish depth and hierarchy. Foreground: The lower third of the frame is dominated by a calm expanse of water, rendered in deep teal and dark blue tones. The surface features subtle, horizontal ripples that stretch across the width, creating a textured effect. Reflected on this surface are distorted, shimmering streaks of warm yellow and amber light from the building above, contrasting sharply with the cool, cool-blue darkness of the water. Mid-Ground: The centerline is occupied by the architectural complex itself, situated on a small rocky island or peninsula. The structure features symmetrical symmetry consisting of two tall, rectangular concrete towers flanking angled wings. Large hexagonal lattice screens screen the sloped roofs of the wings. These screens are glowing with a warm, amber light from behind, creating a honeycomb pattern that illuminates the surrounding dusk air. The central block is lower and wider, featuring horizontal slats of windows where bright interior lights spill out, contrasting against the dark gray concrete exterior. The architecture is grounded by sparse landscaping on the rocky shore—a cluster of small, sculpted cypress-like trees and dry grasses clinging to the rocks—emphasizing the isolation of the structure. Background: Rising behind the building are rugged mountain ranges with jagged peaks, rendered in muted greys and dark blues that fade into the horizon. The sky above is a heavy, textured slate blue filled with low-lying clouds that catch the last residual light from the horizon on their undersides. Lighting: The lighting logic relies on color contrast between the warm artificial light of the building (approx. 25003000 Kelvin) and the cool ambient twilight (approx. 60008000 Kelvin). The internal lights create a glowing, volumetric haze through the hexagonal lattice screens, while the exterior concrete surfaces are lit by soft, diffused moonlight or sky light from above, creating sharp shadows in the deep recesses of the vertical slits within the towers. The water reflects these two distinct color palettes, mixing the cool blues and warm oranges into a dynamic, rippling surface texture.
**Thinking:**
> Spatial hierarchy first—foreground water as dark stage, mid-ground structure centerstage, background mountains receding like a painted diorama. Waters deep teal and blue must be thickly applied to absorb light, creating that cool void against which the building will scream in amber. Ripples? Soft horizontal brushwork with dry bristle for texture, just enough to suggest movement without disrupting reflection clarity—those distorted yellow streaks need precision through thin glazes over thicker base layers. Smart move avoiding literal waves; this isnt a seascape its an architectural mood piece.
>
> Mid-ground complex demands symmetry but also tension—the towers flanking angled wings force the eye inward toward central block. Concrete surfaces require rough impasto to feel tactile, while interior lights spill as warm glazes over cool gray underpainting—contrast is key here. Hexagonal lattice screens: gotta balance structural detail with luminosity. Maybe scumble thin gold leaf behind glass? Or thickly paint amber resin and let it pool in recesses for that glowing honeycomb effect. The landscapings minimal but crucial—dry grasses as frayed threads of ochre over gray rocks, cypress clones reduced to dark smudges so the building dominates. Isolation achieved by making nature an afterthought.
>
> Background mountains need atmospheric perspective—blend muted grays and blues into horizon with wet-on-wet technique for softness. Slate blue sky? Layer thin glazes of cerulean and charcoal until it feels heavy but not murky; clouds as faint smudges beneath residual light to imply dusk without obscuring the structures silhouette. Lighting logic is all about temperature war—artificial warmth (amber) clashing with twilight coolness (blue). Use complementary color glazes: orange underpainting for interiors against teal water base. Volumetric haze? Thickly apply translucent resin over lattice screens to make light bleed into air, while moonlight on concrete is a thin wash of pale yellow over gray—sharp shadows in towers slits demand precise negative space through subtractive strokes.
>
> Why hexagonal lattices? Geometric repetition adds order without rigidity; the honeycomb pattern echoes classical mosaics but with modern industrial edge. Reflection distortion critical—cant just mirror reality, must abstract buildings glow into liquid streaks using wet palette techniques or alcohol-based mediums to keep water surface fluid yet defined. Spatial zones as layered transparencies: foreground is dense impasto holding depth, mid-ground architecture built up in thick opaque layers for mass, background a translucent wash dissolving into horizon—all unified by tonal harmony despite material differences. Snarky aside—the cypress trees are so simplified theyre practically emojis of nature but hey it works. Client wants drama not botany.
>
> Final check: does every brushstroke serve the contrast between human-made warmth and natural coolness? Yes—even the rocks texture contrasts smooth water below. Light sources must feel artificial yet organic; amber glow should pulse like a heartbeat against the still teal void. No room for ambiguity here, this isnt an impressionist seascape its a classical oil screaming order through chaos. Now layer like a pro and pray the varnish doesnt yellow too fast.
**Composition:**
A classical oil painting of a striking architectural complex isolated in a serene landscape during twilight. The scene is divided into three distinct spatial zones to establish depth and hierarchy.
Foreground: The lower third of the frame is dominated by a calm expanse of water, rendered with thick impasto texture that holds deep teal shadows and dark blue tones. The surface features subtle, horizontal ripples painted in deliberate brushstrokes stretching across the width, creating a textured effect. Reflected on this surface are distorted, shimmering streaks of warm yellow and amber light from the building above, their glow built up through layered glazes that contrast sharply against the cool, cool-blue darkness of the water.
Mid-Ground: The centerline is occupied by the architectural complex itself, situated on a small rocky island or peninsula. The structure features symmetrical symmetry consisting of two tall, rectangular concrete towers flanking angled wings. Large hexagonal lattice screens are painted with precise detail and thick application for the sloped roofs of the wings; these screens glow from within through warm amber light built up in layers that creates a honeycomb pattern illuminating the surrounding dusk air. The central block is lower and wider, featuring horizontal slats of windows where bright interior lights spill out—these are rendered as luminous glazes contrasting against the dark gray concrete exterior painted with rough texture.
The architecture is grounded by sparse landscaping on the rocky shore—a cluster of small, sculpted cypress-like trees and dry grasses clinging to the rocks, their forms suggested through deliberate brushwork emphasizing isolation. The concrete surfaces show craquelure textures indicating age.
Background: Rising behind the building are rugged mountain ranges with jagged peaks rendered in muted greys and dark blues that fade into the horizon. These mountains have a painterly atmospheric perspective created by softening edges and blending colors toward the distance. The sky above is heavy, textured slate blue filled with low-lying clouds whose undersides catch residual light from the horizon—this effect is built up through layered washes.
Lighting: The lighting logic relies on color contrast between warm artificial light (approx. 25003000 Kelvin) and cool ambient twilight (approx. 60008000 Kelvin). Internal lights create glowing volumetric haze that filters through hexagonal lattice screens; exterior concrete surfaces are lit by soft diffused moonlight or sky light from above, casting sharp shadows in deep recesses of vertical slits within the towers—these shadows have defined edges and subtle craquelure texture. The water reflects these two distinct palettes, mixing cool blues with warm oranges into dynamic rippling surface textures through careful layering of glazes over a dark base tone.
</details>
<details>
<summary>Example 5 — A dynamic combat scene in the Warhammer 40k universe, render...</summary>
**Prompt:** A dynamic combat scene in the Warhammer 40k universe, rendered in Painterly Strong Graphic Novel art style.
**Thinking:**
> Vertical composition, low-angle shot.
>
> Yes, because nothing says "I'm about to crush you" like looking up at a genestealer swarm while your marine's armor is splattered with bioluminescent ooze. The contrast between the dark greens and that neon green is screaming 40k horror chic. I need those thick black ink lines to carve out every crack in his power sword, making it glow like a dying star against the chaos.
>
> The foreground marine is centered but angled rightward, creating dynamic tension with the advancing horde. His left arm is extended upward for a parry, and his right hand holds a pistol aimed at the central creature's face. This creates an X-shape that locks viewers into the violence of the moment. The power sword's blue-white plasma beam cuts through murky water, illuminating floating spores and debris while casting sharp shadows behind him.
>
> The central genestealer in mid-action dominates the upper center third, its elongated skull snarling downward with jagged teeth highlighted by rim light. Its clawed hands are reaching toward the marine's helmet, establishing a visceral threat radius. The surrounding swarm flanks left and right edges, their chitinous carapaces glistening with wet textures rendered through loose brushwork that contrasts sharply against the ink-defined armor plates.
>
> The environment is a flooded ruin with submerged gothic arches in the background on both sides, framing depth while dark water absorbs light except for bioluminescent elements. The marine's tabard and the central creature's head glow as the primary illumination sources. A cold, clinical blue from his blade clashes with the sickly green ambient glow of algae or maybe radioactive sludge.
>
> The color palette is desaturated industrial greys and teals in shadows, punctuated by those neon accents to heighten horror and motion. Painted strokes on water ripples suggest recent disturbance while maintaining a graphic novel aesthetic throughout. Every element serves the visceral chaos of close-quarters combat because if it doesn't scream "glory or death," then what's the point?
**Composition:**
A painterly graphic novel illustration captures this chaotic melee within the Warhammer 40k universe, rendered in thick black ink lines and vivid color contrasts that emphasize both the grim darkness of the setting and the dynamic motion of the combat.
This vertical composition depicts a desperate close-quarters battle fought within a flooded, submerged ruin. The perspective is slightly low-angle to emphasize the towering presence of the alien horde against the Space Marine's defiance.
The Foreground Action:
Dominating the lower center is a Space Marine in blue power armor with gold trim and a white shoulder pauldron emblazoned with an Imperial insignia. He stands braced for impact, facing right but angled toward the viewer to show his profile as he parries an attack from above. His left arm is raised high holding a massive two-handed sword that emits a glowing blue-white plasma beam at its tip; this blade cuts across the frame diagonally upward, illuminating floating spores and debris in the murky water around him while casting sharp shadows behind him.
In his right hand, he holds a heavy pistol aimed forward toward an enemy's face. The armor is heavily detailed with thick black ink lines defining every plate and joint, contrasting against the dark green of his tabard which flows loosely over his left thigh. His helmet visor glows with a faint red light behind which his eyes are obscured.
The Mid-Ground Action:
Surrounding him in mid-air are multiple Genestealers—elongated alien creatures with bony skulls and long claws, their chitinous carapaces glistening wetly under the ambient bioluminescence. One prominent creature dominates the upper center third of the image; it is lunging downward toward the Marine's head, its mouth open in a snarl revealing jagged teeth while reaching out with clawed hands that appear poised to strike or grab his helmet.
Its skull features distinct bony ridges highlighted by rim light from above. To both sides—flanking left and right edges of the frame—other Genestealers are visible mid-leap, their bodies angled aggressively toward the center as if converging on the Space Marine in a coordinated attack pattern. Their wet surfaces reflect light with loose brushwork that contrasts against the ink-defined armor plates.
The Background Environment:
The setting is a flooded ruin featuring gothic architecture submerged under dark water. Behind the action, large stone archways and broken pillars rise out of the depths on both left and right sides, creating depth while framing the scene in darkness. The background fades into deep shadow where only faint outlines of windows or carvings are visible against the gloom.
The lighting is bioluminescent: a cool blue glow emanates from the Space Marine's sword illuminating floating particles in water around them; this contrasts sharply with sickly green ambient light filtering through murky depths from unknown sources below. The color palette uses desaturated industrial greys and teals for shadows, punctuated by the bright neon green of bioluminescent elements and blue plasma weapon glow.
The water surface is active—painted strokes suggest recent disturbance creating ripples around submerged objects while maintaining a painterly graphic novel aesthetic throughout.
</details>
<details>
<summary>Example 6 — What is the difference between Architectural Fantasy Linewor...</summary>
**Prompt:** What is the difference between Architectural Fantasy Linework art style and Watercolor art style?
**Thinking:**
> the user wants a comparison between architectural fantasy linework and watercolor—probably for aesthetic or technical clarity lets dissect this like a blueprint first principles approach necessary here precision versus fluidity is key architectural fantasy linework demands hyper-detailed drafting think CAD render meets mythic scale every structural element must scream intention from the ink itself no soft edges allowed thats where watercolor would muddy the waters literally those translucent washes are too forgiving for this level of control you need hard lines to define impossible geometry like floating cities or dragon bones otherwise it becomes a blobfest not artistry spatial hierarchy is nonnegotiable in fantasy architecture perspective must dominate even if surreal elements are present so foreground midground background layers with crosshatched shadows and calculated light sources—no random splatters this isnt impressionism its structural poetry watercolors bleed would ruin the crispness required for linework to read as engineering magic not just pretty squiggles paper texture is a weapon here aged parchment feel under ink highlights depth like weathered stone versus fresh paint those white specks arent accidents theyre deliberate erosion markers showing time and tension now contrast that with watercolors wet-on-wet diffusion—too organic too unpredictable for architectural rigor the transparency washes might suggest mist but not structural integrity you cant have both precision and chaos in one medium without compromising the fantasys plausibility within its own rules line density is crucial sparse lines for distant spires heavy crosshatching on foreground drapery or stone to imply weight and materiality watercolor lacks that tactile variance its all about color temperature not texture so if they want to convey epic scale through detailed rendering architectural fantasy linework wins hands down but maybe the user wants atmospheric depth without sacrificing structure—watercolor could layer translucency over precise ink outlines creating hybrid drama however that risks losing the purity of each styles intent perhaps they should choose one dominant medium with strategic accents from the other no half-measures here this isnt a mood board its structural storytelling every stroke must serve either form or narrative watercolors softness might soften the fantasy into abstraction while linework grounds it in tangible impossibility the key is knowing when to prioritize control over emotion or vice versa but since they asked for the difference—pure styles no blends just cold hard truths about materials and methods this isnt a debate its an anatomy of mediums so ill dissect their pros cons and inherent limitations like a forensic architect
**Composition:**
The Architectural Fantasy Linework art style is a meticulous drafting technique where every structural detail emerges from precise ink lines. This style captures the grandeur of impossible architecture with technical clarity—delicate linework defines soaring spires, while dense crosshatching creates shadowed recesses in stone or fabric. The composition's perspective remains intact even amidst fantastical elements like floating cities or dragon scales, all rendered as if drawn by a master architect documenting their vision.
Watercolor art style uses translucent washes to build up color gradually on cold press paper. This approach creates soft edges where forms meet and allows for organic diffusion of pigment—a quality that lends itself well to atmospheric effects in fantasy landscapes. The wet-on-wet application can produce unpredictable color bleeds, while dry brush techniques add textural variety without disrupting the composition's integrity.
Key differences:
1. Linework versus wash dominance Architectural Fantasy Linework is line-driven; watercolor relies on layered washes for form definition.
2. Edge control The linework maintains hard edges between elements (like ink outlines), while watercolor's soft transitions might blur boundaries slightly due to pigment diffusion.
3. Texture interaction In the linework, white paper shows through as highlights in shadow areas, enhancing depth perception. Watercolor uses its own granulation and cauliflower effects for textural interest without competing with structural lines.
4. Color application method Linework can be applied over colored washes or remain monochromatic; watercolor builds all form from transparent layers.
In a composition featuring both styles (e.g., detailed linework for architecture + atmospheric watercolor for environment), the linework would provide the precise, hard-edged structural foundation while watercolor's soft transitions and color bleeds suggest movement in surrounding elements like mist or light sources.
</details>
---
## 🛠️ Included: Mordant Prompt Enhancer (ComfyUI Node)
A custom **ComfyUI node** (`MordantPromptEnhancer`) is included with this model. It automatically:
- Loads the GGUF file you select.
- Detects your GPU's VRAM and **autotunes the number of offloaded layers**, leaving a safe 2 GB margin to avoid OOM errors.
- Handles all tokenization, prompt formatting (ChatML), and chainofthought parsing (`<think>…</think>`).
- Node looks for the gguf models in comfy-ui's "text_encoders" folder.
**Outputs:**
- `composition` (the final, rewritten prompt)
- `thinking` (the model's internal reasoning)
**Installation**
Place the node file in ComfyUI's `custom_nodes/` folder. The only additional dependency is `llama-cpp-python`.
**CPUonly** (no GPU offloading):
```bat
# Windows portable
python_embeded\python.exe -m pip install llama-cpp-python
```
```bash
# Linux / venv / Mac
pip install llama-cpp-python
```
**GPU / CUDA — recommended** (prebuilt wheels, no compiler required):
```bat
# Windows portable — replace cu121 with your CUDA version
python_embeded\python.exe -m pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
```
```bash
# Linux / venv — replace cu121 with your CUDA version
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
```
> Supported versions: `cu121` · `cu122` · `cu124` · `cu125` — run `nvidia-smi` to check yours (topright of output).
<details>
<summary>Build from source (advanced — only if wheels fail)</summary>
Requires CUDA Toolkit, CMake, and C++ build tools (Visual Studio on Windows).
```bat
# Windows
set CMAKE_ARGS=-DGGML_CUDA=on
python_embeded\python.exe -m pip install llama-cpp-python --force-reinstall --no-cache-dir
```
```bash
# Linux
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python --force-reinstall --no-cache-dir
```
</details>
After restarting ComfyUI, the node appears under `text/llm` as **Mordant Prompt Enhancer**. Just pick your model and start composing.
---
## License
Apache 2.0 — see [LICENSE](LICENSE) for full terms.

32
chat_template.jinja Normal file
View File

@@ -0,0 +1,32 @@
{{- bos_token -}}
{%- set keep_past_thinking = keep_past_thinking | default(false) -%}
{%- set ns = namespace(system_prompt="") -%}
{%- if messages[0]["role"] == "system" -%}
{%- set ns.system_prompt = messages[0]["content"] -%}
{%- set messages = messages[1:] -%}
{%- endif -%}
{%- if ns.system_prompt -%}
{{- "<|im_start|>system\n" + ns.system_prompt + "<|im_end|>\n" -}}
{%- endif -%}
{%- set ns.last_assistant_index = -1 -%}
{%- for message in messages -%}
{%- if message["role"] == "assistant" -%}
{%- set ns.last_assistant_index = loop.index0 -%}
{%- endif -%}
{%- endfor -%}
{%- for message in messages -%}
{{- "<|im_start|>" + message["role"] + "\n" -}}
{%- set content = message["content"] -%}
{%- if content is not string -%}
{%- set content = content | tojson -%}
{%- endif -%}
{%- if message["role"] == "assistant" and not keep_past_thinking and loop.index0 != ns.last_assistant_index -%}
{%- if "</think>" in content -%}
{%- set content = content.split("</think>")[-1] | trim -%}
{%- endif -%}
{%- endif -%}
{{- content + "<|im_end|>\n" -}}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{- "<|im_start|>assistant\n<think>\n" -}}
{%- endif -%}

34
config.json Normal file
View File

@@ -0,0 +1,34 @@
{
"architectures": [
"MistralForCausalLM"
],
"attention_dropout": 0.0,
"bos_token_id": 1,
"dtype": "bfloat16",
"eos_token_id": 2,
"head_dim": 128,
"hidden_act": "silu",
"hidden_size": 5120,
"initializer_range": 0.02,
"intermediate_size": 14336,
"max_position_embeddings": 1024000,
"model_name": "DavidAU/Mistral-Nemo-2407-12B-Thinking-Claude-Gemini-GPT5.2-Uncensored-HERETIC",
"model_type": "mistral",
"num_attention_heads": 32,
"num_hidden_layers": 40,
"num_key_value_heads": 8,
"pad_token_id": 10,
"rms_norm_eps": 1e-05,
"rope_parameters": {
"rope_theta": 1000000.0,
"rope_type": "default"
},
"rope_scaling": null,
"rope_theta": 1000000.0,
"sliding_window": null,
"tie_word_embeddings": false,
"transformers_version": "4.57.6",
"unsloth_version": "2026.5.9",
"use_cache": true,
"vocab_size": 131072
}

10
generation_config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"_from_model_config": true,
"bos_token_id": 1,
"eos_token_id": [
2
],
"max_length": 1024000,
"pad_token_id": 10,
"transformers_version": "4.57.6"
}

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1999e62c72f8606a51535650d951ba1e460ef709f08f0a106caed5fa906a1561
size 10056210720

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3c8dae017237eb807a139c176fd0bdac896e1a624bc7e077389f7cdfd2977031
size 13022370080

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6bcf3aca44ce7709d87b4da7c412f6ead387179de0fc35b6656d706607ca0f43
size 24504277280

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:be63340446956afae5d1fdfd3d7c50269aa0df4ac5e2277d19e2ec73c8714a44
size 4865522496

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1a8d6f77f89f06005eb75ce86be568f5fdc2f73c43aa95f4a2864cfc2d77857
size 4907529424

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5682ac5784c25164800d64c7b8b96891bc110b45901c96d8408177cf8a7474c8
size 4907529456

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1271e42123b6ddd33bc3fc75030bf4587285a0c186198794ebfab60fb79bb736
size 4907529456

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:223e3e53ee9bbe69135af2ee66d30c6541f9f78354ddff9de3c7d17ca4c4746d
size 4907496272

View File

@@ -0,0 +1,371 @@
{
"metadata": {
"total_parameters": 12247782400,
"total_size": 24495564800
},
"weight_map": {
"lm_head.weight": "model-00005-of-00005.safetensors",
"model.embed_tokens.weight": "model-00001-of-00005.safetensors",
"model.layers.0.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.0.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.0.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.0.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.1.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.1.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.1.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.10.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.10.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.10.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.10.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.11.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.11.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.11.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.12.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.12.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.12.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.13.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.13.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.13.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.14.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.14.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.14.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.15.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.15.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.15.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.15.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.15.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.15.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.15.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.15.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.15.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.16.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.16.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.16.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.16.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.17.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.17.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.17.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.18.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.18.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.18.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.19.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.19.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.19.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.2.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.2.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.2.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.2.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.20.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.20.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.20.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.20.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.21.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.21.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.21.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.22.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.22.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.22.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.input_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.23.mlp.down_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.mlp.up_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.post_attention_layernorm.weight": "model-00003-of-00005.safetensors",
"model.layers.23.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.23.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.24.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.24.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.24.mlp.gate_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.24.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.24.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.24.self_attn.k_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.24.self_attn.o_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.24.self_attn.q_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.24.self_attn.v_proj.weight": "model-00003-of-00005.safetensors",
"model.layers.25.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.25.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.25.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.25.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.26.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.26.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.26.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.27.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.27.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.27.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.28.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.28.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.28.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.29.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.29.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.29.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.3.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.3.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.3.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.3.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.30.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.30.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.30.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.30.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.31.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.31.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.31.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.input_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.32.mlp.down_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.mlp.up_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.post_attention_layernorm.weight": "model-00004-of-00005.safetensors",
"model.layers.32.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.32.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.33.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.33.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.33.mlp.gate_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.33.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.33.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.33.self_attn.k_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.33.self_attn.o_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.33.self_attn.q_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.33.self_attn.v_proj.weight": "model-00004-of-00005.safetensors",
"model.layers.34.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.34.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.34.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.34.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.35.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.35.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.35.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.36.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.36.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.36.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.37.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.37.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.37.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.38.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.38.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.38.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.input_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.39.mlp.down_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.mlp.gate_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.mlp.up_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.post_attention_layernorm.weight": "model-00005-of-00005.safetensors",
"model.layers.39.self_attn.k_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.self_attn.o_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.self_attn.q_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.39.self_attn.v_proj.weight": "model-00005-of-00005.safetensors",
"model.layers.4.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.4.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.4.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.4.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.input_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.5.mlp.down_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.mlp.up_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.post_attention_layernorm.weight": "model-00001-of-00005.safetensors",
"model.layers.5.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.5.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.6.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.6.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.6.mlp.gate_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.6.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.6.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.6.self_attn.k_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.6.self_attn.o_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.6.self_attn.q_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.6.self_attn.v_proj.weight": "model-00001-of-00005.safetensors",
"model.layers.7.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.7.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.7.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.7.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.8.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.8.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.8.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.input_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.9.mlp.down_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.mlp.gate_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.mlp.up_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.post_attention_layernorm.weight": "model-00002-of-00005.safetensors",
"model.layers.9.self_attn.k_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.self_attn.o_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.self_attn.q_proj.weight": "model-00002-of-00005.safetensors",
"model.layers.9.self_attn.v_proj.weight": "model-00002-of-00005.safetensors",
"model.norm.weight": "model-00005-of-00005.safetensors"
}
}

View File

@@ -0,0 +1,350 @@
import os
import gc
import threading
from typing import Optional
import torch
from llama_cpp import Llama
from comfy import model_management
import folder_paths
# -------------------------------------------------------------------
# 1. Helpers for GGUF file listing & resolution (unchanged)
# -------------------------------------------------------------------
_CACHE = {}
_CACHE_LOCK = threading.Lock()
def _list_gguf_files():
candidates = []
base_dirs = []
try:
base_dirs.extend(folder_paths.get_folder_paths("text_encoders"))
except Exception:
pass
for base in base_dirs:
if not base or not os.path.isdir(base):
continue
for root, _, files in os.walk(base):
for name in files:
if name.lower().endswith(".gguf"):
full = os.path.join(root, name)
try:
rel = os.path.relpath(full, base)
if rel not in candidates:
candidates.append(rel)
except Exception:
if full not in candidates:
candidates.append(full)
if "<manual_path>" not in candidates:
candidates.append("<manual_path>")
return candidates
def _resolve_model_path(model_name: str, manual_model_path: str = "") -> str:
if os.path.isabs(model_name) and os.path.isfile(model_name):
return model_name
if model_name == "<manual_path>":
p = (manual_model_path or "").strip()
if not p:
raise ValueError("model is <manual_path> but manual_model_path is empty")
if not os.path.isfile(p):
raise FileNotFoundError(f"GGUF model not found: {p}")
return p
full = folder_paths.get_full_path("text_encoders", model_name)
if full and os.path.isfile(full):
return full
try:
for base in folder_paths.get_folder_paths("text_encoders"):
probe = os.path.join(base, model_name)
if os.path.isfile(probe):
return probe
except Exception:
pass
raise FileNotFoundError(f"Could not resolve GGUF model path for: {model_name}")
def _build_messages(system_prompt: str, user_prompt: str):
messages = []
if system_prompt.strip():
messages.append({"role": "system", "content": system_prompt.strip()})
messages.append({"role": "user", "content": user_prompt.strip()})
return messages
def _assemble_prompt(messages: list, model_family: str) -> str:
prompt = ""
if model_family == "granite":
for msg in messages:
prompt += f"<|start_of_role|>{msg['role']}<|end_of_role|>{msg['content']}<|end_of_text|>\n"
prompt += "<|start_of_role|>assistant<|end_of_role|><think>\n"
else:
for msg in messages:
prompt += f"<|im_start|>{msg['role']}\n{msg['content']}<|im_end|>\n"
prompt += "<|im_start|>assistant\n<think>"
return prompt
# -------------------------------------------------------------------
# 2. Lookup table for Mordant models (unchanged)
# -------------------------------------------------------------------
MORDANT_INFO = {
"mordant-1.2b": {
"layers": 16,
"bf16_total_gb": 2.35,
"per_layer": {
"bf16": 2.35 / 16,
"q8_0": 1.27 / 16,
"q6_k_m": 1.01682 / 16,
"q5_k_m": None,
"q4_k_m": None,
}
},
"mordant-3b": {
"layers": 40,
"bf16_total_gb": 6.99,
"per_layer": {
"bf16": 6.99 / 40,
"q8_0": 3.86 / 40,
"q6_k_m": 3.05 / 40,
"q5_k_m": 2.70 / 40,
"q4_k_m": None,
}
},
"mordant-7b": {
"layers": 32,
"bf16_total_gb": 16.29,
"per_layer": {
"bf16": 16.29 / 32,
"q8_0": 9.58 / 32,
"q6_k_m": 7.85 / 32,
"q5_k_m": 7.08 / 32,
"q4_k_m": None,
}
},
"mordant-12b": {
"layers": 40,
"bf16_total_gb": 24.81,
"per_layer": {
"bf16": 24.81 / 40,
"q8_0": 13.55 / 40,
"q6_k_m": 10.64 / 40,
"q5_k_m": 9.33 / 40,
"q4_k_m": 8.11 / 40,
}
},
}
def _detect_model_info(model_path: str):
try:
llm_meta = Llama(model_path=model_path, vocab_only=True, n_gpu_layers=0, verbose=False)
meta = llm_meta.metadata
arch = meta.get("general.architecture", "unknown")
total_layers = int(meta.get(f"{arch}.block_count", 0))
quant_version = meta.get("general.quantization_version", "unknown").lower()
if quant_version == "unknown":
quant_version = meta.get("tokenizer.ggml.quantization_version", "unknown").lower()
del llm_meta
except Exception:
fname = os.path.basename(model_path).lower()
for name in MORDANT_INFO:
if name in fname:
info = MORDANT_INFO[name]
total_layers = info["layers"]
quant_version = "bf16"
for q in ["q8_0", "q6_k_m", "q5_k_m", "q4_k_m", "q3_k_m", "q2_k_m"]:
if q in fname:
quant_version = q
break
break
else:
total_layers = 32
quant_version = "bf16"
model_name = None
fname_lower = os.path.basename(model_path).lower()
for name in MORDANT_INFO:
if name in fname_lower:
model_name = name
break
if model_name is None:
file_size_gb = os.path.getsize(model_path) / (1024**3)
per_layer_vram = file_size_gb / total_layers if total_layers > 0 else 0.5
return (model_name or "unknown", total_layers, per_layer_vram, quant_version)
info = MORDANT_INFO[model_name]
layers = info["layers"]
per_layer_dict = info.get("per_layer", {})
per_layer_vram = None
quant_clean = quant_version.replace("_0", "").replace("_1", "").lower()
if quant_version in per_layer_dict and per_layer_dict[quant_version] is not None:
per_layer_vram = per_layer_dict[quant_version]
elif quant_clean in per_layer_dict and per_layer_dict[quant_clean] is not None:
per_layer_vram = per_layer_dict[quant_clean]
else:
bf16_per_layer = per_layer_dict.get("bf16")
if bf16_per_layer is None:
bf16_total = info["bf16_total_gb"]
bf16_per_layer = bf16_total / layers
actual_file_size_gb = os.path.getsize(model_path) / (1024**3)
per_layer_vram = actual_file_size_gb / layers
return model_name, layers, per_layer_vram, quant_version
def _auto_n_gpu_layers(model_path: str, verbose: bool = False) -> int:
if not torch.cuda.is_available():
return 0
total_vram_gb = torch.cuda.get_device_properties(0).total_memory / (1024**3)
usable_vram_gb = max(0, total_vram_gb - 2.0)
model_name, max_layers, per_layer_vram, quant = _detect_model_info(model_path)
if per_layer_vram <= 0:
return 0
n_layers = int(usable_vram_gb / per_layer_vram)
n_layers = max(0, min(max_layers, n_layers))
if verbose:
print(f"[Mordant Enhancer] GPU VRAM: {total_vram_gb:.2f} GB, "
f"Reserved: 2.00 GB, Usable: {usable_vram_gb:.2f} GB")
print(f"[Mordant Enhancer] Model: {model_name}, Layers: {max_layers}, "
f"Quant: {quant}, Perlayer VRAM: {per_layer_vram:.4f} GB")
print(f"[Mordant Enhancer] Autoselected GPU layers: {n_layers}")
return n_layers
# -------------------------------------------------------------------
# 3. Main node class Mordant Prompt Enhancer
# -------------------------------------------------------------------
class MordantPromptEnhancer:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"model": (_list_gguf_files(),),
"text": ("STRING", {"multiline": True, "default": "Rewrite this image prompt conservatively."}),
"mode": (["enhancer", "general"], {"default": "enhancer"}),
"enable_enhancement": ("BOOLEAN", {"default": True}),
"sampling_mode": ("BOOLEAN", {"default": True}),
"max_new_tokens": ("INT", {"default": 8192, "min": 1, "max": 8192}),
"seed": ("INT", {"default": 0, "min": -1, "max": 2147483647}),
"temperature": ("FLOAT", {"default": 0.7, "min": 0.0, "max": 5.0, "step": 0.05}),
"top_p": ("FLOAT", {"default": 0.95, "min": 0.0, "max": 1.0, "step": 0.01}),
"top_k": ("INT", {"default": 50, "min": 0, "max": 1000}),
"repeat_penalty": ("FLOAT", {"default": 1.0, "min": 1.0, "max": 2.0, "step": 0.01}),
"n_batch": ("INT", {"default": 2048, "min": 32, "max": 4096, "step": 32}),
"keep_loaded": ("BOOLEAN", {"default": False}),
"offload_kqv": ("BOOLEAN", {"default": True}),
"flash_attn": ("BOOLEAN", {"default": True}),
"verbose": ("BOOLEAN", {"default": False}),
},
"optional": {
"manual_model_path": ("STRING", {"default": "", "multiline": False}),
"custom_system_prompt": ("STRING", {"default": "", "multiline": True}),
},
}
RETURN_TYPES = ("STRING", "STRING")
RETURN_NAMES = ("composition", "thinking")
FUNCTION = "generate"
CATEGORY = "text/llm"
def generate(self, model, text, mode, enable_enhancement,
sampling_mode, max_new_tokens, seed, temperature, top_p, top_k,
repeat_penalty, n_batch, keep_loaded, offload_kqv, flash_attn,
verbose, manual_model_path="", custom_system_prompt=""):
if not enable_enhancement:
return (text, "")
model_path = _resolve_model_path(model, manual_model_path)
system_prompt = (custom_system_prompt or "").strip()
n_ctx = 8192
n_threads = os.cpu_count() or 4
n_gpu_layers = _auto_n_gpu_layers(model_path, verbose=verbose)
if not sampling_mode:
eff_temp, eff_top_p, eff_top_k, eff_repeat_penalty = 0.2, 0.9, 20, max(repeat_penalty, 1.05)
else:
eff_temp, eff_top_p, eff_top_k, eff_repeat_penalty = temperature, top_p, top_k, repeat_penalty
try:
from llama_cpp import Llama
except ImportError:
raise RuntimeError("llama-cpp-python not installed.")
def _create_model():
kwargs = dict(
model_path=model_path,
n_ctx=n_ctx,
n_gpu_layers=n_gpu_layers,
n_batch=n_batch,
verbose=verbose,
cuda_graphs=False,
use_mmap=False,
use_mlock=False,
)
if n_threads is not None:
kwargs["n_threads"] = n_threads
try:
kwargs["offload_kqv"] = offload_kqv
kwargs["flash_attn"] = flash_attn
return Llama(**kwargs)
except TypeError:
kwargs.pop("offload_kqv", None)
kwargs.pop("flash_attn", None)
return Llama(**kwargs)
if keep_loaded:
key = (model_path, n_ctx, n_gpu_layers, n_threads, n_batch, offload_kqv, flash_attn)
with _CACHE_LOCK:
llm = _CACHE.get(key)
if llm is None:
llm = _create_model()
_CACHE[key] = llm
else:
llm = _create_model()
actual_family = "chatml"
if hasattr(llm, 'metadata'):
chat_template = llm.metadata.get('tokenizer.chat_template', '').lower()
if 'granite' in chat_template or 'start_of_role' in chat_template:
actual_family = "granite"
messages = _build_messages(system_prompt, text)
prompt = _assemble_prompt(messages, actual_family)
out = llm.create_completion(
prompt=prompt,
max_tokens=max_new_tokens,
temperature=eff_temp,
top_p=eff_top_p,
top_k=eff_top_k,
repeat_penalty=eff_repeat_penalty,
seed=None if seed < 0 else seed,
)
result_text = out["choices"][0]["text"]
if "</think>" in (result_text or ""):
parts = (result_text or "").rsplit("</think>", 1)
analysis_text, final_text = parts[0].strip(), parts[1].strip()
else:
analysis_text, final_text = "", (result_text or "").strip()
return (final_text, analysis_text)
# -------------------------------------------------------------------
# 4. Node registration
# -------------------------------------------------------------------
NODE_CLASS_MAPPINGS = {
"MordantPromptEnhancer": MordantPromptEnhancer,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"MordantPromptEnhancer": "Mordant Prompt Enhancer",
}

View File

@@ -0,0 +1,54 @@
Just place the Mordant-Prompt-Enhancer file in your ComfyUI custom_nodes folder.
You can see in the example workflow how to connect everything. And the default settings should be good, and you can experiment after.
The node looks for the models in the /models/text_encoders forlders, so place the mordant gguf there.
What does the mode do?
Enhancer is your daily prompt enhancer mode, general is more of a llm.
enable_enhancement toggle, basically turns the node on and off, for when you want to just use your own un-altered prompt.
Everything else is fairly obvious, if not, you should just leave it as is. Keep_loaded is if you have enough vram to keep the model loaded after generation, otherwise, by default the node unloads it.
**Installation**
Place the node file in ComfyUI's `custom_nodes/` folder. The only additional dependency is `llama-cpp-python`.
**CPUonly** (no GPU offloading):
```bat
# Windows portable
python_embeded\python.exe -m pip install llama-cpp-python
```
```bash
# Linux / venv / Mac
pip install llama-cpp-python
```
**GPU / CUDA — recommended** (prebuilt wheels, no compiler required):
```bat
# Windows portable — replace cu121 with your CUDA version
python_embeded\python.exe -m pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
```
```bash
# Linux / venv — replace cu121 with your CUDA version
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121
```
> Supported versions: `cu121` · `cu122` · `cu124` · `cu125` — run `nvidia-smi` to check yours (topright of output).
<details>
<summary>Build from source (advanced — only if wheels fail)</summary>
Requires CUDA Toolkit, CMake, and C++ build tools (Visual Studio on Windows).
```bat
# Windows
set CMAKE_ARGS=-DGGML_CUDA=on
python_embeded\python.exe -m pip install llama-cpp-python --force-reinstall --no-cache-dir
```
```bash
# Linux
CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python --force-reinstall --no-cache-dir
```
</details>
After restarting ComfyUI, the node appears under `text/llm` as **Mordant Prompt Enhancer**. Just pick your model and start composing.

View File

@@ -0,0 +1,757 @@
{
"id": "8e195d44-7179-4dfd-b08d-635cff8984d8",
"revision": 0,
"last_node_id": 37,
"last_link_id": 51,
"nodes": [
{
"id": 2,
"type": "LoaderGGUFAdvanced",
"pos": [
22242.338811590744,
11999.450597519388
],
"size": [
270.8125,
203.96875
],
"flags": {
"pinned": true
},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
37
]
}
],
"properties": {
"Node name for S&R": "LoaderGGUFAdvanced"
},
"widgets_values": [
"QwenImg\\flux2-dev-Q5_K_M.gguf",
"float32",
"float32",
false
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 4,
"type": "CLIPLoader",
"pos": [
22242.338811590744,
12239.450597519388
],
"size": [
270.4375,
187.03125
],
"flags": {
"collapsed": false,
"pinned": true
},
"order": 1,
"mode": 0,
"showAdvanced": true,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
34,
42
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader"
},
"widgets_values": [
"mistral_3_small_flux2_fp8.safetensors",
"flux2",
"default"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 5,
"type": "VAELoaderKJ",
"pos": [
22242.338811590744,
12459.450597519388
],
"size": [
270,
175.96875
],
"flags": {
"pinned": true
},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
22,
24,
47
]
}
],
"properties": {
"Node name for S&R": "VAELoaderKJ"
},
"widgets_values": [
"flux2-vae.safetensors",
"main_device",
"fp32"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 7,
"type": "TextEncodeQwenImageEdit",
"pos": [
22560,
13050
],
"size": [
287.875,
184.40625
],
"flags": {
"collapsed": false,
"pinned": true
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 42
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 47
},
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "prompt",
"type": "STRING",
"widget": {
"name": "prompt"
},
"link": 51
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
41
]
}
],
"title": "Positive",
"properties": {
"Node name for S&R": "TextEncodeQwenImageEdit"
},
"widgets_values": [
"A painterly strong graphic novel illustration of a dynamic combat scene set within the catacombs of an abandoned cathedral during the Warhammer 40k universe. The composition is rendered with expressive brushwork that emphasizes the gritty texture of the environment against the warm glow of the setting sun.\n\n**Foreground Action:**\nThe lower section of the frame is dominated by the massive, red sash of a leviathan-clad warrior, its fabric rippling in the wind. He leans forward with aggressive momentum, his body angled slightly toward the viewer but his gaze fixed on the enemy ahead. His heavy, gold-trimmed leather armor is detailed with heavy pauldrons featuring intricate black and red sigils that catch the light. On his back, a large, segmented leviathan head—black bone and skin with glowing red eyes—recedes into the frame, its mouth open in a roar or claw strike. The texture of his leather is rough-hewn, with visible brushstrokes that emphasize the weight of his armor.\n\n**Mid-Ground Action:**\nTo the left, a towering figure in heavy, black leather armor with glowing red sigils on his chest stands in a dynamic pose. His massive, horned headpiece with jagged edges and a glowing red sigil on the forehead is a focal point of the scene. He holds a massive, glowing green weapon (the Leviathan's staff) diagonally across his body, the energy of the weapon rendered as distinct, pulsating lines that contrast sharply with the cool tones of his armor. The light from the weapon casts sharp, defined shadows on his face and chest, while the dust particles in the air catch the light, adding depth to the scene.\n\n**Background and Atmosphere:**\nThe upper portion of the image is defined by the cathedral's towering, gothic architecture with massive, arched windows that reveal a bright, hazy sky. The sun's rays, captured as distinct, glowing beams, slice through the dust and smoke, illuminating the dust motes floating in the air. The light creates a strong contrast between the warm, golden tones of the sunlit areas and the cool, purple shadows of the catacombs. The architecture is detailed with stone arches and windows that frame the action, their edges catching the light in sharp, defined points.\n\n**Lighting and Atmosphere:**\nThe lighting is high-contrast, with a golden sunbeam (god rays) cutting through the dust, creating a dramatic, almost theatrical illumination. The color palette is dominated by warm reds, golds, and deep purples, with the red sash and weapon providing a sharp visual anchor. The atmosphere is thick with dust and smoke, giving the scene a gritty, cinematic quality. The texture of the air is palpable, with the light beams creating a sense of volume and movement, while the stone walls of the cathedral are rendered with rough, detailed brushwork that emphasizes their ancient, crumbling nature."
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 9,
"type": "TextEncodeQwenImageEdit",
"pos": [
22871.35154241452,
13052.572534054745
],
"size": [
280.9375,
178.25
],
"flags": {
"collapsed": false,
"pinned": true
},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 34
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 22
},
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
8
]
}
],
"title": "Negative",
"properties": {
"Node name for S&R": "TextEncodeQwenImageEdit"
},
"widgets_values": [
"低分辨率低画质肢体畸形手指畸形画面过饱和蜡像感人脸无细节过度光滑画面具有AI感。构图混乱。文字模糊扭曲\n"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 10,
"type": "KSampler",
"pos": [
23187.038623038603,
13019.460469625074
],
"size": [
338.5625,
316.65625
],
"flags": {
"collapsed": false,
"pinned": true
},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 37
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 41
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 8
},
{
"name": "latent_image",
"type": "LATENT",
"link": 12
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
9
]
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
906386284359144,
"fixed",
16,
6,
"euler",
"simple",
1
]
},
{
"id": 13,
"type": "VAEDecode",
"pos": [
23570.694240662328,
13334.885792891377
],
"size": [
225,
7.328125
],
"flags": {
"collapsed": true,
"pinned": true
},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 9
},
{
"name": "vae",
"type": "VAE",
"link": 24
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
11
]
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 14,
"type": "SaveImage",
"pos": [
23545.778409193183,
13017.942215410685
],
"size": [
264.78125,
315.328125
],
"flags": {
"pinned": true
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 11
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 15,
"type": "EmptySD3LatentImage",
"pos": [
22242.338811590744,
12669.450597519388
],
"size": [
264.34375,
143.328125
],
"flags": {
"collapsed": false,
"pinned": true
},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
12
]
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1680,
720,
1
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 35,
"type": "PreviewAny",
"pos": [
22980,
11990
],
"size": [
746.09375,
310.625
],
"flags": {
"pinned": true
},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 49
}
],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": []
}
],
"title": "Thinking",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.19.0",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.7",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
null,
null,
null
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 36,
"type": "PreviewAny",
"pos": [
22980,
12360
],
"size": [
759.1875,
600.34375
],
"flags": {
"pinned": true
},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 48
}
],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": []
}
],
"title": "Composition",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.19.0",
"enableTabs": false,
"tabWidth": 65,
"tabXOffset": 10,
"hasSecondTab": false,
"secondTabText": "Send Back",
"secondTabOffset": 80,
"secondTabWidth": 65,
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.7",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
null,
null,
null
],
"color": "#223",
"bgcolor": "#335"
},
{
"id": 37,
"type": "MordantPromptEnhancer",
"pos": [
22587.859813643525,
12162.405451552098
],
"size": [
353.96875,
728.65625
],
"flags": {
"pinned": true
},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "composition",
"type": "STRING",
"links": [
48,
51
]
},
{
"name": "thinking",
"type": "STRING",
"links": [
49
]
}
],
"properties": {
"Node name for S&R": "MordantPromptEnhancer"
},
"widgets_values": [
"models\\Kezmark\\Mordant-1.2B-BF16\\Mordant-1.2B-BF16.gguf",
"",
"enhancer",
true,
true,
8192,
325853571,
"randomize",
0.7,
0.95,
50,
1,
2048,
false,
true,
true,
false,
"",
""
],
"color": "#223",
"bgcolor": "#335"
}
],
"links": [
[
8,
9,
0,
10,
2,
"CONDITIONING"
],
[
9,
10,
0,
13,
0,
"LATENT"
],
[
11,
13,
0,
14,
0,
"IMAGE"
],
[
12,
15,
0,
10,
3,
"LATENT"
],
[
22,
5,
0,
9,
1,
"VAE"
],
[
24,
5,
0,
13,
1,
"VAE"
],
[
34,
4,
0,
9,
0,
"CLIP"
],
[
37,
2,
0,
10,
0,
"MODEL"
],
[
41,
7,
0,
10,
1,
"CONDITIONING"
],
[
42,
4,
0,
7,
0,
"CLIP"
],
[
47,
5,
0,
7,
1,
"VAE"
],
[
48,
37,
0,
36,
0,
"STRING"
],
[
49,
37,
1,
35,
0,
"STRING"
],
[
51,
37,
0,
7,
3,
"STRING"
]
],
"groups": [
{
"id": 1,
"title": "Loaders",
"bounding": [
22232.338811590744,
11929.450597519388,
290.8125,
893.328125
],
"color": "#3f789e",
"flags": {}
},
{
"id": 2,
"title": "Prompt",
"bounding": [
22550,
12980,
612.2890424145189,
264.421875
],
"color": "#3f789e",
"flags": {}
},
{
"id": 3,
"title": "Prompt Enhancer",
"bounding": [
22570,
11920,
1187.4399139007546,
1055.7277089007566
],
"color": "#3f789e",
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 0.31863081771035934,
"offset": [
-21670.282977170747,
-11392.588403980808
]
},
"frontendVersion": "1.44.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}

24
special_tokens_map.json Normal file
View File

@@ -0,0 +1,24 @@
{
"bos_token": {
"content": "<s>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"eos_token": {
"content": "</s>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"pad_token": "<pad>",
"unk_token": {
"content": "<unk>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

3
tokenizer.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b0240ce510f08e6c2041724e9043e33be9d251d1e4a4d94eb68cd47b954b61d2
size 17078292

8019
tokenizer_config.json Normal file

File diff suppressed because it is too large Load Diff