rangl-labs / netzerotc

MIT License
11 stars 2 forks source link

Check Python version used to create demonstration model #2

Closed masonlr closed 3 years ago

masonlr commented 3 years ago

I'm having trouble running the evaluate.py script and am wondering whether the issue is specific to the Python version that was used to train the model.

Main problem

With

~/github.com/moriatyjm/netzerotc/local_agent_training_and_evaluation master*
netzero ❯ python --version
Python 3.8.10

I'm getting a pickle error:

~/github.com/moriatyjm/netzerotc/local_agent_training_and_evaluation master*
netzero ❯ ./evaluate.py
Traceback (most recent call last):
  File "./evaluate.py", line 9, in <module>
    agent = PPO.load("MODEL_0")
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/base_class.py", line 577, in load
    data, params, pytorch_variables = load_from_zip_file(path, device=device)
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/save_util.py", line 393, in load_from_zip_file
    data = json_to_data(json_data)
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/save_util.py", line 164, in json_to_data
    deserialized_object = cloudpickle.loads(base64_object)
TypeError: an integer is required (got type bytes)

I know that various things regarding pickle changed between Python 3.7 and 3.8 and am wondering if that is relevant.

Related problem

Was train.py used to create Model_0.zip?

If run that script, I'm currently seeing:

~/github.com/moriatyjm/netzerotc/local_agent_training_and_evaluation master*
netzero ❯ ./train.py
Using cpu device
Wrapping the env in a DummyVecEnv.
Traceback (most recent call last):
  File "./train.py", line 12, in <module>
    trainer.train_rl(models_to_train=1, episodes_per_model=1)
  File "/Users/lrmason/github.com/moriatyjm/netzerotc/local_agent_training_and_evaluation/util.py", line 24, in train_rl
    model.learn(total_timesteps=steps_per_model)
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/ppo/ppo.py", line 255, in learn
    return super(PPO, self).learn(
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/on_policy_algorithm.py", line 222, in learn
    continue_training = self.collect_rollouts(self.env, callback, self.rollout_buffer, n_rollout_steps=self.n_steps)
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/on_policy_algorithm.py", line 163, in collect_rollouts
    new_obs, rewards, dones, infos = env.step(clipped_actions)
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/vec_env/base_vec_env.py", line 150, in step
    return self.step_wait()
  File "/Users/lrmason/miniconda3/envs/netzero/lib/python3.8/site-packages/stable_baselines3/common/vec_env/dummy_vec_env.py", line 43, in step_wait
    obs, self.buf_rews[env_idx], self.buf_dones[env_idx], self.buf_infos[env_idx] = self.envs[env_idx].step(
  File "/Users/lrmason/github.com/moriatyjm/netzerotc/environment/reference_environment/env.py", line 196, in step
    self.state, reward = apply_action(action, self.state)
  File "/Users/lrmason/github.com/moriatyjm/netzerotc/environment/reference_environment/env.py", line 111, in apply_action
    IEV_YearReward = param.IEV_Rewards[scenario,IEV_year,0] # get the raw capex
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
moriartyjm commented 3 years ago

Ah - I haven't experimented with training yet! Model0.zip was trained on a previous challenge, so not relevant and now deleted - good catch.

I'm developing with Python 3.7.3 in Visual Studio Code on Mac, happy to upgrade if that's best practice

moriartyjm commented 3 years ago

Anything that's more than a week old might need adapting to the new environment - have been doing this on an as-needed basis so far

masonlr commented 3 years ago

Ah - I haven't experimented with training yet! Model0.zip was trained on a previous challenge, so not relevant and now deleted - good catch.

I'm developing with Python 3.7.3 in Visual Studio Code on Mac, happy to upgrade if that's best practice

It's good to be within one minor version. 3.9 is out now, so good to have at least 3.8.

moriartyjm commented 3 years ago

Okay, am rocking 3.8.10 now.