DiffSynth-Studio/Template-KleinBase4B-Age

🤗 Hugging Face sourceapache-2.0590M params1.2 GBsafetensors✓ 4 checksumsupdated today
Submit in one command

Run it next to your model folder. It makes the torrent, checks your files against Hugging Face, and submits it. You just start seeding and paste your key from your account. It only reads your files and never changes them. Read the script first if you like.

curl -fsSL https://pirateface.co/package.sh | bash -s -- --repo DiffSynth-Studio/Template-KleinBase4B-Age ./model-folder
Needs a seeder →

Templates - Age Control (FLUX.2-klein-base-4B)

This model is one of the Diffusion Templates series models open-sourced by DiffSynth-Studio. It allows direct control over the age of the person in the generated image by inputting the age parameter.

Results

Prompt: A portrait of a woman with black hair, wearing a suit.

Age = 20 Age = 50 Age = 80

Prompt: A portrait of a man, autumn park background, warm evening sunlight.

Age = 20 Age = 50 Age = 80

A fashion portrait of an elegant woman wearing a red silk dress, high fashion photography, soft lighting. A modern minimalist living room with furniture.

Age = 20 Age = 50 Age = 80

Inference Code

git clone https://github.com/modelscope/DiffSynth-Studio.git
cd DiffSynth-Studio
pip install -e .
  • Direct inference (requires 40G GPU memory)
from diffsynth.diffusion.template import TemplatePipeline
from diffsynth.pipelines.flux2_image import Flux2ImagePipeline, ModelConfig
import torch

pipe = Flux2ImagePipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-base-4B", origin_file_pattern="transformer/*.safetensors"),
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="text_encoder/*.safetensors"),
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
    ],
    tokenizer_config=ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="tokenizer/"),
)
template = TemplatePipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[ModelConfig(model_id="DiffSynth-Studio/Template-KleinBase4B-Age")],
)
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 20}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_20.jpg")
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 50}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_50.jpg")
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 80}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_80.jpg")
  • Enable lazy loading and memory management, requires 24G GPU memory
from diffsynth.diffusion.template import TemplatePipeline
from diffsynth.pipelines.flux2_image import Flux2ImagePipeline, ModelConfig
import torch

vram_config = {
    "offload_dtype": "disk",
    "offload_device": "disk",
    "onload_dtype": torch.float8_e4m3fn,
    "onload_device": "cpu",
    "preparing_dtype": torch.float8_e4m3fn,
    "preparing_device": "cuda",
    "computation_dtype": torch.bfloat16,
    "computation_device": "cuda",
}
pipe = Flux2ImagePipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-base-4B", origin_file_pattern="transformer/*.safetensors", **vram_config),
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="text_encoder/*.safetensors", **vram_config),
        ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="vae/diffusion_pytorch_model.safetensors"),
    ],
    tokenizer_config=ModelConfig(model_id="black-forest-labs/FLUX.2-klein-4B", origin_file_pattern="tokenizer/"),
    vram_limit=torch.cuda.mem_get_info("cuda")[1] / (1024 ** 3) - 0.5,
)
template = TemplatePipeline.from_pretrained(
    torch_dtype=torch.bfloat16,
    device="cuda",
    model_configs=[ModelConfig(model_id="DiffSynth-Studio/Template-KleinBase4B-Age")],
    lazy_loading=True,
)
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 20}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_20.jpg")
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 50}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_50.jpg")
image = template(
    pipe,
    prompt="A portrait of a woman with black hair, wearing a suit.",
    seed=0, cfg_scale=4, num_inference_steps=50,
    template_inputs=[{"age": 80}],
    negative_template_inputs=[{"age": 45}],
)
image.save(f"image_age_80.jpg")

Training Code

After installing DiffSynth-Studio, use the following script to start training. For more information, please refer to the DiffSynth-Studio Documentation.

modelscope download --dataset DiffSynth-Studio/diffsynth_example_dataset --include "flux2/Template-KleinBase4B-Age/*" --local_dir ./data/diffsynth_example_dataset

accelerate launch examples/flux2/model_training/train.py \
  --dataset_base_path data/diffsynth_example_dataset/flux2/Template-KleinBase4B-Age \
  --dataset_metadata_path data/diffsynth_example_dataset/flux2/Template-KleinBase4B-Age/metadata.jsonl \
  --extra_inputs "template_inputs" \
  --max_pixels 1048576 \
  --dataset_repeat 50 \
  --model_id_with_origin_paths "black-forest-labs/FLUX.2-klein-4B:text_encoder/*.safetensors,black-forest-labs/FLUX.2-klein-base-4B:transformer/*.safetensors,black-forest-labs/FLUX.2-klein-4B:vae/diffusion_pytorch_model.safetensors" \
  --template_model_id_or_path "DiffSynth-Studio/Template-KleinBase4B-Age:" \
  --tokenizer_path "black-forest-labs/FLUX.2-klein-4B:tokenizer/" \
  --learning_rate 1e-4 \
  --num_epochs 2 \
  --remove_prefix_in_ckpt "pipe.template_model." \
  --output_path "./models/train/Template-KleinBase4B-Age_full" \
  --trainable_models "template_model" \
  --use_gradient_checkpointing \
  --find_unused_parameters