| .. _MPS-Backend: |
| |
| MPS backend |
| =========== |
| |
| :mod:`mps` device enables high-performance |
| training on GPU for MacOS devices with Metal programming framework. It |
| introduces a new device to map Machine Learning computational graphs and |
| primitives on highly efficient Metal Performance Shaders Graph framework and |
| tuned kernels provided by Metal Performance Shaders framework respectively. |
| |
| The new MPS backend extends the PyTorch ecosystem and provides existing scripts |
| capabilities to setup and run operations on GPU. |
| |
| To get started, simply move your Tensor and Module to the ``mps`` device: |
| |
| .. code:: python |
| |
| # Check that MPS is available |
| if not torch.backends.mps.is_available(): |
| if not torch.backends.mps.is_built(): |
| print("MPS not available because the current PyTorch install was not " |
| "built with MPS enabled.") |
| else: |
| print("MPS not available because the current MacOS version is not 12.3+ " |
| "and/or you do not have an MPS-enabled device on this machine.") |
| |
| else: |
| mps_device = torch.device("mps") |
| |
| # Create a Tensor directly on the mps device |
| x = torch.ones(5, device=mps_device) |
| # Or |
| x = torch.ones(5, device="mps") |
| |
| # Any operation happens on the GPU |
| y = x * 2 |
| |
| # Move your model to mps just like any other device |
| model = YourFavoriteNet() |
| model.to(mps_device) |
| |
| # Now every call runs on the GPU |
| pred = model(x) |