I don’t think you’re supposed to use _weight_drop, use the WeightDrop class from the same source 2. The super().__init__(...) there should do some magic. Since you’ve modified the function, perhaps write a custom wrapper as well doing the same thing as WeightDrop.
Do not manually assign module gpus for components already wrapped  inside DataParallel unless you know what you’re doing 5.