We offer a new dimension reduction tool called DiRe - JAX that is benchmarked against the existing approaches: UMAP (original and Rapids.AI versions), and tSNE (Rapids.AI version)
Do either
pip install dire-jaxif you need to install the main DiRe class only, or
pip install dire-jax[utils]if you also need the benchmarking utilities.
Note: For GPU or TPU acceleration, JAX needs to be specifically installed with hardware support. See the JAX documentation for more details on enabling GPU/TPU support.
Then, do the imports
# your imports here ...
# ... DiRe JAX import ...
from dire_jax import DiRe
# ... test dataset
from sklearn.datasets import make_blobsand afterwards, for example, try this:
n_samples = 100_000
n_features = 1_000
n_centers = 12
features_blobs, labels_blobs = make_blobs(n_samples=n_samples, n_features=n_features, centers=n_centers, random_state=42)
reducer_blobs = DiRe(dimension=2,
n_neighbors=16,
init_embedding_type='pca',
max_iter_layout=32,
min_dist=1e-4,
spread=1.0,
cutoff=4.0,
n_sample_dirs=8,
sample_size=16,
neg_ratio=32,
verbose=False,)
_ = reducer_blobs.fit_transform(features_blobs)
reducer_blobs.visualize(labels=labels_blobs, point_size=4)The output should look similar to
Please refer to the DiRe API documentation for more instructions.
Our working paper is available on the arXiv.
Also, check out the Jupyter notebook with benchmarking results.
In order to run the Jupyter notebook in the ./tests folder, you need to install some extras:
pip install dire-jax[utils]This installation will give you access to the utilities (metrics and benchmarking routines) that are specifically implemented to be used together with DiRe. However, some of them rely on external packages (especially for persistent homology computations) that may have longer runtimes.
Please follow the contibuting guide. Thanks!
This work is supported by the Google Cloud Research Award number GCP19980904.

