Skip to main content

License Python PyTorch codecov PyPI Status

BatchFlow

BatchFlow helps you conveniently work with random or sequential batches of your data and define data processing and machine learning workflows even for datasets that do not fit into memory.

For more details see the documentation and tutorials.

Main features:

  • flexible batch generaton
  • deterministic and stochastic pipelines
  • datasets and pipelines joins and merges
  • data processing actions
  • flexible model configuration
  • within batch parallelism
  • batch prefetching
  • ready to use ML models and proven NN architectures
  • convenient layers and helper functions to build custom models
  • a powerful research engine with parallel model training and extended experiment logging.

Basic usage

my_workflow = my_dataset.pipeline()
              .load('/some/path')
              .do_something()
              .do_something_else()
              .some_additional_action()
              .save('/to/other/path')

The trick here is that all the processing actions are lazy. They are not executed until their results are needed, e.g. when you request a preprocessed batch:

my_workflow.run(BATCH_SIZE, shuffle=True, n_epochs=5)

or

for batch in my_workflow.gen_batch(BATCH_SIZE, shuffle=True, n_epochs=5):
    # only now the actions are fired and data is being changed with the workflow defined earlier
    # actions are executed one by one and here you get a fully processed batch

or

NUM_ITERS = 1000
for i in range(NUM_ITERS):
    processed_batch = my_workflow.next_batch(BATCH_SIZE, shuffle=True, n_epochs=None)
    # only now the actions are fired and data is changed with the workflow defined earlier
    # actions are executed one by one and here you get a fully processed batch

Train a neural network

BatchFlow includes ready-to-use proven architectures like VGG, Inception, ResNet and many others. To apply them to your data just choose a model, specify the inputs (like the number of classes or images shape) and call train_model. Of course, you can also choose a loss function, an optimizer and many other parameters, if you want.

from batchflow.models.torch import ResNet34

my_workflow = my_dataset.pipeline()
              .init_model('model', ResNet34, config={'loss': 'ce', 'classes': 10})
              .load('/some/path')
              .some_transform()
              .another_transform()
              .train_model('ResNet34', inputs=B.images, targets=B.labels)
              .run(BATCH_SIZE, shuffle=True)

For more advanced cases and detailed API see the documentation.

Installation

BatchFlow module is in the beta stage. Your suggestions and improvements are very welcome.

BatchFlow supports Python 3.9 or higher.

Stable python package

With uv

uv add batchflow

With poetry

poetry add batchflow

With old-fashioned pip

pip3 install batchflow

Development version

With uv

git clone --branch my_branch https://github.com/analysiscenter/batchflow
uv add --editable ./batchflow

You can skip --branch if you need master.

With poetry

poetry add --editable git+https://github.com/analysiscenter/batchflow#my_branch

With old-fashioned pip

git clone --branch my_branch https://github.com/analysiscenter/batchflow
pip install --editable ./batchflow

Extras

Some batchflow functions and classed require additional dependencies. In order to use that functionality you might need to install batchflow with extras (e.g. batchflow[nn]):

  • image - working with image datasets and plotting
  • nn - for neural networks (includes torch, torchvision, ...)
  • datasets - loading standard datasets (MNIST, CIFAR, ...)
  • profile - performance profiling
  • jupyter - utility functions for notebooks
  • research - multiprocess research
  • telegram - for monitoring pipelines via a telegram bot
  • dev - batchflow development (ruff, pytest, ...)

You can install several extras at once, like batchflow[image,nn,research].

Projects based on BatchFlow

Citing BatchFlow

Please cite BatchFlow in your publications if it helps your research.

DOI

Roman Khudorozhkov et al. BatchFlow library for fast ML workflows. 2017. doi:10.5281/zenodo.1041203
@misc{roman_kh_2017_1041203,
  author       = {Khudorozhkov, Roman and others},
  title        = {BatchFlow library for fast ML workflows},
  year         = 2017,
  doi          = {10.5281/zenodo.1041203},
  url          = {https://doi.org/10.5281/zenodo.1041203}
}

Metadata

Release files for batchflow 0.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for batchflow 0.10.1
File Size Uploaded
batchflow-0.10.1.tar.gz 18.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for batchflow 0.10.1
File Interpreter ABI Platform
batchflow-0.10.1-py3-none-any.whl Python 3 none any Details

Total release size: 18.7 MB

Release files / batchflow-0.10.1.tar.gz

Download URL batchflow-0.10.1.tar.gz
Size 18.3 MB
Tags Source
SHA-256 checksum
How to use checksums
78f44a91f74b8f1d58cd5ce647688327b3518a5c15f404250031b811ae34aeca
BLAKE2b-256 checksum
How to use checksums
9e5f34117d493f0ab17a99bbcda1bf31672f7fec3c2eeb816dbc64eeacaff286
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.

Transparency log

Release files / batchflow-0.10.1-py3-none-any.whl

Download URL batchflow-0.10.1-py3-none-any.whl
Size 398.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
082e6f066dc2310940632ac9331354f4edd5f7d72b9d5ce9aa871eec14339d03
BLAKE2b-256 checksum
How to use checksums
697018a61da9e26b2968022d9823ddb91da42157acf460b3f951af9c4be44cfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 16, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page