torch.utils.rename_privateuse1_backend
-
torch.utils.rename_privateuse1_backend(backend_name) → None[source] -
Этот API следует использовать для переименования устройства частного использования 1, чтобы его удобнее было использовать в качестве имени устройства в API PyTorch.
Шаги:
- (В C++) реализуйте ядра для различных операций torch и зарегистрируйте их в ключе распределения PrivateUse1.
- (В Python) вызовите torch.utils.rename_privateuse1_backend(“foo”)
Теперь вы можете использовать «foo» как обычную строку устройства в Python.
Примечание: этот API можно вызывать только один раз на процесс. Попытка изменить внешнее устройство после его установки приведет к ошибке.
Примечание (AMP): Если вы хотите поддерживать AMP на своём устройстве, вы можете зарегистрировать модуль пользовательского бэкэнда. Бэкэнд должен зарегистрировать модуль пользовательского бэкэнда с
torch._register_device_module("foo", BackendModule). Модуль Backend должен иметь следующие API:-
get_amp_supported_dtype() -> List[torch.dtype]получить поддерживаемые типы данных на вашем устройстве «foo» в AMP, возможно, устройство «foo» поддерживает ещё один тип данных. -
is_autocast_enabled() -> boolпроверить, включен ли AMP на вашем устройстве «foo». -
get_autocast_dtype() -> torch.dtypeполучить поддерживаемый тип данных на вашем устройстве «foo» в AMP, который устанавливаетсяset_autocast_dtype, или по умолчанию, а тип данных по умолчанию —torch.float16. -
set_autocast_enabled(bool) -> Noneвключить или отключить AMP на вашем устройстве «foo». -
set_autocast_dtype(dtype) -> Noneустановить поддерживаемый тип данных на вашем устройстве «foo» в AMP, и тип данных должен содержаться в типах данных, полученных изget_amp_supported_dtype.
Примечание (случайное): если вы хотите иметь возможность устанавливать seed для вашего устройства, модуль Backend должен иметь следующие API:
-
_is_in_bad_fork() -> boolВозвращаетTrue, если сейчас он находится в bad_fork, иначе возвращаетFalse. -
manual_seed_all(seed int) -> NoneУстанавливает seed для генерации случайных чисел для ваших устройств. -
device_count() -> intВозвращает количество доступных «foo». -
get_rng_state(device: Union[int, str, torch.device] = 'foo') -> TensorВозвращает список ByteTensor, представляющих состояния генераторов случайных чисел для всех устройств. -
set_rng_state(new_state: Tensor, device: Union[int, str, torch.device] = 'foo') -> NoneУстанавливает состояние генератора случайных чисел указанного устройства «foo».
И есть некоторые общие функции:
-
is_available() -> boolВозвращает значение булевого типа, указывающее, доступно ли устройство «foo» в данный момент. -
current_device() -> intВозвращает индекс выбранного устройства.
Для получения более подробной информации см. https://pytorch.org/tutorials/advanced/extend_dispatcher.html#get-a-dispatch-key-for-your-backend Для примера существующего решения см. https://github.com/bdhirsh/pytorch_open_registration_example
Пример:
>>> torch.utils.rename_privateuse1_backend("foo") # This will work, assuming that you've implemented the right C++ kernels # to implement torch.ones. >>> a = torch.ones(2, device="foo")
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.utils.rename_privateuse1_backend.html