Anima oppai_loli style LoRA
Style LoRA for circlestone-labs/Anima (preview3-base), trained with DiffSynth-Studio.
Trigger word: oppai_loli (place at the start of the prompt).
Files
| File | Format | Use with |
|---|---|---|
| opai_loli_v1.safetensors | ComfyUI (keys prefixed diffusion_model., .default stripped) |
ComfyUI Load LoRA node |
If you only want to generate images, use opai_loli_v1.safetensors.
Usage β ComfyUI
- Drop
opai_loli_v1.safetensorsintoComfyUI/models/loras/. - Load the Anima base model as usual.
- Add a Load LoRA node, select this file, strength
0.8 ~ 1.0to start. - Prompt must start with
oppai_loli, ....
Example prompt:
oppai_loli, masterpiece, best quality, score_7, safe, 1girl, ...
Negative (recommended for Anima):
worst quality, low quality, score_1, score_2, score_3, artist name
Sampler tips: cfg_scale=4.0, 30 steps, height/width multiple of 16.
Usage β DiffSynth-Studio
from diffsynth.pipelines.anima_image import AnimaImagePipeline, ModelConfig
import torch
pipe = AnimaImagePipeline.from_pretrained(
torch_dtype=torch.bfloat16,
model_configs=[
ModelConfig(model_id="circlestone-labs/Anima", origin_file_pattern="split_files/diffusion_models/anima-preview3-base.safetensors"),
ModelConfig(model_id="circlestone-labs/Anima", origin_file_pattern="split_files/text_encoders/qwen_3_06b_base.safetensors"),
ModelConfig(model_id="circlestone-labs/Anima", origin_file_pattern="split_files/vae/qwen_image_vae.safetensors"),
],
)
pipe.load_lora(pipe.dit, "opai_loli_v1.safetensors", alpha=1.0)
Training
| Base model | circlestone-labs/Anima preview3-base |
|---|---|
| Framework | DiffSynth-Studio (examples/anima/model_training/train.py) |
| Dataset | 226 images, 1024Γ1365, single concept |
| Trigger | oppai_loli (prepended to every caption) |
| Epochs | 1 (more started overfitting) |
| Steps | 2260 (226 Γ 10 repeat) |
| Effective batch | 4 (batch 1 Γ grad accum 4) |
| Optimizer | AdamW, lr 2e-5, weight decay 0.01 |
| Precision | bf16 (Blackwell native) |
| LoRA rank | 32 |
| LoRA target | auto-search on dit (28 DiT blocks + 6 llm_adapter blocks, attn + mlp) |
| Gradient checkpointing | on |
| Hardware | RTX 5090 32GB, CUDA 13.0 |
| Wall time | ~25 min |
Notes
- DiffSynth
train.pydoes not register astate_dict_converter, so the raw checkpoint is saved in PEFT format with.lora_A.default.weight/.lora_B.default.weightkeys. ComfyUI and DiffSynth's own inference loader (merge_lora) cannot match these keys._comfy.safetensorsis the same weights with keys normalized todiffusion_model.<...>.lora_{A,B}.weight. - 1 epoch was the sweet spot on this dataset; multi-epoch runs started baking in dataset-specific artifacts.
- Style is the focus; pose / composition still come from the base model + prompt.
License
MIT. Base model license terms still apply when used together.
Model tree for locke12/oppai_loli
Base model
circlestone-labs/Anima