Yes! I solved it with simplest way
In DataParallel models state_dict keys added ‘module.’ string as a prefix.
So simple way to solve this is using a create new dictionary and copy weights of multi-GPU model and remove ‘module.’ prefix in keys and load it to single GPU model.
state_dict = torch.load("Your multi GPU weights path")
new_state_dict = {}
for key in state_dict:
  new_key = key.replace('module.','')
  new_state_dict[new_key] = state_dict[key]

new_single_GPU_model = sampleModel() #"Your model without nn.DataParallel"
new_single_GPU_model.load_state_dict(new_state_dict)

You can use ordinary python dictionary for loading the weight on pytorch.
for using OrderedDict as weight you can simply import it and set as our new_state_dic dictionary
from collections import OrderedDict
new_state_dict = OrderedDict()
.... # same steps with up code

I hope it helps you