Torchaug speed¶
Setting for comparison¶
We used a python script that compare the speed between Torchvision and Torchaug on GPU.
It does not test the improvement based on eliminating the CPU/GPU synchronization which should favor Torchaug in comparison with Torchvision.
If you have a better idea on how to compare the two, feel free to open an issue or PR !
Comparison¶
Using Torchvision, to have random call on each of the sample in the batch the following code snippet is used:
torch.stack([torchvision_transform(img) for img in batch])
We did not use a single call as shown below as this would call the same transform on the whole batch.
torchvision_transform(batch)
It was launched on a NVIDIA RTX 2000 Ada GPU with the following input torch.randint(0, 256, (batch_size, 3, 224, 224), dtype=uint8).
Transform |
Num chunks |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
TV (stack) |
Torchaug |
|||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Batch size |
256 |
256 |
128 |
128 |
64 |
64 |
32 |
32 |
16 |
16 |
8 |
8 |
4 |
4 |
2 |
2 |
1 |
1 |
||||||||||
RandomColorJitter |
1 |
28.82 ± 4.02 |
12.20 ± 0.10 |
3.96 ± 0.10 |
1.60 ± 0.06 |
0.81 ± 0.05 |
0.63 ± 0.02 |
0.63 ± 0.01 |
0.60 ± 0.02 |
0.29 ± 0.27 |
||||||||||||||||||
RandomColorJitter |
8 |
13.56 ± 0.18 |
6.49 ± 0.10 |
4.23 ± 0.06 |
4.16 ± 0.06 |
4.14 ± 0.05 |
2.18 ± 0.03 |
1.16 ± 0.02 |
0.60 ± 0.07 |
0.28 ± 0.27 |
||||||||||||||||||
RandomColorJitter |
16 |
12.98 ± 0.30 |
8.23 ± 0.10 |
8.12 ± 0.21 |
8.07 ± 0.07 |
4.14 ± 0.05 |
2.17 ± 0.03 |
1.16 ± 0.02 |
0.59 ± 0.02 |
0.29 ± 0.27 |
||||||||||||||||||
RandomColorJitter |
-1 |
59.80 ± 3.52 |
13.66 ± 0.14 |
29.87 ± 2.47 |
11.07 ± 0.09 |
14.87 ± 1.84 |
8.09 ± 0.10 |
7.52 ± 1.25 |
8.05 ± 0.08 |
3.75 ± 0.89 |
4.14 ± 0.06 |
1.93 ± 0.62 |
2.17 ± 0.04 |
1.00 ± 0.45 |
1.16 ± 0.03 |
0.50 ± 0.34 |
0.59 ± 0.01 |
0.27 ± 0.25 |
0.30 ± 0.27 |
|||||||||
RandomGaussianBlur |
36.86 ± 2.52 |
35.60 ± 0.15 |
18.46 ± 1.57 |
17.79 ± 0.07 |
9.22 ± 1.16 |
8.70 ± 0.05 |
4.62 ± 0.75 |
4.16 ± 0.05 |
2.32 ± 0.54 |
2.12 ± 0.02 |
1.19 ± 0.39 |
1.11 ± 0.01 |
0.63 ± 0.27 |
0.63 ± 0.01 |
0.33 ± 0.20 |
0.38 ± 0.01 |
0.17 ± 0.15 |
0.20 ± 0.18 |
||||||||||
RandomGrayscale |
5.58 ± 0.21 |
1.45 ± 0.05 |
2.78 ± 0.15 |
0.64 ± 0.02 |
1.39 ± 0.10 |
0.32 ± 0.02 |
0.71 ± 0.08 |
0.17 ± 0.01 |
0.37 ± 0.06 |
0.11 ± 0.01 |
0.19 ± 0.04 |
0.10 ± 0.01 |
0.11 ± 0.03 |
0.09 ± 0.01 |
0.06 ± 0.03 |
0.07 ± 0.00 |
0.04 ± 0.02 |
0.04 ± 0.02 |
||||||||||
RandomHorizontalFlip |
3.22 ± 0.07 |
1.19 ± 0.06 |
1.56 ± 0.05 |
0.50 ± 0.03 |
0.77 ± 0.04 |
0.25 ± 0.01 |
0.39 ± 0.03 |
0.13 ± 0.01 |
0.20 ± 0.02 |
0.09 ± 0.00 |
0.11 ± 0.02 |
0.07 ± 0.00 |
0.06 ± 0.02 |
0.06 ± 0.00 |
0.04 ± 0.01 |
0.05 ± 0.01 |
0.03 ± 0.01 |
0.02 ± 0.01 |
||||||||||
RandomResizedCrop |
1 |
4.53 ± 0.30 |
2.28 ± 0.16 |
1.07 ± 0.09 |
0.38 ± 0.04 |
0.20 ± 0.02 |
0.13 ± 0.02 |
0.10 ± 0.01 |
0.09 ± 0.02 |
0.09 ± 0.01 |
||||||||||||||||||
RandomResizedCrop |
8 |
4.37 ± 0.17 |
2.13 ± 0.05 |
1.04 ± 0.03 |
0.63 ± 0.02 |
0.52 ± 0.02 |
0.51 ± 0.02 |
0.29 ± 0.01 |
0.17 ± 0.01 |
0.09 ± 0.01 |
||||||||||||||||||
RandomResizedCrop |
16 |
4.24 ± 0.12 |
2.17 ± 0.05 |
1.22 ± 0.03 |
0.96 ± 0.02 |
0.94 ± 0.02 |
0.51 ± 0.02 |
0.29 ± 0.02 |
0.17 ± 0.02 |
0.09 ± 0.01 |
||||||||||||||||||
RandomResizedCrop |
-1 |
16.24 ± 1.71 |
14.15 ± 1.12 |
8.02 ± 0.06 |
7.12 ± 0.05 |
4.03 ± 0.06 |
3.59 ± 0.05 |
2.02 ± 0.04 |
1.81 ± 0.03 |
1.02 ± 0.03 |
0.94 ± 0.03 |
0.53 ± 0.02 |
0.50 ± 0.02 |
0.28 ± 0.02 |
0.29 ± 0.01 |
0.15 ± 0.02 |
0.17 ± 0.01 |
0.09 ± 0.02 |
0.08 ± 0.01 |
|||||||||
RandomSolarize |
4.52 ± 0.19 |
1.70 ± 0.06 |
2.24 ± 0.12 |
0.65 ± 0.02 |
1.11 ± 0.08 |
0.30 ± 0.02 |
0.57 ± 0.13 |
0.16 ± 0.01 |
0.29 ± 0.04 |
0.10 ± 0.01 |
0.16 ± 0.03 |
0.08 ± 0.01 |
0.08 ± 0.02 |
0.08 ± 0.01 |
0.05 ± 0.02 |
0.06 ± 0.01 |
0.03 ± 0.01 |
0.03 ± 0.02 |