qgallouedec HF staff commited on
Commit
21abd79
1 Parent(s): 0cb6670

Upload . with huggingface_hub

Browse files
.gitattributes CHANGED
@@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ replay.mp4 filter=lfs diff=lfs merge=lfs -text
.summary/0/events.out.tfevents.1678544028.qgallouedec-MS-7C84 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:72daab09d369100793f8ed65f3e5d014baa59a347fe88129c849dc254ac5f8b8
3
+ size 4494124
README.md ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: sample-factory
3
+ tags:
4
+ - deep-reinforcement-learning
5
+ - reinforcement-learning
6
+ - sample-factory
7
+ model-index:
8
+ - name: APPO
9
+ results:
10
+ - task:
11
+ type: reinforcement-learning
12
+ name: reinforcement-learning
13
+ dataset:
14
+ name: stick-pull-v2
15
+ type: stick-pull-v2
16
+ metrics:
17
+ - type: mean_reward
18
+ value: 55.63 +/- 118.71
19
+ name: mean_reward
20
+ verified: false
21
+ ---
22
+
23
+ A(n) **APPO** model trained on the **stick-pull-v2** environment.
24
+
25
+ This model was trained using Sample-Factory 2.0: https://github.com/alex-petrenko/sample-factory.
26
+ Documentation for how to use Sample-Factory can be found at https://www.samplefactory.dev/
27
+
28
+
29
+ ## Downloading the model
30
+
31
+ After installing Sample-Factory, download the model with:
32
+ ```
33
+ python -m sample_factory.huggingface.load_from_hub -r qgallouedec/sample-factory-stick-pull-v2
34
+ ```
35
+
36
+
37
+ ## Using the model
38
+
39
+ To run the model after download, use the `enjoy` script corresponding to this environment:
40
+ ```
41
+ python -m enjoy --algo=APPO --env=stick-pull-v2 --train_dir=./train_dir --experiment=sample-factory-stick-pull-v2
42
+ ```
43
+
44
+
45
+ You can also upload models to the Hugging Face Hub using the same script with the `--push_to_hub` flag.
46
+ See https://www.samplefactory.dev/10-huggingface/huggingface/ for more details
47
+
48
+ ## Training with this model
49
+
50
+ To continue training with this model, use the `train` script corresponding to this environment:
51
+ ```
52
+ python -m train --algo=APPO --env=stick-pull-v2 --train_dir=./train_dir --experiment=sample-factory-stick-pull-v2 --restart_behavior=resume --train_for_env_steps=10000000000
53
+ ```
54
+
55
+ Note, you may have to adjust `--train_for_env_steps` to a suitably high number as the experiment will resume at the number of steps it concluded at.
56
+
checkpoint_p0/best_000035992_18427904_reward_96.670.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:97b7fe47e87bb203bc751ac344388c7559bfc5c86254bc8f1094d181da9aa3e8
3
+ size 98239
checkpoint_p0/checkpoint_000195096_99889152.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d88ff88a83ac06fa42ef40e29713d48cdf663021e99fe025806ddcdea05992fb
3
+ size 98567
checkpoint_p0/checkpoint_000195328_100007936.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e81e33041dedc191f09e8e404a725b0de4b019a81c94a3a1192061af1cc67fab
3
+ size 98567
config.json ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "help": false,
3
+ "algo": "APPO",
4
+ "env": "stick-pull-v2",
5
+ "experiment": "stick-pull-v2",
6
+ "train_dir": "/home/qgallouedec/gia/data/envs/metaworld/train_dir",
7
+ "restart_behavior": "restart",
8
+ "device": "cpu",
9
+ "seed": null,
10
+ "num_policies": 1,
11
+ "async_rl": false,
12
+ "serial_mode": false,
13
+ "batched_sampling": false,
14
+ "num_batches_to_accumulate": 2,
15
+ "worker_num_splits": 2,
16
+ "policy_workers_per_policy": 1,
17
+ "max_policy_lag": 1000,
18
+ "num_workers": 8,
19
+ "num_envs_per_worker": 8,
20
+ "batch_size": 1024,
21
+ "num_batches_per_epoch": 4,
22
+ "num_epochs": 2,
23
+ "rollout": 64,
24
+ "recurrence": 1,
25
+ "shuffle_minibatches": false,
26
+ "gamma": 0.99,
27
+ "reward_scale": 0.1,
28
+ "reward_clip": 1000.0,
29
+ "value_bootstrap": true,
30
+ "normalize_returns": true,
31
+ "exploration_loss_coeff": 0.0,
32
+ "value_loss_coeff": 1.3,
33
+ "kl_loss_coeff": 0.1,
34
+ "exploration_loss": "entropy",
35
+ "gae_lambda": 0.95,
36
+ "ppo_clip_ratio": 0.2,
37
+ "ppo_clip_value": 1.0,
38
+ "with_vtrace": false,
39
+ "vtrace_rho": 1.0,
40
+ "vtrace_c": 1.0,
41
+ "optimizer": "adam",
42
+ "adam_eps": 1e-06,
43
+ "adam_beta1": 0.9,
44
+ "adam_beta2": 0.999,
45
+ "max_grad_norm": 3.5,
46
+ "learning_rate": 0.00295,
47
+ "lr_schedule": "linear_decay",
48
+ "lr_schedule_kl_threshold": 0.008,
49
+ "lr_adaptive_min": 1e-06,
50
+ "lr_adaptive_max": 0.01,
51
+ "obs_subtract_mean": 0.0,
52
+ "obs_scale": 1.0,
53
+ "normalize_input": true,
54
+ "normalize_input_keys": null,
55
+ "decorrelate_experience_max_seconds": 0,
56
+ "decorrelate_envs_on_one_worker": true,
57
+ "actor_worker_gpus": [],
58
+ "set_workers_cpu_affinity": true,
59
+ "force_envs_single_thread": false,
60
+ "default_niceness": 0,
61
+ "log_to_file": true,
62
+ "experiment_summaries_interval": 3,
63
+ "flush_summaries_interval": 30,
64
+ "stats_avg": 100,
65
+ "summaries_use_frameskip": true,
66
+ "heartbeat_interval": 20,
67
+ "heartbeat_reporting_interval": 180,
68
+ "train_for_env_steps": 100000000,
69
+ "train_for_seconds": 10000000000,
70
+ "save_every_sec": 15,
71
+ "keep_checkpoints": 2,
72
+ "load_checkpoint_kind": "latest",
73
+ "save_milestones_sec": -1,
74
+ "save_best_every_sec": 5,
75
+ "save_best_metric": "reward",
76
+ "save_best_after": 100000,
77
+ "benchmark": false,
78
+ "encoder_mlp_layers": [
79
+ 64,
80
+ 64
81
+ ],
82
+ "encoder_conv_architecture": "convnet_simple",
83
+ "encoder_conv_mlp_layers": [
84
+ 512
85
+ ],
86
+ "use_rnn": false,
87
+ "rnn_size": 512,
88
+ "rnn_type": "gru",
89
+ "rnn_num_layers": 1,
90
+ "decoder_mlp_layers": [],
91
+ "nonlinearity": "tanh",
92
+ "policy_initialization": "torch_default",
93
+ "policy_init_gain": 1.0,
94
+ "actor_critic_share_weights": true,
95
+ "adaptive_stddev": false,
96
+ "continuous_tanh_scale": 0.0,
97
+ "initial_stddev": 1.0,
98
+ "use_env_info_cache": false,
99
+ "env_gpu_actions": false,
100
+ "env_gpu_observations": true,
101
+ "env_frameskip": 1,
102
+ "env_framestack": 1,
103
+ "pixel_format": "CHW",
104
+ "use_record_episode_statistics": false,
105
+ "with_wandb": true,
106
+ "wandb_user": "qgallouedec",
107
+ "wandb_project": "sample_facotry_metaworld",
108
+ "wandb_group": null,
109
+ "wandb_job_type": "SF",
110
+ "wandb_tags": [],
111
+ "with_pbt": false,
112
+ "pbt_mix_policies_in_one_env": true,
113
+ "pbt_period_env_steps": 5000000,
114
+ "pbt_start_mutation": 20000000,
115
+ "pbt_replace_fraction": 0.3,
116
+ "pbt_mutation_rate": 0.15,
117
+ "pbt_replace_reward_gap": 0.1,
118
+ "pbt_replace_reward_gap_absolute": 1e-06,
119
+ "pbt_optimize_gamma": false,
120
+ "pbt_target_objective": "true_objective",
121
+ "pbt_perturb_min": 1.1,
122
+ "pbt_perturb_max": 1.5,
123
+ "command_line": "--env stick-pull-v2 --experiment stick-pull-v2 --with_wandb True --wandb_user qgallouedec --wandb_project sample_facotry_metaworld",
124
+ "cli_args": {
125
+ "env": "stick-pull-v2",
126
+ "experiment": "stick-pull-v2",
127
+ "with_wandb": true,
128
+ "wandb_user": "qgallouedec",
129
+ "wandb_project": "sample_facotry_metaworld"
130
+ },
131
+ "git_hash": "2bb8d8c9cd813ffeafaad42038b1e71364092d36",
132
+ "git_repo_name": "https://github.com/huggingface/gia",
133
+ "wandb_unique_id": "stick-pull-v2_20230311_151346_189754"
134
+ }
git.diff ADDED
@@ -0,0 +1,215 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ diff --git a/data/envs/metaworld/generate_dataset.py b/data/envs/metaworld/generate_dataset.py
2
+ index dc51b4f..ed99a4a 100644
3
+ --- a/data/envs/metaworld/generate_dataset.py
4
+ +++ b/data/envs/metaworld/generate_dataset.py
5
+ @@ -4,7 +4,9 @@ from typing import Dict, Optional
6
+ import gym
7
+ import metaworld
8
+ import numpy as np
9
+ +import pandas as pd
10
+ import torch
11
+ +from datasets import Dataset
12
+ from huggingface_hub import HfApi, repocard, upload_folder
13
+ from sample_factory.algo.learning.learner import Learner
14
+ from sample_factory.algo.sampling.batched_sampling import preprocess_actions
15
+ @@ -12,11 +14,7 @@ from sample_factory.algo.utils.action_distributions import argmax_actions
16
+ from sample_factory.algo.utils.env_info import extract_env_info
17
+ from sample_factory.algo.utils.make_env import make_env_func_batched
18
+ from sample_factory.algo.utils.rl_utils import make_dones, prepare_and_normalize_obs
19
+ -from sample_factory.cfg.arguments import (
20
+ - load_from_checkpoint,
21
+ - parse_full_cfg,
22
+ - parse_sf_args,
23
+ -)
24
+ +from sample_factory.cfg.arguments import load_from_checkpoint, parse_full_cfg, parse_sf_args
25
+ from sample_factory.envs.env_utils import register_env
26
+ from sample_factory.model.actor_critic import create_actor_critic
27
+ from sample_factory.model.model_utils import get_rnn_size
28
+ @@ -165,10 +163,8 @@ def create_dataset(cfg: Config):
29
+ # Create dataset
30
+ dataset_size = 100_000
31
+ dataset = {
32
+ - "observations": np.zeros(
33
+ - (dataset_size, *env.observation_space["obs"].shape), dtype=env.observation_space["obs"].dtype
34
+ - ),
35
+ - "actions": np.zeros((dataset_size, *env.action_space.shape), env.action_space.dtype),
36
+ + "observations": np.zeros((dataset_size, *env.observation_space["obs"].shape), dtype=np.float32),
37
+ + "actions": np.zeros((dataset_size, *env.action_space.shape), np.float32),
38
+ "dones": np.zeros((dataset_size,), bool),
39
+ "rewards": np.zeros((dataset_size,), np.float32),
40
+ }
41
+ @@ -206,6 +202,13 @@ def create_dataset(cfg: Config):
42
+
43
+ env.close()
44
+
45
+ + # Convert dict of numpy array to pandas dataframe
46
+ +# dataset = Dataset.from_dict(dataset)
47
+ +# dataset.create_config_id
48
+ + # Set the card of the dataset
49
+ +# dataset.card = f""""""
50
+ +# dataset.push_to_hub("qgallouedec/prj_gia_dataset_metaworld_assembly_v2_1111_demo")
51
+ +
52
+ # Save dataset
53
+ repo_path = f"{cfg.train_dir}/datasets/{cfg.experiment}"
54
+ os.makedirs(repo_path, exist_ok=True)
55
+ diff --git a/data/envs/metaworld/generate_dataset_all.sh b/data/envs/metaworld/generate_dataset_all.sh
56
+ index 802bf5c..3cc4f97 100755
57
+ --- a/data/envs/metaworld/generate_dataset_all.sh
58
+ +++ b/data/envs/metaworld/generate_dataset_all.sh
59
+ @@ -1,34 +1,6 @@
60
+ #!/bin/bash
61
+
62
+ ENVS=(
63
+ - assembly
64
+ - basketball
65
+ - bin-picking
66
+ - box-close
67
+ - button-press-topdown
68
+ - button-press-topdown-wall
69
+ - button-press
70
+ - button-press-wall
71
+ - coffee-button
72
+ - coffee-pull
73
+ - coffee-push
74
+ - dial-turn
75
+ - disassemble
76
+ - door-close
77
+ - door-lock
78
+ - door-open
79
+ - door-unlock
80
+ - drawer-close
81
+ - drawer-open
82
+ - faucet-close
83
+ - faucet-open
84
+ - hammer
85
+ - hand-insert
86
+ - handle-press-side
87
+ - handle-press
88
+ - handle-pull-side
89
+ - handle-pull
90
+ - lever-pull
91
+ peg-insert-side
92
+ peg-unplug-side
93
+ pick-out-of-hole
94
+ @@ -40,19 +12,8 @@ ENVS=(
95
+ plate-slide
96
+ push-back
97
+ push
98
+ - push-wall
99
+ - reach
100
+ - reach-wall
101
+ - shelf-place
102
+ - soccer
103
+ - stick-pull
104
+ - stick-push
105
+ - sweep-into
106
+ - sweep
107
+ - window-close
108
+ - window-open
109
+ )
110
+
111
+ for ENV in "${ENVS[@]}"; do
112
+ - python generate_dataset.py --env $ENV-v2 --experiment $ENV-v2 --train_dir=./train_dir
113
+ + python generate_dataset.py --env $ENV-v2 --experiment $ENV-v2 --train_dir=./train_dir
114
+ done
115
+ diff --git a/data/envs/metaworld/train_all.sh b/data/envs/metaworld/train_all.sh
116
+ index dbf328a..1237f2c 100755
117
+ --- a/data/envs/metaworld/train_all.sh
118
+ +++ b/data/envs/metaworld/train_all.sh
119
+ @@ -1,48 +1,48 @@
120
+ #!/bin/bash
121
+
122
+ ENVS=(
123
+ - assembly
124
+ - basketball
125
+ - bin-picking
126
+ - box-close
127
+ - button-press-topdown
128
+ - button-press-topdown-wall
129
+ - button-press
130
+ - button-press-wall
131
+ - coffee-button
132
+ - coffee-pull
133
+ - coffee-push
134
+ - dial-turn
135
+ - disassemble
136
+ - door-close
137
+ - door-lock
138
+ - door-open
139
+ - door-unlock
140
+ - drawer-close
141
+ - drawer-open
142
+ - faucet-close
143
+ - faucet-open
144
+ - hammer
145
+ - hand-insert
146
+ - handle-press-side
147
+ - handle-press
148
+ - handle-pull-side
149
+ - handle-pull
150
+ - lever-pull
151
+ - peg-insert-side
152
+ - peg-unplug-side
153
+ - pick-out-of-hole
154
+ - pick-place
155
+ - pick-place-wall
156
+ - plate-slide-back-side
157
+ - plate-slide-back
158
+ - plate-slide-side
159
+ - plate-slide
160
+ - push-back
161
+ - push
162
+ - push-wall
163
+ - reach
164
+ - reach-wall
165
+ +# assembly
166
+ +# basketball
167
+ +# bin-picking
168
+ +# box-close
169
+ +# button-press-topdown
170
+ +# button-press-topdown-wall
171
+ +# button-press
172
+ +# button-press-wall
173
+ +# coffee-button
174
+ +# coffee-pull
175
+ +# coffee-push
176
+ +# dial-turn
177
+ +# disassemble
178
+ +# door-close
179
+ +# door-lock
180
+ +# door-open
181
+ +# door-unlock
182
+ +# drawer-close
183
+ +# drawer-open
184
+ +# faucet-close
185
+ +# faucet-open
186
+ +# hammer
187
+ +# hand-insert
188
+ +# handle-press-side
189
+ +# handle-press
190
+ +# handle-pull-side
191
+ +# handle-pull
192
+ +# lever-pull
193
+ +# peg-insert-side
194
+ +# peg-unplug-side
195
+ +# pick-out-of-hole
196
+ +# pick-place
197
+ +# pick-place-wall
198
+ +# plate-slide-back-side
199
+ +# plate-slide-back
200
+ +# plate-slide-side
201
+ +# plate-slide
202
+ +# push-back
203
+ +# push
204
+ +# push-wall
205
+ +# reach
206
+ +# reach-wall
207
+ shelf-place
208
+ soccer
209
+ stick-pull
210
+ @@ -55,4 +55,5 @@ ENVS=(
211
+
212
+ for ENV in "${ENVS[@]}"; do
213
+ python train.py --env $ENV-v2 --experiment $ENV-v2 --with_wandb True --wandb_user qgallouedec --wandb_project sample_facotry_metaworld
214
+ + python enjoy.py --algo=APPO --env $ENV-v2 --experiment $ENV-v2 --train_dir=./train_dir --max_num_episodes=10 --push_to_hub --hf_repository=qgallouedec/sample-factory-$ENV-v2 --save_video --no_render --enjoy_script=enjoy --train_script=train --load_checkpoint_kind best
215
+ done
replay.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:24466ce525dd425a9ca92dabbcc653583fe24402022029bb9ea58ded3c56c9b8
3
+ size 2694988
sf_log.txt ADDED
The diff for this file is too large to render. See raw diff