# SimFlow **Repository Path**: ByteDance-Seed/SimFlow ## Basic Information - **Project Name**: SimFlow - **Description**: Official implementation of SimFlow - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-15 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

SimFlow: Simplified and End-to-End Training of Latent Normalizing Flows

Qinyu Zhao1,2·   Guangting Zheng2·   Tao Yang2·   Rui Zhu2†·   Xingjian Leng1·   Stephen Gould1·   Liang Zheng1

1 Australian National University   2 ByteDance Seed  
Project Lead  

🌐 Project Page📃 Paper

## Overview

We train an NF and a VAE in an end-to-end way from scratch. There is no stop-gradient operator, significantly simplifying prior frameworks. The gray modules with the snowflake icon are frozen during training, while colored modules are trained. Solid arrows indicate the forward pass, while dashed arrows denote gradient flows.

On ImageNet 256x256, our end-to-end training framework achieves significantly better generation quality than previous state-of-the-art NF model (STARFlow) with much fewer training epochs.

## News and Updates **[2025-12-15]** Initial Release with Codebase. ## Getting Started ### Environment Setup To set up our environment, please run: ``` git clone https://github.com/ByteDance-Seed/SimFlow.git cd SimFlow # If you use conda, please uncomment the following lines. # conda create -n simflow python=3.11.2 -y # conda activate simflow pip install -r requirements.txt ``` ### Train SimFlow Please download and extract the training split of the [ImageNet-1K](https://www.image-net.org/challenges/LSVRC/2012/index) dataset. A sample code for training SimFlow+REPA-E is shown below. ``` torchrun --nproc_per_node=8 --nnodes=2 --node_rank=${NODE_RANK} --master_addr=${MASTER_ADDR} --master_port=${MASTER_PORT} \ train_vae_w_nf.py \ --seed=0 \ --data_path="./imagenet" \ --output_dir="./output/vae_f16d64_std0_5_simflow_adaln_2222246_repaAlign3/" \ --resume="./output/vae_f16d64_std0_5_simflow_adaln_2222246_repaAlign3/" \ --batch_size=16 \ --checkpointing-steps=100000 --sampling-steps 5000 \ --loss-cfg-path="configs/vae_loss/l1_lpips_kl_gan_joint_training.yaml" \ --vae="vae_f16d64" --use_variational=False --fixed_std=0.5 \ --channels=1152 --blocks=6 --layers_per_block=2,2,2,2,2,46 --num_heads=16 \ --lr_schedule='const_then_cosine' --warmup_epochs=0 --hold_epochs=80 --min_lr=1e-6 --epochs=160 --max-train-steps=800000 \ --enc_type="dinov2-vit-b" --repa_align_depth='-1,-1,1,-1,-1,-1' \ --disturb_latents='none' \ --online_eval --eval_steps=100000 --cfg=0.0 ``` ### Evaluation ImageNet 256x256 | FID = 2.15 ``` torchrun --nproc_per_node=8 eval_vae_w_nf.py \ --seed=0 --output_dir="output/simflow_imagenet256x256" \ --resume="output/simflow_imagenet256x256" \ --vae="vae_f16d64" --use_variational=False --fixed_std=0.5 \ --channels=1152 --blocks=6 --layers_per_block=2,2,2,2,2,46 --num_heads=16 \ --evaluate --cfg=1.1 --temperature=0.95 --denoising_lr=0.25 ``` ImageNet 256x256 with REPA-E | FID = 1.91 ``` torchrun --nproc_per_node=8 eval_vae_w_nf.py \ --seed=0 --output_dir="output/simflow_imagenet256x256_repae" \ --resume="output/simflow_imagenet256x256_repae" \ --vae="vae_f16d64" --use_variational=False --fixed_std=0.5 \ --channels=1152 --blocks=6 --layers_per_block=2,2,2,2,2,46 --num_heads=16 \ --evaluate --cfg=1.1 --temperature=0.975 --denoising_lr=0.25 ``` ImageNet 512x512 with REPA-E | FID = 2.74 ``` torchrun --nproc_per_node=8 eval_vae_w_nf.py \ --seed=0 --output_dir="output/simflow_imagenet512x512_repae" \ --resume="output/simflow_imagenet512x512_repae" \ --resolution=512 \ --vae="vae_f16d64" --use_variational=False --fixed_std=0.5 \ --channels=1152 --blocks=6 --layers_per_block=2,2,2,2,2,46 --num_heads=16 \ --evaluate --cfg=1.0 --temperature=1.0 --eval_bsz=64 ``` ### Pretrained Models We also provide pretrained models, which can be downloaded on [HuggingFace](https://huggingface.co/QinyuZhao1116/SimFlow). ## Acknowledgement This codebase builds upon several excellent open-source projects, including: - [MAR](https://github.com/LTH14/mar) - [TARFlow](https://github.com/apple/ml-tarflow) - [REPA-E](https://github.com/End2End-Diffusion/REPA-E/) We sincerely thank the authors for making their work and models publicly available. ## Citation If you find our work useful, please consider citing: ```bibtex @article{zhao2025simflow, title={SimFlow: Simplified and End-to-End Training of Latent Normalizing Flows}, author={Zhao, Qinyu and Zheng, Guangting and Yang, Tao and Zhu, Rui and Leng, Xingjian and Gould, Stephen and Zheng, Liang}, journal={arXiv preprint arXiv:2512.04084}, year={2025} } ```