alex-petrenko / sample-factory

High throughput synchronous and asynchronous reinforcement learning
https://samplefactory.dev
MIT License
798 stars 109 forks source link

TypeError: cannot deepcopy this pattern object #129

Closed cjmdd closed 1 year ago

cjmdd commented 2 years ago

hello, can you help me? The error of sample-factory happened when I run command: "python3 -m swarm_rl.train --env=quadrotor_multi --train_for_env_steps=1000000000 --algo=APPO --use_rnn=False --num_workers=36 --num_envs_per_worker=4 --learning_rate=0.0001 --ppo_clip_value=5.0 --recurrence=1 --nonlinearity=tanh --actor_critic_share_weights=False --policy_initialization=xavier_uniform --adaptive_stddev=False --with_vtrace=False --max_policy_lag=100000000 --hidden_size=256 --gae_lambda=1.00 --max_grad_norm=5.0 --exploration_loss_coeff=0.0 --rollout=128 --batch_size=1024 --quads_use_numba=True --quads_mode=mix --quads_episode_duration=15.0 --quads_formation_size=0.0 --encoder_custom=quad_multi_encoder --with_pbt=False --quads_collision_reward=5.0 --quads_neighbor_hidden_size=256 --neighbor_obs_type=pos_vel --quads_settle_reward=0.0 --quads_collision_hitbox_radius=2.0 --quads_collision_falloff_radius=4.0 --quads_local_obs=6 --quads_local_metric=dist --quads_local_coeff=1.0 --quads_num_agents=8 --quads_collision_reward=5.0 --quads_collision_smooth_max_penalty=10.0 --quads_neighbor_encoder_type=attention --replay_buffer_sample_prob=0.75 --anneal_collision_steps=300000000 --experiments_root=EXPERIMENT_ROOT --experiment=swarm_rl "

alex-petrenko commented 2 years ago

I think this is better asked in the swarm-rl repo. Also, would be great if you could post the whole error trace.

For now, I suggest changing --replay_buffer_sample_prob=0.75 to --replay_buffer_sample_prob=0

Are you trying to run from the latest commit on swarm-rl master branch?

cjmdd commented 2 years ago

The whole error is : [2022-03-16 15:58:43,386][27874] Default env families supported: ['doom*', 'atari', 'dmlab_', 'mujoco', 'MiniGrid'] [2022-03-16 15:58:43,387][27874] Env registry entry created: quadrotor [2022-03-16 15:58:43,388][27874] Adding model class <class 'swarm_rl.models.quad_multi_model.QuadMultiEncoder'> to registry (with name quad_multi_encoder) Traceback (most recent call last): File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main "main", mod_spec) File "/usr/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/home/chengjiaming/study/google-swarmrl/quad-swarm-rl/swarm_rl/enjoy.py", line 18, in sys.exit(main()) File "/home/chengjiaming/study/google-swarmrl/quad-swarm-rl/swarm_rl/enjoy.py", line 12, in main cfg = parse_args(evaluation=True) File "/home/chengjiaming/study/google-swarmrl/quad-swarm-rl/sample_factory/algorithms/utils/arguments.py", line 83, in parse_args args = postprocess_args(args, argv, parser) File "/home/chengjiaming/study/google-swarmrl/quad-swarm-rl/sample_factory/algorithms/utils/arguments.py", line 106, in postprocess_args no_defaults_parser = copy.deepcopy(parser) File "/usr/lib/python3.6/copy.py", line 180, in deepcopy y = _reconstruct(x, memo, rv) File "/usr/lib/python3.6/copy.py", line 280, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.6/copy.py", line 150, in deepcopy y = copier(x, memo) File "/usr/lib/python3.6/copy.py", line 240, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.6/copy.py", line 150, in deepcopy y = copier(x, memo) File "/usr/lib/python3.6/copy.py", line 215, in _deepcopy_list append(deepcopy(a, memo)) File "/usr/lib/python3.6/copy.py", line 180, in deepcopy y = _reconstruct(x, memo, rv) File "/usr/lib/python3.6/copy.py", line 280, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.6/copy.py", line 150, in deepcopy y = copier(x, memo) File "/usr/lib/python3.6/copy.py", line 240, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.6/copy.py", line 180, in deepcopy y = _reconstruct(x, memo, *rv) File "/usr/lib/python3.6/copy.py", line 280, in _reconstruct state = deepcopy(state, memo) File "/usr/lib/python3.6/copy.py", line 150, in deepcopy y = copier(x, memo) File "/usr/lib/python3.6/copy.py", line 240, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) File "/usr/lib/python3.6/copy.py", line 161, in deepcopy y = copier(memo) TypeError: cannot deepcopy this pattern object