CUDA operations are asynchronous, so you would have to synchronize your code before starting and stopping your timer via torch.cuda.synchronize().
That being said, you can generally ignore the Python overhead and kernel launch times, if your workload is large enough.
However, if you are planning of training tiny models, your GPU utilization might be low, due to data bottlenecks or other issues.