Я сделал следующее замечание, которому не могу следовать. Я использую модель deeplabv3_resnet50 из torchvision и запускаю ее в режиме eval с различными размерами партии. Время выполнения, включая torch.synchronize (), практически линейно зависит от размера пакета. Это означает, что скорость изображений в секунду практически постоянна. Я также опробовал различные настройки cudnn.benchnmark = True / False. Я надеялся увидеть постоянное время вывода для каждой партии для всех размеров, потому что они работают параллельно на GPU. Я что-то здесь не так понимаю?
2 - 0,02 с
4 - 0,031 с
8 - 0,05 с
16 - 0,094 с
32 - 0,178 с
соответствующий код:
with torch.no_grad():
inputs, side_data = self.create_input(sample) # inputs.to(device) happens in here
torch.cuda.synchronize()
labels = sample["label"]
start = time.time()
outputs = self.model(inputs)
torch.cuda.synchronize()
print(time.time() - start)
preds = torch.argmax(outputs, 1)
Спасибо за вашу помощь. Markus
torch = 1.4.0, версия CUDA: 10.0, Tesla V100