Skip to main content

Pytorch domain library for recommendation systems

Project description

TorchRec (Beta Release)

Docs

TorchRec is a PyTorch domain library built to provide common sparsity & parallelism primitives needed for large-scale recommender systems (RecSys). It allows authors to train models with large embedding tables sharded across many GPUs.

TorchRec contains:

  • Parallelism primitives that enable easy authoring of large, performant multi-device/multi-node models using hybrid data-parallelism/model-parallelism.
  • The TorchRec sharder can shard embedding tables with different sharding strategies including data-parallel, table-wise, row-wise, table-wise-row-wise, and column-wise sharding.
  • The TorchRec planner can automatically generate optimized sharding plans for models.
  • Pipelined training overlaps dataloading device transfer (copy to GPU), inter-device communications (input_dist), and computation (forward, backward) for increased performance.
  • Optimized kernels for RecSys powered by FBGEMM.
  • Quantization support for reduced precision training and inference.
  • Common modules for RecSys.
  • Production-proven model architectures for RecSys.
  • RecSys datasets (criteo click logs and movielens)
  • Examples of end-to-end training such the dlrm event prediction model trained on criteo click logs dataset.

Installation

Torchrec requires Python >= 3.7 and CUDA >= 11.0 (CUDA is highly recommended for performance but not required). The example below shows how to install with CUDA 11.8. This setup assumes you have conda installed.

Binaries

Experimental binary on Linux for Python 3.7, 3.8 and 3.9 can be installed via pip wheels

Installations

TO use the library without cuda, use the *-cpu fbgemm installations. However, this will be much slower than the CUDA variant.

Nightly

conda install pytorch pytorch-cuda=11.8 -c pytorch-nightly -c nvidia
pip install torchrec_nightly

Stable

conda install pytorch pytorch-cuda=11.8 -c pytorch -c nvidia
pip install torchrec

If you have no CUDA device:

Nightly

pip uninstall fbgemm-gpu-nightly -y
pip install fbgemm-gpu-nightly-cpu

Stable

pip uninstall fbgemm-gpu -y
pip install fbgemm-gpu-cpu

Colab example: introduction + install

See our colab notebook for an introduction to torchrec which includes runnable installation. - Tutorial Source - Open in Google Colab

From Source

We are currently iterating on the setup experience. For now, we provide manual instructions on how to build from source. The example below shows how to install with CUDA 11.3. This setup assumes you have conda installed.

  1. Install pytorch. See pytorch documentation

    conda install pytorch pytorch-cuda=11.8 -c pytorch-nightly -c nvidia
    
  2. Install Requirements

    pip install -r requirements.txt
    
  3. Download and install TorchRec.

    git clone --recursive https://github.com/pytorch/torchrec
    
    cd torchrec
    python setup.py install develop
    
  4. Test the installation.

    GPU mode
    
    torchx run -s local_cwd dist.ddp -j 1x2 --gpu 2 --script test_installation.py
    
    CPU Mode
    
    torchx run -s local_cwd dist.ddp -j 1x2 --script test_installation.py -- --cpu_only
    

    See TorchX for more information on launching distributed and remote jobs.

  5. If you want to run a more complex example, please take a look at the torchrec DLRM example.

Contributing

Pyre and linting

Before landing, please make sure that pyre and linting look okay. To run our linters, you will need to

pip install pre-commit

, and run it.

For Pyre, you will need to

cat .pyre_configuration
pip install pyre-check-nightly==<VERSION FROM CONFIG>
pyre check

We will also check for these issues in our GitHub actions.

License

TorchRec is BSD licensed, as found in the LICENSE file.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

torchrec_nightly-2023.8.17-py310-none-any.whl (388.6 kB view details)

Uploaded Python 3.10

torchrec_nightly-2023.8.17-py39-none-any.whl (388.6 kB view details)

Uploaded Python 3.9

torchrec_nightly-2023.8.17-py38-none-any.whl (388.6 kB view details)

Uploaded Python 3.8

File details

Details for the file torchrec_nightly-2023.8.17-py310-none-any.whl.

File metadata

File hashes

Hashes for torchrec_nightly-2023.8.17-py310-none-any.whl
Algorithm Hash digest
SHA256 33d66a1b9ab4ff090a04043a8cb38caeb2a4c8e72674d443b659b5773afe124e
MD5 1955c498a0b7f107e2ba736a33907f43
BLAKE2b-256 8eadf63bd5a74e09473b90d836ebd1c5bf3332df599259066b8b371a8c907f9a

See more details on using hashes here.

File details

Details for the file torchrec_nightly-2023.8.17-py39-none-any.whl.

File metadata

File hashes

Hashes for torchrec_nightly-2023.8.17-py39-none-any.whl
Algorithm Hash digest
SHA256 8442c5e19d237213d38a2c7b3e413e2877f8fd7fc743a3610f54f4c6e5c65e8e
MD5 ad0de0c33c75f33dfbb542c125f5b0e0
BLAKE2b-256 8065e4c8c5350222bee2b8f0bea6d952120f5af7b5fef9818162d8b8b5f1bb85

See more details on using hashes here.

File details

Details for the file torchrec_nightly-2023.8.17-py38-none-any.whl.

File metadata

File hashes

Hashes for torchrec_nightly-2023.8.17-py38-none-any.whl
Algorithm Hash digest
SHA256 5f938e189856f0d9368bc79a36ee889004c8dc59757f6a4f5e8ae7742d8de52f
MD5 268c81fa25b20f5804396e074fa5adb2
BLAKE2b-256 df0a3c879995cd6fbbe187557444c88e50cd27bd7540209e514e795a081a604c

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