A type system for distributed (SPMD) tensor computations in PyTorch
Project description
spmd_types
A type system for distributed (SPMD) tensor computations in PyTorch.
spmd_types tracks per-mesh-axis types on tensors -- Replicate (R), Invariant (I), Varying (V), Partial (P), and Shard (S) -- and enforces type-correct transitions through collective operations and local rewrites. It catches distributed programming errors at development time without requiring a GPU cluster.
Installation
pip install spmd_types
Quick start
import torch
import torch.distributed as dist
import spmd_types as spmd
from torch.distributed.device_mesh import init_device_mesh
# Set up a fake process group (no GPUs needed)
dist.init_process_group(backend="fake", rank=0, world_size=8)
mesh = init_device_mesh("cpu", (2, 4), mesh_dim_names=("dp", "tp"))
dp = mesh.get_group("dp")
tp = mesh.get_group("tp")
with spmd.set_current_mesh(mesh), spmd.typecheck():
x = torch.randn(4)
spmd.assert_type(x, {dp: spmd.R, tp: spmd.P}) # R on dp, partial on tp
y = spmd.all_reduce(x, tp, src=spmd.P, dst=spmd.R) # sum across tp ranks
spmd.assert_type(y, {dp: spmd.R, tp: spmd.R}) # now replicated everywhere
z = torch.mul(y, y) # type inference: R * R -> R
spmd.assert_type(z, {dp: spmd.R, tp: spmd.R})
dist.destroy_process_group()
Documentation
See MEGATRON_QUICKSTART.md for a guide on porting Megatron-derived training frameworks to use spmd_types.
See DESIGN.md for the full type system specification, including type inference rules, collective signatures, and forward-backward pairs.
License
BSD 3-Clause License. See LICENSE for details.
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 Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spmd_types-0.2.0.tar.gz.
File metadata
- Download URL: spmd_types-0.2.0.tar.gz
- Upload date:
- Size: 124.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
874f8100bdf4005957839c7a4d59c78328faf9902be18e0c3cc268d0b8a88e91
|
|
| MD5 |
3d47a949329b49086bc1ec982061c7bf
|
|
| BLAKE2b-256 |
a0bbac2efe5a700bfb6682bd288d7104ae81c07ecc243f34ff6c717393354962
|
File details
Details for the file spmd_types-0.2.0-py3-none-any.whl.
File metadata
- Download URL: spmd_types-0.2.0-py3-none-any.whl
- Upload date:
- Size: 135.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec62328197619028e884de08aa4e7e399cd733da28bd7976e8d3a57117f884b6
|
|
| MD5 |
e6dd38fba6b50bcceda6fe34decbe102
|
|
| BLAKE2b-256 |
86f59ed1720bd8de77b6617729f8c44657bfc9b02387d52480bc70927d3e613e
|