zjowowen commited on
Commit
03a03b5
1 Parent(s): af04c14

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +309 -0
README.md ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ license: apache-2.0
4
+ library_name: pytorch
5
+ tags:
6
+ - deep-reinforcement-learning
7
+ - reinforcement-learning
8
+ - DI-engine
9
+ - Pendulum-v1
10
+ benchmark_name: OpenAI/Gym/Box2d
11
+ task_name: Pendulum-v1
12
+ pipeline_tag: reinforcement-learning
13
+ model-index:
14
+ - name: SampledEfficientZero
15
+ results:
16
+ - task:
17
+ type: reinforcement-learning
18
+ name: reinforcement-learning
19
+ dataset:
20
+ name: Pendulum-v1
21
+ type: Pendulum-v1
22
+ metrics:
23
+ - type: mean_reward
24
+ value: -133.4 +/- 84.02
25
+ name: mean_reward
26
+ ---
27
+
28
+ # Play **Pendulum-v1** with **SampledEfficientZero** Policy
29
+
30
+ ## Model Description
31
+ <!-- Provide a longer summary of what this model is. -->
32
+
33
+ This implementation applies **SampledEfficientZero** to the OpenAI/Gym/Box2d **Pendulum-v1** environment using [LightZero](https://github.com/opendilab/LightZero) and [DI-engine](https://github.com/opendilab/di-engine).
34
+
35
+ **LightZero** is an efficient, easy-to-understand open-source toolkit that merges Monte Carlo Tree Search (MCTS) with Deep Reinforcement Learning (RL), simplifying their integration for developers and researchers. More details are in paper [LightZero: A Unified Benchmark for Monte Carlo Tree Search in General Sequential Decision Scenarios](https://huggingface.co/papers/2310.08348).
36
+
37
+ ## Model Usage
38
+ ### Install the Dependencies
39
+ <details close>
40
+ <summary>(Click for Details)</summary>
41
+
42
+ ```shell
43
+ # install huggingface_ding
44
+ git clone https://github.com/opendilab/huggingface_ding.git
45
+ pip3 install -e ./huggingface_ding/
46
+ # install environment dependencies if needed
47
+
48
+ pip3 install DI-engine[common_env,video]
49
+ pip3 install LightZero
50
+
51
+ ```
52
+ </details>
53
+
54
+ ### Git Clone from Huggingface and Run the Model
55
+
56
+ <details close>
57
+ <summary>(Click for Details)</summary>
58
+
59
+ ```shell
60
+ # running with trained model
61
+ python3 -u run.py
62
+ ```
63
+ **run.py**
64
+ ```python
65
+ from lzero.agent import SampledEfficientZeroAgent
66
+ from ding.config import Config
67
+ from easydict import EasyDict
68
+ import torch
69
+
70
+ # Pull model from files which are git cloned from huggingface
71
+ policy_state_dict = torch.load("pytorch_model.bin", map_location=torch.device("cpu"))
72
+ cfg = EasyDict(Config.file_to_dict("policy_config.py").cfg_dict)
73
+ # Instantiate the agent
74
+ agent = SampledEfficientZeroAgent(
75
+ env_id="Pendulum-v1", exp_name="Pendulum-v1-SampledEfficientZero", cfg=cfg.exp_config, policy_state_dict=policy_state_dict
76
+ )
77
+ # Continue training
78
+ agent.train(step=5000)
79
+ # Render the new agent performance
80
+ agent.deploy(enable_save_replay=True)
81
+
82
+ ```
83
+ </details>
84
+
85
+ ### Run Model by Using Huggingface_ding
86
+
87
+ <details close>
88
+ <summary>(Click for Details)</summary>
89
+
90
+ ```shell
91
+ # running with trained model
92
+ python3 -u run.py
93
+ ```
94
+ **run.py**
95
+ ```python
96
+ from lzero.agent import SampledEfficientZeroAgent
97
+ from huggingface_ding import pull_model_from_hub
98
+
99
+ # Pull model from Hugggingface hub
100
+ policy_state_dict, cfg = pull_model_from_hub(repo_id="OpenDILabCommunity/Pendulum-v1-SampledEfficientZero")
101
+ # Instantiate the agent
102
+ agent = SampledEfficientZeroAgent(
103
+ env_id="Pendulum-v1", exp_name="Pendulum-v1-SampledEfficientZero", cfg=cfg.exp_config, policy_state_dict=policy_state_dict
104
+ )
105
+ # Continue training
106
+ agent.train(step=5000)
107
+ # Render the new agent performance
108
+ agent.deploy(enable_save_replay=True)
109
+
110
+ ```
111
+ </details>
112
+
113
+ ## Model Training
114
+
115
+ ### Train the Model and Push to Huggingface_hub
116
+
117
+ <details close>
118
+ <summary>(Click for Details)</summary>
119
+
120
+ ```shell
121
+ #Training Your Own Agent
122
+ python3 -u train.py
123
+ ```
124
+ **train.py**
125
+ ```python
126
+ from lzero.agent import SampledEfficientZeroAgent
127
+ from huggingface_ding import push_model_to_hub
128
+
129
+ # Instantiate the agent
130
+ agent = SampledEfficientZeroAgent(env_id="Pendulum-v1", exp_name="Pendulum-v1-SampledEfficientZero")
131
+ # Train the agent
132
+ return_ = agent.train(step=int(500000))
133
+ # Push model to huggingface hub
134
+ push_model_to_hub(
135
+ agent=agent.best,
136
+ env_name="OpenAI/Gym/Box2d",
137
+ task_name="Pendulum-v1",
138
+ algo_name="SampledEfficientZero",
139
+ github_repo_url="https://github.com/opendilab/LightZero",
140
+ github_doc_model_url=None,
141
+ github_doc_env_url=None,
142
+ installation_guide='''
143
+ pip3 install DI-engine[common_env,video]
144
+ pip3 install LightZero
145
+ ''',
146
+ usage_file_by_git_clone="./sampled_efficientzero/pendulum_sampled_efficientzero_deploy.py",
147
+ usage_file_by_huggingface_ding="./sampled_efficientzero/pendulum_sampled_efficientzero_download.py",
148
+ train_file="./sampled_efficientzero/pendulum_sampled_efficientzero.py",
149
+ repo_id="OpenDILabCommunity/Pendulum-v1-SampledEfficientZero",
150
+ platform_info="[LightZero](https://github.com/opendilab/LightZero) and [DI-engine](https://github.com/opendilab/di-engine)",
151
+ model_description="**LightZero** is an efficient, easy-to-understand open-source toolkit that merges Monte Carlo Tree Search (MCTS) with Deep Reinforcement Learning (RL), simplifying their integration for developers and researchers. More details are in paper [LightZero: A Unified Benchmark for Monte Carlo Tree Search in General Sequential Decision Scenarios](https://huggingface.co/papers/2310.08348).",
152
+ create_repo=True
153
+ )
154
+
155
+ ```
156
+ </details>
157
+
158
+ **Configuration**
159
+ <details close>
160
+ <summary>(Click for Details)</summary>
161
+
162
+
163
+ ```python
164
+ exp_config = {
165
+ 'main_config': {
166
+ 'exp_name': 'Pendulum-v1-SampledEfficientZero',
167
+ 'seed': 0,
168
+ 'env': {
169
+ 'env_id': 'Pendulum-v1',
170
+ 'continuous': True,
171
+ 'manually_discretization': False,
172
+ 'collector_env_num': 8,
173
+ 'evaluator_env_num': 3,
174
+ 'n_evaluator_episode': 3,
175
+ 'manager': {
176
+ 'shared_memory': False
177
+ }
178
+ },
179
+ 'policy': {
180
+ 'on_policy': False,
181
+ 'cuda': True,
182
+ 'multi_gpu': False,
183
+ 'bp_update_sync': True,
184
+ 'traj_len_inf': False,
185
+ 'model': {
186
+ 'observation_shape': 3,
187
+ 'action_space_size': 11,
188
+ 'continuous_action_space': True,
189
+ 'num_of_sampled_actions': 20,
190
+ 'sigma_type': 'conditioned',
191
+ 'model_type': 'mlp',
192
+ 'lstm_hidden_size': 128,
193
+ 'latent_state_dim': 128
194
+ },
195
+ 'use_rnd_model': False,
196
+ 'sampled_algo': True,
197
+ 'gumbel_algo': False,
198
+ 'mcts_ctree': True,
199
+ 'collector_env_num': 8,
200
+ 'evaluator_env_num': 3,
201
+ 'env_type': 'not_board_games',
202
+ 'action_type': 'fixed_action_space',
203
+ 'battle_mode': 'play_with_bot_mode',
204
+ 'monitor_extra_statistics': True,
205
+ 'game_segment_length': 50,
206
+ 'transform2string': False,
207
+ 'gray_scale': False,
208
+ 'use_augmentation': False,
209
+ 'augmentation': ['shift', 'intensity'],
210
+ 'ignore_done': False,
211
+ 'update_per_collect': 200,
212
+ 'model_update_ratio': 0.1,
213
+ 'batch_size': 256,
214
+ 'optim_type': 'Adam',
215
+ 'learning_rate': 0.003,
216
+ 'target_update_freq': 100,
217
+ 'target_update_freq_for_intrinsic_reward': 1000,
218
+ 'weight_decay': 0.0001,
219
+ 'momentum': 0.9,
220
+ 'grad_clip_value': 10,
221
+ 'n_episode': 8,
222
+ 'num_simulations': 50,
223
+ 'discount_factor': 0.997,
224
+ 'td_steps': 5,
225
+ 'num_unroll_steps': 5,
226
+ 'reward_loss_weight': 1,
227
+ 'value_loss_weight': 0.25,
228
+ 'policy_loss_weight': 1,
229
+ 'policy_entropy_loss_weight': 0.005,
230
+ 'ssl_loss_weight': 2,
231
+ 'lr_piecewise_constant_decay': False,
232
+ 'threshold_training_steps_for_final_lr': 50000,
233
+ 'manual_temperature_decay': False,
234
+ 'threshold_training_steps_for_final_temperature': 100000,
235
+ 'fixed_temperature_value': 0.25,
236
+ 'use_ture_chance_label_in_chance_encoder': False,
237
+ 'use_priority': True,
238
+ 'priority_prob_alpha': 0.6,
239
+ 'priority_prob_beta': 0.4,
240
+ 'root_dirichlet_alpha': 0.3,
241
+ 'root_noise_weight': 0.25,
242
+ 'random_collect_episode_num': 0,
243
+ 'eps': {
244
+ 'eps_greedy_exploration_in_collect': False,
245
+ 'type': 'linear',
246
+ 'start': 1.0,
247
+ 'end': 0.05,
248
+ 'decay': 100000
249
+ },
250
+ 'cfg_type': 'SampledEfficientZeroPolicyDict',
251
+ 'init_w': 0.003,
252
+ 'normalize_prob_of_sampled_actions': False,
253
+ 'policy_loss_type': 'cross_entropy',
254
+ 'lstm_horizon_len': 5,
255
+ 'cos_lr_scheduler': False,
256
+ 'reanalyze_ratio': 0.0,
257
+ 'eval_freq': 2000,
258
+ 'replay_buffer_size': 1000000
259
+ },
260
+ 'wandb_logger': {
261
+ 'gradient_logger': False,
262
+ 'video_logger': False,
263
+ 'plot_logger': False,
264
+ 'action_logger': False,
265
+ 'return_logger': False
266
+ }
267
+ },
268
+ 'create_config': {
269
+ 'env': {
270
+ 'type':
271
+ 'pendulum_lightzero',
272
+ 'import_names':
273
+ ['zoo.classic_control.pendulum.envs.pendulum_lightzero_env']
274
+ },
275
+ 'env_manager': {
276
+ 'type': 'subprocess'
277
+ },
278
+ 'policy': {
279
+ 'type': 'sampled_efficientzero',
280
+ 'import_names': ['lzero.policy.sampled_efficientzero']
281
+ }
282
+ }
283
+ }
284
+
285
+ ```
286
+ </details>
287
+
288
+ **Training Procedure**
289
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
290
+ - **Weights & Biases (wandb):** [monitor link](<TODO>)
291
+
292
+ ## Model Information
293
+ <!-- Provide the basic links for the model. -->
294
+ - **Github Repository:** [repo link](https://github.com/opendilab/LightZero)
295
+ - **Doc**: [Algorithm link](<TODO>)
296
+ - **Configuration:** [config link](https://huggingface.co/OpenDILabCommunity/Pendulum-v1-SampledEfficientZero/blob/main/policy_config.py)
297
+ - **Demo:** [video](https://huggingface.co/OpenDILabCommunity/Pendulum-v1-SampledEfficientZero/blob/main/replay.mp4)
298
+ <!-- Provide the size information for the model. -->
299
+ - **Parameters total size:** 14191.33 KB
300
+ - **Last Update Date:** 2024-01-19
301
+
302
+ ## Environments
303
+ <!-- Address questions around what environment the model is intended to be trained and deployed at, including the necessary information needed to be provided for future users. -->
304
+ - **Benchmark:** OpenAI/Gym/Box2d
305
+ - **Task:** Pendulum-v1
306
+ - **Gym version:** 0.25.1
307
+ - **DI-engine version:** v0.5.0
308
+ - **PyTorch version:** 2.0.1+cu117
309
+ - **Doc**: [Environments link](<TODO>)