lightning/docs/source-fabric/fundamentals/accelerators.rst

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

78 lines
1.8 KiB
ReStructuredText
Raw Normal View History

################################
Accelerate your code with Fabric
################################
.. raw:: html
<center>
<video width="100%" max-width="500px" src="https://pl-public-data.s3.amazonaws.com/assets_lightning/fabric/animations/accelerators.mp4", type="video/mp4" autoplay loop muted></video>
</center>
***************************
Set accelerator and devices
***************************
Fabric enables you to take full advantage of the hardware on your system. It supports
- CPU
- GPU (NVIDIA, AMD, Apple Silicon)
- TPU
2023-02-23 13:45:27 +00:00
By default, Fabric tries to maximize the hardware utilization of your system
.. code-block:: python
# Default settings
2023-02-23 13:45:27 +00:00
fabric = Fabric(accelerator="auto", devices="auto", strategy="auto")
# Same as
fabric = Fabric()
This is the most flexible option and makes your code run on most systems.
You can also explicitly set which accelerator to use:
.. code-block:: python
# CPU (slow)
fabric = Fabric(accelerator="cpu")
# GPU
fabric = Fabric(accelerator="gpu", devices=1)
# GPU (multiple)
fabric = Fabric(accelerator="gpu", devices=8)
# GPU: Apple M1/M2 only
2023-02-23 13:45:27 +00:00
fabric = Fabric(accelerator="mps")
# GPU: NVIDIA CUDA only
fabric = Fabric(accelerator="cuda", devices=8)
# TPU
fabric = Fabric(accelerator="tpu", devices=8)
For running on multiple devices in parallel, also known as "distributed", read our guide for :doc:`Launching Multiple Processes <./launch>`.
----
*****************
Access the Device
*****************
You can access the device anytime through ``fabric.device``.
This lets you replace boilerplate code like this:
.. code-block:: diff
- if torch.cuda.is_available():
- device = torch.device("cuda")
- else:
- device = torch.device("cpu")
+ device = fabric.device