File size: 7,380 Bytes
ac959b5 70f37fc ac959b5 eb7749c ac959b5 eb7749c ac959b5 8e2c82e ac959b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | # Generating with MOSS Serenity
Everything needed to run the model in ComfyUI, the settings the samples were made with, and how to
prompt it. Back to the [model card](../README.md).
## Files
| ComfyUI folder | File |
|---|---|
| `models/diffusion_models` | `serenity_base_v1_24000_bf16.safetensors` or `serenity_base_v1_24000_int8_convrot.safetensors` (this repository; the INT8 one is half the size and faster) |
| `models/text_encoders` | `qwen3.5_9b_int8_convrot.safetensors` (what the model trained with), or [`qwen3.5_9b_bf16.safetensors`](https://huggingface.co/Comfy-Org/Qwen3.5/blob/main/text_encoders/qwen3.5_9b_bf16.safetensors) |
| `models/vae` | `flux2_vae.safetensors` (the FLUX.2 VAE) |
| `models/loras` | optional: lodestones' [`MOSS-Image-Base-8-steps-dmd`](https://huggingface.co/lodestones/MOSS-Image-Base-8-steps-dmd) for the turbo workflows; the [extracted LoRAs](../lora-extract) |
Use the **Base** DMD LoRA, not the SFT one: Serenity was finetuned from MOSS-Image Base.
## The workflows
All four are in [`workflow/`](../workflow); drag one into ComfyUI and pick your own paths in the
loaders (the model and LoRA paths are the author's folders).
### Turbo: `base-turbo-no-lora.json`
Load Diffusion Model β Power Lora Loader (empty, for your own LoRAs) β Load LoRA (DMD, 1.0) β
SkipLayerGuidanceDiTSimple β KSampler.
| Node | Setting |
|---|---|
| Load CLIP | `qwen3.5_9b_int8_convrot`, type `moss_image` |
| Load LoRA (model only) | `MOSS-Image-Base-8-steps-dmd`, strength 1.00 |
| SkipLayerGuidanceDiTSimple | `single_layers` 22, `double_layers` empty, start 0.0, end 0.5 |
| Negative | `bad ugly blurry` |
| EmptyFlux2LatentImage | 1584 Γ 1776 |
| KSampler | 8 steps, CFG 4.0, euler, simple, denoise 1.00 |
About 16 s per image on an RTX 5090. This is the setup the portrait samples were made with: not
necessarily the best possible, but very good, and fast.
### Full: `base-no-turbo-no-lora.json`
The same without the DMD LoRA, at 50 steps:
| Node | Setting |
|---|---|
| SkipLayerGuidanceDiTSimple | layer 22, start 0.0, end 0.5 |
| Negative | `bad ugly blurry` |
| EmptyFlux2LatentImage | 1920 Γ 1088 (Full HD, on the 16 px latent grid) |
| KSampler | 50 steps, CFG 4.0, euler, simple |
On an RTX 5090 at 1920 Γ 1088: ~62 s at 50 steps, ~25 s at 20 (1.24 s per step either way).
Same seeds at 20 and 50 steps give the same composition; 50 adds fine structure (an insect's head,
lettering on signs, small figures). For landscapes 20 is close.
### Turbo with a person LoRA: `base-turbo-lora.json`
The turbo workflow with a separate person LoRA switched on in the **Power Lora Loader** (strength
1.0), for people Serenity was not trained on. MOSS-Image person LoRAs trained on Base load on top
of Serenity. Prompt them the way they were trained: this example's LoRA uses the class word as its
keyword, so the prompt starts `photo of a woman, ...` with no name trigger.
### Base + the extracted LoRA: `lora-extract-turbo-lora.json`
The original **MOSS-Image Base** (`moss_image_base_bf16.safetensors`) instead of Serenity, with
Serenity added back as a LoRA: Load Diffusion Model β Power Lora Loader (`serenity_v1_lora_r256`,
strength 1.0) β Load LoRA (DMD, 1.0) β SkipLayerGuidanceDiTSimple β KSampler at **12 steps**, CFG
4.0, euler / simple, 1584 Γ 1776, negative `bad ugly blurry`. For when you keep the base model
around and switch LoRAs. The LoRA keeps only part of the finetune (see
[The extracted LoRAs](#the-extracted-loras)); the full model is the reference.
### Notes
- **Shift:** ComfyUI already runs MOSS-Image at shift 5. To change it, add **ModelSamplingAuraFlow**
before the KSampler. Not ModelSamplingSD3: its timestep scale is 1000Γ off for MOSS-Image.
- **Size:** keep both sides multiples of 16. Portrait (1584 Γ 1776) suits people; 1920 Γ 1088 suits
scenes.
- **"widescreen" / "anamorphic" in a prompt** bake black letterbox bars into the image. Leave the
words out if you don't want bars.
## The extracted LoRAs
To keep one base model and switch LoRAs (the
[`lora-extract-turbo-lora.json`](../workflow/lora-extract-turbo-lora.json) workflow does this at 12 steps): Load Diffusion Model `moss_image_base_bf16` β Power Lora Loader or Load LoRA
(`serenity_v1_lora_r256`, strength 1.0) β (DMD LoRA for turbo) β SkipLayerGuidanceDiTSimple β
KSampler, with the settings above. Higher ranks keep more of the finetune; compare with the full
model on the same seed.
## Prompting
### The shape
The captions were `photo of <trigger>, <one sentence>`, so prompts work best the same way:
```
photo of <trigger>, a <woman|man>, <look>, <expression>, <framing>, <clothing>, <setting>, <light>
```
The trigger is one lower-case word, the person's name without spaces (the list is in the
[model card](../README.md#characters)). The class word after it (`a woman`, `a man`) matches how
the model was trained.
### Examples
```
photo of jenniferlawrence, a woman with long dark brown hair in a single side braid, a determined
serious expression, looking slightly off-camera to her left, medium close-up from the chest up,
holding a wooden recurve bow with an arrow drawn, a quiver strapped over her shoulder, wearing a dark
green hooded hunting jacket over a gray shirt, standing in a dense misty pine forest, dappled
morning sunlight through the trees, cool green and amber tones, cinematic film still, shallow depth
of field
```
```
photo of nathanfillion, a man with short dark hair, a wry lopsided smile, standing in the cargo bay
of a worn frontier spaceship, wearing a long brown leather duster coat over suspenders and a red
shirt, a holstered pistol at his hip, warm amber light, medium shot, TV series still
```
```
photo of taylorswift, a woman with long blonde hair and bangs, bold red lipstick, a soft joyful
expression with her eyes looking toward the crowd, close-up of her face and shoulders, holding a
microphone near her chin, wearing a glittering silver sequined outfit, bokeh of thousands of
colorful wristband lights behind her, warm golden spotlight
```
### What works
- **Large faces.** Chest-up or closer. In a full-body stadium shot the face was a few dozen pixels
and came out wrong; the same scene as a close-up was clean.
- **Describe the role, not the title.** The model knows the person, not the film. Costume, hair and
setting make the scene: the side braid, bow and pine forest above read as a well-known role
without naming it.
- **Name the hair when it matters.** A prompt that does not mention someone's signature hair can
lose it (red hair especially).
- **Two people: a man and a woman work; two of the same gender are hit-or-miss.** Name both with their
class word, place them (`on the left ...; on the right ...`) and describe each separately. A
man and a woman keep their own faces; two women (or two men) always keep their costumes, but in some
seeds their faces drift toward each other. Three people follow the same rule: one woman with two
men holds, three women converge on one face. See [Two people in one shot](../README.md#two-people-in-one-shot)
and [Three people in one shot](../README.md#three-people-in-one-shot).
- **No trigger, no person:** `photo of a woman, ...` gives an ordinary person; prior preservation
kept the class words close to the base model.
- **Seeds:** likeness varies a little by seed; try a few.
|