Skip to main content

Run Gaussian Mixture Models on single or multiple CPUs/GPUs

Project description

TorchGMM

Tests Documentation

TorchGMM allows to run Gaussian Mixture Models on single or multiple CPUs/GPUs. The repository is a fork from PyCave and LightKit, two amazing packages developed by Oliver Borchert that are not being maintained anymore. While PyCave implements additional models such as Markov Chains, TorchGMM focuses only on Gaussian Mixture Models.

The models are implemented in PyTorch and PyTorch Lightning, and provide an Estimator API that is fully compatible with scikit-learn.

For Gaussian mixture model, TorchGMM allows for 100x speed ups when using a GPU and enables to train on markedly larger datasets via mini-batch training. The full suite of benchmarks run to compare TorchGMM models against scikit-learn models is available on the documentation website.

Features

  • Support for GPU and multi-node training by implementing models in PyTorch and relying on PyTorch Lightning

  • Mini-batch training for all models such that they can be used on huge datasets

  • Well-structured implementation of models

    • High-level Estimator API allows for easy usage such that models feel and behave like in scikit-learn
    • Medium-level LightingModule implements the training algorithm
    • Low-level PyTorch Module manages the model parameters

Getting started

Please refer to the documentation. In particular, the API documentation

Requirements

TorchGMM requires PyTorch to be installed. The installation instructions can be found on the PyTorch website.

TorchGMM is available via pip:

pip install torchgmm

Usage

If you've ever used scikit-learn, you'll feel right at home when using TorchGMM. First, let's create some artificial data to work with:

import torch

X = torch.cat([
    torch.randn(10000, 8) - 5,
    torch.randn(10000, 8),
    torch.randn(10000, 8) + 5,
])

This dataset consists of three clusters with 8-dimensional datapoints. If you want to fit a K-Means model, to find the clusters' centroids, it's as easy as:

from torchgmm.clustering import KMeans

estimator = KMeans(3)
estimator.fit(X)

# Once the estimator is fitted, it provides various properties. One of them is
# the `model_` property which yields the PyTorch module with the fitted parameters.
print("Centroids are:")
print(estimator.model_.centroids)

Due to the high-level estimator API, the usage for all machine learning models is similar. The API documentation provides more detailed information about parameters that can be passed to estimators and which methods are available.

GPU and Multi-Node training

For GPU- and multi-node training, TorchGMM leverages PyTorch Lightning. The hardware that training runs on is determined by the Trainer class. It's init method provides various configuration options.

If you want to run K-Means with a GPU, you can pass the options accelerator='gpu' and devices=1 to the estimator's initializer:

estimator = KMeans(3, trainer_params=dict(accelerator='gpu', devices=1))

Similarly, if you want to train on 4 nodes simultaneously where each node has one GPU available, you can specify this as follows:

estimator = KMeans(3, trainer_params=dict(num_nodes=4, accelerator='gpu', devices=1))

In fact, you do not need to change anything else in your code.

Implemented Models

Currently, TorchGMM implements two different models:

Contribution

If you found a bug or you want to propose a new feature, please use the issue tracker.

License

TorchGMM is licensed under the MIT License.

Project details


Download files

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

Source Distribution

torchgmm-0.1.2.tar.gz (48.4 kB view details)

Uploaded Source

Built Distribution

torchgmm-0.1.2-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file torchgmm-0.1.2.tar.gz.

File metadata

  • Download URL: torchgmm-0.1.2.tar.gz
  • Upload date:
  • Size: 48.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for torchgmm-0.1.2.tar.gz
Algorithm Hash digest
SHA256 70e41873bd3c2d53e12c8494082cce9832c53f4681edf67851580b449933293b
MD5 16a6d2a9b924326a16f1b4da934cb737
BLAKE2b-256 0f1308b1ebcc02b6a22a23dbcc421b87818a4dc5dd1aff6cababd54684185955

See more details on using hashes here.

File details

Details for the file torchgmm-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: torchgmm-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for torchgmm-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9fb803b0a3878b8c8518a7e73e4dc246a81cf239f082c2f16803124413b3ad00
MD5 046034c25a4152049ae94af6a3f7b326
BLAKE2b-256 a5fe315edc57063a27544c97a4bbd1b4845594eb64bfe17f813b2d693d914784

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page