gfnx: Fast and Scalable Library for Generative Flow Networks in JAX
Daniil Tiapkin, Artem Agarkov, Nikita Morozov, Ian Maksimov, Askar Tsyganov, Timofei Gritsaev, Sergey Samsonov
TL;DR
gfnx addresses the need for scalable, reproducible benchmarks for Generative Flow Networks (GFlowNets) by delivering a JAX-based library with end-to-end, JIT-compiled environments and single-file baselines. It decouples environment logic, reward models, and training objectives, enabling flexible on-device execution and rapid experimentation across a diverse suite of benchmarks. The paper demonstrates substantial wall-clock speedups over PyTorch-based baselines (up to 80x on GPU and 55x on CPU) while maintaining sampling quality, and provides a standardized benchmarking framework to accelerate research in GFlowNets. Looking ahead, it highlights areas for extension such as continuous actions, non-acyclic domains, multi-objective optimization, additional baselines, and vectorized training to further broaden applicability.
Abstract
In this paper, we present gfnx, a fast and scalable package for training and evaluating Generative Flow Networks (GFlowNets) written in JAX. gfnx provides an extensive set of environments and metrics for benchmarking, accompanied with single-file implementations of core objectives for training GFlowNets. We include synthetic hypergrids, multiple sequence generation environments with various editing regimes and particular reward designs for molecular generation, phylogenetic tree construction, Bayesian structure learning, and sampling from the Ising model energy. Across different tasks, gfnx achieves significant wall-clock speedups compared to Pytorch-based benchmarks (such as torchgfn library) and author implementations. For example, gfnx achieves up to 55 times speedup on CPU-based sequence generation environments, and up to 80 times speedup with the GPU-based Bayesian network structure learning setup. Our package provides a diverse set of benchmarks and aims to standardize empirical evaluation and accelerate research and applications of GFlowNets. The library is available on GitHub (https://github.com/d-tiapkin/gfnx) and on pypi (https://pypi.org/project/gfnx/). Documentation is available on https://gfnx.readthedocs.io.
