facebookresearch / ELF

An End-To-End, Lightweight and Flexible Platform for Game Research
Other
2.09k stars 284 forks source link

It failed on higher version of torch(0.3.0) because of the change of APIs #114

Open qzhong0605 opened 6 years ago

qzhong0605 commented 6 years ago

Hi, I deployed the ELF on my server, but I founded that when I run on the torch(0.3.0), it reported the following errors:

Traceback (most recent call last): File "train.py", line 23, in model = env["model_loaders"][0].load_model(GC.params) File "/root/ELF/rlpytorch/model_loader.py", line 95, in load_model model.cuda(device_id=args.gpu) TypeError: cuda() got an unexpected keyword argument 'device_id'

Traceback (most recent call last): File "train.py", line 25, in env["mi"].add_model("actor", model, copy=True, cuda=all_args.gpu is not None, gpu_id=all_args.gpu) File "/root/ELF/rlpytorch/model_interface.py", line 98, in add_model self.models[key].cuda(device_id=gpu_id) TypeError: cuda() got an unexpected keyword argument 'device_id'

I found that the module file(torch/nn/modules/module.py) for torch is written on the following:

202 def cuda(self, device=None): 203 """Moves all model parameters and buffers to the GPU. 204 205 This also makes associated parameters and buffers different objects. So 206 it should be called before constructing optimizer if the module will 207 live on GPU while being optimized. 208 209 Arguments: 210 device (int, optional): if specified, all parameters will be 211 copied to that device 212 213 Returns: 214 Module: self 215 """ 216 return self._apply(lambda t: t.cuda(device))

I think the model function call on rlpytorch/model_interface.py and rlpytorch/model_loader.py must be changed simultaneously

Zhurik commented 6 years ago

You can change device_id to device. And it seems to work just fine.