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, column-wise, table-wise-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.8 and CUDA >= 11.8 (CUDA is highly recommended for performance but not required). The example below shows how to install with Python 3.8 and CUDA 12.1. This setup assumes you have conda installed.

Binaries

Experimental binary on Linux for Python 3.8, 3.9, 3.10 and 3.11, and CPU, CUDA 11.8 and CUDA 12.1 can be installed via pip wheels from download.pytorch.org and PyPI (only for CUDA 12.1).

Below we show installations for CUDA 12.1 as an example. For CPU or CUDA 11.8, swap "cu121" for "cpu" or "cu118".

Installations

Nightly

pip install torch --index-url https://download.pytorch.org/whl/nightly/cu121
pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cu121
pip install torchmetrics==1.0.3
pip install torchrec --index-url https://download.pytorch.org/whl/nightly/cu121

Stable via pytorch.org

pip install torch --index-url https://download.pytorch.org/whl/cu121
pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/cu121
pip install torchmetrics==1.0.3
pip install torchrec --index-url https://download.pytorch.org/whl/cu121

Stable via PyPI (only for CUDA 12.1)

pip install torch
pip install fbgemm-gpu
pip install torchrec

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 12.1. This setup assumes you have conda installed.

  1. Install pytorch. See pytorch documentation.

    CUDA 12.1
    
    pip install torch --index-url https://download.pytorch.org/whl/nightly/cu121
    
    CUDA 11.8
    
    pip install torch --index-url https://download.pytorch.org/whl/nightly/cu118
    
    CPU
    
    pip install torch --index-url https://download.pytorch.org/whl/nightly/cpu
    
  2. Clone TorchRec.

    git clone --recursive https://github.com/pytorch/torchrec
    cd torchrec
    
  3. Install FBGEMM.

    CUDA 12.1
    
    pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cu121
    
    CUDA 11.8
    
    pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cu118
    
    CPU
    
    pip install fbgemm-gpu --index-url https://download.pytorch.org/whl/nightly/cpu
    
  4. Install other requirements.

    pip install -r requirements.txt
    
  5. Install TorchRec.

    python setup.py install develop
    
  6. Test the installation (use torchx-nightly for 3.11).

    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.

  7. 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


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-0.6.0-py312-none-any.whl (429.6 kB view details)

Uploaded Python 3.12

torchrec-0.6.0-py311-none-any.whl (429.6 kB view details)

Uploaded Python 3.11

torchrec-0.6.0-py310-none-any.whl (429.6 kB view details)

Uploaded Python 3.10

torchrec-0.6.0-py39-none-any.whl (429.6 kB view details)

Uploaded Python 3.9

torchrec-0.6.0-py38-none-any.whl (429.6 kB view details)

Uploaded Python 3.8

File details

Details for the file torchrec-0.6.0-py312-none-any.whl.

File metadata

  • Download URL: torchrec-0.6.0-py312-none-any.whl
  • Upload date:
  • Size: 429.6 kB
  • Tags: Python 3.12
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for torchrec-0.6.0-py312-none-any.whl
Algorithm Hash digest
SHA256 14263e6c02172eb3b6f62141b3abe9de1deb2c63f7c5ebee441fe0f7afe7fb5e
MD5 e0983650302ee356a55449c1469e58c1
BLAKE2b-256 78a9b3aaae4e31c202fd5a048bb30cf141ffdfe8d04147d180fe26c4b652d030

See more details on using hashes here.

Provenance

File details

Details for the file torchrec-0.6.0-py311-none-any.whl.

File metadata

  • Download URL: torchrec-0.6.0-py311-none-any.whl
  • Upload date:
  • Size: 429.6 kB
  • Tags: Python 3.11
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for torchrec-0.6.0-py311-none-any.whl
Algorithm Hash digest
SHA256 a76bcb20dce8016416811c0e276b6244d8408e6190aaf2e5a7da51dc8bedb36f
MD5 d1dedb1dcf298a9856c99b6cec31b8e3
BLAKE2b-256 43d4f6d1af5c87e5342a4338d123d36619496fa00a19f666bc369e444b6c5906

See more details on using hashes here.

Provenance

File details

Details for the file torchrec-0.6.0-py310-none-any.whl.

File metadata

  • Download URL: torchrec-0.6.0-py310-none-any.whl
  • Upload date:
  • Size: 429.6 kB
  • Tags: Python 3.10
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for torchrec-0.6.0-py310-none-any.whl
Algorithm Hash digest
SHA256 ae6ea0c5f74a5fed17e5a0d98a334005b107ad57597d794916307d99b8ab10fa
MD5 fb4a444f6c4180960303ad8143e72a65
BLAKE2b-256 5de80d364c6426fde74758cd6c045ede851435801ecab802fc9d0ed633cd65ef

See more details on using hashes here.

Provenance

File details

Details for the file torchrec-0.6.0-py39-none-any.whl.

File metadata

  • Download URL: torchrec-0.6.0-py39-none-any.whl
  • Upload date:
  • Size: 429.6 kB
  • Tags: Python 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for torchrec-0.6.0-py39-none-any.whl
Algorithm Hash digest
SHA256 02cb6f8fb26b03fdfc741172ab12358538d1627ffce16ecf9255812fb3bb14e7
MD5 36fd0ac49491126f679698f493511cfe
BLAKE2b-256 3a5caf75d2110bb86929dc3d815cbd072ac894073a988fe4aa8385996ce28c46

See more details on using hashes here.

Provenance

File details

Details for the file torchrec-0.6.0-py38-none-any.whl.

File metadata

  • Download URL: torchrec-0.6.0-py38-none-any.whl
  • Upload date:
  • Size: 429.6 kB
  • Tags: Python 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.18

File hashes

Hashes for torchrec-0.6.0-py38-none-any.whl
Algorithm Hash digest
SHA256 f73554e26feaca6b65351846df6218a2f2b93c685ab483b1c375ccda495a8868
MD5 812aa8309782f4c9d2e4a040081cce55
BLAKE2b-256 1f1160a9f4c5910341761ede7cdac698ae3c6f1b0d54c9612954939471ceccd3

See more details on using hashes here.

Provenance

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