Линейная зависимость между размером партии и временем вывода для каждой партии - PullRequest
1 голос
/ 24 апреля 2020

Я сделал следующее замечание, которому не могу следовать. Я использую модель 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

...