Skip to main content

tqdx

Adds tqdm progress bars to jax.lax.scan and jax.lax.fori_loop. Progress bars commonly used in Python, such as tqdm, are not compatible with JAX's jit-compiled functions due to restrictions on side effects like printing. tqdx addresses this limitation by using callbacks to update progress bars created on the host.

import tqdx

...
carry, ys = tqdx.scan(f, init, xs)
Processing: 100%|███████████████████████████████████████████| 50/50 [02:38<00:00,  3.20s/it]

Features

  • Progress bars for JAX: See the progress of your computations when using jax.lax.scan and jax.lax.fori_loop.
  • Works with jax.jit: Progress bars show up even inside jit-compiled code.
  • Minimal syntax change: Just replace your calls to jax.lax.scan and jax.lax.fori_loop with tqdx.scan and tqdx.fori_loop.
  • No extra dependencies: Only requires JAX and tqdm.

Usage

The following example demonstrates how to use tqdx with jax.lax.scan and jax.lax.fori_loop. You can arbitrarily nest these functions, and the progress bars will still work correctly.

import jax
import tqdx
from time import sleep

def step(carry, x):
    def body_fun(i, val):
        jax.debug.callback(lambda: sleep(0.5))
        return val + i
    jax.debug.callback(lambda: sleep(0.5))
    carry = tqdx.fori_loop(0, 10, body_fun, carry)
    return carry, x + 1

def f(xs):
    return tqdx.scan(step, 0, xs)


xs = jax.numpy.arange(10)
result, _ = jax.jit(f)(xs)
100%|███████████████████████████████████████████████████████| 10/10 [00:05<00:00,  2.00it/s]
100%|███████████████████████████████████████████████████████| 10/10 [00:05<00:00,  2.00it/s]
 40%|████████████████████                                     | 2/5 [00:11<00:16,  5.51s/it]
 70%|██████████████████████████████████████                  | 7/10 [00:03<00:05,  2.00it/s]

Installation

pip install tqdx

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tqdx-0.1.5.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tqdx-0.1.5-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file tqdx-0.1.5.tar.gz.

File metadata

  • Download URL: tqdx-0.1.5.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.4

File hashes

Hashes for tqdx-0.1.5.tar.gz
Algorithm Hash digest
SHA256 f933040e0baf7e6020f77057c8097afcfa031d4adc8af5d129c78b5b862a4821
MD5 424b733a86787562000834eae8e10abc
BLAKE2b-256 b7f8d1e0ee6e4c906b6195ebdbe4a846f84fbc4e08fb622075a530044cddf3c8

See more details on using hashes here.

File details

Details for the file tqdx-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: tqdx-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.4

File hashes

Hashes for tqdx-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1d35c903494659c7c42ffeacda698ef4cd5b2b0953fb516e7a87ee1a25077135
MD5 9b93ee85ed6248a1f4f0f9b8871a525c
BLAKE2b-256 cd3328063e386ba4d589c0ea71d5a6f4761deeb8db3e29008edeb02875807415

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page