It did. I I came up with 2 solutions in fact.
print("\nFirst...")
st = time()
x_all_ts = torch.tensor([mnist_ds[i][0].numpy() for i in range(0, len(mnist_ds))])
t_all_ts = torch.tensor([mnist_ds[i][1] for i in range(0, len(mnist_ds))])
print(f"{time()-st}   images:{x_all_ts.size()}  targets:{t_all_ts.size()} ")

print("\nSecond...")
st = time()
dl = DataLoader(dataset=mnist_ds, batch_size=len(mnist_ds))
X, T = list(dl)[0]
print(f"{time()-st}   images:{X.size()}  targets:{T.size()} ")

First...
42.57414126396179   images:torch.Size([60000, 1, 16, 16])  targets:torch.Size([60000]) 
Second...
17.22612690925598   images:torch.Size([60000, 1, 16, 16])  targets:torch.Size([60000])

By the way, it makes the training much faster to put MNIST on the GPU just once and  manually create batches in the training loop.
I am looking forward a transparent way to do so from pytorch, that is a way to put the dataset on the GPU before training and be able to use the DataLoader in the training loop.