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

79 lines
1.7 KiB
ReStructuredText

################################
Accelerate your code with Fabric
################################
.. video:: https://pl-public-data.s3.amazonaws.com/assets_lightning/fabric/animations/accelerators.mp4
:width: 800
:autoplay:
:loop:
:muted:
:nocontrols:
***************************
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
By default, Fabric tries to maximize the hardware utilization of your system
.. code-block:: python
# Default settings
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
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