From 9086aed4b35352f01756b0917bf08706141b3bb9 Mon Sep 17 00:00:00 2001 From: Armand Date: Mon, 22 Jan 2024 19:19:17 +0100 Subject: [PATCH 01/33] use pid to speed up real env reset --- furuta/rl/envs/furuta_real.py | 53 ++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/furuta/rl/envs/furuta_real.py b/furuta/rl/envs/furuta_real.py index ea019c8..6102eea 100644 --- a/furuta/rl/envs/furuta_real.py +++ b/furuta/rl/envs/furuta_real.py @@ -3,6 +3,7 @@ from typing import Optional import numpy as np +from simple_pid import PID from furuta.rl.envs.furuta_base import FurutaBase from furuta.robot import Robot @@ -23,14 +24,13 @@ def __init__( angle_limits=None, speed_limits=None, usb_device="/dev/ttyACM0", + motor_stop_pid=[0.04, 0.0, 0.001], ): super().__init__(control_freq, reward, angle_limits, speed_limits) + self.motor_stop_pid = motor_stop_pid self.robot = Robot(usb_device) - - self._init_vel_filt() - - self._update_state(0.0) + self._state = None def _init_vel_filt(self): self.vel_filt = VelocityFilter(2, dt=self.timing.dt) @@ -52,30 +52,43 @@ def reset( super().reset(seed=seed) logging.info("Reset env...") - # wait for pendulum to fall back to start position - reset_time = 0 - time_under_thresh = 0 - - while time_under_thresh < RESET_TIME and reset_time < MAX_RESET_TIME: - sleep(0.01) - if abs(self._state[ALPHA]) < ALPHA_THRESH: - time_under_thresh += 0.01 - else: - time_under_thresh = 0 - reset_time += 0.01 - self._update_state(0.0) - - if reset_time >= MAX_RESET_TIME: - logging.error("Reset timeout") + if self._state is not None: # if not first reset + logging.debug("Stopping motor") + motor_pid = PID( + self.motor_stop_pid[0], + self.motor_stop_pid[1], + self.motor_stop_pid[2], + setpoint=0.0, + output_limits=(-1, 1), + ) + + while abs(self._state[THETA_DOT]) > 0.5: + act = motor_pid(self._state[THETA_DOT]) + self._update_state(act) + sleep(self.timing.dt) + + logging.debug("Waiting for pendulum to fall back down") + time_under_thresh = 0 + reset_time = 0 + while time_under_thresh < RESET_TIME and reset_time < MAX_RESET_TIME: + sleep(self.timing.dt) + if abs(self._state[ALPHA]) < ALPHA_THRESH: + time_under_thresh += self.timing.dt + else: + time_under_thresh = 0 + self._update_state(0.0) + + if reset_time >= MAX_RESET_TIME: + logging.info(f"Reset timeout, alpha: {self._state[ALPHA]}") # reset both encoder, motor back to pos=0 self.robot.reset_encoders() logging.info("Reset done") - self._update_state(0.0) # else the first computed velocity will take into account previous episode # and it'll be huge and wrong and will terminate the episode self._init_vel_filt() + self._update_state(0.0) # initial state return self.get_obs(), {} # TODO: override parent render function From 01451f4ad80d40099b20029478f6b430e967881a Mon Sep 17 00:00:00 2001 From: Armand Date: Tue, 23 Jan 2024 15:36:21 +0100 Subject: [PATCH 02/33] setup deadzone wrapper --- furuta/rl/wrappers.py | 21 +++++++++++++------ .../wrappers/base_wrappers_deadzone.yaml | 8 +++++++ 2 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 scripts/configs/wrappers/base_wrappers_deadzone.yaml diff --git a/furuta/rl/wrappers.py b/furuta/rl/wrappers.py index e30da36..89f9b71 100644 --- a/furuta/rl/wrappers.py +++ b/furuta/rl/wrappers.py @@ -24,12 +24,21 @@ def step(self, action): self.unwrapped.robot.step(0.0) return observation, reward, terminated, truncated, info - def reset( - self, - seed: Optional[int] = None, - options: Optional[dict] = None, - ): - return self.env.reset() + +class DeadZone(gym.Wrapper): + """On the real robot, if it isn't moving, a zero command won't move it. + + When using gSDE, having actions that don't move the robot seem to cause isssues. + """ + + def __init__(self, env: gym.Env, deadzone: float = 0.1): + super().__init__(env) + self.deadzone = deadzone + + def step(self, action): + action = np.sign(action) * (np.abs(action) * (1 - self.deadzone) + self.deadzone) + observation, reward, terminated, truncated, info = self.env.step(action) + return observation, reward, terminated, truncated, info class MCAPLogger(gym.Wrapper): diff --git a/scripts/configs/wrappers/base_wrappers_deadzone.yaml b/scripts/configs/wrappers/base_wrappers_deadzone.yaml new file mode 100644 index 0000000..bf0c3d5 --- /dev/null +++ b/scripts/configs/wrappers/base_wrappers_deadzone.yaml @@ -0,0 +1,8 @@ +- _target_: gymnasium.wrappers.TimeLimit + max_episode_steps: 400 +- _target_: furuta.rl.wrappers.HistoryWrapper + steps: 2 + use_continuity_cost: True +- _target_: stable_baselines3.common.monitor.Monitor +- _target_: furuta.rl.wrappers.DeadZone + deadzone: 0.3 From 9e7d5fa3a9d29bb199000f0fe56c6d32eab3b723 Mon Sep 17 00:00:00 2001 From: Armand Date: Tue, 23 Jan 2024 15:37:53 +0100 Subject: [PATCH 03/33] setup tqdc + deadzone sim exp --- furuta/rl/algos.py | 16 +++++++++++----- poetry.lock | 17 ++++++++++++++++- pyproject.toml | 1 + scripts/configs/algo/tqc.yaml | 12 ++++++++++++ scripts/configs/env/sim.yaml | 4 ++-- scripts/configs/experiment/sim.yaml | 5 +++-- 6 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 scripts/configs/algo/tqc.yaml diff --git a/furuta/rl/algos.py b/furuta/rl/algos.py index 8f91ba0..624c632 100644 --- a/furuta/rl/algos.py +++ b/furuta/rl/algos.py @@ -1,12 +1,10 @@ +import sb3_contrib import stable_baselines3 # wrapper class for stable-baselines3.SAC -# TODO can we make one class for all algos? -# check if they all have the train freq param -# check if they have other tuple args -# check if it would be cleaner for sb3 to accept list instead of tuple? -class SAC(stable_baselines3.SAC): +# TODO is there a cleaner way to do this? +class BaseAlgoWrapper: def __init__(self, **kwargs): # sb3 expects tuple, omegaconf returns list # so we need to convert kwarg train_freq from tuple to list @@ -14,3 +12,11 @@ def __init__(self, **kwargs): kwargs.update({"train_freq": tuple(kwargs["train_freq"])}) super().__init__(**kwargs) + + +class SAC(BaseAlgoWrapper, stable_baselines3.SAC): + pass + + +class TQC(BaseAlgoWrapper, sb3_contrib.TQC): + pass diff --git a/poetry.lock b/poetry.lock index 2a90370..b892e9a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2657,6 +2657,21 @@ files = [ [package.dependencies] pyasn1 = ">=0.1.3" +[[package]] +name = "sb3-contrib" +version = "2.2.1" +description = "Contrib package of Stable Baselines3, experimental code." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sb3_contrib-2.2.1-py3-none-any.whl", hash = "sha256:2416d2f31bec9e479f4a3e9093f218d7162ea78359f7d2f7f01c5cce71c89300"}, + {file = "sb3_contrib-2.2.1.tar.gz", hash = "sha256:bdd1ac8ddfa4bb04685a46f739bcb8e0a1be57869524f421cb65978d86f1e065"}, +] + +[package.dependencies] +stable-baselines3 = ">=2.2.1,<3.0" + [[package]] name = "scipy" version = "1.11.4" @@ -3391,4 +3406,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "6e13d163638d8f1e233c3b66e50973d1fa212df26b1a0a859da22a0656665edf" +content-hash = "8e21e65ab2048b7e0d7032a9754df9438152b4b5feac8c7778715da9acebb247" diff --git a/pyproject.toml b/pyproject.toml index 146826a..9a36490 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ opencv-python = "^4.9.0.80" hydra-core = "^1.3.2" tensorboard = "^2.15.1" moviepy = "^1.0.3" +sb3-contrib = "^2.2.1" [tool.poetry.group.dev.dependencies] diff --git a/scripts/configs/algo/tqc.yaml b/scripts/configs/algo/tqc.yaml new file mode 100644 index 0000000..06e8ef6 --- /dev/null +++ b/scripts/configs/algo/tqc.yaml @@ -0,0 +1,12 @@ +# refer to https://stable-baselines3.readthedocs.io/en/master/modules/sac.html +_target_: furuta.rl.algos.TQC +# _target_: stable_baselines3.SAC +policy: "MlpPolicy" +target_update_interval: 1 +learning_starts: 500 +use_sde: True +use_sde_at_warmup: True +sde_sample_freq: 64 +train_freq: ["1", "episode"] +gradient_steps: -1 +stats_window_size: 10 diff --git a/scripts/configs/env/sim.yaml b/scripts/configs/env/sim.yaml index 31a6ce3..5800a85 100644 --- a/scripts/configs/env/sim.yaml +++ b/scripts/configs/env/sim.yaml @@ -5,8 +5,8 @@ defaults: _target_: furuta.rl.envs.furuta_sim.FurutaSim control_freq: 50 reward: "alpha" -angle_limits: [12, 12] -speed_limits: [120, 400] +angle_limits: [1000, 12] +speed_limits: [50, 1000] encoders_CPRs: null velocity_filter: 2 render_mode: "rgb_array" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index f1ec83f..d8e7f84 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -1,9 +1,10 @@ # @package _global_ defaults: - override /env: sim - - override /wrappers: base_wrappers + - override /wrappers: base_wrappers_deadzone + - override /algo: tqc gym_id: "FurutaSim-v0" -total_timesteps: 100_000 +total_timesteps: 200_000 evaluation: early_stopping_reward_threshold: null From 347befdee02b73dced790f83b035ea0808a93699 Mon Sep 17 00:00:00 2001 From: Armand Date: Tue, 23 Jan 2024 17:01:36 +0100 Subject: [PATCH 04/33] add angles to the obs when limiting them; add time feat wrapper --- furuta/rl/envs/furuta_base.py | 28 +++++++++++++++------ scripts/configs/algo/sac_real.yaml | 8 +++++- scripts/configs/env/sim.yaml | 4 +-- scripts/configs/experiment/sim.yaml | 4 +-- scripts/configs/wrappers/base_wrappers.yaml | 6 ++--- 5 files changed, 34 insertions(+), 16 deletions(-) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index 2e7b245..63c2cf0 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -50,14 +50,14 @@ def __init__( act_max = np.array([1.0], dtype=np.float32) - if angle_limits is None: - angle_limits = [np.inf, np.inf] - if speed_limits is None: - speed_limits = [np.inf, np.inf] + angle_limits = np.array(angle_limits, dtype=np.float32) + speed_limits = np.array(speed_limits, dtype=np.float32) - self.state_max = np.array( - [angle_limits[0], angle_limits[1], speed_limits[0], speed_limits[1]], dtype=np.float32 - ) + # replace none values with inf + angle_limits = np.where(angle_limits == None, np.inf, angle_limits) # noqa + speed_limits = np.where(speed_limits == None, np.inf, speed_limits) # noqa + + self.state_max = np.concatenate([angle_limits, speed_limits]) # max obs based on max speeds measured on the robot # in sim the speeds spike at 30 rad/s when trained @@ -67,6 +67,12 @@ def __init__( # obs is [cos(th), sin(th), cos(al), sin(al), th_d, al_d)] obs_max = np.array([1.0, 1.0, 1.0, 1.0, 30, 30], dtype=np.float32) + # if limit on angles, add them to the obs + if not np.isinf(self.state_max[ALPHA]): + obs_max = np.concatenate([np.array([self.state_max[ALPHA]]), obs_max]) + if not np.isinf(self.state_max[THETA]): + obs_max = np.concatenate([np.array([self.state_max[THETA]]), obs_max]) + # Spaces self.state_space = Box( # ('theta', 'alpha', 'theta_dot', 'alpha_dot'), @@ -107,7 +113,7 @@ def step(self, action): return obs, rwd, terminated, truncated, {} def get_obs(self): - return np.float32( + obs = np.float32( [ np.cos(self._state[THETA]), np.sin(self._state[THETA]), @@ -117,6 +123,12 @@ def get_obs(self): self._state[ALPHA_DOT], ] ) + if not np.isinf(self.state_max[ALPHA]): + obs = np.concatenate([np.array([self._state[ALPHA]]), obs]) + if not np.isinf(self.state_max[THETA]): + obs = np.concatenate([np.array([self._state[THETA]]), obs]) + + return obs def reset( self, diff --git a/scripts/configs/algo/sac_real.yaml b/scripts/configs/algo/sac_real.yaml index 2d3067b..ff3696d 100644 --- a/scripts/configs/algo/sac_real.yaml +++ b/scripts/configs/algo/sac_real.yaml @@ -2,5 +2,11 @@ defaults: - sac learning_starts: 1 -sde_sample_freq: 32 +use_sde: True +sde_sample_freq: 64 +use_sde_at_warmup: True +# ent_coef: 0.0 # "auto_0.05" train_freq: [1, "episode"] +policy_kwargs: + use_expln: True + # clip_mean: 0.5 diff --git a/scripts/configs/env/sim.yaml b/scripts/configs/env/sim.yaml index 5800a85..8ee8251 100644 --- a/scripts/configs/env/sim.yaml +++ b/scripts/configs/env/sim.yaml @@ -5,8 +5,8 @@ defaults: _target_: furuta.rl.envs.furuta_sim.FurutaSim control_freq: 50 reward: "alpha" -angle_limits: [1000, 12] -speed_limits: [50, 1000] +angle_limits: [31.4, 12] # can do 5 turns around theta, and 4 around alpha +speed_limits: [50, null] encoders_CPRs: null velocity_filter: 2 render_mode: "rgb_array" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index d8e7f84..b8fcf1b 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -1,8 +1,8 @@ # @package _global_ defaults: - override /env: sim - - override /wrappers: base_wrappers_deadzone - - override /algo: tqc + - override /wrappers: base_wrappers + - override /algo: sac_real gym_id: "FurutaSim-v0" total_timesteps: 200_000 diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index cf3825c..05f2dfb 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,6 +1,6 @@ -- _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 1000 +- _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper + max_episode_steps: 400 - _target_: furuta.rl.wrappers.HistoryWrapper - steps: 4 + steps: 2 use_continuity_cost: True - _target_: stable_baselines3.common.monitor.Monitor From cd9cf1c352b75afb058a5ae53549beaea12b1941 Mon Sep 17 00:00:00 2001 From: Armand Date: Tue, 23 Jan 2024 17:11:15 +0100 Subject: [PATCH 05/33] check for nan instead of none bc none gets converted to nan by np.array w/ dtype float32 --- furuta/rl/envs/furuta_base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index 63c2cf0..00cb526 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -54,8 +54,8 @@ def __init__( speed_limits = np.array(speed_limits, dtype=np.float32) # replace none values with inf - angle_limits = np.where(angle_limits == None, np.inf, angle_limits) # noqa - speed_limits = np.where(speed_limits == None, np.inf, speed_limits) # noqa + angle_limits = np.where(np.isnan(angle_limits), np.inf, angle_limits) # noqa + speed_limits = np.where(np.isnan(speed_limits), np.inf, speed_limits) # noqa self.state_max = np.concatenate([angle_limits, speed_limits]) From 5c4b6c4190e461ba498e182aa37d72ef321d7e8f Mon Sep 17 00:00:00 2001 From: Armand Date: Wed, 24 Jan 2024 11:40:55 +0100 Subject: [PATCH 06/33] setup real exp --- scripts/configs/env/real.yaml | 4 ++-- scripts/configs/experiment/real.yaml | 15 +++++++++++++++ scripts/configs/wrappers/base_wrappers.yaml | 2 ++ scripts/configs/wrappers/real_wrappers.yaml | 4 +++- 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 scripts/configs/experiment/real.yaml diff --git a/scripts/configs/env/real.yaml b/scripts/configs/env/real.yaml index a35001b..52e10e2 100644 --- a/scripts/configs/env/real.yaml +++ b/scripts/configs/env/real.yaml @@ -1,6 +1,6 @@ _target_: furuta.rl.envs.furuta_real.FurutaReal control_freq: 50 reward: "alpha" -angle_limits: [3.14, 6.3] -speed_limits: null # [60, 400] +angle_limits: [31.4, 12] +speed_limits: [50, null] usb_device: "/dev/ttyACM0" diff --git a/scripts/configs/experiment/real.yaml b/scripts/configs/experiment/real.yaml new file mode 100644 index 0000000..0387b04 --- /dev/null +++ b/scripts/configs/experiment/real.yaml @@ -0,0 +1,15 @@ +# @package _global_ +defaults: + - override /env: real + - override /wrappers: real_wrappers + - override /algo: sac_real + +total_timesteps: 150_000 +n_envs: 1 +model_artifact: null +capture_video: False +evaluation: + early_stopping_reward_threshold: null + deterministic: True + n_eval_episodes: 10 + eval_freq: 10_000 diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index 05f2dfb..c0aa36a 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,3 +1,5 @@ +- _target_: gymnasium.wrappers.TimeLimit + max_episode_steps: 400 - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper max_episode_steps: 400 - _target_: furuta.rl.wrappers.HistoryWrapper diff --git a/scripts/configs/wrappers/real_wrappers.yaml b/scripts/configs/wrappers/real_wrappers.yaml index 8f23307..e2c0d1f 100644 --- a/scripts/configs/wrappers/real_wrappers.yaml +++ b/scripts/configs/wrappers/real_wrappers.yaml @@ -1,5 +1,7 @@ - _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 1000 + max_episode_steps: 500 +- _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper + max_episode_steps: 500 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From e2d636074aceb8d748c02fb841fb9482a190892d Mon Sep 17 00:00:00 2001 From: Armand Date: Wed, 24 Jan 2024 11:44:27 +0100 Subject: [PATCH 07/33] add deadzone wrapper --- scripts/configs/wrappers/real_wrappers.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/configs/wrappers/real_wrappers.yaml b/scripts/configs/wrappers/real_wrappers.yaml index e2c0d1f..cf69f70 100644 --- a/scripts/configs/wrappers/real_wrappers.yaml +++ b/scripts/configs/wrappers/real_wrappers.yaml @@ -2,6 +2,8 @@ max_episode_steps: 500 - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper max_episode_steps: 500 +- _target_: furuta.rl.wrappers.DeadZone + deadzone: 0.2 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From 99a80dd12634853e05f2a130a8db12e8c737a1bd Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:36:49 +0100 Subject: [PATCH 08/33] use cos for env reset bc pendulum can do multiple turns --- furuta/rl/envs/furuta_real.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/furuta/rl/envs/furuta_real.py b/furuta/rl/envs/furuta_real.py index 6102eea..256cf0b 100644 --- a/furuta/rl/envs/furuta_real.py +++ b/furuta/rl/envs/furuta_real.py @@ -11,9 +11,9 @@ MAX_RESET_TIME = 7 # seconds RESET_TIME = 0.5 -ALPHA_THRESH = np.deg2rad( +ALPHA_THRESH = np.cos(np.deg2rad( 2 -) # alpha should stay between -2 and 2 deg for 0.5 sec for us to consider the env reset +)) # alpha should stay between -2 and 2 deg for 0.5 sec for us to consider the env reset class FurutaReal(FurutaBase): @@ -62,24 +62,27 @@ def reset( output_limits=(-1, 1), ) - while abs(self._state[THETA_DOT]) > 0.5: + reset_time = 0 + while abs(self._state[THETA_DOT]) > 0.5 and reset_time < MAX_RESET_TIME: act = motor_pid(self._state[THETA_DOT]) self._update_state(act) + reset_time += self.timing.dt sleep(self.timing.dt) logging.debug("Waiting for pendulum to fall back down") time_under_thresh = 0 reset_time = 0 while time_under_thresh < RESET_TIME and reset_time < MAX_RESET_TIME: - sleep(self.timing.dt) - if abs(self._state[ALPHA]) < ALPHA_THRESH: + if np.cos(self._state[ALPHA]) > ALPHA_THRESH: time_under_thresh += self.timing.dt else: time_under_thresh = 0 self._update_state(0.0) + reset_time += self.timing.dt + sleep(self.timing.dt) if reset_time >= MAX_RESET_TIME: - logging.info(f"Reset timeout, alpha: {self._state[ALPHA]}") + logging.info(f"Reset timeout, alpha: {np.rad2deg(self._state[ALPHA])}") # reset both encoder, motor back to pos=0 self.robot.reset_encoders() From df6cf31215cd0f641caed3b6c67221dba6086bbf Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:37:30 +0100 Subject: [PATCH 09/33] add a center to the deadzone wrapper to allow for a zero action --- furuta/rl/wrappers.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/furuta/rl/wrappers.py b/furuta/rl/wrappers.py index 89f9b71..6980376 100644 --- a/furuta/rl/wrappers.py +++ b/furuta/rl/wrappers.py @@ -31,12 +31,16 @@ class DeadZone(gym.Wrapper): When using gSDE, having actions that don't move the robot seem to cause isssues. """ - def __init__(self, env: gym.Env, deadzone: float = 0.1): + def __init__(self, env: gym.Env, deadzone: float = 0.2, center: float = 0.01): super().__init__(env) self.deadzone = deadzone + self.center = center def step(self, action): - action = np.sign(action) * (np.abs(action) * (1 - self.deadzone) + self.deadzone) + if abs(action) > self.center: + action = np.sign(action) * (np.abs(action) * (1 - self.deadzone) + self.deadzone) + else: + action = np.zeros_like(action) observation, reward, terminated, truncated, info = self.env.step(action) return observation, reward, terminated, truncated, info From b5bdca691701521b277f7fb10e0d22211ddb55e4 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:38:31 +0100 Subject: [PATCH 10/33] add exp reward --- furuta/rl/envs/furuta_base.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index 00cb526..a86be6f 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -7,6 +7,10 @@ from furuta.utils import ALPHA, ALPHA_DOT, THETA, THETA_DOT, Timing +def exp_alpha_reward(state): + return np.exp(alpha_reward(state) * 4) / np.exp(4) + + def alpha_reward(state): return (1 + -np.cos(state[ALPHA])) / 2 @@ -17,6 +21,7 @@ def alpha_theta_reward(state): REWARDS = { "alpha": alpha_reward, + "exp_alpha": exp_alpha_reward, "alpha_theta": alpha_theta_reward, } From 3e00faece789df8828bd9e9085c1c1f4c662dbb8 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:52:52 +0100 Subject: [PATCH 11/33] setup tqc + exp reward sim experiment --- scripts/configs/algo/tqc.yaml | 12 ------------ scripts/configs/algo/tqc_real.yaml | 9 +++++++++ scripts/configs/env/sim.yaml | 4 ++-- scripts/configs/experiment/sim.yaml | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) delete mode 100644 scripts/configs/algo/tqc.yaml create mode 100644 scripts/configs/algo/tqc_real.yaml diff --git a/scripts/configs/algo/tqc.yaml b/scripts/configs/algo/tqc.yaml deleted file mode 100644 index 06e8ef6..0000000 --- a/scripts/configs/algo/tqc.yaml +++ /dev/null @@ -1,12 +0,0 @@ -# refer to https://stable-baselines3.readthedocs.io/en/master/modules/sac.html -_target_: furuta.rl.algos.TQC -# _target_: stable_baselines3.SAC -policy: "MlpPolicy" -target_update_interval: 1 -learning_starts: 500 -use_sde: True -use_sde_at_warmup: True -sde_sample_freq: 64 -train_freq: ["1", "episode"] -gradient_steps: -1 -stats_window_size: 10 diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml new file mode 100644 index 0000000..50b9614 --- /dev/null +++ b/scripts/configs/algo/tqc_real.yaml @@ -0,0 +1,9 @@ +_target_: sbx.TQC +policy: "MlpPolicy" +use_sde: True +use_sde_at_warmup: True +sde_sample_freq: 64 +train_freq: 1 +# gradient_steps: -1 +# stats_window_size: 10 +# device: "metal" diff --git a/scripts/configs/env/sim.yaml b/scripts/configs/env/sim.yaml index 8ee8251..76016b7 100644 --- a/scripts/configs/env/sim.yaml +++ b/scripts/configs/env/sim.yaml @@ -4,9 +4,9 @@ defaults: _target_: furuta.rl.envs.furuta_sim.FurutaSim control_freq: 50 -reward: "alpha" +reward: "exp_alpha" angle_limits: [31.4, 12] # can do 5 turns around theta, and 4 around alpha -speed_limits: [50, null] +speed_limits: [60, null] encoders_CPRs: null velocity_filter: 2 render_mode: "rgb_array" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index b8fcf1b..0649d2c 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -2,7 +2,7 @@ defaults: - override /env: sim - override /wrappers: base_wrappers - - override /algo: sac_real + - override /algo: tqc_real gym_id: "FurutaSim-v0" total_timesteps: 200_000 From 06116f74bf822fd0f5bc1f1ad99a1b79f47b9a27 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:53:18 +0100 Subject: [PATCH 12/33] add sbx and jax-metal --- poetry.lock | 598 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 2 + 2 files changed, 596 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index b892e9a..677c786 100644 --- a/poetry.lock +++ b/poetry.lock @@ -279,6 +279,27 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "chex" +version = "0.1.85" +description = "Chex: Testing made fun, in JAX!" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "chex-0.1.85-py3-none-any.whl", hash = "sha256:32c96719aa94045339174138a6aec14aed2630a8a17fb2633ad3eb868890551d"}, + {file = "chex-0.1.85.tar.gz", hash = "sha256:a27cfe87119d6e1fe24ccc1438a59195e6dc1d6e0e10099fcf618c3f64771faf"}, +] + +[package.dependencies] +absl-py = ">=0.9.0" +jax = ">=0.4.16" +jaxlib = ">=0.1.37" +numpy = ">=1.24.1" +setuptools = {version = "*", markers = "python_version >= \"3.12\""} +toolz = ">=0.9.0" +typing-extensions = ">=4.2.0" + [[package]] name = "click" version = "8.1.7" @@ -479,6 +500,55 @@ files = [ {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, ] +[[package]] +name = "dm-tree" +version = "0.1.8" +description = "Tree is a library for working with nested data structures." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "dm-tree-0.1.8.tar.gz", hash = "sha256:0fcaabbb14e7980377439e7140bd05552739ca5e515ecb3119f234acee4b9430"}, + {file = "dm_tree-0.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:35cc164a79336bfcfafb47e5f297898359123bbd3330c1967f0c4994f9cf9f60"}, + {file = "dm_tree-0.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39070ba268c0491af9fe7a58644d99e8b4f2cde6e5884ba3380bddc84ed43d5f"}, + {file = "dm_tree-0.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2869228d9c619074de501a3c10dc7f07c75422f8fab36ecdcb859b6f1b1ec3ef"}, + {file = "dm_tree-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d20f2faa3672b52e5013f4077117bfb99c4cfc0b445d3bde1584c34032b57436"}, + {file = "dm_tree-0.1.8-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5483dca4d7eb1a0d65fe86d3b6a53ae717face83c1f17e0887b1a4a64ae5c410"}, + {file = "dm_tree-0.1.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d7c26e431fc93cc7e0cba867eb000db6a05f6f2b25af11ac4e9dada88fc5bca"}, + {file = "dm_tree-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d714371bb08839e4e5e29024fc95832d9affe129825ef38836b143028bd144"}, + {file = "dm_tree-0.1.8-cp310-cp310-win_amd64.whl", hash = "sha256:d40fa4106ca6edc66760246a08f500ec0c85ef55c762fb4a363f6ee739ba02ee"}, + {file = "dm_tree-0.1.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad16ceba90a56ec47cf45b21856d14962ac314787975ef786efb5e6e9ca75ec7"}, + {file = "dm_tree-0.1.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:803bfc53b4659f447ac694dbd04235f94a73ef7c1fd1e0df7c84ac41e0bc963b"}, + {file = "dm_tree-0.1.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:378cc8ad93c5fe3590f405a309980721f021c790ca1bdf9b15bb1d59daec57f5"}, + {file = "dm_tree-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1607ce49aa42f010d1e5e616d92ce899d66835d4d8bea49679582435285515de"}, + {file = "dm_tree-0.1.8-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:343a4a4ebaa127451ff971254a4be4084eb4bdc0b2513c32b46f6f728fd03f9e"}, + {file = "dm_tree-0.1.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa42a605d099ee7d41ba2b5fb75e21423951fd26e5d50583a00471238fb3021d"}, + {file = "dm_tree-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b7764de0d855338abefc6e3ee9fe40d301668310aa3baea3f778ff051f4393"}, + {file = "dm_tree-0.1.8-cp311-cp311-win_amd64.whl", hash = "sha256:a5d819c38c03f0bb5b3b3703c60e4b170355a0fc6b5819325bf3d4ceb3ae7e80"}, + {file = "dm_tree-0.1.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8c60a7eadab64c2278861f56bca320b2720f163dca9d7558103c3b77f2416571"}, + {file = "dm_tree-0.1.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af4b3d372f2477dcd89a6e717e4a575ca35ccc20cc4454a8a4b6f8838a00672d"}, + {file = "dm_tree-0.1.8-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de287fabc464b8734be251e46e06aa9aa1001f34198da2b6ce07bd197172b9cb"}, + {file = "dm_tree-0.1.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:054b461f8176f4bce7a21f7b1870f873a1ced3bdbe1282c816c550bb43c71fa6"}, + {file = "dm_tree-0.1.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f7915660f59c09068e428613c480150180df1060561fd0d1470684ae7007bd1"}, + {file = "dm_tree-0.1.8-cp37-cp37m-win_amd64.whl", hash = "sha256:b9f89a454e98806b44fe9d40ec9eee61f848388f7e79ac2371a55679bd5a3ac6"}, + {file = "dm_tree-0.1.8-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0e9620ccf06393eb6b613b5e366469304622d4ea96ae6540b28a33840e6c89cf"}, + {file = "dm_tree-0.1.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b095ba4f8ca1ba19350fd53cf1f8f3eb0bd406aa28af64a6dfc86707b32a810a"}, + {file = "dm_tree-0.1.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b9bd9b9ccb59409d33d51d84b7668010c04c2af7d4a371632874c1ca356cff3d"}, + {file = "dm_tree-0.1.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d3172394079a86c3a759179c65f64c48d1a42b89495fcf38976d11cc3bb952c"}, + {file = "dm_tree-0.1.8-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1612fcaecd79023dbc6a6ae48d51a80beb5c385d6f3f6d71688e57bc8d07de8"}, + {file = "dm_tree-0.1.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5c8c12e3fda754ef6af94161bacdaeda816d941995fac415d6855c6c386af68"}, + {file = "dm_tree-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:694c3654cfd2a81552c08ec66bb5c4a3d48fa292b9a181880fb081c36c5b9134"}, + {file = "dm_tree-0.1.8-cp38-cp38-win_amd64.whl", hash = "sha256:bb2d109f42190225112da899b9f3d46d0d5f26aef501c61e43529fe9322530b5"}, + {file = "dm_tree-0.1.8-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d16e1f2a073604cfcc09f7131ae8d534674f43c3aef4c25742eae295bc60d04f"}, + {file = "dm_tree-0.1.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:250b692fb75f45f02e2f58fbef9ab338904ef334b90557565621fa251df267cf"}, + {file = "dm_tree-0.1.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81fce77f22a302d7a5968aebdf4efafef4def7ce96528719a354e6990dcd49c7"}, + {file = "dm_tree-0.1.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7ac31b9aecccb2c6e1ab29706f6ded3eba0c2c69c770322c9c685929c3d6afb"}, + {file = "dm_tree-0.1.8-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fe962015b2fe1282892b28ebe962faed53c7f98d942da9a4625cbf27baef913"}, + {file = "dm_tree-0.1.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c52cbf4f8b3dbd0beaedf44f69fa85eec5e9dede612e08035e06ada6ec9426"}, + {file = "dm_tree-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:181c35521d480d0365f39300542cb6cd7fd2b77351bb43d7acfda15aef63b317"}, + {file = "dm_tree-0.1.8-cp39-cp39-win_amd64.whl", hash = "sha256:8ed3564abed97c806db122c2d3e1a2b64c74a63debe9903aad795167cc301368"}, +] + [[package]] name = "docker-pycreds" version = "0.4.0" @@ -494,6 +564,44 @@ files = [ [package.dependencies] six = ">=1.4.0" +[[package]] +name = "etils" +version = "1.5.2" +description = "Collection of common python utils" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "etils-1.5.2-py3-none-any.whl", hash = "sha256:6dc882d355e1e98a5d1a148d6323679dc47c9a5792939b9de72615aa4737eb0b"}, + {file = "etils-1.5.2.tar.gz", hash = "sha256:ba6a3e1aff95c769130776aa176c11540637f5dd881f3b79172a5149b6b1c446"}, +] + +[package.dependencies] +fsspec = {version = "*", optional = true, markers = "extra == \"epath\""} +importlib_resources = {version = "*", optional = true, markers = "extra == \"epath\""} +typing_extensions = {version = "*", optional = true, markers = "extra == \"epy\""} +zipp = {version = "*", optional = true, markers = "extra == \"epath\""} + +[package.extras] +all = ["etils[array-types]", "etils[eapp]", "etils[ecolab]", "etils[edc]", "etils[enp]", "etils[epath-gcs]", "etils[epath-s3]", "etils[epath]", "etils[epy]", "etils[etqdm]", "etils[etree-dm]", "etils[etree-jax]", "etils[etree-tf]", "etils[etree]"] +array-types = ["etils[enp]"] +dev = ["chex", "dataclass_array", "optree", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-subtests", "pytest-xdist", "torch"] +docs = ["etils[all,dev]", "sphinx-apitree[ext]"] +eapp = ["absl-py", "etils[epy]", "simple_parsing"] +ecolab = ["etils[enp]", "etils[epy]", "jupyter", "mediapy", "numpy", "packaging"] +edc = ["etils[epy]"] +enp = ["etils[epy]", "numpy"] +epath = ["etils[epy]", "fsspec", "importlib_resources", "typing_extensions", "zipp"] +epath-gcs = ["etils[epath]", "gcsfs"] +epath-s3 = ["etils[epath]", "s3fs"] +epy = ["typing_extensions"] +etqdm = ["absl-py", "etils[epy]", "tqdm"] +etree = ["etils[array-types]", "etils[enp]", "etils[epy]", "etils[etqdm]"] +etree-dm = ["dm-tree", "etils[etree]"] +etree-jax = ["etils[etree]", "jax[cpu]"] +etree-tf = ["etils[etree]", "tensorflow"] +lazy-imports = ["etils[ecolab]"] + [[package]] name = "exceptiongroup" version = "1.2.0" @@ -553,6 +661,37 @@ docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1 testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] +[[package]] +name = "flax" +version = "0.8.0" +description = "Flax: A neural network library for JAX designed for flexibility" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "flax-0.8.0-py3-none-any.whl", hash = "sha256:945fdf051895f52a81adc46b7bb6640cdd32aaa759428f0fcb6a2e519a46e8bb"}, + {file = "flax-0.8.0.tar.gz", hash = "sha256:8fb87a6b2447ec419ecd7afc2e5bdad0ecab00cdd9d7a2cb591edf385040c745"}, +] + +[package.dependencies] +jax = ">=0.4.19" +msgpack = "*" +numpy = [ + {version = ">=1.22", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] +optax = "*" +orbax-checkpoint = "*" +PyYAML = ">=5.4.1" +rich = ">=11.1" +tensorstore = "*" +typing-extensions = ">=4.2" + +[package.extras] +all = ["matplotlib"] +testing = ["black[jupyter] (==23.7.0)", "clu", "clu (<=0.0.9)", "einops", "gymnasium[accept-rom-license,atari]", "jaxlib", "jraph (>=0.0.6dev0)", "ml-collections", "mypy", "nbstripout", "opencv-python", "pytest", "pytest-cov", "pytest-custom-exit-code", "pytest-xdist", "pytype", "sentencepiece", "tensorflow", "tensorflow-datasets", "tensorflow-text (>=2.11.0)", "torch"] + [[package]] name = "fonttools" version = "4.44.0" @@ -655,6 +794,18 @@ smb = ["smbprotocol"] ssh = ["paramiko"] tqdm = ["tqdm"] +[[package]] +name = "gast" +version = "0.5.4" +description = "Python AST that abstracts the underlying Python version" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "gast-0.5.4-py3-none-any.whl", hash = "sha256:6fc4fa5fa10b72fb8aab4ae58bcb023058386e67b6fa2e3e34cec5c769360316"}, + {file = "gast-0.5.4.tar.gz", hash = "sha256:9c270fe5f4b130969b54174de7db4e764b09b4f7f67ccfc32480e29f78348d97"}, +] + [[package]] name = "gitdb" version = "4.0.11" @@ -1051,6 +1202,105 @@ qtconsole = ["qtconsole"] test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] +[[package]] +name = "jax" +version = "0.4.20" +description = "Differentiate, compile, and transform Numpy code." +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jax-0.4.20-py3-none-any.whl", hash = "sha256:3d5952197adca548d99310f1c326bf00548f1cc8652b89edb369166482c2aec2"}, + {file = "jax-0.4.20.tar.gz", hash = "sha256:ea96a763a8b1a9374639d1159ab4de163461d01cd022f67c34c09581b71ed2ac"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} +ml-dtypes = ">=0.2.0" +numpy = [ + {version = ">=1.22", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] +opt-einsum = "*" +scipy = [ + {version = ">=1.9", markers = "python_version < \"3.12\""}, + {version = ">=1.11.1", markers = "python_version >= \"3.12\""}, +] + +[package.extras] +australis = ["protobuf (>=3.13,<4)"] +ci = ["jaxlib (==0.4.19)"] +cpu = ["jaxlib (==0.4.20)"] +cuda = ["jaxlib (==0.4.20+cuda11.cudnn86)"] +cuda11-cudnn86 = ["jaxlib (==0.4.20+cuda11.cudnn86)"] +cuda11-local = ["jaxlib (==0.4.20+cuda11.cudnn86)"] +cuda11-pip = ["jaxlib (==0.4.20+cuda11.cudnn86)", "nvidia-cublas-cu11 (>=11.11)", "nvidia-cuda-cupti-cu11 (>=11.8)", "nvidia-cuda-nvcc-cu11 (>=11.8)", "nvidia-cuda-runtime-cu11 (>=11.8)", "nvidia-cudnn-cu11 (>=8.8)", "nvidia-cufft-cu11 (>=10.9)", "nvidia-cusolver-cu11 (>=11.4)", "nvidia-cusparse-cu11 (>=11.7)", "nvidia-nccl-cu11 (>=2.18.3)"] +cuda12-local = ["jaxlib (==0.4.20+cuda12.cudnn89)"] +cuda12-pip = ["jaxlib (==0.4.20+cuda12.cudnn89)", "nvidia-cublas-cu12 (>=12.2.5.6)", "nvidia-cuda-cupti-cu12 (>=12.2.142)", "nvidia-cuda-nvcc-cu12 (>=12.2.140)", "nvidia-cuda-runtime-cu12 (>=12.2.140)", "nvidia-cudnn-cu12 (>=8.9)", "nvidia-cufft-cu12 (>=11.0.8.103)", "nvidia-cusolver-cu12 (>=11.5.2)", "nvidia-cusparse-cu12 (>=12.1.2.141)", "nvidia-nccl-cu12 (>=2.18.3)", "nvidia-nvjitlink-cu12 (>=12.2)"] +minimum-jaxlib = ["jaxlib (==0.4.14)"] +tpu = ["jaxlib (==0.4.20)", "libtpu-nightly (==0.1.dev20231102)", "requests"] + +[[package]] +name = "jax-metal" +version = "0.0.5" +description = "JAX acceleration for Mac GPUs." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "jax_metal-0.0.5-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:08059fe8d12897150bf49798b7cded9e1afe9953a9fd710a32e2713f301fee8c"}, + {file = "jax_metal-0.0.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:565e211628059ca44021349ec36e514bcbfcbf33af610b2912829569bf78b596"}, +] + +[package.dependencies] +jax = "0.4.20" +jaxlib = "0.4.20" +six = ">=1.15.0" +wheel = ">=0.35,<1.0" + +[[package]] +name = "jaxlib" +version = "0.4.20" +description = "XLA library for JAX" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "jaxlib-0.4.20-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:8414ab610c8e18c9f405ec515902989c97446189731d45ae5861e68d54f5d131"}, + {file = "jaxlib-0.4.20-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b9f03f002138b3847f162ab948ded3e3849510dd59e4e7e427ff7c94ac51166a"}, + {file = "jaxlib-0.4.20-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:13f1d86f6ec327a17881f29c22bb54d92946d2fc006d93cd2657bc102accec96"}, + {file = "jaxlib-0.4.20-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:628d936279087a5cb2e2f6f9fa70bfc98f128d5df88bf8c9bc27bf551429a66a"}, + {file = "jaxlib-0.4.20-cp310-cp310-win_amd64.whl", hash = "sha256:50030842851afcf72c510b4656aa3a50963ffb722d3c80910b949d1e7c1a3bce"}, + {file = "jaxlib-0.4.20-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:9d39f26b0538360abd55313aa03b847d1ea224f472f84fd52edf7c714e9e5b83"}, + {file = "jaxlib-0.4.20-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5dc1afae1c29ed21161fdc3016ce32e4d7a9ab80bd2284f8acc498ded4e910"}, + {file = "jaxlib-0.4.20-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:3149d7ad3a4c660a5e83f98ee546b3b4780a6ca5c3adc13b5de12e3abdfb289d"}, + {file = "jaxlib-0.4.20-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:e4dd278214c1aec6bb77c92df21642da086a97108d0bb53c0290f43c6ec31e7f"}, + {file = "jaxlib-0.4.20-cp311-cp311-win_amd64.whl", hash = "sha256:019ff27da77f071e198c86703421a7365b57d2a7348b74f29d026fb5a1dd8707"}, + {file = "jaxlib-0.4.20-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:d45f7c25edab30924aae4b08fc4540b17f67f9d3a99837a151e01a32afc163ba"}, + {file = "jaxlib-0.4.20-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56a4c2e5e8031da0c8bf055adec01cf5276d7740b01057178c353f8b9e21f38e"}, + {file = "jaxlib-0.4.20-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:67701a1fa4cb65a170c312e1a9149d78bb383870d1a77cc537154611689db012"}, + {file = "jaxlib-0.4.20-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:a8f3286bb72ca3b0d1056b82250a22384ccb3cbde6efa30f659318999523e34d"}, + {file = "jaxlib-0.4.20-cp312-cp312-win_amd64.whl", hash = "sha256:1816b0e5710558e354a6458dfb9cfe032025a6ccb50ed3d6c29b5e84e5f21ad2"}, + {file = "jaxlib-0.4.20-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:c2f6ba2e44a89041cdf9640b09a9dc542ed8048c5f2263ec4290752f315ccaa3"}, + {file = "jaxlib-0.4.20-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:771227bfcfda4221ec37b0e949cb996a8d99c870e317401a4ea503034aaa83f3"}, + {file = "jaxlib-0.4.20-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:4d732a2d44e35684eba4ad0507f6e4ab68a81ed56e90b3948a303fd355e2587f"}, + {file = "jaxlib-0.4.20-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:78813eaf3e71e411243bce739dc21613ca7fc033f157c6e75497478a49d2f7df"}, + {file = "jaxlib-0.4.20-cp39-cp39-win_amd64.whl", hash = "sha256:5153aa83bc737d008df66d0378140f3c82548fefc474bd084384745cd3f54cab"}, +] + +[package.dependencies] +ml-dtypes = ">=0.2.0" +numpy = ">=1.22" +scipy = [ + {version = ">=1.9", markers = "python_version < \"3.12\""}, + {version = ">=1.11.1", markers = "python_version >= \"3.12\""}, +] + +[package.extras] +cuda11-pip = ["nvidia-cublas-cu11 (>=11.11)", "nvidia-cuda-cupti-cu11 (>=11.8)", "nvidia-cuda-nvcc-cu11 (>=11.8)", "nvidia-cuda-runtime-cu11 (>=11.8)", "nvidia-cudnn-cu11 (>=8.8)", "nvidia-cufft-cu11 (>=10.9)", "nvidia-cusolver-cu11 (>=11.4)", "nvidia-cusparse-cu11 (>=11.7)"] +cuda12-pip = ["nvidia-cublas-cu12", "nvidia-cuda-cupti-cu12", "nvidia-cuda-nvcc-cu12", "nvidia-cuda-runtime-cu12", "nvidia-cudnn-cu12 (>=8.9)", "nvidia-cufft-cu12", "nvidia-cusolver-cu12", "nvidia-cusparse-cu12"] + [[package]] name = "jedi" version = "0.19.1" @@ -1318,6 +1568,31 @@ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markupsafe" version = "2.1.3" @@ -1505,6 +1780,56 @@ files = [ mcap = ">=0.0.14" protobuf = ">=3.8,<4.22.0 || >=4.25.0" +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "ml-dtypes" +version = "0.3.2" +description = "" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "ml_dtypes-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7afde548890a92b41c0fed3a6c525f1200a5727205f73dc21181a2726571bb53"}, + {file = "ml_dtypes-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a746fe5fb9cd974a91070174258f0be129c592b93f9ce7df6cc336416c3fbd"}, + {file = "ml_dtypes-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961134ea44c7b8ca63eda902a44b58cd8bd670e21d62e255c81fba0a8e70d9b7"}, + {file = "ml_dtypes-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:6b35c4e8ca957c877ac35c79ffa77724ecc3702a1e4b18b08306c03feae597bb"}, + {file = "ml_dtypes-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:763697ab8a88d47443997a7cdf3aac7340049aed45f7521f6b0ec8a0594821fe"}, + {file = "ml_dtypes-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b89b194e9501a92d289c1ffd411380baf5daafb9818109a4f49b0a1b6dce4462"}, + {file = "ml_dtypes-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c34f2ba9660b21fe1034b608308a01be82bbef2a92fb8199f24dc6bad0d5226"}, + {file = "ml_dtypes-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:6604877d567a29bfe7cc02969ae0f2425260e5335505cf5e7fefc3e5465f5655"}, + {file = "ml_dtypes-0.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:93b78f53431c93953f7850bb1b925a17f0ab5d97527e38a7e865b5b4bc5cfc18"}, + {file = "ml_dtypes-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a17ef2322e60858d93584e9c52a5be7dd6236b056b7fa1ec57f1bb6ba043e33"}, + {file = "ml_dtypes-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8505946df1665db01332d885c2020b4cb9e84a8b1241eb4ba69d59591f65855"}, + {file = "ml_dtypes-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:f47619d978ab1ae7dfdc4052ea97c636c6263e1f19bd1be0e42c346b98d15ff4"}, + {file = "ml_dtypes-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c7b3fb3d4f6b39bcd4f6c4b98f406291f0d681a895490ee29a0f95bab850d53c"}, + {file = "ml_dtypes-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a4c3fcbf86fa52d0204f07cfd23947ef05b4ad743a1a988e163caa34a201e5e"}, + {file = "ml_dtypes-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91f8783fd1f2c23fd3b9ee5ad66b785dafa58ba3cdb050c4458021fa4d1eb226"}, + {file = "ml_dtypes-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ba8e1fafc7fff3e643f453bffa7d082df1678a73286ce8187d3e825e776eb94"}, + {file = "ml_dtypes-0.3.2.tar.gz", hash = "sha256:533059bc5f1764fac071ef54598db358c167c51a718f68f5bb55e3dee79d2967"}, +] + +[package.dependencies] +numpy = [ + {version = ">1.20", markers = "python_version < \"3.10\""}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, + {version = ">=1.23.3", markers = "python_version >= \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, +] + +[package.extras] +dev = ["absl-py", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-xdist"] + [[package]] name = "moviepy" version = "1.0.3" @@ -1551,6 +1876,72 @@ docs = ["sphinx"] gmpy = ["gmpy2 (>=2.1.0a4)"] tests = ["pytest (>=4.6)"] +[[package]] +name = "msgpack" +version = "1.0.7" +description = "MessagePack serializer" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, + {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, + {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, + {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, + {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, + {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, + {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, + {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, + {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, + {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, + {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, + {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, +] + [[package]] name = "nest-asyncio" version = "1.5.8" @@ -1858,6 +2249,78 @@ numpy = [ {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, ] +[[package]] +name = "opt-einsum" +version = "3.3.0" +description = "Optimizing numpys einsum function" +category = "main" +optional = false +python-versions = ">=3.5" +files = [ + {file = "opt_einsum-3.3.0-py3-none-any.whl", hash = "sha256:2455e59e3947d3c275477df7f5205b30635e266fe6dc300e3d9f9646bfcea147"}, + {file = "opt_einsum-3.3.0.tar.gz", hash = "sha256:59f6475f77bbc37dcf7cd748519c0ec60722e91e63ca114e68821c0c54a46549"}, +] + +[package.dependencies] +numpy = ">=1.7" + +[package.extras] +docs = ["numpydoc", "sphinx (==1.2.3)", "sphinx-rtd-theme", "sphinxcontrib-napoleon"] +tests = ["pytest", "pytest-cov", "pytest-pep8"] + +[[package]] +name = "optax" +version = "0.1.8" +description = "A gradient processing and optimisation library in JAX." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "optax-0.1.8-py3-none-any.whl", hash = "sha256:9a76a895511a1d9b50078c55e9fffd7f095e5e947d4c804eead7f3dc51c5c270"}, + {file = "optax-0.1.8.tar.gz", hash = "sha256:86820fba48c564bd6772be4f168895cdad8d8b75e45fc414e63ccfc223628c34"}, +] + +[package.dependencies] +absl-py = ">=0.7.1" +chex = ">=0.1.7" +jax = ">=0.1.55" +jaxlib = ">=0.1.37" +numpy = ">=1.18.0" + +[package.extras] +docs = ["dm-haiku (>=0.0.11)", "ipython (>=8.8.0)", "matplotlib (>=3.5.0)", "myst-nb (>=1.0.0)", "sphinx (>=6.0.0)", "sphinx-autodoc-typehints", "sphinx-book-theme (>=1.0.1)", "sphinx-collections (>=0.0.1)", "sphinx-gallery (>=0.14.0)", "sphinxcontrib-katex", "tensorflow (>=2.4.0)", "tensorflow-datasets (>=4.2.0)"] +dp-accounting = ["absl-py (>=1.0.0)", "attrs (>=21.4.0)", "mpmath (>=1.2.1)", "numpy (>=1.21.4)", "scipy (>=1.7.1)"] +examples = ["dm-haiku (>=0.0.3)", "tensorflow (>=2.4.0)", "tensorflow-datasets (>=4.2.0)"] +test = ["dm-haiku (>=0.0.3)", "dm-tree (>=0.1.7)", "flax (==0.5.3)"] + +[[package]] +name = "orbax-checkpoint" +version = "0.5.1" +description = "Orbax Checkpoint" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "orbax_checkpoint-0.5.1-py3-none-any.whl", hash = "sha256:d35bafdf01906fb2a3255f9bebff78fc714a30eeae71228e0064a77bd5a40d90"}, + {file = "orbax_checkpoint-0.5.1.tar.gz", hash = "sha256:6ac556f567e20750fdb31af2af35bf797e68a94df1033efeb81f79f2b15f8140"}, +] + +[package.dependencies] +absl-py = "*" +etils = {version = "*", extras = ["epath", "epy"]} +jax = ">=0.4.9" +jaxlib = "*" +msgpack = "*" +nest_asyncio = "*" +numpy = "*" +protobuf = "*" +pyyaml = "*" +tensorstore = ">=0.1.51" +typing_extensions = "*" + +[package.extras] +testing = ["flax", "pytest", "pytest-xdist"] + [[package]] name = "packaging" version = "23.2" @@ -2461,6 +2924,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -2642,6 +3106,25 @@ requests = ">=2.0.0" [package.extras] rsa = ["oauthlib[signedtoken] (>=3.0.0)"] +[[package]] +name = "rich" +version = "13.7.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + [[package]] name = "rsa" version = "4.9" @@ -2672,6 +3155,31 @@ files = [ [package.dependencies] stable-baselines3 = ">=2.2.1,<3.0" +[[package]] +name = "sbx-rl" +version = "0.10.0" +description = "Jax version of Stable Baselines, implementations of reinforcement learning algorithms." +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sbx-rl-0.10.0.tar.gz", hash = "sha256:f5a939f9371e4602a9dc27deaf8e74b0f5aa9c1982cb3b388fbe6814a2aa9483"}, + {file = "sbx_rl-0.10.0-py3-none-any.whl", hash = "sha256:ffa0b1fb3e8f2061406f8cffc93ba1e1ef6d76b18ced7b6d6e4a03d4bf706918"}, +] + +[package.dependencies] +flax = "*" +jax = "*" +jaxlib = "*" +optax = {version = "*", markers = "python_version >= \"3.9.0\""} +rich = "*" +stable-baselines3 = ">=2.3.0a1" +tensorflow-probability = "*" +tqdm = "*" + +[package.extras] +tests = ["black", "mypy", "pytest", "pytest-cov", "pytest-env", "pytest-xdist", "ruff"] + [[package]] name = "scipy" version = "1.11.4" @@ -2945,14 +3453,14 @@ files = [ [[package]] name = "stable-baselines3" -version = "2.2.1" +version = "2.3.0a1" description = "Pytorch version of Stable Baselines, implementations of reinforcement learning algorithms." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "stable_baselines3-2.2.1-py3-none-any.whl", hash = "sha256:ccb3405e244c3f0b284b3487436d99c782f1243229aa466cb4ceba93807e7428"}, - {file = "stable_baselines3-2.2.1.tar.gz", hash = "sha256:7db00bea41c82448d9243529059a9bc8131c0fe751098bd05e3d8822d2978a4d"}, + {file = "stable_baselines3-2.3.0a1-py3-none-any.whl", hash = "sha256:6fc4fc56db2b0df40926a023f149d74e8465246891e09772ee13dbacc02cb93b"}, + {file = "stable_baselines3-2.3.0a1.tar.gz", hash = "sha256:de09b08ffc62eac88629222400a4b6b98aba53fde0478031702cc5c29fc2afa2"}, ] [package.dependencies] @@ -3042,6 +3550,61 @@ files = [ {file = "tensorboard_data_server-0.7.2-py3-none-manylinux_2_31_x86_64.whl", hash = "sha256:ef687163c24185ae9754ed5650eb5bc4d84ff257aabdc33f0cc6f74d8ba54530"}, ] +[[package]] +name = "tensorflow-probability" +version = "0.23.0" +description = "Probabilistic modeling and statistical inference in TensorFlow" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "tensorflow_probability-0.23.0-py2.py3-none-any.whl", hash = "sha256:dda5cacfe50cb19ecd96f3ce81e6ff8680d84213bcfe94ca0aaf6e5f51c88061"}, +] + +[package.dependencies] +absl-py = "*" +cloudpickle = ">=1.3" +decorator = "*" +dm-tree = "*" +gast = ">=0.3.2" +numpy = ">=1.13.3" +six = ">=1.10.0" + +[package.extras] +jax = ["jax", "jaxlib"] +tfds = ["tensorflow-datasets (>=2.2.0)"] + +[[package]] +name = "tensorstore" +version = "0.1.52" +description = "Read and write large, multi-dimensional arrays" +category = "main" +optional = false +python-versions = ">=3.9" +files = [ + {file = "tensorstore-0.1.52-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ca40ca0d4518ce37de5196799f699a929fd6686e1edee6b6352f045293de044f"}, + {file = "tensorstore-0.1.52-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:88eb840032ca8771de2b0eebaff9d952d32f840a254caff8fc4834441e064400"}, + {file = "tensorstore-0.1.52-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5797416717f3c537bc02f08adbd46e5342eae0ed06b5a636b0eba0a56a8b9982"}, + {file = "tensorstore-0.1.52-cp310-cp310-win_amd64.whl", hash = "sha256:08770d82d64d79e5f60d68c14f3046a6a84bc0475080b089861eb5db414afc98"}, + {file = "tensorstore-0.1.52-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:6ec54185eb8f6dc9df4c9ea51ab911c4987e5eef3d23f0fb3e68f06cd9787d2c"}, + {file = "tensorstore-0.1.52-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc06bd2b11359299ffaf819300e03a6bd780146c29a5aea8b0b52c92692af90e"}, + {file = "tensorstore-0.1.52-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d09195df9f9803382517a6a4151a80072c972318f597e11bd4e2f60566432f5e"}, + {file = "tensorstore-0.1.52-cp311-cp311-win_amd64.whl", hash = "sha256:fa9fb2442bfbb403ef4321e3a46759790b6c3bad5b04f0f0172d05238928246a"}, + {file = "tensorstore-0.1.52-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:8e58e16802a0a370ebcf5dcf05cdd9875f6d854e405913f15b59a691262fc417"}, + {file = "tensorstore-0.1.52-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c622ae55458122c37431515c023f508630a8894ee002862af139dadd5b27f053"}, + {file = "tensorstore-0.1.52-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f9812157cb77ce12dfdbb1e5d8e56566b905643418ccf8cd0ac422291a0f0a"}, + {file = "tensorstore-0.1.52-cp312-cp312-win_amd64.whl", hash = "sha256:c194df86b5f765be44dad9f65b0d0babb558deb72df544e8448622df7946894e"}, + {file = "tensorstore-0.1.52-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:44b01753cbe30f8562c1b0e435daa4ed4dcdd2b3453a4e4e6f6d063bb00739fb"}, + {file = "tensorstore-0.1.52-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6be8ffcbea58e0062c86e27d11c06cf35d5aaa5eb94293808f80539cd176e763"}, + {file = "tensorstore-0.1.52-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a218fc4f2701f58eb3703c3f3f8f62a5bd6bb591cddea2a6cec513be3bf0329"}, + {file = "tensorstore-0.1.52-cp39-cp39-win_amd64.whl", hash = "sha256:c3dc74ff23666e108fb9f0ba605b0caefc542826d66612bfff7a721a7d9e7934"}, + {file = "tensorstore-0.1.52.tar.gz", hash = "sha256:db2130a8b792ee2f1fb74a4e89ea049ecbb0070370d365d91870822cbf6cfca7"}, +] + +[package.dependencies] +ml-dtypes = ">=0.3.1" +numpy = ">=1.16.0" + [[package]] name = "tomli" version = "2.0.1" @@ -3054,6 +3617,18 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "toolz" +version = "0.12.1" +description = "List processing tools and functional utilities" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, +] + [[package]] name = "torch" version = "2.1.2" @@ -3325,6 +3900,21 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog (>=2.3)"] +[[package]] +name = "wheel" +version = "0.42.0" +description = "A built-package format for Python" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "wheel-0.42.0-py3-none-any.whl", hash = "sha256:177f9c9b0d45c47873b619f5b650346d632cdc35fb5e4d25058e09c9e581433d"}, + {file = "wheel-0.42.0.tar.gz", hash = "sha256:c45be39f7882c9d34243236f2d63cbd58039e360f85d0913425fbd7ceea617a8"}, +] + +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + [[package]] name = "zipp" version = "3.17.0" @@ -3406,4 +3996,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "8e21e65ab2048b7e0d7032a9754df9438152b4b5feac8c7778715da9acebb247" +content-hash = "5a52b5f2879bbecba8d641d71b8b61d83c6e862bf4b1b89d81bc9aecccdae94d" diff --git a/pyproject.toml b/pyproject.toml index 9a36490..686c1bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,8 @@ hydra-core = "^1.3.2" tensorboard = "^2.15.1" moviepy = "^1.0.3" sb3-contrib = "^2.2.1" +sbx-rl = "^0.10.0" +jax-metal = {version = "^0.0.5", platform = "darwin"} [tool.poetry.group.dev.dependencies] From 7c9f844d0761ee275f0e95b002e6c7814d090f44 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 14:55:25 +0100 Subject: [PATCH 13/33] fix base wrapper; make sim exp closer to real w/ n_envs=1 --- scripts/configs/experiment/sim.yaml | 1 + scripts/configs/wrappers/base_wrappers.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index 0649d2c..82e8c1a 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -4,6 +4,7 @@ defaults: - override /wrappers: base_wrappers - override /algo: tqc_real +n_envs: 1 gym_id: "FurutaSim-v0" total_timesteps: 200_000 evaluation: diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index c0aa36a..43077ed 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,7 +1,7 @@ - _target_: gymnasium.wrappers.TimeLimit max_episode_steps: 400 - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper - max_episode_steps: 400 + max_steps: 400 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From 22c5a439c5a878889a17dedd00e49901da329f1a Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 18:09:37 +0100 Subject: [PATCH 14/33] add timeout to motor stopping, hack to avoid pid oscillations instead of tuning it --- furuta/rl/envs/furuta_real.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/furuta/rl/envs/furuta_real.py b/furuta/rl/envs/furuta_real.py index 256cf0b..2d8e149 100644 --- a/furuta/rl/envs/furuta_real.py +++ b/furuta/rl/envs/furuta_real.py @@ -10,10 +10,11 @@ from furuta.utils import ALPHA, ALPHA_DOT, THETA, THETA_DOT, VelocityFilter MAX_RESET_TIME = 7 # seconds +MAX_MOTOR_RESET_TIME = 0.2 # seconds RESET_TIME = 0.5 -ALPHA_THRESH = np.cos(np.deg2rad( - 2 -)) # alpha should stay between -2 and 2 deg for 0.5 sec for us to consider the env reset +ALPHA_THRESH = np.cos( + np.deg2rad(2) +) # alpha should stay between -2 and 2 deg for 0.5 sec for us to consider the env reset class FurutaReal(FurutaBase): @@ -63,7 +64,7 @@ def reset( ) reset_time = 0 - while abs(self._state[THETA_DOT]) > 0.5 and reset_time < MAX_RESET_TIME: + while abs(self._state[THETA_DOT]) > 0.5 and reset_time < MAX_MOTOR_RESET_TIME: act = motor_pid(self._state[THETA_DOT]) self._update_state(act) reset_time += self.timing.dt From 8a62cdcb57b5414f9e1c5e7872f8ce69f3ad25ae Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 25 Jan 2024 18:30:07 +0100 Subject: [PATCH 15/33] setup rew sweep --- scripts/configs/env/sim.yaml | 2 +- scripts/configs/experiment/sim.yaml | 6 +++--- scripts/configs/sweeps/rew.yaml | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 scripts/configs/sweeps/rew.yaml diff --git a/scripts/configs/env/sim.yaml b/scripts/configs/env/sim.yaml index 76016b7..9371eea 100644 --- a/scripts/configs/env/sim.yaml +++ b/scripts/configs/env/sim.yaml @@ -6,7 +6,7 @@ _target_: furuta.rl.envs.furuta_sim.FurutaSim control_freq: 50 reward: "exp_alpha" angle_limits: [31.4, 12] # can do 5 turns around theta, and 4 around alpha -speed_limits: [60, null] +speed_limits: [50, null] encoders_CPRs: null velocity_filter: 2 render_mode: "rgb_array" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index 82e8c1a..562a31e 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -2,10 +2,10 @@ defaults: - override /env: sim - override /wrappers: base_wrappers - - override /algo: tqc_real + - override /algo: sac -n_envs: 1 +n_envs: 12 gym_id: "FurutaSim-v0" -total_timesteps: 200_000 +total_timesteps: 150_000 evaluation: early_stopping_reward_threshold: null diff --git a/scripts/configs/sweeps/rew.yaml b/scripts/configs/sweeps/rew.yaml new file mode 100644 index 0000000..04a030d --- /dev/null +++ b/scripts/configs/sweeps/rew.yaml @@ -0,0 +1,14 @@ +program: train.py +method: grid +parameters: + env.reward: + values: ["alpha", "exp_alpha"] + seed: + values: [1, 2, 3] + +command: + - ${env} + - python + - ${program} + - ${args_no_hyphens} + - +experiment=sim From 1b925e69ebd0b89e063978eaca424ff630e83004 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Mon, 29 Jan 2024 18:30:49 +0100 Subject: [PATCH 16/33] investigate tqc action looking like gaussian noise --- notebooks/2023_01_29_debug_gsde.ipynb | 367 ++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 notebooks/2023_01_29_debug_gsde.ipynb diff --git a/notebooks/2023_01_29_debug_gsde.ipynb b/notebooks/2023_01_29_debug_gsde.ipynb new file mode 100644 index 0000000..634b554 --- /dev/null +++ b/notebooks/2023_01_29_debug_gsde.ipynb @@ -0,0 +1,367 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cpu device\n", + "Wrapping the env with a `Monitor` wrapper\n", + "Wrapping the env in a DummyVecEnv.\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 69.2 |\n", + "| ep_rew_mean | 27.7 |\n", + "| time/ | |\n", + "| episodes | 4 |\n", + "| fps | 3298 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 277 |\n", + "| train/ | |\n", + "| std | 0.0498 |\n", + "---------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 73.2 |\n", + "| ep_rew_mean | 29.7 |\n", + "| time/ | |\n", + "| episodes | 8 |\n", + "| fps | 945 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 586 |\n", + "| train/ | |\n", + "| actor_loss | 3.79 |\n", + "| critic_loss | 7.64 |\n", + "| ent_coef | 1.01 |\n", + "| ent_coef_loss | -0.00186 |\n", + "| learning_rate | 0.0003 |\n", + "| n_updates | 85 |\n", + "| std | 0.0497 |\n", + "---------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 76.7 |\n", + "| ep_rew_mean | 25.3 |\n", + "| time/ | |\n", + "| episodes | 12 |\n", + "| fps | 361 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 920 |\n", + "| train/ | |\n", + "| actor_loss | 1.55 |\n", + "| critic_loss | 2.23 |\n", + "| ent_coef | 0.978 |\n", + "| ent_coef_loss | -0.0228 |\n", + "| learning_rate | 0.0003 |\n", + "| n_updates | 419 |\n", + "| std | 0.0497 |\n", + "---------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", + " logger.warn(\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sbx import SAC as SAC_SBX\n", + "from stable_baselines3 import SAC as SAC_SB3\n", + "import matplotlib.pyplot as plt\n", + "import gymnasium as gym\n", + "from furuta.rl.envs.furuta_sim import FurutaSim\n", + "from gymnasium.wrappers import TimeLimit\n", + "\n", + "class ActionLogger(gym.Wrapper):\n", + " def __init__(self, env):\n", + " super().__init__(env)\n", + " self.actions = []\n", + " def step(self, action):\n", + " self.actions.append(action)\n", + " return self.env.step(action)\n", + " def plot_act(self):\n", + " plt.plot(self.actions[-100:])\n", + " plt.show()\n", + "\n", + "env = TimeLimit(ActionLogger(FurutaSim(speed_limits=[400, 400])), max_episode_steps=100)\n", + "\n", + "model = SAC_SB3(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500)\n", + "model.learn(total_timesteps=1000, log_interval=4)\n", + "\n", + "env.plot_act()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cpu device\n", + "Wrapping the env with a `Monitor` wrapper\n", + "Wrapping the env in a DummyVecEnv.\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 85.5 |\n", + "| ep_rew_mean | 10.5 |\n", + "| time/ | |\n", + "| episodes | 4 |\n", + "| fps | 4852 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 342 |\n", + "| train/ | |\n", + "| std | 0.0498 |\n", + "---------------------------------\n", + "----------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 87.6 |\n", + "| ep_rew_mean | 8.03 |\n", + "| time/ | |\n", + "| episodes | 8 |\n", + "| fps | 4869 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 701 |\n", + "| train/ | |\n", + "| actor_loss | 0.541 |\n", + "| critic_loss | 3.09 |\n", + "| ent_coef | 1 |\n", + "| ent_coef_loss | -0.000324 |\n", + "| learning_rate | 0.0003 |\n", + "| n_updates | 2 |\n", + "| std | 0.0498 |\n", + "----------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 87.2 |\n", + "| ep_rew_mean | 10.3 |\n", + "| time/ | |\n", + "| episodes | 12 |\n", + "| fps | 4601 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 1046 |\n", + "| train/ | |\n", + "| actor_loss | -0.0182 |\n", + "| critic_loss | 3.08 |\n", + "| ent_coef | 0.999 |\n", + "| ent_coef_loss | -0.0017 |\n", + "| learning_rate | 0.0003 |\n", + "| n_updates | 6 |\n", + "| std | 0.0498 |\n", + "---------------------------------\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model = SAC_SB3(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500, train_freq=(1, \"episode\"))\n", + "model.learn(total_timesteps=1000, log_interval=4)\n", + "\n", + "env.plot_act()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cpu device\n", + "Wrapping the env with a `Monitor` wrapper\n", + "Wrapping the env in a DummyVecEnv.\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 100 |\n", + "| ep_rew_mean | 22.7 |\n", + "| time/ | |\n", + "| episodes | 4 |\n", + "| fps | 340 |\n", + "| time_elapsed | 1 |\n", + "| total_timesteps | 400 |\n", + "| train/ | |\n", + "| std | 0 |\n", + "---------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 100 |\n", + "| ep_rew_mean | 26.9 |\n", + "| time/ | |\n", + "| episodes | 8 |\n", + "| fps | 127 |\n", + "| time_elapsed | 6 |\n", + "| total_timesteps | 800 |\n", + "| train/ | |\n", + "| actor_loss | -1.77 |\n", + "| critic_loss | 0.192 |\n", + "| ent_coef | 0.917 |\n", + "| n_updates | 299 |\n", + "| std | 0 |\n", + "---------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", + " logger.warn(\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model = SAC_SBX(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500)\n", + "model.learn(total_timesteps=1000, log_interval=4)\n", + "\n", + "env.plot_act()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cpu device\n", + "Wrapping the env with a `Monitor` wrapper\n", + "Wrapping the env in a DummyVecEnv.\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 81.8 |\n", + "| ep_rew_mean | 18 |\n", + "| time/ | |\n", + "| episodes | 4 |\n", + "| fps | 544 |\n", + "| time_elapsed | 0 |\n", + "| total_timesteps | 327 |\n", + "| train/ | |\n", + "| std | 0 |\n", + "---------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 72.8 |\n", + "| ep_rew_mean | 17 |\n", + "| time/ | |\n", + "| episodes | 8 |\n", + "| fps | 223 |\n", + "| time_elapsed | 2 |\n", + "| total_timesteps | 582 |\n", + "| train/ | |\n", + "| actor_loss | 2.76 |\n", + "| critic_loss | 1.85 |\n", + "| ent_coef | 1 |\n", + "| n_updates | 2 |\n", + "| std | 0 |\n", + "---------------------------------\n", + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 72.8 |\n", + "| ep_rew_mean | 19 |\n", + "| time/ | |\n", + "| episodes | 12 |\n", + "| fps | 231 |\n", + "| time_elapsed | 3 |\n", + "| total_timesteps | 873 |\n", + "| train/ | |\n", + "| actor_loss | 3.01 |\n", + "| critic_loss | 1.78 |\n", + "| ent_coef | 1 |\n", + "| n_updates | 6 |\n", + "| std | 0 |\n", + "---------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", + " logger.warn(\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sbx import TQC\n", + "\n", + "model = TQC(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500, train_freq=(1, \"episode\"))\n", + "model.learn(total_timesteps=1000, log_interval=4)\n", + "\n", + "env.plot_act()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From d650c03893f8beac24153f8408d78eb52a3fcc48 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Mon, 29 Jan 2024 19:31:12 +0100 Subject: [PATCH 17/33] fix default args --- furuta/rl/envs/furuta_sim.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/furuta/rl/envs/furuta_sim.py b/furuta/rl/envs/furuta_sim.py index e05023a..26cc173 100644 --- a/furuta/rl/envs/furuta_sim.py +++ b/furuta/rl/envs/furuta_sim.py @@ -15,8 +15,8 @@ def __init__( dyn: QubeDynamics = QubeDynamics(), control_freq=50, reward="alpha", - angle_limits=None, - speed_limits=None, + angle_limits=[None, None], + speed_limits=[None, None], encoders_CPRs: Optional[List[float]] = None, velocity_filter: int = None, render_mode="rgb_array", From 0f6c7adb2fa29908a502d2d26c06bb8e68b48870 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Mon, 29 Jan 2024 19:31:38 +0100 Subject: [PATCH 18/33] add max act to deadzone wrapper --- furuta/rl/wrappers.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/furuta/rl/wrappers.py b/furuta/rl/wrappers.py index 6980376..8880771 100644 --- a/furuta/rl/wrappers.py +++ b/furuta/rl/wrappers.py @@ -28,17 +28,25 @@ def step(self, action): class DeadZone(gym.Wrapper): """On the real robot, if it isn't moving, a zero command won't move it. - When using gSDE, having actions that don't move the robot seem to cause isssues. + When using gSDE, having actions that don't move the robot seem to cause issues. + + Also add the option to limit the max action because the robot can't really handle full power. """ - def __init__(self, env: gym.Env, deadzone: float = 0.2, center: float = 0.01): + def __init__( + self, env: gym.Env, deadzone: float = 0.2, center: float = 0.01, max_act: float = 0.75 + ): super().__init__(env) self.deadzone = deadzone self.center = center + self.max_act = max_act def step(self, action): + # TODO this only works if the action is between -1 and 1 if abs(action) > self.center: - action = np.sign(action) * (np.abs(action) * (1 - self.deadzone) + self.deadzone) + action = np.sign(action) * ( + np.abs(action) * (self.max_act - self.deadzone) + self.deadzone + ) else: action = np.zeros_like(action) observation, reward, terminated, truncated, info = self.env.step(action) From 55030276de25b45b305c2317c975a1ad1ff5fa04 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Mon, 29 Jan 2024 19:42:11 +0100 Subject: [PATCH 19/33] setup hp tune sweep for tqc --- furuta/rl/algos.py | 4 ++-- scripts/configs/algo/tqc_real.yaml | 2 +- scripts/configs/experiment/sim.yaml | 4 ++-- scripts/configs/sweeps/tqc_hp_tune.yaml | 20 ++++++++++++++++++++ scripts/configs/wrappers/base_wrappers.yaml | 6 +++--- 5 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 scripts/configs/sweeps/tqc_hp_tune.yaml diff --git a/furuta/rl/algos.py b/furuta/rl/algos.py index 624c632..dd3b7e0 100644 --- a/furuta/rl/algos.py +++ b/furuta/rl/algos.py @@ -1,4 +1,4 @@ -import sb3_contrib +import SBX import stable_baselines3 @@ -18,5 +18,5 @@ class SAC(BaseAlgoWrapper, stable_baselines3.SAC): pass -class TQC(BaseAlgoWrapper, sb3_contrib.TQC): +class TQC(BaseAlgoWrapper, SBX.TQC): pass diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml index 50b9614..f97385a 100644 --- a/scripts/configs/algo/tqc_real.yaml +++ b/scripts/configs/algo/tqc_real.yaml @@ -3,7 +3,7 @@ policy: "MlpPolicy" use_sde: True use_sde_at_warmup: True sde_sample_freq: 64 -train_freq: 1 +train_freq: [1, "episode"] # gradient_steps: -1 # stats_window_size: 10 # device: "metal" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index 562a31e..587aaf9 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -2,9 +2,9 @@ defaults: - override /env: sim - override /wrappers: base_wrappers - - override /algo: sac + - override /algo: tqc_real -n_envs: 12 +n_envs: 1 gym_id: "FurutaSim-v0" total_timesteps: 150_000 evaluation: diff --git a/scripts/configs/sweeps/tqc_hp_tune.yaml b/scripts/configs/sweeps/tqc_hp_tune.yaml new file mode 100644 index 0000000..6dc3159 --- /dev/null +++ b/scripts/configs/sweeps/tqc_hp_tune.yaml @@ -0,0 +1,20 @@ +program: train.py +method: grid +parameters: + algo.lr: + values: [7.3e-4, 3.0e-4, 1.0e-4] + algo.buffer_size: + values: [1_000_000, 300_000] + algo.gamma: + values: [0.99, 0.98] + algo.tau: + values: [0.02, 0.01] + seed: + values: [1, 2, 3] + +command: + - ${env} + - python + - ${program} + - ${args_no_hyphens} + - +experiment=sim diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index 43077ed..3f98d1d 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,7 +1,7 @@ - _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 400 -- _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper - max_steps: 400 + max_episode_steps: 300 +# - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper +# max_steps: 400 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From 5b7e11d4a54caee4299afbeef47ed5f8c475bbc5 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Mon, 29 Jan 2024 19:48:01 +0100 Subject: [PATCH 20/33] actually use early stopping --- scripts/configs/algo/tqc_real.yaml | 2 +- scripts/configs/experiment/sim.yaml | 2 +- scripts/configs/wrappers/base_wrappers.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml index f97385a..b1289cf 100644 --- a/scripts/configs/algo/tqc_real.yaml +++ b/scripts/configs/algo/tqc_real.yaml @@ -1,4 +1,4 @@ -_target_: sbx.TQC +_target_: furuta.rl.algos.TQC policy: "MlpPolicy" use_sde: True use_sde_at_warmup: True diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index 587aaf9..ce82551 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -8,4 +8,4 @@ n_envs: 1 gym_id: "FurutaSim-v0" total_timesteps: 150_000 evaluation: - early_stopping_reward_threshold: null + early_stopping_reward_threshold: 400 diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index 3f98d1d..57e4cc0 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,5 +1,5 @@ - _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 300 + max_episode_steps: 400 # - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper # max_steps: 400 - _target_: furuta.rl.wrappers.HistoryWrapper From a46febd0dbf9a978697b85f172c702e63fe97289 Mon Sep 17 00:00:00 2001 From: armandpl Date: Tue, 30 Jan 2024 16:05:54 +0100 Subject: [PATCH 21/33] use sb3_contrib master to train --- furuta/rl/algos.py | 5 +- poetry.lock | 220 ++++-------------------- pyproject.toml | 2 +- scripts/configs/algo/tqc_real.yaml | 10 +- scripts/configs/experiment/sim.yaml | 2 +- scripts/configs/sweeps/tqc_hp_tune.yaml | 10 +- 6 files changed, 50 insertions(+), 199 deletions(-) diff --git a/furuta/rl/algos.py b/furuta/rl/algos.py index dd3b7e0..52f0d7f 100644 --- a/furuta/rl/algos.py +++ b/furuta/rl/algos.py @@ -1,4 +1,5 @@ -import SBX +import sb3_contrib +import sbx import stable_baselines3 @@ -18,5 +19,5 @@ class SAC(BaseAlgoWrapper, stable_baselines3.SAC): pass -class TQC(BaseAlgoWrapper, SBX.TQC): +class TQC(BaseAlgoWrapper, sb3_contrib.TQC): pass diff --git a/poetry.lock b/poetry.lock index 677c786..f1d24f9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "absl-py" version = "2.0.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -16,7 +15,6 @@ files = [ name = "antlr4-python3-runtime" version = "4.9.3" description = "ANTLR 4.9.3 runtime for Python 3.7" -category = "main" optional = false python-versions = "*" files = [ @@ -27,7 +25,6 @@ files = [ name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = "*" files = [ @@ -39,7 +36,6 @@ files = [ name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false python-versions = "*" files = [ @@ -51,7 +47,6 @@ files = [ name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" files = [ @@ -70,7 +65,6 @@ test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "main" optional = false python-versions = "*" files = [ @@ -82,7 +76,6 @@ files = [ name = "cachetools" version = "5.3.2" description = "Extensible memoizing collections and decorators" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -94,7 +87,6 @@ files = [ name = "certifi" version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -106,7 +98,6 @@ files = [ name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -171,7 +162,6 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -183,7 +173,6 @@ files = [ name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -283,7 +272,6 @@ files = [ name = "chex" version = "0.1.85" description = "Chex: Testing made fun, in JAX!" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -304,7 +292,6 @@ typing-extensions = ">=4.2.0" name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -319,7 +306,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "cloudpickle" version = "3.0.0" description = "Pickler class to extend the standard pickle.Pickler functionality" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -331,7 +317,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -343,7 +328,6 @@ files = [ name = "comm" version = "0.2.0" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -361,7 +345,6 @@ test = ["pytest"] name = "contourpy" version = "1.1.1" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -436,7 +419,6 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] name = "cycler" version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -452,7 +434,6 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] name = "debugpy" version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -480,7 +461,6 @@ files = [ name = "decorator" version = "4.4.2" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" files = [ @@ -492,7 +472,6 @@ files = [ name = "distlib" version = "0.3.7" description = "Distribution utilities" -category = "main" optional = false python-versions = "*" files = [ @@ -504,7 +483,6 @@ files = [ name = "dm-tree" version = "0.1.8" description = "Tree is a library for working with nested data structures." -category = "main" optional = false python-versions = "*" files = [ @@ -553,7 +531,6 @@ files = [ name = "docker-pycreds" version = "0.4.0" description = "Python bindings for the docker credentials store API" -category = "main" optional = false python-versions = "*" files = [ @@ -568,7 +545,6 @@ six = ">=1.4.0" name = "etils" version = "1.5.2" description = "Collection of common python utils" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -606,7 +582,6 @@ lazy-imports = ["etils[ecolab]"] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -621,7 +596,6 @@ test = ["pytest (>=6)"] name = "executing" version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -636,7 +610,6 @@ tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipyth name = "farama-notifications" version = "0.0.4" description = "Notifications for all Farama Foundation maintained libraries." -category = "main" optional = false python-versions = "*" files = [ @@ -648,7 +621,6 @@ files = [ name = "filelock" version = "3.13.1" description = "A platform independent file lock." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -665,7 +637,6 @@ typing = ["typing-extensions (>=4.8)"] name = "flax" version = "0.8.0" description = "Flax: A neural network library for JAX designed for flexibility" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -678,8 +649,8 @@ jax = ">=0.4.19" msgpack = "*" numpy = [ {version = ">=1.22", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] optax = "*" orbax-checkpoint = "*" @@ -696,7 +667,6 @@ testing = ["black[jupyter] (==23.7.0)", "clu", "clu (<=0.0.9)", "einops", "gymna name = "fonttools" version = "4.44.0" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -762,7 +732,6 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fsspec" version = "2023.12.2" description = "File-system specification" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -798,7 +767,6 @@ tqdm = ["tqdm"] name = "gast" version = "0.5.4" description = "Python AST that abstracts the underlying Python version" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -810,7 +778,6 @@ files = [ name = "gitdb" version = "4.0.11" description = "Git Object Database" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -825,7 +792,6 @@ smmap = ">=3.0.1,<6" name = "gitpython" version = "3.1.41" description = "GitPython is a Python library used to interact with Git repositories" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -843,7 +809,6 @@ test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre name = "google-auth" version = "2.26.2" description = "Google Authentication Library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -867,7 +832,6 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] name = "google-auth-oauthlib" version = "1.2.0" description = "Google Authentication Library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -886,7 +850,6 @@ tool = ["click (>=6.0.0)"] name = "grpcio" version = "1.60.0" description = "HTTP/2-based RPC framework" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -953,7 +916,6 @@ protobuf = ["grpcio-tools (>=1.60.0)"] name = "gymnasium" version = "0.29.1" description = "A standard API for reinforcement learning and a diverse set of reference environments (formerly Gym)." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -970,9 +932,9 @@ typing-extensions = ">=4.3.0" [package.extras] accept-rom-license = ["autorom[accept-rom-license] (>=0.4.2,<0.5.0)"] -all = ["box2d-py (==2.3.5)", "cython (<3)", "imageio (>=2.14.1)", "jax (>=0.4.0)", "jaxlib (>=0.4.0)", "lz4 (>=3.1.0)", "matplotlib (>=3.0)", "moviepy (>=1.0.0)", "mujoco (>=2.3.3)", "mujoco-py (>=2.1,<2.2)", "opencv-python (>=3.0)", "pygame (>=2.1.3)", "shimmy[atari] (>=0.1.0,<1.0)", "swig (>=4.0.0,<5.0.0)", "torch (>=1.0.0)"] +all = ["box2d-py (==2.3.5)", "cython (<3)", "imageio (>=2.14.1)", "jax (>=0.4.0)", "jaxlib (>=0.4.0)", "lz4 (>=3.1.0)", "matplotlib (>=3.0)", "moviepy (>=1.0.0)", "mujoco (>=2.3.3)", "mujoco-py (>=2.1,<2.2)", "opencv-python (>=3.0)", "pygame (>=2.1.3)", "shimmy[atari] (>=0.1.0,<1.0)", "swig (==4.*)", "torch (>=1.0.0)"] atari = ["shimmy[atari] (>=0.1.0,<1.0)"] -box2d = ["box2d-py (==2.3.5)", "pygame (>=2.1.3)", "swig (>=4.0.0,<5.0.0)"] +box2d = ["box2d-py (==2.3.5)", "pygame (>=2.1.3)", "swig (==4.*)"] classic-control = ["pygame (>=2.1.3)", "pygame (>=2.1.3)"] jax = ["jax (>=0.4.0)", "jaxlib (>=0.4.0)"] mujoco = ["imageio (>=2.14.1)", "mujoco (>=2.3.3)"] @@ -985,7 +947,6 @@ toy-text = ["pygame (>=2.1.3)", "pygame (>=2.1.3)"] name = "hydra-core" version = "1.3.2" description = "A framework for elegantly configuring complex applications" -category = "main" optional = false python-versions = "*" files = [ @@ -994,7 +955,7 @@ files = [ ] [package.dependencies] -antlr4-python3-runtime = ">=4.9.0,<4.10.0" +antlr4-python3-runtime = "==4.9.*" omegaconf = ">=2.2,<2.4" packaging = "*" @@ -1002,7 +963,6 @@ packaging = "*" name = "identify" version = "2.5.31" description = "File identification library for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1017,7 +977,6 @@ license = ["ukkonen"] name = "idna" version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1029,7 +988,6 @@ files = [ name = "imageio" version = "2.33.1" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1062,7 +1020,6 @@ tifffile = ["tifffile"] name = "imageio-ffmpeg" version = "0.4.9" description = "FFMPEG wrapper for Python" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1081,7 +1038,6 @@ setuptools = "*" name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1101,7 +1057,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "importlib-resources" version = "6.1.1" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1120,7 +1075,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1132,7 +1086,6 @@ files = [ name = "ipykernel" version = "6.26.0" description = "IPython Kernel for Jupyter" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1146,7 +1099,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -1166,7 +1119,6 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" name = "ipython" version = "8.12.3" description = "IPython: Productive Interactive Computing" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1206,7 +1158,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "jax" version = "0.4.20" description = "Differentiate, compile, and transform Numpy code." -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1219,8 +1170,8 @@ importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} ml-dtypes = ">=0.2.0" numpy = [ {version = ">=1.22", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] opt-einsum = "*" scipy = [ @@ -1245,7 +1196,6 @@ tpu = ["jaxlib (==0.4.20)", "libtpu-nightly (==0.1.dev20231102)", "requests"] name = "jax-metal" version = "0.0.5" description = "JAX acceleration for Mac GPUs." -category = "main" optional = false python-versions = "*" files = [ @@ -1263,7 +1213,6 @@ wheel = ">=0.35,<1.0" name = "jaxlib" version = "0.4.20" description = "XLA library for JAX" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1305,7 +1254,6 @@ cuda12-pip = ["nvidia-cublas-cu12", "nvidia-cuda-cupti-cu12", "nvidia-cuda-nvcc- name = "jedi" version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1325,7 +1273,6 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jinja2" version = "3.1.3" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1343,7 +1290,6 @@ i18n = ["Babel (>=2.7)"] name = "jupyter-client" version = "8.6.0" description = "Jupyter protocol implementation and client libraries" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1353,7 +1299,7 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1367,7 +1313,6 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" version = "5.5.0" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1388,7 +1333,6 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] name = "kiwisolver" version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1502,7 +1446,6 @@ files = [ name = "lz4" version = "4.3.3" description = "LZ4 Bindings for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1553,7 +1496,6 @@ tests = ["psutil", "pytest (!=3.3.0)", "pytest-cov"] name = "markdown" version = "3.5.2" description = "Python implementation of John Gruber's Markdown." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1572,7 +1514,6 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1597,7 +1538,6 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1667,7 +1607,6 @@ files = [ name = "matplotlib" version = "3.7.3" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1737,7 +1676,6 @@ setuptools_scm = ">=7" name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1752,7 +1690,6 @@ traitlets = "*" name = "mcap" version = "1.1.1" description = "MCAP libraries for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1768,7 +1705,6 @@ zstandard = "*" name = "mcap-protobuf-support" version = "0.4.1" description = "Protobuf support for the Python MCAP library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1778,13 +1714,12 @@ files = [ [package.dependencies] mcap = ">=0.0.14" -protobuf = ">=3.8,<4.22.0 || >=4.25.0" +protobuf = ">=3.8,<4.22.dev0 || >=4.25.dev0" [[package]] name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1796,7 +1731,6 @@ files = [ name = "ml-dtypes" version = "0.3.2" description = "" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1822,9 +1756,9 @@ files = [ [package.dependencies] numpy = [ {version = ">1.20", markers = "python_version < \"3.10\""}, - {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, - {version = ">=1.23.3", markers = "python_version >= \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.3", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] [package.extras] @@ -1834,7 +1768,6 @@ dev = ["absl-py", "pyink", "pylint (>=2.6.0)", "pytest", "pytest-xdist"] name = "moviepy" version = "1.0.3" description = "Video editing with Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1845,10 +1778,7 @@ files = [ decorator = ">=4.0.2,<5.0" imageio = {version = ">=2.5,<3.0", markers = "python_version >= \"3.4\""} imageio_ffmpeg = {version = ">=0.2.0", markers = "python_version >= \"3.4\""} -numpy = [ - {version = ">=1.17.3", markers = "python_version != \"2.7\""}, - {version = "*", markers = "python_version >= \"2.7\""}, -] +numpy = {version = ">=1.17.3", markers = "python_version > \"2.7\""} proglog = "<=1.0.0" requests = ">=2.8.1,<3.0" tqdm = ">=4.11.2,<5.0" @@ -1862,7 +1792,6 @@ test = ["coverage (<5.0)", "coveralls (>=1.1,<2.0)", "pytest (>=3.0.0,<4.0)", "p name = "mpmath" version = "1.3.0" description = "Python library for arbitrary-precision floating-point arithmetic" -category = "main" optional = false python-versions = "*" files = [ @@ -1880,7 +1809,6 @@ tests = ["pytest (>=4.6)"] name = "msgpack" version = "1.0.7" description = "MessagePack serializer" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1946,7 +1874,6 @@ files = [ name = "nest-asyncio" version = "1.5.8" description = "Patch asyncio to allow nested event loops" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1958,7 +1885,6 @@ files = [ name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1977,7 +1903,6 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1992,7 +1917,6 @@ setuptools = "*" name = "numpy" version = "1.26.3" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2038,7 +1962,6 @@ files = [ name = "nvidia-cublas-cu12" version = "12.1.3.1" description = "CUBLAS native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2050,7 +1973,6 @@ files = [ name = "nvidia-cuda-cupti-cu12" version = "12.1.105" description = "CUDA profiling tools runtime libs." -category = "main" optional = false python-versions = ">=3" files = [ @@ -2062,7 +1984,6 @@ files = [ name = "nvidia-cuda-nvrtc-cu12" version = "12.1.105" description = "NVRTC native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2074,7 +1995,6 @@ files = [ name = "nvidia-cuda-runtime-cu12" version = "12.1.105" description = "CUDA Runtime native Libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2086,7 +2006,6 @@ files = [ name = "nvidia-cudnn-cu12" version = "8.9.2.26" description = "cuDNN runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2100,7 +2019,6 @@ nvidia-cublas-cu12 = "*" name = "nvidia-cufft-cu12" version = "11.0.2.54" description = "CUFFT native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2112,7 +2030,6 @@ files = [ name = "nvidia-curand-cu12" version = "10.3.2.106" description = "CURAND native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2124,7 +2041,6 @@ files = [ name = "nvidia-cusolver-cu12" version = "11.4.5.107" description = "CUDA solver native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2141,7 +2057,6 @@ nvidia-nvjitlink-cu12 = "*" name = "nvidia-cusparse-cu12" version = "12.1.0.106" description = "CUSPARSE native runtime libraries" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2156,7 +2071,6 @@ nvidia-nvjitlink-cu12 = "*" name = "nvidia-nccl-cu12" version = "2.18.1" description = "NVIDIA Collective Communication Library (NCCL) Runtime" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2167,7 +2081,6 @@ files = [ name = "nvidia-nvjitlink-cu12" version = "12.3.101" description = "Nvidia JIT LTO Library" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2179,7 +2092,6 @@ files = [ name = "nvidia-nvtx-cu12" version = "12.1.105" description = "NVIDIA Tools Extension" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2191,7 +2103,6 @@ files = [ name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2208,7 +2119,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "omegaconf" version = "2.3.0" description = "A flexible configuration library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2217,14 +2127,13 @@ files = [ ] [package.dependencies] -antlr4-python3-runtime = ">=4.9.0,<4.10.0" +antlr4-python3-runtime = "==4.9.*" PyYAML = ">=5.1.0" [[package]] name = "opencv-python" version = "4.9.0.80" description = "Wrapper package for OpenCV python bindings." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2239,21 +2148,18 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, - {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, - {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, - {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, - {version = ">=1.17.0", markers = "python_version >= \"3.7\""}, - {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, ] [[package]] name = "opt-einsum" version = "3.3.0" description = "Optimizing numpys einsum function" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2272,7 +2178,6 @@ tests = ["pytest", "pytest-cov", "pytest-pep8"] name = "optax" version = "0.1.8" description = "A gradient processing and optimisation library in JAX." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2297,7 +2202,6 @@ test = ["dm-haiku (>=0.0.3)", "dm-tree (>=0.1.7)", "flax (==0.5.3)"] name = "orbax-checkpoint" version = "0.5.1" description = "Orbax Checkpoint" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2325,7 +2229,6 @@ testing = ["flax", "pytest", "pytest-xdist"] name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2337,7 +2240,6 @@ files = [ name = "pandas" version = "2.0.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2371,8 +2273,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2405,7 +2307,6 @@ xml = ["lxml (>=4.6.3)"] name = "parso" version = "0.8.3" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2421,7 +2322,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" files = [ @@ -2436,7 +2336,6 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "main" optional = false python-versions = "*" files = [ @@ -2448,7 +2347,6 @@ files = [ name = "pillow" version = "10.1.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2516,7 +2414,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "platformdirs" version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2532,7 +2429,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2548,7 +2444,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pre-commit" version = "3.5.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2567,7 +2462,6 @@ virtualenv = ">=20.10.0" name = "proglog" version = "0.1.10" description = "Log and progress bar manager for console, notebooks, web..." -category = "main" optional = false python-versions = "*" files = [ @@ -2582,7 +2476,6 @@ tqdm = "*" name = "prompt-toolkit" version = "3.0.40" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -2597,7 +2490,6 @@ wcwidth = "*" name = "protobuf" version = "4.21.12" description = "" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2621,7 +2513,6 @@ files = [ name = "psutil" version = "5.9.6" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2650,7 +2541,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -2662,7 +2552,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" files = [ @@ -2677,7 +2566,6 @@ tests = ["pytest"] name = "pyasn1" version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2689,7 +2577,6 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -2704,7 +2591,6 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2716,7 +2602,6 @@ files = [ name = "pygame" version = "2.5.2" description = "Python Game Development" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2783,7 +2668,6 @@ files = [ name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2798,7 +2682,6 @@ plugins = ["importlib-metadata"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -2813,7 +2696,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = false python-versions = "*" files = [ @@ -2828,7 +2710,6 @@ cp2110 = ["hidapi"] name = "pytest" version = "7.4.4" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2851,7 +2732,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2866,7 +2746,6 @@ six = ">=1.5" name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -2878,7 +2757,6 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -2902,7 +2780,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2963,7 +2840,6 @@ files = [ name = "pyzmq" version = "25.1.1" description = "Python bindings for 0MQ" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3069,7 +2945,6 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3091,7 +2966,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3110,7 +2984,6 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "rich" version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -3129,7 +3002,6 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -3141,25 +3013,27 @@ files = [ pyasn1 = ">=0.1.3" [[package]] -name = "sb3-contrib" -version = "2.2.1" +name = "sb3_contrib" +version = "2.3.0a1" description = "Contrib package of Stable Baselines3, experimental code." -category = "main" optional = false python-versions = ">=3.8" -files = [ - {file = "sb3_contrib-2.2.1-py3-none-any.whl", hash = "sha256:2416d2f31bec9e479f4a3e9093f218d7162ea78359f7d2f7f01c5cce71c89300"}, - {file = "sb3_contrib-2.2.1.tar.gz", hash = "sha256:bdd1ac8ddfa4bb04685a46f739bcb8e0a1be57869524f421cb65978d86f1e065"}, -] +files = [] +develop = false [package.dependencies] -stable-baselines3 = ">=2.2.1,<3.0" +stable-baselines3 = ">=2.3.0a0,<3.0" + +[package.source] +type = "git" +url = "https://github.com/Stable-Baselines-Team/stable-baselines3-contrib" +reference = "HEAD" +resolved_reference = "8dca5d5e22315fb01c11ed24ef6a4546aa4c508e" [[package]] name = "sbx-rl" version = "0.10.0" description = "Jax version of Stable Baselines, implementations of reinforcement learning algorithms." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3184,7 +3058,6 @@ tests = ["black", "mypy", "pytest", "pytest-cov", "pytest-env", "pytest-xdist", name = "scipy" version = "1.11.4" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -3227,7 +3100,6 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo name = "sentry-sdk" version = "1.39.2" description = "Python client for Sentry (https://sentry.io)" -category = "main" optional = false python-versions = "*" files = [ @@ -3273,7 +3145,6 @@ tornado = ["tornado (>=5)"] name = "setproctitle" version = "1.3.3" description = "A Python module to customize the process title" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3374,7 +3245,6 @@ test = ["pytest"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3391,7 +3261,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "setuptools-scm" version = "8.0.4" description = "the blessed package to manage your versions by scm tags" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3414,7 +3283,6 @@ test = ["build", "pytest", "rich", "wheel"] name = "simple-pid" version = "2.0.0" description = "A simple, easy to use PID controller" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3431,7 +3299,6 @@ test = ["pytest"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3443,7 +3310,6 @@ files = [ name = "smmap" version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3455,7 +3321,6 @@ files = [ name = "stable-baselines3" version = "2.3.0a1" description = "Pytorch version of Stable Baselines, implementations of reinforcement learning algorithms." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3481,7 +3346,6 @@ tests = ["black (>=23.9.1,<24)", "mypy", "pytest", "pytest-cov", "pytest-env", " name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" files = [ @@ -3501,7 +3365,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "sympy" version = "1.12" description = "Computer algebra system (CAS) in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3516,7 +3379,6 @@ mpmath = ">=0.19" name = "tensorboard" version = "2.15.1" description = "TensorBoard lets you watch Tensors Flow" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -3541,7 +3403,6 @@ werkzeug = ">=1.0.1" name = "tensorboard-data-server" version = "0.7.2" description = "Fast data loading for TensorBoard" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3554,7 +3415,6 @@ files = [ name = "tensorflow-probability" version = "0.23.0" description = "Probabilistic modeling and statistical inference in TensorFlow" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -3578,7 +3438,6 @@ tfds = ["tensorflow-datasets (>=2.2.0)"] name = "tensorstore" version = "0.1.52" description = "Read and write large, multi-dimensional arrays" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -3609,7 +3468,6 @@ numpy = ">=1.16.0" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3621,7 +3479,6 @@ files = [ name = "toolz" version = "0.12.1" description = "List processing tools and functional utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3633,7 +3490,6 @@ files = [ name = "torch" version = "2.1.2" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" -category = "main" optional = false python-versions = ">=3.8.0" files = [ @@ -3687,7 +3543,6 @@ opt-einsum = ["opt-einsum (>=3.3)"] name = "tornado" version = "6.3.3" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "main" optional = false python-versions = ">= 3.8" files = [ @@ -3708,7 +3563,6 @@ files = [ name = "tqdm" version = "4.66.1" description = "Fast, Extensible Progress Meter" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3729,7 +3583,6 @@ telegram = ["requests"] name = "traitlets" version = "5.13.0" description = "Traitlets Python configuration system" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3745,7 +3598,6 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0, name = "triton" version = "2.1.0" description = "A language and compiler for custom Deep Learning operations" -category = "main" optional = false python-versions = "*" files = [ @@ -3771,7 +3623,6 @@ tutorials = ["matplotlib", "pandas", "tabulate"] name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3783,7 +3634,6 @@ files = [ name = "tzdata" version = "2023.4" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -3795,7 +3645,6 @@ files = [ name = "urllib3" version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3812,7 +3661,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.24.6" description = "Virtual Python Environment builder" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3833,7 +3681,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wandb" version = "0.16.2" description = "A CLI and library for interacting with the Weights & Biases API." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3874,7 +3721,6 @@ sweeps = ["sweeps (>=0.2.0)"] name = "wcwidth" version = "0.2.9" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -3886,7 +3732,6 @@ files = [ name = "werkzeug" version = "3.0.1" description = "The comprehensive WSGI web application library." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3904,7 +3749,6 @@ watchdog = ["watchdog (>=2.3)"] name = "wheel" version = "0.42.0" description = "A built-package format for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3919,7 +3763,6 @@ test = ["pytest (>=6.0.0)", "setuptools (>=65)"] name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3935,7 +3778,6 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p name = "zstandard" version = "0.22.0" description = "Zstandard bindings for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3996,4 +3838,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<4.0" -content-hash = "5a52b5f2879bbecba8d641d71b8b61d83c6e862bf4b1b89d81bc9aecccdae94d" +content-hash = "2d71b3bedcbe9448937f11634f80f2b9bf787a64bfa24bf148ba1313b33cbadc" diff --git a/pyproject.toml b/pyproject.toml index 686c1bf..ecd14fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,9 +23,9 @@ opencv-python = "^4.9.0.80" hydra-core = "^1.3.2" tensorboard = "^2.15.1" moviepy = "^1.0.3" -sb3-contrib = "^2.2.1" sbx-rl = "^0.10.0" jax-metal = {version = "^0.0.5", platform = "darwin"} +sb3-contrib = {git = "https://github.com/Stable-Baselines-Team/stable-baselines3-contrib"} [tool.poetry.group.dev.dependencies] diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml index b1289cf..7405c6b 100644 --- a/scripts/configs/algo/tqc_real.yaml +++ b/scripts/configs/algo/tqc_real.yaml @@ -1,9 +1,17 @@ _target_: furuta.rl.algos.TQC policy: "MlpPolicy" +buffer_size: 100_000 +batch_size: 256 +top_quantiles_to_drop_per_net: 2 +learning_starts: 1000 +gamma: 0.99 +tau: 0.005 +learning_rate: 3e-4 use_sde: True use_sde_at_warmup: True sde_sample_freq: 64 train_freq: [1, "episode"] -# gradient_steps: -1 +gradient_steps: -1 +# device: "cpu" # stats_window_size: 10 # device: "metal" diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index ce82551..74aaf3d 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -6,6 +6,6 @@ defaults: n_envs: 1 gym_id: "FurutaSim-v0" -total_timesteps: 150_000 +total_timesteps: 100_000 evaluation: early_stopping_reward_threshold: 400 diff --git a/scripts/configs/sweeps/tqc_hp_tune.yaml b/scripts/configs/sweeps/tqc_hp_tune.yaml index 6dc3159..9fa0ade 100644 --- a/scripts/configs/sweeps/tqc_hp_tune.yaml +++ b/scripts/configs/sweeps/tqc_hp_tune.yaml @@ -1,14 +1,14 @@ program: train.py method: grid parameters: - algo.lr: - values: [7.3e-4, 3.0e-4, 1.0e-4] - algo.buffer_size: - values: [1_000_000, 300_000] + algo.learning_rate: + values: [3.0e-4, 7.3e-4, 1.0e-4] + algo.batch_size: + values: [256, 1024] algo.gamma: values: [0.99, 0.98] algo.tau: - values: [0.02, 0.01] + values: [0.005, 0.02] seed: values: [1, 2, 3] From e3d3761bc882235976ea9697faa737827de7ed14 Mon Sep 17 00:00:00 2001 From: armandpl Date: Tue, 30 Jan 2024 16:06:14 +0100 Subject: [PATCH 22/33] use progressbar --- scripts/configs/train.yaml | 4 ++-- scripts/train.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/configs/train.yaml b/scripts/configs/train.yaml index 1b4d3ce..27a5fd1 100644 --- a/scripts/configs/train.yaml +++ b/scripts/configs/train.yaml @@ -21,7 +21,7 @@ seed: 1 cudnn_deterministic: True # plumbing/misc -debug: True +debug: False capture_video: True wandb: entity: null @@ -32,5 +32,5 @@ replay_buffer_artifact: null model_artifact: null # logging -save_model: True +save_model: False save_replay_buffer: False diff --git a/scripts/train.py b/scripts/train.py index 25f4ba4..66eb3f0 100644 --- a/scripts/train.py +++ b/scripts/train.py @@ -103,7 +103,7 @@ def main(cfg: DictConfig): try: logging.info("Starting to train") - model.learn(total_timesteps=cfg.total_timesteps, callback=eval_callback) + model.learn(total_timesteps=cfg.total_timesteps, callback=eval_callback, progress_bar=True) except KeyboardInterrupt: logging.info("Interupting training") From 2186f79e8501c360e8473c0ac63b7194b8b22c90 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 15:51:32 +0100 Subject: [PATCH 23/33] add option to use either sbx or sbx tqc --- furuta/rl/algos.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/furuta/rl/algos.py b/furuta/rl/algos.py index 52f0d7f..811ca08 100644 --- a/furuta/rl/algos.py +++ b/furuta/rl/algos.py @@ -21,3 +21,7 @@ class SAC(BaseAlgoWrapper, stable_baselines3.SAC): class TQC(BaseAlgoWrapper, sb3_contrib.TQC): pass + + +class SBXTQC(BaseAlgoWrapper, sbx.TQC): + pass From df268043cb37678f3866cd7e8b6707cb76f7837b Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 15:52:41 +0100 Subject: [PATCH 24/33] add new reward taking theta into account --- furuta/rl/envs/furuta_base.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index a86be6f..c634a27 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -7,6 +7,18 @@ from furuta.utils import ALPHA, ALPHA_DOT, THETA, THETA_DOT, Timing +def exp_alpha_theta_reward(state): + exp = 2 + al = np.mod(state[ALPHA], 2 * np.pi) - np.pi # between -pi and pi + al_rew = np.abs(al) / np.pi # 0 at 0, 1 at pi + al_rew = 2 * al_rew - 1 # -1 at 0, 1 at pi + al_rew = -np.sign(al_rew) * np.exp(np.abs(al_rew) * exp) / np.exp(exp) + # we need the rew to be negative so that the agent doesn't learn to stay still + # to get the theta reward only + + return al_rew + np.cos(state[THETA]) / 2 + + def exp_alpha_reward(state): return np.exp(alpha_reward(state) * 4) / np.exp(4) @@ -22,6 +34,7 @@ def alpha_theta_reward(state): REWARDS = { "alpha": alpha_reward, "exp_alpha": exp_alpha_reward, + "exp_alpha_theta": exp_alpha_theta_reward, "alpha_theta": alpha_theta_reward, } From f679592f9be7eb8f2104e436b8e933858a97dd83 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 15:54:45 +0100 Subject: [PATCH 25/33] remove unused code --- scripts/robot_inference.py | 160 ------------------- scripts/train_sac.py | 320 ------------------------------------- 2 files changed, 480 deletions(-) delete mode 100644 scripts/robot_inference.py delete mode 100644 scripts/train_sac.py diff --git a/scripts/robot_inference.py b/scripts/robot_inference.py deleted file mode 100644 index b127102..0000000 --- a/scripts/robot_inference.py +++ /dev/null @@ -1,160 +0,0 @@ -import argparse -import logging -import os -from collections import namedtuple -from distutils.util import strtobool - -import gym -import wandb -from gym.wrappers import TimeLimit -from stable_baselines3 import SAC -from stable_baselines3.common.monitor import Monitor - -import furuta # noqa F420 -from furuta.envs.wrappers import ControlFrequency, GentlyTerminating, HistoryWrapper - - -class Robot: - def __init__(self, args): - self.args = args - self.load_model() - self.create_env() - - def load_model(self): - print(f"loading model from Artifacts, version {args.model_artifact}") - artifact = wandb.use_artifact(f"sac_model:{args.model_artifact}") - artifact_dir = artifact.download() - self.model = SAC.load(os.path.join(artifact_dir, "sac.zip")) - self.model_producer_run = artifact.logged_by() - - def create_env(self): - # update producer run config with CLI args if they are not None - for attr, value in self.args.items(): - if value: - self.model_producer_run.config[attr] = value - - # convert dict into object - config = dict2obj(self.model_producer_run.config) - wandb.summary["env_config"] = config - self.env = setup_env(config) - - def run_episode(self): - print("Episode starts") - total_reward = 0 - obs = self.env.reset() - while True: - action, _states = self.model.predict(obs, deterministic=self.args.deterministic) - obs, reward, done, info = self.env.step(action) - total_reward += reward - if done: - obs = self.env.reset() - break - return total_reward - - -def dict2obj(d): - return namedtuple("d", d.keys())(*d.values()) - - -def main(args): - run = wandb.init( - project=args.wandb_project, - entity=args.wandb_entity, - config=vars(args), - sync_tensorboard=True, - save_code=True, - job_type="inference", - ) - - robot = Robot(run.config) - - try: - while True: - rwd = robot.run_episode() - print(f"Episode Reward: {rwd}") - input("Press enter to run episode\n") - except KeyboardInterrupt: - robot.env.close() - run.finish() - - -def setup_env(args): - # base env - env = gym.make( - args.gym_id, - fs=args.fs, - fs_ctrl=args.fs_ctrl, - action_limiter=args.action_limiter, - safety_th_lim=args.safety_th_lim, - state_limits=args.state_limits, - ) - - wandb.run.summary["state_max"] = env.state_max - - if args.episode_length != -1: - env = TimeLimit(env, args.episode_length) - - if args.history > 1: - env = HistoryWrapper(env, args.history, args.continuity_cost) - - env = Monitor(env) - - # if robot - if args.gym_id == "FurutaReal-v0": - env = GentlyTerminating(env) - env = ControlFrequency(env, env.timing.dt_ctrl) - - return env - - -def parse_args(): - parser = argparse.ArgumentParser(description="TD3 agent") - # Common arguments - parser.add_argument( - "model_artifact", type=str, help="the artifact version of the model to load" - ) - - parser.add_argument( - "--deterministic", - default=True, - type=lambda x: bool(strtobool(x)), - help="Whether to use a deterministic policy or not", - ) - parser.add_argument( - "--gym_id", type=str, default="FurutaReal-v0", help="the id of the gym environment" - ) - parser.add_argument( - "--wandb_project", type=str, default="furuta", help="the wandb's project name" - ) - parser.add_argument( - "--wandb_entity", type=str, default=None, help="the entity (team) of wandb's project" - ) - parser.add_argument("-d", "--debug", action="store_true") - - # env params - parser.add_argument("--fs", type=int, help="Sampling frequency") - parser.add_argument("--fs_ctrl", type=int, help="control frequency") - parser.add_argument( - "--episode_length", - type=int, - help="the maximum length of each episode. \ - -1 = infinite", - ) - parser.add_argument("--safety_th_lim", type=float, help="Max motor (theta) angle in rad.") - parser.add_argument( - "--action_limiter", type=lambda x: bool(strtobool(x)), help="Restrict actions" - ) - parser.add_argument( - "--state_limits", type=str, help="Wether to use high or low limits. See code." - ) - - args = parser.parse_args() - - return args - - -if __name__ == "__main__": - args = parse_args() - logging_level = logging.DEBUG if args.debug else logging.INFO - logging.basicConfig(format="%(levelname)s: %(message)s", level=logging_level) - main(args) diff --git a/scripts/train_sac.py b/scripts/train_sac.py deleted file mode 100644 index 13ae9e5..0000000 --- a/scripts/train_sac.py +++ /dev/null @@ -1,320 +0,0 @@ -import argparse -import configparser -import logging -import os -from distutils.util import strtobool -from pathlib import Path - -import gym -import wandb -from gym.wrappers import TimeLimit -from stable_baselines3 import SAC -from stable_baselines3.common.monitor import Monitor -from stable_baselines3.common.vec_env import DummyVecEnv, VecVideoRecorder - -import furuta # noqa F420 -from furuta.rl.wrappers import ( - ControlFrequency, - GentlyTerminating, - HistoryWrapper, - MCAPLogger, -) - - -def main(args): - run = wandb.init( - project=args.wandb_project, - entity=args.wandb_entity, - config=args, - sync_tensorboard=True, - monitor_gym=args.capture_video, - save_code=True, - ) - args = run.config - - env = setup_env(args) - - verbose = 2 if args.debug else 0 - - model = SAC( - "MlpPolicy", - env, - verbose=verbose, - learning_rate=args.learning_rate, - seed=args.seed, - buffer_size=args.buffer_size, - tau=args.tau, - gamma=args.gamma, - batch_size=args.batch_size, - target_update_interval=args.target_update_interval, - learning_starts=args.learning_starts, - use_sde=args.use_sde, - use_sde_at_warmup=args.use_sde_at_warmup, - sde_sample_freq=args.sde_sample_freq, - train_freq=(args.train_freq, args.train_freq_unit), - gradient_steps=args.gradient_steps, - tensorboard_log=f"runs/{run.id}", - ) - - # TODO seed everything - - if args.model_artifact: - model.load(download_artifact_file(f"sac_model:{args.model_artifact}", "sac.zip")) - - if args.rb_artifact: - rb_path = download_artifact_file(f"sac_replay_buffer:{args.model_artifact}", "buffer.pkl") - model.load_replay_buffer(rb_path) - - try: - logging.info("Starting to train") - model.learn(total_timesteps=args.total_timesteps) - except KeyboardInterrupt: - logging.info("Interupting training") - - model_path = f"runs/{run.id}/models/sac.zip" - model.save(model_path) - upload_file_to_artifacts(model_path, "sac_model", "model") - - buffer_path = f"runs/{run.id}/buffers/buffer.pkl" - model.save_replay_buffer(buffer_path) - upload_file_to_artifacts(buffer_path, "sac_replay_buffer", "replay buffer") - - env.close() - run.finish() - - -def setup_env(args): - # base env - env = gym.make( - args.gym_id, - fs=args.fs, - action_limiter=args.action_limiter, - safety_th_lim=args.safety_th_lim, - state_limits=args.state_limits, - ) - - wandb.run.summary["state_max"] = env.state_max - - # load custom sim params - if args.gym_id == "FurutaSim-v0" and args.custom_sim: - load_sim_params(env, args.custom_sim) - logging.info(f"Loaded sim params: \n{env.dyn.params}") - wandb.run.summary["sim_params"] = env.dyn.params - - if args.log_mcap: - env = MCAPLogger( - env, f"../data/{wandb.run.id}", use_sim_time=(args.gym_id == "FurutaSim-v0") - ) - - if args.episode_length != -1: - env = TimeLimit(env, args.episode_length) - - if args.history > 1: - env = HistoryWrapper(env, args.history, args.continuity_cost) - - env = Monitor(env) - - if args.gym_id == "FurutaReal-v0": # if robot - env = GentlyTerminating(env) - env = ControlFrequency(env, env.timing.dt_ctrl) - - if args.capture_video: - # TODO add headleas arg, depends on the machine - # import pyvirtualdisplay - # pyvirtualdisplay.Display(visible=0, size=(1400, 900)).start() - env = DummyVecEnv([lambda: env]) - env = VecVideoRecorder( - env, - f"videos/{wandb.run.id}", - record_video_trigger=lambda x: x % 3000 == 0, - video_length=300, - ) - - return env - - -def download_artifact_file(artifact_alias, filename): - """Download artifact and returns path to filename. - - :param artifact_name: wandb artifact alias - :param filename: filename in the artifact - """ - logging.info(f"loading {filename} from {artifact_alias}") - - artifact = wandb.use_artifact(artifact_alias) - artifact_dir = Path(artifact.download()) - filepath = artifact_dir / filename - - assert filepath.is_file(), f"{artifact_alias} doesn't contain {filename}" - - return filepath - - -def upload_file_to_artifacts(pth, artifact_name, artifact_type): - logging.info(f"Saving {pth} to {artifact_name}") - if not isinstance(pth, Path): - pth = Path(pth) - - assert os.path.isfile(pth), f"{pth} is not a file" - - artifact = wandb.Artifact(artifact_name, type=artifact_type) - artifact.add_file(pth) - wandb.log_artifact(artifact) - - -def load_sim_params(env, param_pth): - config = configparser.ConfigParser(param_pth) - config = config["DEFAULT"] - - # convert from str to float - params = {k: float(v) for k, v in config.items()} - env.dyn.params = params - - -def parse_args(): - parser = argparse.ArgumentParser(description="TD3 agent") - # Common arguments - parser.add_argument( - "--gym_id", type=str, default="FurutaSim-v0", help="the id of the gym environment" - ) - parser.add_argument( - "--learning_rate", type=float, default=3e-4, help="the learning rate for the optimizer" - ) - parser.add_argument("--seed", type=int, default=1, help="seed of the experiment") - parser.add_argument( - "--total_timesteps", type=int, default=1000000, help="total timesteps of the experiments" - ) - parser.add_argument( - "--capture_video", - type=lambda x: bool(strtobool(x)), - default=False, - help="capture videos of the agent\ - (check out `videos` folder)", - ) # TODO make that an an int n and if = 0 then no video - # else it captures every n steps - parser.add_argument( - "--log_mcap", type=lambda x: bool(strtobool(x)), default=False, help="log mcap data" - ) - parser.add_argument( - "--wandb_project", type=str, default="furuta", help="the wandb's project name" - ) - parser.add_argument( - "--wandb_entity", type=str, default=None, help="the entity (team) of wandb's project" - ) - parser.add_argument("-d", "--debug", action="store_true") - - # Algorithm specific arguments - parser.add_argument( - "--buffer_size", type=int, default=int(1e6), help="the replay memory buffer size" - ) - parser.add_argument("--tau", type=float, default=0.005, help="target smoothing coefficient.") - parser.add_argument("--gamma", type=float, default=0.99, help="target smoothing coefficient.") - parser.add_argument( - "--batch_size", - type=int, - default=256, - help="the batch size of sample from the replay memory", - ) - parser.add_argument( - "--target_update_interval", - type=int, - default=1, - help="the frequency of training policy (delayed)", - ) - parser.add_argument("--learning_starts", type=int, default=25e3, help="when to start learning") - parser.add_argument( - "--sde_sample_freq", - type=int, - default=-1, - help="Sample a new noise matrix every n steps when using gSDE \ - Default: -1 \ - (only sample at the beginning of the rollout)", - ) - parser.add_argument( - "--use_sde", - type=lambda x: bool(strtobool(x)), - default=True, - help="Whether to use generalized State Dependent Exploration (gSDE) \ - instead of action noise exploration", - ) - parser.add_argument( - "--use_sde_at_warmup", - type=lambda x: bool(strtobool(x)), - default=True, - help="Whether to use gSDE instead of uniform sampling during the warm up \ - phase (before learning starts)", - ) - - # params to accomodate embedded system - parser.add_argument( - "--model_artifact", - type=str, - default=None, - help="the artifact version of the model to load", - ) - parser.add_argument( - "--rb_artifact", - type=str, - default=None, - help="Artifact version of the replay buffer to load", - ) - parser.add_argument( - "--train_freq", type=int, default=1, help="The frequency of training critics/q functions" - ) - parser.add_argument( - "--train_freq_unit", type=str, default="episode", help="The frequency unit" - ) - parser.add_argument( - "--gradient_steps", type=int, default=-1, help="How many training iterations." - ) - - # env params - parser.add_argument("--fs", type=int, default=100, help="Sampling frequency") - parser.add_argument( - "--episode_length", - type=int, - default=3000, - help="the maximum length of each episode. \ - -1 = infinite", - ) - parser.add_argument( - "--safety_th_lim", type=float, default=1.5, help="Max motor (theta) angle in rad." - ) - parser.add_argument( - "--action_limiter", - type=lambda x: bool(strtobool(x)), - default=False, - help="Restrict actions", - ) - parser.add_argument( - "--state_limits", - type=str, - default="low", - help="Wether to use high or low limits. See code.", - ) - parser.add_argument( - "--continuity_cost", - type=lambda x: bool(strtobool(x)), - default=False, - help="If true use continuity cost from HistoryWrapper", - ) - parser.add_argument("--history", type=int, default=1, help="If >1 use HistoryWrapper") - parser.add_argument( - "--custom_sim", type=str, default=None, help="Use params from the provided file." - ) - - args = parser.parse_args() - - if args.history < 2 and args.continuity_cost: - logging.error("Can't use continuity cost if history < 2") - quit() - - return args - - -if __name__ == "__main__": - args = parse_args() - - logging_level = logging.DEBUG if args.debug else logging.INFO - logging.basicConfig(format="%(levelname)s: %(message)s", level=logging_level) - main(args) From 722456ee351a22b83c87073a6475547a51ed5551 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 15:55:56 +0100 Subject: [PATCH 26/33] make progressbar a param --- scripts/configs/train.yaml | 1 + scripts/train.py | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/scripts/configs/train.yaml b/scripts/configs/train.yaml index 27a5fd1..ac12c19 100644 --- a/scripts/configs/train.yaml +++ b/scripts/configs/train.yaml @@ -7,6 +7,7 @@ defaults: - algo: sac.yaml total_timesteps: 500_000 +progress_bar: True n_envs: 12 # eval & early stopping diff --git a/scripts/train.py b/scripts/train.py index 66eb3f0..e28ff39 100644 --- a/scripts/train.py +++ b/scripts/train.py @@ -52,11 +52,12 @@ def main(cfg: DictConfig): # don't paralelize if it's the real robot if isinstance(env.unwrapped, FurutaReal): - vec_env = DummyVecEnv([lambda: env]) - if cfg.n_envs > 1: - logging.warning("n_envs > 1 but using real robot, ignoring n_envs") - else: + assert cfg.n_envs == 1, "n_envs > 1 but using real robot" + + if cfg.n_envs > 1: vec_env = SubprocVecEnv([lambda: copy.deepcopy(env) for _ in range(cfg.n_envs)]) + else: + vec_env = DummyVecEnv([lambda: env]) # setup algo/model verbose = 2 if cfg.debug else 0 @@ -103,7 +104,11 @@ def main(cfg: DictConfig): try: logging.info("Starting to train") - model.learn(total_timesteps=cfg.total_timesteps, callback=eval_callback, progress_bar=True) + model.learn( + total_timesteps=cfg.total_timesteps, + callback=eval_callback, + progress_bar=cfg.progress_bar, + ) except KeyboardInterrupt: logging.info("Interupting training") From e7516502f75845647f17738c2787a276657b80bf Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 16:11:15 +0100 Subject: [PATCH 27/33] setup new rew sweep --- furuta/rl/envs/furuta_base.py | 12 +++++++++--- scripts/configs/algo/tqc_real.yaml | 8 +++----- scripts/configs/env/sim.yaml | 4 ++-- scripts/configs/experiment/sim.yaml | 4 ++-- scripts/configs/sweeps/rew.yaml | 2 +- scripts/configs/wrappers/base_wrappers.yaml | 4 +--- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index c634a27..727c4c2 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -19,8 +19,11 @@ def exp_alpha_theta_reward(state): return al_rew + np.cos(state[THETA]) / 2 -def exp_alpha_reward(state): - return np.exp(alpha_reward(state) * 4) / np.exp(4) +def exp_alpha_reward(state, exp=2): + al = np.mod(state[ALPHA], 2 * np.pi) - np.pi # between -pi and pi + al_rew = np.abs(al) / np.pi # 0 at 0, 1 at pi + al_rew = -np.sign(al_rew) * np.exp(np.abs(al_rew) * exp) / np.exp(exp) + return al_rew def alpha_reward(state): @@ -33,7 +36,10 @@ def alpha_theta_reward(state): REWARDS = { "alpha": alpha_reward, - "exp_alpha": exp_alpha_reward, + "exp_alpha_0": lambda x: exp_alpha_reward(x, exp=0), + "exp_alpha_1": lambda x: exp_alpha_reward(x, exp=1), + "exp_alpha_2": lambda x: exp_alpha_reward(x, exp=2), + "exp_alpha_4": lambda x: exp_alpha_reward(x, exp=4), "exp_alpha_theta": exp_alpha_theta_reward, "alpha_theta": alpha_theta_reward, } diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml index 7405c6b..911399d 100644 --- a/scripts/configs/algo/tqc_real.yaml +++ b/scripts/configs/algo/tqc_real.yaml @@ -3,15 +3,13 @@ policy: "MlpPolicy" buffer_size: 100_000 batch_size: 256 top_quantiles_to_drop_per_net: 2 -learning_starts: 1000 +learning_starts: 256 gamma: 0.99 tau: 0.005 -learning_rate: 3e-4 +learning_rate: 7.3e-4 use_sde: True use_sde_at_warmup: True sde_sample_freq: 64 train_freq: [1, "episode"] gradient_steps: -1 -# device: "cpu" -# stats_window_size: 10 -# device: "metal" +stats_window_size: 10 diff --git a/scripts/configs/env/sim.yaml b/scripts/configs/env/sim.yaml index 9371eea..7ae3d02 100644 --- a/scripts/configs/env/sim.yaml +++ b/scripts/configs/env/sim.yaml @@ -4,8 +4,8 @@ defaults: _target_: furuta.rl.envs.furuta_sim.FurutaSim control_freq: 50 -reward: "exp_alpha" -angle_limits: [31.4, 12] # can do 5 turns around theta, and 4 around alpha +reward: "exp_alpha_theta" +angle_limits: [null, 12] # can do 5 turns around theta, and 4 around alpha speed_limits: [50, null] encoders_CPRs: null velocity_filter: 2 diff --git a/scripts/configs/experiment/sim.yaml b/scripts/configs/experiment/sim.yaml index 74aaf3d..b64d51b 100644 --- a/scripts/configs/experiment/sim.yaml +++ b/scripts/configs/experiment/sim.yaml @@ -6,6 +6,6 @@ defaults: n_envs: 1 gym_id: "FurutaSim-v0" -total_timesteps: 100_000 +total_timesteps: 75_000 evaluation: - early_stopping_reward_threshold: 400 + early_stopping_reward_threshold: null diff --git a/scripts/configs/sweeps/rew.yaml b/scripts/configs/sweeps/rew.yaml index 04a030d..a9050c6 100644 --- a/scripts/configs/sweeps/rew.yaml +++ b/scripts/configs/sweeps/rew.yaml @@ -2,7 +2,7 @@ program: train.py method: grid parameters: env.reward: - values: ["alpha", "exp_alpha"] + values: ["exp_alpha_0", "exp_alpha_1", "exp_alpha_2", "exp_alpha_4"] seed: values: [1, 2, 3] diff --git a/scripts/configs/wrappers/base_wrappers.yaml b/scripts/configs/wrappers/base_wrappers.yaml index 57e4cc0..747d90d 100644 --- a/scripts/configs/wrappers/base_wrappers.yaml +++ b/scripts/configs/wrappers/base_wrappers.yaml @@ -1,7 +1,5 @@ - _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 400 -# - _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper -# max_steps: 400 + max_episode_steps: 1000 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From 2d762948036d3826d1bca8d92d030510235b29cf Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 18:07:32 +0100 Subject: [PATCH 28/33] fix error in reward --- furuta/rl/envs/furuta_base.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index 727c4c2..4f37bc1 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -22,7 +22,7 @@ def exp_alpha_theta_reward(state): def exp_alpha_reward(state, exp=2): al = np.mod(state[ALPHA], 2 * np.pi) - np.pi # between -pi and pi al_rew = np.abs(al) / np.pi # 0 at 0, 1 at pi - al_rew = -np.sign(al_rew) * np.exp(np.abs(al_rew) * exp) / np.exp(exp) + al_rew = np.exp(al_rew * exp) / np.exp(exp) return al_rew @@ -36,7 +36,6 @@ def alpha_theta_reward(state): REWARDS = { "alpha": alpha_reward, - "exp_alpha_0": lambda x: exp_alpha_reward(x, exp=0), "exp_alpha_1": lambda x: exp_alpha_reward(x, exp=1), "exp_alpha_2": lambda x: exp_alpha_reward(x, exp=2), "exp_alpha_4": lambda x: exp_alpha_reward(x, exp=4), From 5c933d03af3131b2285723173ad2163ad56b1aa2 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 18:09:46 +0100 Subject: [PATCH 29/33] setup real training --- scripts/configs/env/real.yaml | 7 ++++--- scripts/configs/experiment/real.yaml | 6 ++++-- scripts/configs/wrappers/real_wrappers.yaml | 6 +++--- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/scripts/configs/env/real.yaml b/scripts/configs/env/real.yaml index 52e10e2..6a1fa9e 100644 --- a/scripts/configs/env/real.yaml +++ b/scripts/configs/env/real.yaml @@ -1,6 +1,7 @@ _target_: furuta.rl.envs.furuta_real.FurutaReal control_freq: 50 -reward: "alpha" -angle_limits: [31.4, 12] +reward: "exp_alpha_theta" +angle_limits: [null, 12] speed_limits: [50, null] -usb_device: "/dev/ttyACM0" +# usb_device: "/dev/ttyACM0" +usb_device: "/dev/tty.usbmodem2201" diff --git a/scripts/configs/experiment/real.yaml b/scripts/configs/experiment/real.yaml index 0387b04..3a93338 100644 --- a/scripts/configs/experiment/real.yaml +++ b/scripts/configs/experiment/real.yaml @@ -2,9 +2,11 @@ defaults: - override /env: real - override /wrappers: real_wrappers - - override /algo: sac_real + - override /algo: tqc_real -total_timesteps: 150_000 +total_timesteps: 100_000 +progress_bar: False +debug: True n_envs: 1 model_artifact: null capture_video: False diff --git a/scripts/configs/wrappers/real_wrappers.yaml b/scripts/configs/wrappers/real_wrappers.yaml index cf69f70..725a0dc 100644 --- a/scripts/configs/wrappers/real_wrappers.yaml +++ b/scripts/configs/wrappers/real_wrappers.yaml @@ -1,9 +1,9 @@ - _target_: gymnasium.wrappers.TimeLimit - max_episode_steps: 500 -- _target_: sb3_contrib.common.wrappers.time_feature.TimeFeatureWrapper - max_episode_steps: 500 + max_episode_steps: 1000 - _target_: furuta.rl.wrappers.DeadZone deadzone: 0.2 + center: 0.01 + max_act: 0.8 - _target_: furuta.rl.wrappers.HistoryWrapper steps: 2 use_continuity_cost: True From 9759dc820db45217a6eeecc80347fa14a890e43f Mon Sep 17 00:00:00 2001 From: Armandpl Date: Wed, 31 Jan 2024 18:14:34 +0100 Subject: [PATCH 30/33] fix sweep setup --- scripts/configs/algo/tqc_real.yaml | 2 +- scripts/configs/sweeps/rew.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/configs/algo/tqc_real.yaml b/scripts/configs/algo/tqc_real.yaml index 911399d..8fafac3 100644 --- a/scripts/configs/algo/tqc_real.yaml +++ b/scripts/configs/algo/tqc_real.yaml @@ -1,6 +1,6 @@ _target_: furuta.rl.algos.TQC policy: "MlpPolicy" -buffer_size: 100_000 +buffer_size: 75_000 batch_size: 256 top_quantiles_to_drop_per_net: 2 learning_starts: 256 diff --git a/scripts/configs/sweeps/rew.yaml b/scripts/configs/sweeps/rew.yaml index a9050c6..e7818d6 100644 --- a/scripts/configs/sweeps/rew.yaml +++ b/scripts/configs/sweeps/rew.yaml @@ -2,7 +2,7 @@ program: train.py method: grid parameters: env.reward: - values: ["exp_alpha_0", "exp_alpha_1", "exp_alpha_2", "exp_alpha_4"] + values: ["alpha", "exp_alpha_1", "exp_alpha_2", "exp_alpha_4"] seed: values: [1, 2, 3] From 59868509162fc00a31339fa03b76d590c453e872 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 1 Feb 2024 12:47:05 +0100 Subject: [PATCH 31/33] add theta reward --- furuta/rl/envs/furuta_base.py | 36 +++++++++++++++------------------ scripts/configs/sweeps/rew.yaml | 2 +- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/furuta/rl/envs/furuta_base.py b/furuta/rl/envs/furuta_base.py index 4f37bc1..659d681 100644 --- a/furuta/rl/envs/furuta_base.py +++ b/furuta/rl/envs/furuta_base.py @@ -7,40 +7,36 @@ from furuta.utils import ALPHA, ALPHA_DOT, THETA, THETA_DOT, Timing -def exp_alpha_theta_reward(state): - exp = 2 - al = np.mod(state[ALPHA], 2 * np.pi) - np.pi # between -pi and pi - al_rew = np.abs(al) / np.pi # 0 at 0, 1 at pi - al_rew = 2 * al_rew - 1 # -1 at 0, 1 at pi - al_rew = -np.sign(al_rew) * np.exp(np.abs(al_rew) * exp) / np.exp(exp) - # we need the rew to be negative so that the agent doesn't learn to stay still - # to get the theta reward only - - return al_rew + np.cos(state[THETA]) / 2 +def exp_alpha_theta_reward(state, exp=2): + al_rew = exp_alpha_reward(state, exp) + th_rew = theta_reward(state) + return al_rew * th_rew def exp_alpha_reward(state, exp=2): - al = np.mod(state[ALPHA], 2 * np.pi) - np.pi # between -pi and pi + al = np.mod((state[ALPHA] + np.pi), 2 * np.pi) - np.pi # between -pi and pi al_rew = np.abs(al) / np.pi # 0 at 0, 1 at pi - al_rew = np.exp(al_rew * exp) / np.exp(exp) + al_rew = (np.exp(al_rew * exp) - np.exp(0)) / np.exp(exp) return al_rew +def alpha_theta_reward(state): + return alpha_reward(state) * theta_reward(state) + + def alpha_reward(state): return (1 + -np.cos(state[ALPHA])) / 2 -def alpha_theta_reward(state): - return alpha_reward(state) + (1 + np.cos(state[THETA])) / 2 +def theta_reward(state): + return (1 + np.cos(state[THETA])) / 2 REWARDS = { - "alpha": alpha_reward, - "exp_alpha_1": lambda x: exp_alpha_reward(x, exp=1), - "exp_alpha_2": lambda x: exp_alpha_reward(x, exp=2), - "exp_alpha_4": lambda x: exp_alpha_reward(x, exp=4), - "exp_alpha_theta": exp_alpha_theta_reward, - "alpha_theta": alpha_theta_reward, + "cos_alpha": alpha_theta_reward, + "exp_alpha_2": lambda x: exp_alpha_theta_reward(x, exp=2), + "exp_alpha_4": lambda x: exp_alpha_theta_reward(x, exp=4), + "exp_alpha_6": lambda x: exp_alpha_theta_reward(x, exp=6), } diff --git a/scripts/configs/sweeps/rew.yaml b/scripts/configs/sweeps/rew.yaml index e7818d6..abfbdd1 100644 --- a/scripts/configs/sweeps/rew.yaml +++ b/scripts/configs/sweeps/rew.yaml @@ -2,7 +2,7 @@ program: train.py method: grid parameters: env.reward: - values: ["alpha", "exp_alpha_1", "exp_alpha_2", "exp_alpha_4"] + values: ["cos_alpha", "exp_alpha_2", "exp_alpha_4", "exp_alpha_6"] seed: values: [1, 2, 3] From 907029861f2fad6b88ffcef949726fb49259c3e1 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 1 Feb 2024 17:05:01 +0100 Subject: [PATCH 32/33] clear gsde notebook output --- notebooks/2023_01_29_debug_gsde.ipynb | 288 +------------------------- 1 file changed, 8 insertions(+), 280 deletions(-) diff --git a/notebooks/2023_01_29_debug_gsde.ipynb b/notebooks/2023_01_29_debug_gsde.ipynb index 634b554..ea495c7 100644 --- a/notebooks/2023_01_29_debug_gsde.ipynb +++ b/notebooks/2023_01_29_debug_gsde.ipynb @@ -2,85 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using cpu device\n", - "Wrapping the env with a `Monitor` wrapper\n", - "Wrapping the env in a DummyVecEnv.\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 69.2 |\n", - "| ep_rew_mean | 27.7 |\n", - "| time/ | |\n", - "| episodes | 4 |\n", - "| fps | 3298 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 277 |\n", - "| train/ | |\n", - "| std | 0.0498 |\n", - "---------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 73.2 |\n", - "| ep_rew_mean | 29.7 |\n", - "| time/ | |\n", - "| episodes | 8 |\n", - "| fps | 945 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 586 |\n", - "| train/ | |\n", - "| actor_loss | 3.79 |\n", - "| critic_loss | 7.64 |\n", - "| ent_coef | 1.01 |\n", - "| ent_coef_loss | -0.00186 |\n", - "| learning_rate | 0.0003 |\n", - "| n_updates | 85 |\n", - "| std | 0.0497 |\n", - "---------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 76.7 |\n", - "| ep_rew_mean | 25.3 |\n", - "| time/ | |\n", - "| episodes | 12 |\n", - "| fps | 361 |\n", - "| time_elapsed | 2 |\n", - "| total_timesteps | 920 |\n", - "| train/ | |\n", - "| actor_loss | 1.55 |\n", - "| critic_loss | 2.23 |\n", - "| ent_coef | 0.978 |\n", - "| ent_coef_loss | -0.0228 |\n", - "| learning_rate | 0.0003 |\n", - "| n_updates | 419 |\n", - "| std | 0.0497 |\n", - "---------------------------------\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", - " logger.warn(\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from sbx import SAC as SAC_SBX\n", "from stable_baselines3 import SAC as SAC_SB3\n", @@ -110,77 +34,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using cpu device\n", - "Wrapping the env with a `Monitor` wrapper\n", - "Wrapping the env in a DummyVecEnv.\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 85.5 |\n", - "| ep_rew_mean | 10.5 |\n", - "| time/ | |\n", - "| episodes | 4 |\n", - "| fps | 4852 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 342 |\n", - "| train/ | |\n", - "| std | 0.0498 |\n", - "---------------------------------\n", - "----------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 87.6 |\n", - "| ep_rew_mean | 8.03 |\n", - "| time/ | |\n", - "| episodes | 8 |\n", - "| fps | 4869 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 701 |\n", - "| train/ | |\n", - "| actor_loss | 0.541 |\n", - "| critic_loss | 3.09 |\n", - "| ent_coef | 1 |\n", - "| ent_coef_loss | -0.000324 |\n", - "| learning_rate | 0.0003 |\n", - "| n_updates | 2 |\n", - "| std | 0.0498 |\n", - "----------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 87.2 |\n", - "| ep_rew_mean | 10.3 |\n", - "| time/ | |\n", - "| episodes | 12 |\n", - "| fps | 4601 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 1046 |\n", - "| train/ | |\n", - "| actor_loss | -0.0182 |\n", - "| critic_loss | 3.08 |\n", - "| ent_coef | 0.999 |\n", - "| ent_coef_loss | -0.0017 |\n", - "| learning_rate | 0.0003 |\n", - "| n_updates | 6 |\n", - "| std | 0.0498 |\n", - "---------------------------------\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "model = SAC_SB3(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500, train_freq=(1, \"episode\"))\n", "model.learn(total_timesteps=1000, log_interval=4)\n", @@ -190,65 +46,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using cpu device\n", - "Wrapping the env with a `Monitor` wrapper\n", - "Wrapping the env in a DummyVecEnv.\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 100 |\n", - "| ep_rew_mean | 22.7 |\n", - "| time/ | |\n", - "| episodes | 4 |\n", - "| fps | 340 |\n", - "| time_elapsed | 1 |\n", - "| total_timesteps | 400 |\n", - "| train/ | |\n", - "| std | 0 |\n", - "---------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 100 |\n", - "| ep_rew_mean | 26.9 |\n", - "| time/ | |\n", - "| episodes | 8 |\n", - "| fps | 127 |\n", - "| time_elapsed | 6 |\n", - "| total_timesteps | 800 |\n", - "| train/ | |\n", - "| actor_loss | -1.77 |\n", - "| critic_loss | 0.192 |\n", - "| ent_coef | 0.917 |\n", - "| n_updates | 299 |\n", - "| std | 0 |\n", - "---------------------------------\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", - " logger.warn(\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "model = SAC_SBX(\"MlpPolicy\", env, verbose=1, use_sde=True, use_sde_at_warmup=True, learning_starts=500)\n", "model.learn(total_timesteps=1000, log_interval=4)\n", @@ -258,81 +58,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using cpu device\n", - "Wrapping the env with a `Monitor` wrapper\n", - "Wrapping the env in a DummyVecEnv.\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 81.8 |\n", - "| ep_rew_mean | 18 |\n", - "| time/ | |\n", - "| episodes | 4 |\n", - "| fps | 544 |\n", - "| time_elapsed | 0 |\n", - "| total_timesteps | 327 |\n", - "| train/ | |\n", - "| std | 0 |\n", - "---------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 72.8 |\n", - "| ep_rew_mean | 17 |\n", - "| time/ | |\n", - "| episodes | 8 |\n", - "| fps | 223 |\n", - "| time_elapsed | 2 |\n", - "| total_timesteps | 582 |\n", - "| train/ | |\n", - "| actor_loss | 2.76 |\n", - "| critic_loss | 1.85 |\n", - "| ent_coef | 1 |\n", - "| n_updates | 2 |\n", - "| std | 0 |\n", - "---------------------------------\n", - "---------------------------------\n", - "| rollout/ | |\n", - "| ep_len_mean | 72.8 |\n", - "| ep_rew_mean | 19 |\n", - "| time/ | |\n", - "| episodes | 12 |\n", - "| fps | 231 |\n", - "| time_elapsed | 3 |\n", - "| total_timesteps | 873 |\n", - "| train/ | |\n", - "| actor_loss | 3.01 |\n", - "| critic_loss | 1.78 |\n", - "| ent_coef | 1 |\n", - "| n_updates | 6 |\n", - "| std | 0 |\n", - "---------------------------------\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/armandpl/Dev/furuta/.venv/lib/python3.11/site-packages/gymnasium/core.py:311: UserWarning: \u001b[33mWARN: env.plot_act to get variables from other wrappers is deprecated and will be removed in v1.0, to get this variable you can do `env.unwrapped.plot_act` for environment variables or `env.get_wrapper_attr('plot_act')` that will search the reminding wrappers.\u001b[0m\n", - " logger.warn(\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from sbx import TQC\n", "\n", From bcda11d20bab11a767a7c536bf044987c5afdd27 Mon Sep 17 00:00:00 2001 From: Armandpl Date: Thu, 1 Feb 2024 17:10:38 +0100 Subject: [PATCH 33/33] fix default reward key --- furuta/rl/envs/furuta_real.py | 2 +- furuta/rl/envs/furuta_sim.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/furuta/rl/envs/furuta_real.py b/furuta/rl/envs/furuta_real.py index 2d8e149..1d802f1 100644 --- a/furuta/rl/envs/furuta_real.py +++ b/furuta/rl/envs/furuta_real.py @@ -21,7 +21,7 @@ class FurutaReal(FurutaBase): def __init__( self, control_freq=100, - reward="alpha_theta", + reward="cos_alpha", angle_limits=None, speed_limits=None, usb_device="/dev/ttyACM0", diff --git a/furuta/rl/envs/furuta_sim.py b/furuta/rl/envs/furuta_sim.py index 26cc173..3631aaa 100644 --- a/furuta/rl/envs/furuta_sim.py +++ b/furuta/rl/envs/furuta_sim.py @@ -14,7 +14,7 @@ def __init__( self, dyn: QubeDynamics = QubeDynamics(), control_freq=50, - reward="alpha", + reward="cos_alpha", angle_limits=[None, None], speed_limits=[None, None], encoders_CPRs: Optional[List[float]] = None,