bochen0909 commited on
Commit
45eec8a
1 Parent(s): d290fc8
Pyramids.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5a13473d7f3e4a168a95771fd9aaeb98eddccfb3aa1a0f86c3cf516d4f1264d4
3
+ size 1417437
Pyramids/Pyramids-499961.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4f99612477ce965326af27dae5ae64e99f9eba1a84cf8feda115fddd32c8e6eb
3
+ size 1417437
Pyramids/Pyramids-499961.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:385d144a140d8a2a4ea9c69f1482b4d9ba376e15aaa3d9a2612aa35e12c665dd
3
+ size 8652356
Pyramids/Pyramids-743574.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5a13473d7f3e4a168a95771fd9aaeb98eddccfb3aa1a0f86c3cf516d4f1264d4
3
+ size 1417437
Pyramids/Pyramids-743574.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc42e64fe6d9b93ec13e8ad26a5d7d20cc3bbf770d38fa46ad6f1e84030dacf5
3
+ size 8652356
Pyramids/checkpoint.pt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc42e64fe6d9b93ec13e8ad26a5d7d20cc3bbf770d38fa46ad6f1e84030dacf5
3
+ size 8652356
Pyramids/events.out.tfevents.1690474917.n0024.es1.155314.0 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c1865fa6e92b9cf5e6e2a23c4ede152188c0eaa55652a8dbabad11a51468f33f
3
+ size 239922
README.md ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: ml-agents
3
+ tags:
4
+ - Pyramids
5
+ - deep-reinforcement-learning
6
+ - reinforcement-learning
7
+ - ML-Agents-Pyramids
8
+ ---
9
+
10
+ # **ppo** Agent playing **Pyramids**
11
+ This is a trained model of a **ppo** agent playing **Pyramids**
12
+ using the [Unity ML-Agents Library](https://github.com/Unity-Technologies/ml-agents).
13
+
14
+ ## Usage (with ML-Agents)
15
+ The Documentation: https://unity-technologies.github.io/ml-agents/ML-Agents-Toolkit-Documentation/
16
+
17
+ We wrote a complete tutorial to learn to train your first agent using ML-Agents and publish it to the Hub:
18
+ - A *short tutorial* where you teach Huggy the Dog 🐶 to fetch the stick and then play with him directly in your
19
+ browser: https://huggingface.co/learn/deep-rl-course/unitbonus1/introduction
20
+ - A *longer tutorial* to understand how works ML-Agents:
21
+ https://huggingface.co/learn/deep-rl-course/unit5/introduction
22
+
23
+ ### Resume the training
24
+ ```bash
25
+ mlagents-learn <your_configuration_file_path.yaml> --run-id=<run_id> --resume
26
+ ```
27
+
28
+ ### Watch your Agent play
29
+ You can watch your agent **playing directly in your browser**
30
+
31
+ 1. If the environment is part of ML-Agents official environments, go to https://huggingface.co/unity
32
+ 2. Step 1: Find your model_id: bochen0909/PyramidsRND
33
+ 3. Step 2: Select your *.nn /*.onnx file
34
+ 4. Click on Watch the agent play 👀
35
+
config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"default_settings": null, "behaviors": {"Pyramids": {"trainer_type": "ppo", "hyperparameters": {"batch_size": 128, "buffer_size": 2048, "learning_rate": 0.0003, "beta": 0.01, "epsilon": 0.2, "lambd": 0.95, "num_epoch": 3, "shared_critic": false, "learning_rate_schedule": "linear", "beta_schedule": "linear", "epsilon_schedule": "linear"}, "checkpoint_interval": 500000, "network_settings": {"normalize": false, "hidden_units": 512, "num_layers": 2, "vis_encode_type": "simple", "memory": null, "goal_conditioning_type": "hyper", "deterministic": false}, "reward_signals": {"extrinsic": {"gamma": 0.99, "strength": 1.0, "network_settings": {"normalize": false, "hidden_units": 128, "num_layers": 2, "vis_encode_type": "simple", "memory": null, "goal_conditioning_type": "hyper", "deterministic": false}}, "rnd": {"gamma": 0.99, "strength": 0.01, "network_settings": {"normalize": false, "hidden_units": 64, "num_layers": 3, "vis_encode_type": "simple", "memory": null, "goal_conditioning_type": "hyper", "deterministic": false}, "learning_rate": 0.0001, "encoding_size": null}}, "init_path": null, "keep_checkpoints": 5, "even_checkpoints": false, "max_steps": 3000000, "time_horizon": 128, "summary_freq": 30000, "threaded": false, "self_play": null, "behavioral_cloning": null}}, "env_settings": {"env_path": "./training-envs-executables/linux/Pyramids/Pyramids", "env_args": null, "base_port": 5005, "num_envs": 1, "num_areas": 1, "seed": -1, "max_lifetime_restarts": 10, "restarts_rate_limit_n": 1, "restarts_rate_limit_period_s": 60}, "engine_settings": {"width": 84, "height": 84, "quality_level": 5, "time_scale": 20, "target_frame_rate": -1, "capture_frame_rate": 60, "no_graphics": true}, "environment_parameters": null, "checkpoint_settings": {"run_id": "Pyramids Training", "initialize_from": null, "load_model": false, "resume": false, "force": false, "train_model": false, "inference": false, "results_dir": "results"}, "torch_settings": {"device": null}, "debug": false}
configuration.yaml ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ default_settings: null
2
+ behaviors:
3
+ Pyramids:
4
+ trainer_type: ppo
5
+ hyperparameters:
6
+ batch_size: 128
7
+ buffer_size: 2048
8
+ learning_rate: 0.0003
9
+ beta: 0.01
10
+ epsilon: 0.2
11
+ lambd: 0.95
12
+ num_epoch: 3
13
+ shared_critic: false
14
+ learning_rate_schedule: linear
15
+ beta_schedule: linear
16
+ epsilon_schedule: linear
17
+ checkpoint_interval: 500000
18
+ network_settings:
19
+ normalize: false
20
+ hidden_units: 512
21
+ num_layers: 2
22
+ vis_encode_type: simple
23
+ memory: null
24
+ goal_conditioning_type: hyper
25
+ deterministic: false
26
+ reward_signals:
27
+ extrinsic:
28
+ gamma: 0.99
29
+ strength: 1.0
30
+ network_settings:
31
+ normalize: false
32
+ hidden_units: 128
33
+ num_layers: 2
34
+ vis_encode_type: simple
35
+ memory: null
36
+ goal_conditioning_type: hyper
37
+ deterministic: false
38
+ rnd:
39
+ gamma: 0.99
40
+ strength: 0.01
41
+ network_settings:
42
+ normalize: false
43
+ hidden_units: 64
44
+ num_layers: 3
45
+ vis_encode_type: simple
46
+ memory: null
47
+ goal_conditioning_type: hyper
48
+ deterministic: false
49
+ learning_rate: 0.0001
50
+ encoding_size: null
51
+ init_path: null
52
+ keep_checkpoints: 5
53
+ even_checkpoints: false
54
+ max_steps: 3000000
55
+ time_horizon: 128
56
+ summary_freq: 30000
57
+ threaded: false
58
+ self_play: null
59
+ behavioral_cloning: null
60
+ env_settings:
61
+ env_path: ./training-envs-executables/linux/Pyramids/Pyramids
62
+ env_args: null
63
+ base_port: 5005
64
+ num_envs: 1
65
+ num_areas: 1
66
+ seed: -1
67
+ max_lifetime_restarts: 10
68
+ restarts_rate_limit_n: 1
69
+ restarts_rate_limit_period_s: 60
70
+ engine_settings:
71
+ width: 84
72
+ height: 84
73
+ quality_level: 5
74
+ time_scale: 20
75
+ target_frame_rate: -1
76
+ capture_frame_rate: 60
77
+ no_graphics: true
78
+ environment_parameters: null
79
+ checkpoint_settings:
80
+ run_id: Pyramids Training
81
+ initialize_from: null
82
+ load_model: false
83
+ resume: false
84
+ force: false
85
+ train_model: false
86
+ inference: false
87
+ results_dir: results
88
+ torch_settings:
89
+ device: null
90
+ debug: false
run_logs/Player-0.log ADDED
@@ -0,0 +1,327 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Mono path[0] = '/global/scratch/users/lizhen/rl-course/unit5/training-envs-executables/linux/Pyramids/Pyramids_Data/Managed'
2
+ Mono config path = '/global/scratch/users/lizhen/rl-course/unit5/training-envs-executables/linux/Pyramids/Pyramids_Data/MonoBleedingEdge/etc'
3
+ Found 2 interfaces on host : 0) 10.0.43.24 1) 10.4.43.24
4
+ Multi-casting "[IP] 10.0.43.24 [Port] 55244 [Flags] 2 [Guid] 3654189423 [EditorId] 764847374 [Version] 1048832 [Id] LinuxPlayer(13,10.0.43.24) [Debug] 0 [PackageName] LinuxPlayer [ProjectName] UnityEnvironment" to [225.0.0.222:54997]...
5
+ Preloaded 'lib_burst_generated.so'
6
+ Preloaded 'libgrpc_csharp_ext.x64.so'
7
+ PlayerPrefs - Creating folder: /global/home/users/lizhen/.config/unity3d/Unity Technologies
8
+ PlayerPrefs - Creating folder: /global/home/users/lizhen/.config/unity3d/Unity Technologies/UnityEnvironment
9
+ Unable to load player prefs
10
+ Initialize engine version: 2021.3.5f1 (40eb3a945986)
11
+ [Subsystems] Discovering subsystems at path /global/scratch/users/lizhen/rl-course/unit5/training-envs-executables/linux/Pyramids/Pyramids_Data/UnitySubsystems
12
+ Forcing GfxDevice: Null
13
+ GfxDevice: creating device client; threaded=0; jobified=0
14
+ NullGfxDevice:
15
+ Version: NULL 1.0 [1.0]
16
+ Renderer: Null Device
17
+ Vendor: Unity Technologies
18
+ Begin MonoManager ReloadAssembly
19
+ - Completed reload, in 0.348 seconds
20
+ ERROR: Shader Sprites/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
21
+ ERROR: Shader Sprites/Mask shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
22
+ ERROR: Shader Legacy Shaders/VertexLit shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
23
+ WARNING: Shader Unsupported: 'Autodesk Interactive' - All subshaders removed
24
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
25
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
26
+ ERROR: Shader Autodesk Interactive shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
27
+ WARNING: Shader Unsupported: 'Autodesk Interactive' - All subshaders removed
28
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
29
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
30
+ WARNING: Shader Unsupported: 'Legacy Shaders/Diffuse' - All subshaders removed
31
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
32
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
33
+ ERROR: Shader Legacy Shaders/Diffuse shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
34
+ WARNING: Shader Unsupported: 'Legacy Shaders/Diffuse' - All subshaders removed
35
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
36
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
37
+ WARNING: Shader Unsupported: 'ML-Agents/GridPattern' - All subshaders removed
38
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
39
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
40
+ ERROR: Shader ML-Agents/GridPattern shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
41
+ WARNING: Shader Unsupported: 'ML-Agents/GridPattern' - All subshaders removed
42
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
43
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
44
+ WARNING: Shader Unsupported: 'Standard' - All subshaders removed
45
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
46
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
47
+ ERROR: Shader Standard shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
48
+ WARNING: Shader Unsupported: 'Standard' - All subshaders removed
49
+ WARNING: Shader Did you use #pragma only_renderers and omit this platform?
50
+ WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
51
+ UnloadTime: 2.423338 ms
52
+ ERROR: Shader UI/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
53
+ requesting resize 84 x 84
54
+ Setting up 4 worker threads for Enlighten.
55
+ PlayerConnection::CleanupMemory Statistics:
56
+ [ALLOC_TEMP_TLS] TLS Allocator
57
+ StackAllocators :
58
+ [ALLOC_TEMP_MAIN]
59
+ Peak usage frame count: [16.0 KB-32.0 KB]: 2196 frames, [32.0 KB-64.0 KB]: 9856 frames, [64.0 KB-128.0 KB]: 1912 frames, [2.0 MB-4.0 MB]: 1 frames
60
+ Initial Block Size 4.0 MB
61
+ Current Block Size 4.0 MB
62
+ Peak Allocated Bytes 2.0 MB
63
+ Overflow Count 0
64
+ [ALLOC_TEMP_Background Job.Worker 8]
65
+ Initial Block Size 32.0 KB
66
+ Current Block Size 32.0 KB
67
+ Peak Allocated Bytes 0 B
68
+ Overflow Count 0
69
+ [ALLOC_TEMP_Background Job.Worker 10]
70
+ Initial Block Size 32.0 KB
71
+ Current Block Size 32.0 KB
72
+ Peak Allocated Bytes 0 B
73
+ Overflow Count 0
74
+ [ALLOC_TEMP_Job.Worker 4]
75
+ Initial Block Size 256.0 KB
76
+ Current Block Size 256.0 KB
77
+ Peak Allocated Bytes 0 B
78
+ Overflow Count 0
79
+ [ALLOC_TEMP_Background Job.Worker 6]
80
+ Initial Block Size 32.0 KB
81
+ Current Block Size 32.0 KB
82
+ Peak Allocated Bytes 0 B
83
+ Overflow Count 0
84
+ [ALLOC_TEMP_Background Job.Worker 1]
85
+ Initial Block Size 32.0 KB
86
+ Current Block Size 32.0 KB
87
+ Peak Allocated Bytes 0 B
88
+ Overflow Count 0
89
+ [ALLOC_TEMP_Background Job.Worker 11]
90
+ Initial Block Size 32.0 KB
91
+ Current Block Size 32.0 KB
92
+ Peak Allocated Bytes 0 B
93
+ Overflow Count 0
94
+ [ALLOC_TEMP_Background Job.Worker 3]
95
+ Initial Block Size 32.0 KB
96
+ Current Block Size 32.0 KB
97
+ Peak Allocated Bytes 0 B
98
+ Overflow Count 0
99
+ [ALLOC_TEMP_BatchDeleteObjects]
100
+ Initial Block Size 64.0 KB
101
+ Current Block Size 64.0 KB
102
+ Peak Allocated Bytes 0 B
103
+ Overflow Count 0
104
+ [ALLOC_TEMP_AUDIO_FMOD stream thread]
105
+ Initial Block Size 64.0 KB
106
+ Current Block Size 64.0 KB
107
+ Peak Allocated Bytes 0 B
108
+ Overflow Count 0
109
+ [ALLOC_TEMP_Background Job.Worker 2]
110
+ Initial Block Size 32.0 KB
111
+ Current Block Size 32.0 KB
112
+ Peak Allocated Bytes 0 B
113
+ Overflow Count 0
114
+ [ALLOC_TEMP_Background Job.Worker 7]
115
+ Initial Block Size 32.0 KB
116
+ Current Block Size 32.0 KB
117
+ Peak Allocated Bytes 0 B
118
+ Overflow Count 0
119
+ [ALLOC_TEMP_Background Job.Worker 15]
120
+ Initial Block Size 32.0 KB
121
+ Current Block Size 32.0 KB
122
+ Peak Allocated Bytes 0 B
123
+ Overflow Count 0
124
+ [ALLOC_TEMP_Job.Worker 1]
125
+ Initial Block Size 256.0 KB
126
+ Current Block Size 256.0 KB
127
+ Peak Allocated Bytes 0 B
128
+ Overflow Count 0
129
+ [ALLOC_TEMP_Loading.PreloadManager]
130
+ Initial Block Size 256.0 KB
131
+ Current Block Size 320.0 KB
132
+ Peak Allocated Bytes 251.6 KB
133
+ Overflow Count 4
134
+ [ALLOC_TEMP_AUDIO_FMOD PulseAudio Mixer]
135
+ Initial Block Size 64.0 KB
136
+ Current Block Size 64.0 KB
137
+ Peak Allocated Bytes 0 B
138
+ Overflow Count 0
139
+ [ALLOC_TEMP_Profiler.Dispatcher]
140
+ Initial Block Size 64.0 KB
141
+ Current Block Size 64.0 KB
142
+ Peak Allocated Bytes 0 B
143
+ Overflow Count 0
144
+ [ALLOC_TEMP_Job.Worker 3]
145
+ Initial Block Size 256.0 KB
146
+ Current Block Size 256.0 KB
147
+ Peak Allocated Bytes 0 B
148
+ Overflow Count 0
149
+ [ALLOC_TEMP_Background Job.Worker 12]
150
+ Initial Block Size 32.0 KB
151
+ Current Block Size 32.0 KB
152
+ Peak Allocated Bytes 0 B
153
+ Overflow Count 0
154
+ [ALLOC_TEMP_AssetGarbageCollectorHelper] x 7
155
+ Initial Block Size 64.0 KB
156
+ Current Block Size 64.0 KB
157
+ Peak Allocated Bytes 0 B
158
+ Overflow Count 0
159
+ [ALLOC_TEMP_Background Job.Worker 5]
160
+ Initial Block Size 32.0 KB
161
+ Current Block Size 32.0 KB
162
+ Peak Allocated Bytes 0 B
163
+ Overflow Count 0
164
+ [ALLOC_TEMP_Background Job.Worker 13]
165
+ Initial Block Size 32.0 KB
166
+ Current Block Size 32.0 KB
167
+ Peak Allocated Bytes 0 B
168
+ Overflow Count 0
169
+ [ALLOC_TEMP_Job.Worker 2]
170
+ Initial Block Size 256.0 KB
171
+ Current Block Size 256.0 KB
172
+ Peak Allocated Bytes 0.8 KB
173
+ Overflow Count 0
174
+ [ALLOC_TEMP_Background Job.Worker 0]
175
+ Initial Block Size 32.0 KB
176
+ Current Block Size 32.0 KB
177
+ Peak Allocated Bytes 0 B
178
+ Overflow Count 0
179
+ [ALLOC_TEMP_Background Job.Worker 4]
180
+ Initial Block Size 32.0 KB
181
+ Current Block Size 32.0 KB
182
+ Peak Allocated Bytes 0 B
183
+ Overflow Count 0
184
+ [ALLOC_TEMP_Job.Worker 6]
185
+ Initial Block Size 256.0 KB
186
+ Current Block Size 256.0 KB
187
+ Peak Allocated Bytes 0 B
188
+ Overflow Count 0
189
+ [ALLOC_TEMP_Job.Worker 0]
190
+ Initial Block Size 256.0 KB
191
+ Current Block Size 256.0 KB
192
+ Peak Allocated Bytes 0 B
193
+ Overflow Count 0
194
+ [ALLOC_TEMP_Job.Worker 5]
195
+ Initial Block Size 256.0 KB
196
+ Current Block Size 256.0 KB
197
+ Peak Allocated Bytes 0 B
198
+ Overflow Count 0
199
+ [ALLOC_TEMP_Background Job.Worker 9]
200
+ Initial Block Size 32.0 KB
201
+ Current Block Size 32.0 KB
202
+ Peak Allocated Bytes 0 B
203
+ Overflow Count 0
204
+ [ALLOC_TEMP_Background Job.Worker 14]
205
+ Initial Block Size 32.0 KB
206
+ Current Block Size 32.0 KB
207
+ Peak Allocated Bytes 0 B
208
+ Overflow Count 0
209
+ [ALLOC_TEMP_EnlightenWorker] x 4
210
+ Initial Block Size 64.0 KB
211
+ Current Block Size 64.0 KB
212
+ Peak Allocated Bytes 0 B
213
+ Overflow Count 0
214
+ [ALLOC_TEMP_Loading.AsyncRead]
215
+ Initial Block Size 64.0 KB
216
+ Current Block Size 64.0 KB
217
+ Peak Allocated Bytes 128 B
218
+ Overflow Count 0
219
+ [ALLOC_MEMORYPROFILER]
220
+ Peak usage frame count: [0.5 MB-1.0 MB]: 299 frames, [1.0 MB-2.0 MB]: 13666 frames
221
+ Requested Block Size 1.0 MB
222
+ Peak Block count 2
223
+ Peak Allocated memory 1.6 MB
224
+ Peak Large allocation bytes 0 B
225
+ [ALLOC_DEFAULT] Dual Thread Allocator
226
+ Peak main deferred allocation count 12318
227
+ [ALLOC_BUCKET]
228
+ Large Block size 4.0 MB
229
+ Used Block count 1
230
+ Peak Allocated bytes 1.7 MB
231
+ [ALLOC_DEFAULT_MAIN]
232
+ Peak usage frame count: [8.0 MB-16.0 MB]: 1 frames, [16.0 MB-32.0 MB]: 13964 frames
233
+ Requested Block Size 16.0 MB
234
+ Peak Block count 3
235
+ Peak Allocated memory 30.5 MB
236
+ Peak Large allocation bytes 0 B
237
+ [ALLOC_DEFAULT_THREAD]
238
+ Peak usage frame count: [16.0 MB-32.0 MB]: 13965 frames
239
+ Requested Block Size 16.0 MB
240
+ Peak Block count 1
241
+ Peak Allocated memory 25.9 MB
242
+ Peak Large allocation bytes 16.0 MB
243
+ [ALLOC_TEMP_JOB_1_FRAME]
244
+ Initial Block Size 2.0 MB
245
+ Used Block Count 1
246
+ Overflow Count (too large) 0
247
+ Overflow Count (full) 0
248
+ [ALLOC_TEMP_JOB_2_FRAMES]
249
+ Initial Block Size 2.0 MB
250
+ Used Block Count 1
251
+ Overflow Count (too large) 0
252
+ Overflow Count (full) 0
253
+ [ALLOC_TEMP_JOB_4_FRAMES (JobTemp)]
254
+ Initial Block Size 2.0 MB
255
+ Used Block Count 2
256
+ Overflow Count (too large) 0
257
+ Overflow Count (full) 0
258
+ [ALLOC_TEMP_JOB_ASYNC (Background)]
259
+ Initial Block Size 1.0 MB
260
+ Used Block Count 3
261
+ Overflow Count (too large) 0
262
+ Overflow Count (full) 0
263
+ [ALLOC_GFX] Dual Thread Allocator
264
+ Peak main deferred allocation count 0
265
+ [ALLOC_BUCKET]
266
+ Large Block size 4.0 MB
267
+ Used Block count 1
268
+ Peak Allocated bytes 1.7 MB
269
+ [ALLOC_GFX_MAIN]
270
+ Peak usage frame count: [32.0 KB-64.0 KB]: 13964 frames, [64.0 KB-128.0 KB]: 1 frames
271
+ Requested Block Size 16.0 MB
272
+ Peak Block count 1
273
+ Peak Allocated memory 67.0 KB
274
+ Peak Large allocation bytes 0 B
275
+ [ALLOC_GFX_THREAD]
276
+ Peak usage frame count: [64.0 KB-128.0 KB]: 13965 frames
277
+ Requested Block Size 16.0 MB
278
+ Peak Block count 1
279
+ Peak Allocated memory 67.7 KB
280
+ Peak Large allocation bytes 0 B
281
+ [ALLOC_CACHEOBJECTS] Dual Thread Allocator
282
+ Peak main deferred allocation count 1
283
+ [ALLOC_BUCKET]
284
+ Large Block size 4.0 MB
285
+ Used Block count 1
286
+ Peak Allocated bytes 1.7 MB
287
+ [ALLOC_CACHEOBJECTS_MAIN]
288
+ Peak usage frame count: [0.5 MB-1.0 MB]: 299 frames, [1.0 MB-2.0 MB]: 13666 frames
289
+ Requested Block Size 4.0 MB
290
+ Peak Block count 1
291
+ Peak Allocated memory 1.4 MB
292
+ Peak Large allocation bytes 0 B
293
+ [ALLOC_CACHEOBJECTS_THREAD]
294
+ Peak usage frame count: [1.0 MB-2.0 MB]: 13964 frames, [2.0 MB-4.0 MB]: 1 frames
295
+ Requested Block Size 4.0 MB
296
+ Peak Block count 1
297
+ Peak Allocated memory 3.9 MB
298
+ Peak Large allocation bytes 0 B
299
+ [ALLOC_TYPETREE] Dual Thread Allocator
300
+ Peak main deferred allocation count 0
301
+ [ALLOC_BUCKET]
302
+ Large Block size 4.0 MB
303
+ Used Block count 1
304
+ Peak Allocated bytes 1.7 MB
305
+ [ALLOC_TYPETREE_MAIN]
306
+ Peak usage frame count: [0-1.0 KB]: 13965 frames
307
+ Requested Block Size 2.0 MB
308
+ Peak Block count 1
309
+ Peak Allocated memory 1.0 KB
310
+ Peak Large allocation bytes 0 B
311
+ [ALLOC_TYPETREE_THREAD]
312
+ Peak usage frame count: [1.0 KB-2.0 KB]: 13965 frames
313
+ Requested Block Size 2.0 MB
314
+ Peak Block count 1
315
+ Peak Allocated memory 1.9 KB
316
+ Peak Large allocation bytes 0 B
317
+ [ALLOC_PROFILER]
318
+ Peak usage frame count: [16.0 KB-32.0 KB]: 9 frames, [32.0 KB-64.0 KB]: 13956 frames
319
+ Requested Block Size 16.0 MB
320
+ Peak Block count 1
321
+ Peak Allocated memory 32.2 KB
322
+ Peak Large allocation bytes 0 B
323
+ [ALLOC_PROFILER_BUCKET]
324
+ Large Block size 4.0 MB
325
+ Used Block count 1
326
+ Peak Allocated bytes 396 B
327
+ ##utp:{"type":"MemoryLeaks","version":2,"phase":"Immediate","time":1690476908307,"processId":155352,"allocatedMemory":1976253,"memoryLabels":[{"Default":9033},{"Permanent":1264},{"NewDelete":12801},{"Thread":34628},{"Manager":13967},{"VertexData":12},{"Geometry":280},{"Texture":16},{"Shader":69173},{"Material":24},{"GfxDevice":35248},{"Animation":304},{"Audio":3976},{"Physics":288},{"Serialization":216},{"Input":9176},{"JobScheduler":200},{"Mono":40},{"ScriptingNativeRuntime":216},{"BaseObject":1609212},{"Resource":592},{"Renderer":1936},{"Transform":48},{"File":800},{"WebCam":24},{"Culling":40},{"Terrain":953},{"Wind":24},{"String":3587},{"DynamicArray":30868},{"HashMap":7680},{"Utility":3808},{"PoolAlloc":1160},{"TypeTree":1792},{"ScriptManager":80},{"RuntimeInitializeOnLoadManager":72},{"SpriteAtlas":112},{"GI":3272},{"Unet":16},{"Director":7760},{"WebRequest":720},{"VR":45473},{"SceneManager":424},{"Video":32},{"LazyScriptCache":32},{"NativeArray":384},{"Camera":25},{"Secure":1},{"SerializationCache":624},{"APIUpdating":5872},{"Subsystems":384},{"VirtualTexturing":57552},{"AssetReference":32}]}
run_logs/timers.json ADDED
@@ -0,0 +1,398 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "root",
3
+ "gauges": {
4
+ "Pyramids.Policy.Entropy.mean": {
5
+ "value": 0.5354316830635071,
6
+ "min": 0.5354316830635071,
7
+ "max": 1.4879765510559082,
8
+ "count": 24
9
+ },
10
+ "Pyramids.Policy.Entropy.sum": {
11
+ "value": 16071.517578125,
12
+ "min": 16071.517578125,
13
+ "max": 45139.2578125,
14
+ "count": 24
15
+ },
16
+ "Pyramids.Step.mean": {
17
+ "value": 719967.0,
18
+ "min": 29965.0,
19
+ "max": 719967.0,
20
+ "count": 24
21
+ },
22
+ "Pyramids.Step.sum": {
23
+ "value": 719967.0,
24
+ "min": 29965.0,
25
+ "max": 719967.0,
26
+ "count": 24
27
+ },
28
+ "Pyramids.Policy.ExtrinsicValueEstimate.mean": {
29
+ "value": 0.46009257435798645,
30
+ "min": -0.1223444864153862,
31
+ "max": 0.46009257435798645,
32
+ "count": 24
33
+ },
34
+ "Pyramids.Policy.ExtrinsicValueEstimate.sum": {
35
+ "value": 124.2249984741211,
36
+ "min": -29.11798858642578,
37
+ "max": 124.2249984741211,
38
+ "count": 24
39
+ },
40
+ "Pyramids.Policy.RndValueEstimate.mean": {
41
+ "value": 0.021058104932308197,
42
+ "min": -0.012443069368600845,
43
+ "max": 0.4489564597606659,
44
+ "count": 24
45
+ },
46
+ "Pyramids.Policy.RndValueEstimate.sum": {
47
+ "value": 5.685688495635986,
48
+ "min": -3.2351980209350586,
49
+ "max": 106.85163879394531,
50
+ "count": 24
51
+ },
52
+ "Pyramids.Losses.PolicyLoss.mean": {
53
+ "value": 0.07148070406540119,
54
+ "min": 0.06517403315713939,
55
+ "max": 0.07585844562453523,
56
+ "count": 24
57
+ },
58
+ "Pyramids.Losses.PolicyLoss.sum": {
59
+ "value": 1.0007298569156167,
60
+ "min": 0.5154042914586715,
61
+ "max": 1.0817758405270674,
62
+ "count": 24
63
+ },
64
+ "Pyramids.Losses.ValueLoss.mean": {
65
+ "value": 0.01528131502328463,
66
+ "min": 0.0007489936297205103,
67
+ "max": 0.01528131502328463,
68
+ "count": 24
69
+ },
70
+ "Pyramids.Losses.ValueLoss.sum": {
71
+ "value": 0.21393841032598482,
72
+ "min": 0.008987923556646123,
73
+ "max": 0.21393841032598482,
74
+ "count": 24
75
+ },
76
+ "Pyramids.Policy.LearningRate.mean": {
77
+ "value": 0.00022950117349961665,
78
+ "min": 0.00022950117349961665,
79
+ "max": 0.0002984126148148429,
80
+ "count": 24
81
+ },
82
+ "Pyramids.Policy.LearningRate.sum": {
83
+ "value": 0.003213016428994633,
84
+ "min": 0.0020888883037039003,
85
+ "max": 0.0038853469048843988,
86
+ "count": 24
87
+ },
88
+ "Pyramids.Policy.Epsilon.mean": {
89
+ "value": 0.17650038333333332,
90
+ "min": 0.17650038333333332,
91
+ "max": 0.19947087142857142,
92
+ "count": 24
93
+ },
94
+ "Pyramids.Policy.Epsilon.sum": {
95
+ "value": 2.4710053666666663,
96
+ "min": 1.3962961,
97
+ "max": 2.7674782000000007,
98
+ "count": 24
99
+ },
100
+ "Pyramids.Policy.Beta.mean": {
101
+ "value": 0.007652388295,
102
+ "min": 0.007652388295,
103
+ "max": 0.009947140055714286,
104
+ "count": 24
105
+ },
106
+ "Pyramids.Policy.Beta.sum": {
107
+ "value": 0.10713343613,
108
+ "min": 0.06962998039,
109
+ "max": 0.12952204843999998,
110
+ "count": 24
111
+ },
112
+ "Pyramids.Losses.RNDLoss.mean": {
113
+ "value": 0.010132000781595707,
114
+ "min": 0.010132000781595707,
115
+ "max": 0.31084755063056946,
116
+ "count": 24
117
+ },
118
+ "Pyramids.Losses.RNDLoss.sum": {
119
+ "value": 0.14184801280498505,
120
+ "min": 0.14184801280498505,
121
+ "max": 2.1759328842163086,
122
+ "count": 24
123
+ },
124
+ "Pyramids.Environment.EpisodeLength.mean": {
125
+ "value": 421.72,
126
+ "min": 421.72,
127
+ "max": 999.0,
128
+ "count": 24
129
+ },
130
+ "Pyramids.Environment.EpisodeLength.sum": {
131
+ "value": 31629.0,
132
+ "min": 16636.0,
133
+ "max": 32708.0,
134
+ "count": 24
135
+ },
136
+ "Pyramids.Environment.CumulativeReward.mean": {
137
+ "value": 1.5249386477470397,
138
+ "min": -0.999987552408129,
139
+ "max": 1.5249386477470397,
140
+ "count": 24
141
+ },
142
+ "Pyramids.Environment.CumulativeReward.sum": {
143
+ "value": 114.37039858102798,
144
+ "min": -31.999601677060127,
145
+ "max": 114.37039858102798,
146
+ "count": 24
147
+ },
148
+ "Pyramids.Policy.ExtrinsicReward.mean": {
149
+ "value": 1.5249386477470397,
150
+ "min": -0.999987552408129,
151
+ "max": 1.5249386477470397,
152
+ "count": 24
153
+ },
154
+ "Pyramids.Policy.ExtrinsicReward.sum": {
155
+ "value": 114.37039858102798,
156
+ "min": -31.999601677060127,
157
+ "max": 114.37039858102798,
158
+ "count": 24
159
+ },
160
+ "Pyramids.Policy.RndReward.mean": {
161
+ "value": 0.04477264853582407,
162
+ "min": 0.04477264853582407,
163
+ "max": 5.834203359177884,
164
+ "count": 24
165
+ },
166
+ "Pyramids.Policy.RndReward.sum": {
167
+ "value": 3.3579486401868053,
168
+ "min": 3.200345461082179,
169
+ "max": 99.18145710602403,
170
+ "count": 24
171
+ },
172
+ "Pyramids.IsTraining.mean": {
173
+ "value": 1.0,
174
+ "min": 1.0,
175
+ "max": 1.0,
176
+ "count": 24
177
+ },
178
+ "Pyramids.IsTraining.sum": {
179
+ "value": 1.0,
180
+ "min": 1.0,
181
+ "max": 1.0,
182
+ "count": 24
183
+ }
184
+ },
185
+ "metadata": {
186
+ "timer_format_version": "0.1.0",
187
+ "start_time_seconds": "1690474902",
188
+ "python_version": "3.8.16 (default, Jun 12 2023, 18:09:05) \n[GCC 11.2.0]",
189
+ "command_line_arguments": "/global/home/users/lizhen/scratch/miniconda3/envs/huggingface/bin/mlagents-learn ../ml-agents/config/ppo/PyramidsRND.yaml --env=./training-envs-executables/linux/Pyramids/Pyramids --run-id=Pyramids Training --no-graphics",
190
+ "mlagents_version": "0.31.0.dev0",
191
+ "mlagents_envs_version": "0.31.0.dev0",
192
+ "communication_protocol_version": "1.5.0",
193
+ "pytorch_version": "1.8.1+cu102",
194
+ "numpy_version": "1.21.2",
195
+ "end_time_seconds": "1690476910"
196
+ },
197
+ "total": 2007.4402644950023,
198
+ "count": 1,
199
+ "self": 0.019585551985073835,
200
+ "children": {
201
+ "run_training.setup": {
202
+ "total": 0.0628495890123304,
203
+ "count": 1,
204
+ "self": 0.0628495890123304
205
+ },
206
+ "TrainerController.start_learning": {
207
+ "total": 2007.357829354005,
208
+ "count": 1,
209
+ "self": 0.9330457296455279,
210
+ "children": {
211
+ "TrainerController._reset_env": {
212
+ "total": 17.90129806101322,
213
+ "count": 1,
214
+ "self": 17.90129806101322
215
+ },
216
+ "TrainerController.advance": {
217
+ "total": 1986.292932489363,
218
+ "count": 47287,
219
+ "self": 0.8639501665020362,
220
+ "children": {
221
+ "env_step": {
222
+ "total": 1415.4523650843475,
223
+ "count": 47287,
224
+ "self": 1341.8168204505346,
225
+ "children": {
226
+ "SubprocessEnvManager._take_step": {
227
+ "total": 73.07705894342507,
228
+ "count": 47287,
229
+ "self": 3.1242650105268694,
230
+ "children": {
231
+ "TorchPolicy.evaluate": {
232
+ "total": 69.9527939328982,
233
+ "count": 46550,
234
+ "self": 69.9527939328982
235
+ }
236
+ }
237
+ },
238
+ "workers": {
239
+ "total": 0.5584856903878972,
240
+ "count": 47286,
241
+ "self": 0.0,
242
+ "children": {
243
+ "worker_root": {
244
+ "total": 2001.7802101577108,
245
+ "count": 47286,
246
+ "is_parallel": true,
247
+ "self": 753.0852439897717,
248
+ "children": {
249
+ "run_training.setup": {
250
+ "total": 0.0,
251
+ "count": 0,
252
+ "is_parallel": true,
253
+ "self": 0.0,
254
+ "children": {
255
+ "steps_from_proto": {
256
+ "total": 0.013564358989242464,
257
+ "count": 1,
258
+ "is_parallel": true,
259
+ "self": 0.002854533988283947,
260
+ "children": {
261
+ "_process_rank_one_or_two_observation": {
262
+ "total": 0.010709825000958517,
263
+ "count": 8,
264
+ "is_parallel": true,
265
+ "self": 0.010709825000958517
266
+ }
267
+ }
268
+ },
269
+ "UnityEnvironment.step": {
270
+ "total": 0.06518930001766421,
271
+ "count": 1,
272
+ "is_parallel": true,
273
+ "self": 0.0010782770114019513,
274
+ "children": {
275
+ "UnityEnvironment._generate_step_input": {
276
+ "total": 0.0008892060141079128,
277
+ "count": 1,
278
+ "is_parallel": true,
279
+ "self": 0.0008892060141079128
280
+ },
281
+ "communicator.exchange": {
282
+ "total": 0.05995043198345229,
283
+ "count": 1,
284
+ "is_parallel": true,
285
+ "self": 0.05995043198345229
286
+ },
287
+ "steps_from_proto": {
288
+ "total": 0.0032713850087020546,
289
+ "count": 1,
290
+ "is_parallel": true,
291
+ "self": 0.0007223400461953133,
292
+ "children": {
293
+ "_process_rank_one_or_two_observation": {
294
+ "total": 0.0025490449625067413,
295
+ "count": 8,
296
+ "is_parallel": true,
297
+ "self": 0.0025490449625067413
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ },
305
+ "UnityEnvironment.step": {
306
+ "total": 1248.6949661679391,
307
+ "count": 47285,
308
+ "is_parallel": true,
309
+ "self": 44.633973296004115,
310
+ "children": {
311
+ "UnityEnvironment._generate_step_input": {
312
+ "total": 33.083338855649345,
313
+ "count": 47285,
314
+ "is_parallel": true,
315
+ "self": 33.083338855649345
316
+ },
317
+ "communicator.exchange": {
318
+ "total": 1047.8523495950503,
319
+ "count": 47285,
320
+ "is_parallel": true,
321
+ "self": 1047.8523495950503
322
+ },
323
+ "steps_from_proto": {
324
+ "total": 123.12530442123534,
325
+ "count": 47285,
326
+ "is_parallel": true,
327
+ "self": 26.948400199238677,
328
+ "children": {
329
+ "_process_rank_one_or_two_observation": {
330
+ "total": 96.17690422199667,
331
+ "count": 378280,
332
+ "is_parallel": true,
333
+ "self": 96.17690422199667
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }
343
+ }
344
+ },
345
+ "trainer_advance": {
346
+ "total": 569.9766172385134,
347
+ "count": 47286,
348
+ "self": 1.657787573582027,
349
+ "children": {
350
+ "process_trajectory": {
351
+ "total": 71.81227012249292,
352
+ "count": 47286,
353
+ "self": 71.64519006150658,
354
+ "children": {
355
+ "RLTrainer._checkpoint": {
356
+ "total": 0.16708006098633632,
357
+ "count": 1,
358
+ "self": 0.16708006098633632
359
+ }
360
+ }
361
+ },
362
+ "_update_policy": {
363
+ "total": 496.5065595424385,
364
+ "count": 330,
365
+ "self": 251.4980613142252,
366
+ "children": {
367
+ "TorchPPOOptimizer.update": {
368
+ "total": 245.00849822821328,
369
+ "count": 16938,
370
+ "self": 245.00849822821328
371
+ }
372
+ }
373
+ }
374
+ }
375
+ }
376
+ }
377
+ },
378
+ "trainer_threads": {
379
+ "total": 3.762979758903384e-06,
380
+ "count": 1,
381
+ "self": 3.762979758903384e-06
382
+ },
383
+ "TrainerController._save_models": {
384
+ "total": 2.230549311003415,
385
+ "count": 1,
386
+ "self": 0.017922976025147364,
387
+ "children": {
388
+ "RLTrainer._checkpoint": {
389
+ "total": 2.2126263349782676,
390
+ "count": 1,
391
+ "self": 2.2126263349782676
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
run_logs/training_status.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Pyramids": {
3
+ "checkpoints": [
4
+ {
5
+ "steps": 499961,
6
+ "file_path": "results/Pyramids Training/Pyramids/Pyramids-499961.onnx",
7
+ "reward": 1.906999945640564,
8
+ "creation_time": 1690476234.520804,
9
+ "auxillary_file_paths": [
10
+ "results/Pyramids Training/Pyramids/Pyramids-499961.pt"
11
+ ]
12
+ },
13
+ {
14
+ "steps": 743574,
15
+ "file_path": "results/Pyramids Training/Pyramids/Pyramids-743574.onnx",
16
+ "reward": 1.1043599545955658,
17
+ "creation_time": 1690476910.020036,
18
+ "auxillary_file_paths": [
19
+ "results/Pyramids Training/Pyramids/Pyramids-743574.pt"
20
+ ]
21
+ }
22
+ ],
23
+ "final_checkpoint": {
24
+ "steps": 743574,
25
+ "file_path": "results/Pyramids Training/Pyramids.onnx",
26
+ "reward": 1.1043599545955658,
27
+ "creation_time": 1690476910.020036,
28
+ "auxillary_file_paths": [
29
+ "results/Pyramids Training/Pyramids/Pyramids-743574.pt"
30
+ ]
31
+ }
32
+ },
33
+ "metadata": {
34
+ "stats_format_version": "0.3.0",
35
+ "mlagents_version": "0.31.0.dev0",
36
+ "torch_version": "1.8.1+cu102"
37
+ }
38
+ }