(args)
| 273 | |
| 274 | |
| 275 | def main(args): |
| 276 | original_ckpt = load_original_checkpoint(args) |
| 277 | has_guidance = any("guidance" in k for k in original_ckpt) |
| 278 | |
| 279 | if args.transformer: |
| 280 | num_layers = 19 |
| 281 | num_single_layers = 38 |
| 282 | inner_dim = 3072 |
| 283 | mlp_ratio = 4.0 |
| 284 | |
| 285 | converted_transformer_state_dict = convert_flux_transformer_checkpoint_to_diffusers( |
| 286 | original_ckpt, num_layers, num_single_layers, inner_dim, mlp_ratio=mlp_ratio |
| 287 | ) |
| 288 | transformer = FluxTransformer2DModel( |
| 289 | in_channels=args.in_channels, out_channels=args.out_channels, guidance_embeds=has_guidance |
| 290 | ) |
| 291 | transformer.load_state_dict(converted_transformer_state_dict, strict=True) |
| 292 | |
| 293 | print( |
| 294 | f"Saving Flux Transformer in Diffusers format. Variant: {'guidance-distilled' if has_guidance else 'timestep-distilled'}" |
| 295 | ) |
| 296 | transformer.to(dtype).save_pretrained(f"{args.output_path}/transformer") |
| 297 | |
| 298 | if args.vae: |
| 299 | config = AutoencoderKL.load_config("stabilityai/stable-diffusion-3-medium-diffusers", subfolder="vae") |
| 300 | vae = AutoencoderKL.from_config(config, scaling_factor=0.3611, shift_factor=0.1159).to(torch.bfloat16) |
| 301 | |
| 302 | converted_vae_state_dict = convert_ldm_vae_checkpoint(original_ckpt, vae.config) |
| 303 | vae.load_state_dict(converted_vae_state_dict, strict=True) |
| 304 | vae.to(dtype).save_pretrained(f"{args.output_path}/vae") |
| 305 | |
| 306 | |
| 307 | if __name__ == "__main__": |
no test coverage detected
searching dependent graphs…