You could possibly use the Subset class under torch.utils.data.
If you specify the indices from the original dataset you could create a separate dataloader for this subset. Then, even if you use shuffle in the dataloader, you’d get the same data, just shuffled everytime.
For example, adding from your MNIST dataset code:
dataset = MNIST(root=args.data_dir,train=True,transform=transform)
subset = Subset(dataset, np.arange(0,10))

subset_loader = DataLoader(subset, batch_size=args.batch_size, shuffle=args.shuffle, 
                          num_workers=num_workers, pin_memory=True)