Я просто хотел добавить, что это также возможно сделать в коде PyTorch:
Вот небольшой пример, взятый из PyTorch Migration Guide для 0.4.0 :
# at beginning of the script
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
...
# then whenever you get a new Tensor or Module
# this won't copy if they are already on the desired device
input = data.to(device)
model = MyModule(...).to(device)
Я думаю, что пример довольно понятен.Но если есть какие-либо вопросы, просто задавайте!
Одно большое преимущество при использовании этого синтаксиса, как в примере выше, заключается в том, что вы можете создавать код, который выполняется на ЦПУ, если нет доступного ГП, но также на ГП, без изменения одной строки.
Вместо использования оператора if с torch.cuda.is_available()
вы также можете просто установить устройство на CPU , например:
device = torch.device("cpu")
Далее вы можете создавать тензорына требуемом устройстве с использованием флага device
:
mytensor = torch.rand(5, 5, device=device)
Это создаст тензор непосредственно на device
, который вы указали ранее.
Я хочуотметьте, что вы можете переключаться между CPU и GPU , используя этот синтаксис, а также между различными GPU .
Я надеюсь, что это полезно!