There’s a list of directories where Python will look for packages - sys.modules. If it’s found in any of them, it will stop looking further and load that. When you run in virtualenv, sys.modules is extended by putting the local package directory before the system-wide one.
Next version of PyTorch is going to have torch.version attribute, so you’ll be able to check which one has been loaded. You can use pip uninstall torch to get rid of the old install.
All remaining question are about managing venvs, and there are probably lots of articles, that will explain it better, that I will in this short response.