torch.utils.checkpoint
======================

.. note::
    Checkpointing is implemented by rerunning a forward-pass segment for
    each checkpointed segment during backward propagation.  This can cause persistent
    states like the RNG state to be more advanced than they would without
    checkpointing.  By default, checkpointing includes logic to juggle
    the RNG state such that checkpointed passes making use of RNG
    (through dropout for example) have deterministic output as
    compared to non-checkpointed passes.  The logic to stash and restore
    RNG states can incur a moderate performance hit depending on the runtime
    of checkpointed operations.  If deterministic output compared to
    non-checkpointed passes is not required, supply ``preserve_rng_state=False``
    to ``checkpoint`` or ``checkpoint_sequential`` to omit stashing and
    restoring the RNG state during each checkpoint.

    The stashing logic saves and restores the RNG state for CPU and another
    device type (infer the device type from Tensor arguments excluding CPU
    tensors by ``_infer_device_type``) to the ``run_fn``. If there are multiple
    device, device state will only be saved for devices of a single device type,
    and the remaining devices will be ignored. Consequently, if any checkpointed
    functions involve randomness, this may result in incorrect gradients. (Note
    that if CUDA devices are among the devices detected, it will be prioritized;
    otherwise, the first device encountered will be selected.) If there are no
    CPU-tensors, the default device type state (default value is `cuda`, and it
    could be set to other device by ``DefaultDeviceType``) will be saved and restored.
    However, the logic has no way to anticipate if the user will move
    Tensors to a new device within the ``run_fn`` itself.  Therefore, if you move
    Tensors to a new device ("new" meaning not belonging to the set of
    [current device + devices of Tensor arguments]) within ``run_fn``, deterministic
    output compared to non-checkpointed passes is never guaranteed.

.. currentmodule:: torch.utils.checkpoint
.. autofunction:: checkpoint
.. autofunction:: checkpoint_sequential
.. autofunction:: set_checkpoint_debug_enabled
