v0.5 to main (#10)

* v0.5 (#9)

* update idql configs

* update awr configs

* update dipo configs

* update qsm configs

* update dqm configs

* update project version to 0.5.0
This commit is contained in:
Allen Z. Ren
2024-10-07 16:35:13 -04:00
committed by GitHub
parent dd14c5887c
commit e0842e71dc
267 changed files with 6769 additions and 1645 deletions
@@ -0,0 +1,122 @@
defaults:
- _self_
hydra:
run:
dir: ${logdir}
_target_: agent.finetune.train_calql_agent.TrainCalQLAgent
name: ${env_name}_calql_mlp_ta${horizon_steps}
logdir: ${oc.env:DPPO_LOG_DIR}/robomimic-finetune/${name}/${now:%Y-%m-%d}_${now:%H-%M-%S}_${seed}
base_policy_path:
robomimic_env_cfg_path: cfg/robomimic/env_meta/${env_name}.json
normalization_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/normalization.npz
offline_dataset_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/train.npz
seed: 42
device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
cond_steps: 1
horizon_steps: 1
act_steps: 1
env:
n_envs: 1
name: ${env_name}
best_reward_threshold_for_success: 1
max_episode_steps: 300
reset_at_iteration: False
save_video: False
wrappers:
robomimic_lowdim:
normalization_path: ${normalization_path}
low_dim_keys: ['robot0_eef_pos',
'robot0_eef_quat',
'robot0_gripper_qpos',
'object'] # same order of preprocessed observations
multi_step:
n_obs_steps: ${cond_steps}
n_action_steps: ${act_steps}
max_episode_steps: ${env.max_episode_steps}
reset_within_step: True
wandb:
entity: ${oc.env:DPPO_WANDB_ENTITY}
project: calql-${env_name}
run: ${now:%H-%M-%S}_${name}
train:
n_train_itr: 10000
n_steps: 1 # not used
n_episode_per_epoch: 1
gamma: 0.99
actor_lr: 1e-4
actor_weight_decay: 0
actor_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 1e-4
critic_lr: 3e-4
critic_weight_decay: 0
critic_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 3e-4
save_model_freq: 100
val_freq: 10
render:
freq: 1
num: 0
log_freq: 1
# CalQL specific
train_online: True
batch_size: 256
n_random_actions: 4
target_ema_rate: 0.005
scale_reward_factor: 1.0
num_update: 1000
buffer_size: 1000000
online_utd_ratio: 1
n_eval_episode: 40
n_explore_steps: 0
target_entropy: ${eval:'- ${action_dim} * ${act_steps}'}
init_temperature: 1
automatic_entropy_tuning: True
model:
_target_: model.rl.gaussian_calql.CalQL_Gaussian
randn_clip_value: 3
cql_min_q_weight: 5.0
tanh_output: True
network_path: ${base_policy_path}
actor:
_target_: model.common.mlp_gaussian.Gaussian_MLP
mlp_dims: [512, 512, 512]
activation_type: ReLU
tanh_output: False # squash after sampling instead
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
std_max: 7.3891
std_min: 0.0067
critic:
_target_: model.common.critic.CriticObsAct
mlp_dims: [256, 256, 256]
activation_type: ReLU
use_layernorm: True
double_q: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
action_dim: ${action_dim}
action_steps: ${act_steps}
horizon_steps: ${horizon_steps}
device: ${device}
offline_dataset:
_target_: agent.dataset.sequence.StitchedSequenceQLearningDataset
dataset_path: ${offline_dataset_path}
horizon_steps: ${horizon_steps}
cond_steps: ${cond_steps}
device: ${device}
discount_factor: ${train.gamma}
get_mc_return: True
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -73,7 +72,7 @@ train:
max_adv_weight: 100
beta: 10
buffer_size: 3000
batch_size: 256
batch_size: 1000
replay_ratio: 64
critic_update_ratio: 4
@@ -91,7 +90,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -70,11 +69,12 @@ train:
num: 0
# DIPO specific
scale_reward_factor: 1
eta: 0.0001
target_ema_rate: 0.005
buffer_size: 1000000
action_lr: 0.0001
action_gradient_steps: 10
buffer_size: 400000
batch_size: 5000
replay_ratio: 64
replay_ratio: 16
batch_size: 1000
model:
_target_: model.diffusion.diffusion_dipo.DIPODiffusion
@@ -90,7 +90,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObsAct
action_dim: ${action_dim}
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -48,7 +47,7 @@ wandb:
train:
n_train_itr: 300
n_critic_warmup_itr: 2
n_critic_warmup_itr: 5
n_steps: 300
gamma: 0.999
actor_lr: 1e-5
@@ -70,10 +69,11 @@ train:
num: 0
# DQL specific
scale_reward_factor: 1
target_ema_rate: 0.005
buffer_size: 1000000
eta: 1.0
buffer_size: 400000
batch_size: 5000
replay_ratio: 64
replay_ratio: 16
batch_size: 1000
model:
_target_: model.diffusion.diffusion_dql.DQLDiffusion
@@ -89,7 +89,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObsAct
action_dim: ${action_dim}
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -74,9 +73,9 @@ train:
eval_sample_num: 10 # how many samples to score during eval
critic_tau: 0.001 # rate of target q network update
use_expectile_exploration: True
buffer_size: 3000
batch_size: 512
replay_ratio: 16
buffer_size: 5000 # * n_envs
replay_ratio: 128
batch_size: 1000
model:
_target_: model.diffusion.diffusion_idql.IDQLDiffusion
@@ -92,7 +91,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic_q:
_target_: model.common.critic.CriticObsAct
action_dim: ${action_dim}
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
ft_denoising_steps: 10
cond_steps: 1
@@ -97,7 +96,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 9
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 100
ft_denoising_steps: 5
cond_steps: 1
@@ -140,7 +139,7 @@ model:
img_cond_steps: ${img_cond_steps}
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.ViTCritic
spatial_emb: 128
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
ft_denoising_steps: 10
cond_steps: 1
@@ -100,7 +99,7 @@ model:
smaller_encoder: False
cond_predict_scale: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
ft_denoising_steps: 10
cond_steps: 1
@@ -92,7 +91,6 @@ model:
sde_min_beta: 1e-10
sde_probability_flow: True
#
gamma_denoising: 0.99
clip_ploss_coef: 0.01
min_sampling_denoising_std: 0.1
min_logprob_denoising_std: 0.1
@@ -105,7 +103,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
cond_steps: 1
horizon_steps: 4
act_steps: 4
@@ -91,7 +90,7 @@ model:
std_max: 0.2
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 9
action_dim: 7
transition_dim: ${action_dim}
cond_steps: 1
img_cond_steps: 1
horizon_steps: 4
@@ -122,7 +121,7 @@ model:
img_cond_steps: ${img_cond_steps}
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.ViTCritic
spatial_emb: 128
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
cond_steps: 1
horizon_steps: 4
act_steps: 4
@@ -92,7 +91,7 @@ model:
std_max: 0.2
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
cond_steps: 1
horizon_steps: 4
act_steps: 4
@@ -92,7 +91,7 @@ model:
num_modes: ${num_modes}
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
cond_steps: 1
horizon_steps: 4
act_steps: 4
@@ -93,7 +92,7 @@ model:
num_modes: ${num_modes}
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObs
mlp_dims: [256, 256, 256]
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -70,11 +69,11 @@ train:
num: 0
# QSM specific
scale_reward_factor: 1
q_grad_coeff: 50
q_grad_coeff: 10
critic_tau: 0.005 # rate of target q network update
buffer_size: 3000
batch_size: 256
replay_ratio: 32
buffer_size: 5000 # * n_envs
replay_ratio: 16
batch_size: 1000
model:
_target_: model.diffusion.diffusion_qsm.QSMDiffusion
@@ -90,7 +89,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
critic:
_target_: model.common.critic.CriticObsAct
action_dim: ${action_dim}
@@ -16,7 +16,6 @@ device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
transition_dim: ${action_dim}
denoising_steps: 20
cond_steps: 1
horizon_steps: 4
@@ -82,7 +81,7 @@ model:
residual_style: True
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
transition_dim: ${transition_dim}
action_dim: ${action_dim}
horizon_steps: ${horizon_steps}
obs_dim: ${obs_dim}
action_dim: ${action_dim}
+115
View File
@@ -0,0 +1,115 @@
defaults:
- _self_
hydra:
run:
dir: ${logdir}
_target_: agent.finetune.train_ibrl_agent.TrainIBRLAgent
name: ${env_name}_ibrl_mlp_ta${horizon_steps}
logdir: ${oc.env:DPPO_LOG_DIR}/robomimic-finetune/${name}/${now:%Y-%m-%d}_${now:%H-%M-%S}_${seed}
base_policy_path:
robomimic_env_cfg_path: cfg/robomimic/env_meta/${env_name}.json
normalization_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/normalization.npz
offline_dataset_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/train.npz
seed: 42
device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
cond_steps: 1
horizon_steps: 1
act_steps: 1
env:
n_envs: 1
name: ${env_name}
max_episode_steps: 250 # IBRL uses 200
reset_at_iteration: False
save_video: False
best_reward_threshold_for_success: 1
wrappers:
robomimic_lowdim:
normalization_path: ${normalization_path}
low_dim_keys: ['robot0_eef_pos',
'robot0_eef_quat',
'robot0_gripper_qpos',
'object'] # same order of preprocessed observations
multi_step:
n_obs_steps: ${cond_steps}
n_action_steps: ${act_steps}
max_episode_steps: ${env.max_episode_steps}
reset_within_step: True
wandb:
entity: ${oc.env:DPPO_WANDB_ENTITY}
project: ibrl-${env_name}
run: ${now:%H-%M-%S}_${name}
train:
n_train_itr: 1000000
n_steps: 1
gamma: 0.99
actor_lr: 1e-4
actor_weight_decay: 0
actor_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 1e-4
critic_lr: 1e-4
critic_weight_decay: 0
critic_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 1e-4
save_model_freq: 100000
val_freq: 10000
render:
freq: 10000
num: 0
log_freq: 200
# IBRL specific
batch_size: 256
target_ema_rate: 0.01
scale_reward_factor: 1
critic_num_update: 3
buffer_size: 400000
n_eval_episode: 40
n_explore_steps: 0
update_freq: 2
model:
_target_: model.rl.gaussian_ibrl.IBRL_Gaussian
randn_clip_value: 3
n_critics: 5
soft_action_sample: True
soft_action_sample_beta: 10
network_path: ${base_policy_path}
actor:
_target_: model.common.mlp_gaussian.Gaussian_MLP
mlp_dims: [1024, 1024, 1024]
activation_type: ReLU
dropout: 0.5
fixed_std: 0.1
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
critic:
_target_: model.common.critic.CriticObsAct
mlp_dims: [1024, 1024, 1024]
activation_type: ReLU
use_layernorm: True
double_q: False # use ensemble
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
action_dim: ${action_dim}
action_steps: ${act_steps}
horizon_steps: ${horizon_steps}
device: ${device}
offline_dataset:
_target_: agent.dataset.sequence.StitchedSequenceQLearningDataset
dataset_path: ${offline_dataset_path}
horizon_steps: ${horizon_steps}
cond_steps: ${cond_steps}
device: ${device}
max_n_episodes: 100
+114
View File
@@ -0,0 +1,114 @@
defaults:
- _self_
hydra:
run:
dir: ${logdir}
_target_: agent.finetune.train_rlpd_agent.TrainRLPDAgent
name: ${env_name}_rlpd_mlp_ta${horizon_steps}
logdir: ${oc.env:DPPO_LOG_DIR}/robomimic-finetune/${name}/${now:%Y-%m-%d}_${now:%H-%M-%S}_${seed}
robomimic_env_cfg_path: cfg/robomimic/env_meta/${env_name}.json
normalization_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/normalization.npz
offline_dataset_path: ${oc.env:DPPO_DATA_DIR}/robomimic/${env_name}/train.npz
seed: 42
device: cuda:0
env_name: can
obs_dim: 23
action_dim: 7
cond_steps: 1
horizon_steps: 1
act_steps: 1
env:
n_envs: 1
name: ${env_name}
max_episode_steps: 300
reset_at_iteration: False
save_video: False
best_reward_threshold_for_success: 1
wrappers:
robomimic_lowdim:
normalization_path: ${normalization_path}
low_dim_keys: ['robot0_eef_pos',
'robot0_eef_quat',
'robot0_gripper_qpos',
'object'] # same order of preprocessed observations
multi_step:
n_obs_steps: ${cond_steps}
n_action_steps: ${act_steps}
max_episode_steps: ${env.max_episode_steps}
reset_within_step: True
wandb:
entity: ${oc.env:DPPO_WANDB_ENTITY}
project: rlpd-${env_name}
run: ${now:%H-%M-%S}_${name}
train:
n_train_itr: 1000000
n_steps: 1
gamma: 0.99
actor_lr: 1e-4
actor_weight_decay: 0
actor_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 1e-4
critic_lr: 1e-4
critic_weight_decay: 0
critic_lr_scheduler:
first_cycle_steps: 1000
warmup_steps: 10
min_lr: 1e-4
save_model_freq: 100000
val_freq: 10000
render:
freq: 10000
num: 0
log_freq: 200
# RLPD specific
batch_size: 256
target_ema_rate: 0.01
scale_reward_factor: 1
critic_num_update: 3
buffer_size: 400000
n_eval_episode: 40
n_explore_steps: 0
target_entropy: ${eval:'- ${action_dim} * ${act_steps}'}
init_temperature: 1
model:
_target_: model.rl.gaussian_rlpd.RLPD_Gaussian
randn_clip_value: 10
backup_entropy: True
n_critics: 5
tanh_output: True
actor:
_target_: model.common.mlp_gaussian.Gaussian_MLP
mlp_dims: [512, 512, 512]
activation_type: ReLU
tanh_output: False # squash after sampling instead
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
horizon_steps: ${horizon_steps}
std_max: 7.3891
std_min: 0.0067
critic:
_target_: model.common.critic.CriticObsAct
mlp_dims: [256, 256, 256]
activation_type: ReLU
use_layernorm: True
double_q: False # use ensemble
cond_dim: ${eval:'${obs_dim} * ${cond_steps}'}
action_dim: ${action_dim}
action_steps: ${act_steps}
horizon_steps: ${horizon_steps}
device: ${device}
offline_dataset:
_target_: agent.dataset.sequence.StitchedSequenceQLearningDataset
dataset_path: ${offline_dataset_path}
horizon_steps: ${horizon_steps}
cond_steps: ${cond_steps}
device: ${device}