bjarlestam
commited on
Commit
·
78a6f85
1
Parent(s):
c601067
7 million steps
Browse files- SoccerTwos.onnx +1 -1
- SoccerTwos/{SoccerTwos-3999978.onnx → SoccerTwos-7021752.onnx} +1 -1
- SoccerTwos/{SoccerTwos-3999978.pt → SoccerTwos-7021752.pt} +1 -1
- SoccerTwos/checkpoint.pt +1 -1
- SoccerTwos/events.out.tfevents.1683489404.CLM-FVFF611QQ05P.local.19018.0 +3 -0
- config.json +1 -1
- configuration.yaml +1 -1
- run_logs/Player-0.log +16 -16
- run_logs/timers.json +171 -171
- run_logs/training_status.json +13 -13
SoccerTwos.onnx
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 2815689
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8350e4d18979f950861a009550af4c3b015bd79ac0ed3043fecac6d074566f4e
|
3 |
size 2815689
|
SoccerTwos/{SoccerTwos-3999978.onnx → SoccerTwos-7021752.onnx}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 2815689
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:8350e4d18979f950861a009550af4c3b015bd79ac0ed3043fecac6d074566f4e
|
3 |
size 2815689
|
SoccerTwos/{SoccerTwos-3999978.pt → SoccerTwos-7021752.pt}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 34728689
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:490f419786244d154ec9fc97f7e0b3734afdfb764a70e9af573cb87a0a36ed1c
|
3 |
size 34728689
|
SoccerTwos/checkpoint.pt
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
size 34728689
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:490f419786244d154ec9fc97f7e0b3734afdfb764a70e9af573cb87a0a36ed1c
|
3 |
size 34728689
|
SoccerTwos/events.out.tfevents.1683489404.CLM-FVFF611QQ05P.local.19018.0
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:65113e1790b6696cfdbfa62d0c3bdb4cdc606bb81853af2201a541b69aace53e
|
3 |
+
size 484026
|
config.json
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"default_settings": null, "behaviors": {"SoccerTwos": {"trainer_type": "poca", "hyperparameters": {"batch_size": 2048, "buffer_size": 20480, "learning_rate": 0.
|
|
|
1 |
+
{"default_settings": null, "behaviors": {"SoccerTwos": {"trainer_type": "poca", "hyperparameters": {"batch_size": 2048, "buffer_size": 20480, "learning_rate": 0.0002, "beta": 0.01, "epsilon": 0.25, "lambd": 0.95, "num_epoch": 3, "learning_rate_schedule": "constant", "beta_schedule": "constant", "epsilon_schedule": "constant"}, "checkpoint_interval": 2000000, "network_settings": {"normalize": false, "hidden_units": 512, "num_layers": 3, "vis_encode_type": "simple", "memory": null, "goal_conditioning_type": "hyper", "deterministic": false}, "reward_signals": {"extrinsic": {"gamma": 0.973, "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}}}, "init_path": null, "keep_checkpoints": 5, "even_checkpoints": false, "max_steps": 10000000, "time_horizon": 1000, "summary_freq": 10000, "threaded": false, "self_play": {"save_steps": 200000, "team_change": 200000, "swap_steps": 2000, "window": 50, "play_against_latest_model_ratio": 0.5, "initial_elo": 1200.0}, "behavioral_cloning": null}}, "env_settings": {"env_path": "./training-envs-executables/SoccerTwos/SoccerTwos.app", "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": "SoccerTwos", "initialize_from": null, "load_model": false, "resume": true, "force": false, "train_model": false, "inference": false, "results_dir": "results"}, "torch_settings": {"device": null}, "debug": false}
|
configuration.yaml
CHANGED
@@ -5,7 +5,7 @@ behaviors:
|
|
5 |
hyperparameters:
|
6 |
batch_size: 2048
|
7 |
buffer_size: 20480
|
8 |
-
learning_rate: 0.
|
9 |
beta: 0.01
|
10 |
epsilon: 0.25
|
11 |
lambd: 0.95
|
|
|
5 |
hyperparameters:
|
6 |
batch_size: 2048
|
7 |
buffer_size: 20480
|
8 |
+
learning_rate: 0.0002
|
9 |
beta: 0.01
|
10 |
epsilon: 0.25
|
11 |
lambd: 0.95
|
run_logs/Player-0.log
CHANGED
@@ -10,7 +10,7 @@ NullGfxDevice:
|
|
10 |
Renderer: Null Device
|
11 |
Vendor: Unity Technologies
|
12 |
Begin MonoManager ReloadAssembly
|
13 |
-
- Completed reload, in 0.
|
14 |
ERROR: Shader Sprites/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
15 |
ERROR: Shader Sprites/Mask shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
16 |
ERROR: Shader Legacy Shaders/VertexLit shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
@@ -35,16 +35,16 @@ ERROR: Shader Standard shader is not supported on this GPU (none of subshaders/f
|
|
35 |
WARNING: Shader Unsupported: 'Standard' - All subshaders removed
|
36 |
WARNING: Shader Did you use #pragma only_renderers and omit this platform?
|
37 |
WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
|
38 |
-
UnloadTime: 1.
|
39 |
Registered Communicator in Agent.
|
40 |
ERROR: Shader UI/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
41 |
-
Thread
|
42 |
Setting up 4 worker threads for Enlighten.
|
43 |
Memory Statistics:
|
44 |
[ALLOC_TEMP_TLS] TLS Allocator
|
45 |
StackAllocators :
|
46 |
[ALLOC_TEMP_MAIN]
|
47 |
-
Peak usage frame count: [8.0 KB-16.0 KB]:
|
48 |
Initial Block Size 4.0 MB
|
49 |
Current Block Size 4.0 MB
|
50 |
Peak Allocated Bytes 2.1 MB
|
@@ -72,7 +72,7 @@ Memory Statistics:
|
|
72 |
[ALLOC_TEMP_Job.Worker 0]
|
73 |
Initial Block Size 256.0 KB
|
74 |
Current Block Size 256.0 KB
|
75 |
-
Peak Allocated Bytes 0
|
76 |
Overflow Count 0
|
77 |
[ALLOC_TEMP_Background Job.Worker 10]
|
78 |
Initial Block Size 32.0 KB
|
@@ -102,7 +102,7 @@ Memory Statistics:
|
|
102 |
[ALLOC_TEMP_Job.Worker 4]
|
103 |
Initial Block Size 256.0 KB
|
104 |
Current Block Size 256.0 KB
|
105 |
-
Peak Allocated Bytes 0
|
106 |
Overflow Count 0
|
107 |
[ALLOC_TEMP_Job.Worker 3]
|
108 |
Initial Block Size 256.0 KB
|
@@ -201,16 +201,16 @@ Memory Statistics:
|
|
201 |
Used Block count 1
|
202 |
Peak Allocated bytes 1.0 MB
|
203 |
[ALLOC_DEFAULT_MAIN]
|
204 |
-
Peak usage frame count: [4.0 MB-8.0 MB]:
|
205 |
Requested Block Size 16.0 MB
|
206 |
Peak Block count 1
|
207 |
-
Peak Allocated memory
|
208 |
Peak Large allocation bytes 0 B
|
209 |
[ALLOC_DEFAULT_THREAD]
|
210 |
-
Peak usage frame count: [16.0 MB-32.0 MB]:
|
211 |
Requested Block Size 16.0 MB
|
212 |
Peak Block count 1
|
213 |
-
Peak Allocated memory 17.
|
214 |
Peak Large allocation bytes 16.0 MB
|
215 |
[ALLOC_TEMP_JOB_1_FRAME]
|
216 |
Initial Block Size 2.0 MB
|
@@ -239,13 +239,13 @@ Memory Statistics:
|
|
239 |
Used Block count 1
|
240 |
Peak Allocated bytes 1.0 MB
|
241 |
[ALLOC_GFX_MAIN]
|
242 |
-
Peak usage frame count: [32.0 KB-64.0 KB]:
|
243 |
Requested Block Size 16.0 MB
|
244 |
Peak Block count 1
|
245 |
Peak Allocated memory 65.6 KB
|
246 |
Peak Large allocation bytes 0 B
|
247 |
[ALLOC_GFX_THREAD]
|
248 |
-
Peak usage frame count: [128.0 KB-256.0 KB]:
|
249 |
Requested Block Size 16.0 MB
|
250 |
Peak Block count 1
|
251 |
Peak Allocated memory 173.5 KB
|
@@ -257,13 +257,13 @@ Memory Statistics:
|
|
257 |
Used Block count 1
|
258 |
Peak Allocated bytes 1.0 MB
|
259 |
[ALLOC_CACHEOBJECTS_MAIN]
|
260 |
-
Peak usage frame count: [0.5 MB-1.0 MB]:
|
261 |
Requested Block Size 4.0 MB
|
262 |
Peak Block count 1
|
263 |
Peak Allocated memory 0.6 MB
|
264 |
Peak Large allocation bytes 0 B
|
265 |
[ALLOC_CACHEOBJECTS_THREAD]
|
266 |
-
Peak usage frame count: [0.5 MB-1.0 MB]:
|
267 |
Requested Block Size 4.0 MB
|
268 |
Peak Block count 1
|
269 |
Peak Allocated memory 3.4 MB
|
@@ -275,13 +275,13 @@ Memory Statistics:
|
|
275 |
Used Block count 1
|
276 |
Peak Allocated bytes 1.0 MB
|
277 |
[ALLOC_TYPETREE_MAIN]
|
278 |
-
Peak usage frame count: [0-1.0 KB]:
|
279 |
Requested Block Size 2.0 MB
|
280 |
Peak Block count 1
|
281 |
Peak Allocated memory 1.0 KB
|
282 |
Peak Large allocation bytes 0 B
|
283 |
[ALLOC_TYPETREE_THREAD]
|
284 |
-
Peak usage frame count: [1.0 KB-2.0 KB]:
|
285 |
Requested Block Size 2.0 MB
|
286 |
Peak Block count 1
|
287 |
Peak Allocated memory 2.2 KB
|
|
|
10 |
Renderer: Null Device
|
11 |
Vendor: Unity Technologies
|
12 |
Begin MonoManager ReloadAssembly
|
13 |
+
- Completed reload, in 0.079 seconds
|
14 |
ERROR: Shader Sprites/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
15 |
ERROR: Shader Sprites/Mask shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
16 |
ERROR: Shader Legacy Shaders/VertexLit shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
|
|
35 |
WARNING: Shader Unsupported: 'Standard' - All subshaders removed
|
36 |
WARNING: Shader Did you use #pragma only_renderers and omit this platform?
|
37 |
WARNING: Shader If subshaders removal was intentional, you may have forgotten turning Fallback off?
|
38 |
+
UnloadTime: 1.122042 ms
|
39 |
Registered Communicator in Agent.
|
40 |
ERROR: Shader UI/Default shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
|
41 |
+
Thread 0x16c7e7000 may have been prematurely finalized
|
42 |
Setting up 4 worker threads for Enlighten.
|
43 |
Memory Statistics:
|
44 |
[ALLOC_TEMP_TLS] TLS Allocator
|
45 |
StackAllocators :
|
46 |
[ALLOC_TEMP_MAIN]
|
47 |
+
Peak usage frame count: [8.0 KB-16.0 KB]: 8797 frames, [2.0 MB-4.0 MB]: 1 frames
|
48 |
Initial Block Size 4.0 MB
|
49 |
Current Block Size 4.0 MB
|
50 |
Peak Allocated Bytes 2.1 MB
|
|
|
72 |
[ALLOC_TEMP_Job.Worker 0]
|
73 |
Initial Block Size 256.0 KB
|
74 |
Current Block Size 256.0 KB
|
75 |
+
Peak Allocated Bytes 0 B
|
76 |
Overflow Count 0
|
77 |
[ALLOC_TEMP_Background Job.Worker 10]
|
78 |
Initial Block Size 32.0 KB
|
|
|
102 |
[ALLOC_TEMP_Job.Worker 4]
|
103 |
Initial Block Size 256.0 KB
|
104 |
Current Block Size 256.0 KB
|
105 |
+
Peak Allocated Bytes 0.7 KB
|
106 |
Overflow Count 0
|
107 |
[ALLOC_TEMP_Job.Worker 3]
|
108 |
Initial Block Size 256.0 KB
|
|
|
201 |
Used Block count 1
|
202 |
Peak Allocated bytes 1.0 MB
|
203 |
[ALLOC_DEFAULT_MAIN]
|
204 |
+
Peak usage frame count: [4.0 MB-8.0 MB]: 8798 frames
|
205 |
Requested Block Size 16.0 MB
|
206 |
Peak Block count 1
|
207 |
+
Peak Allocated memory 4.8 MB
|
208 |
Peak Large allocation bytes 0 B
|
209 |
[ALLOC_DEFAULT_THREAD]
|
210 |
+
Peak usage frame count: [16.0 MB-32.0 MB]: 8798 frames
|
211 |
Requested Block Size 16.0 MB
|
212 |
Peak Block count 1
|
213 |
+
Peak Allocated memory 17.5 MB
|
214 |
Peak Large allocation bytes 16.0 MB
|
215 |
[ALLOC_TEMP_JOB_1_FRAME]
|
216 |
Initial Block Size 2.0 MB
|
|
|
239 |
Used Block count 1
|
240 |
Peak Allocated bytes 1.0 MB
|
241 |
[ALLOC_GFX_MAIN]
|
242 |
+
Peak usage frame count: [32.0 KB-64.0 KB]: 8797 frames, [64.0 KB-128.0 KB]: 1 frames
|
243 |
Requested Block Size 16.0 MB
|
244 |
Peak Block count 1
|
245 |
Peak Allocated memory 65.6 KB
|
246 |
Peak Large allocation bytes 0 B
|
247 |
[ALLOC_GFX_THREAD]
|
248 |
+
Peak usage frame count: [128.0 KB-256.0 KB]: 8798 frames
|
249 |
Requested Block Size 16.0 MB
|
250 |
Peak Block count 1
|
251 |
Peak Allocated memory 173.5 KB
|
|
|
257 |
Used Block count 1
|
258 |
Peak Allocated bytes 1.0 MB
|
259 |
[ALLOC_CACHEOBJECTS_MAIN]
|
260 |
+
Peak usage frame count: [0.5 MB-1.0 MB]: 8798 frames
|
261 |
Requested Block Size 4.0 MB
|
262 |
Peak Block count 1
|
263 |
Peak Allocated memory 0.6 MB
|
264 |
Peak Large allocation bytes 0 B
|
265 |
[ALLOC_CACHEOBJECTS_THREAD]
|
266 |
+
Peak usage frame count: [0.5 MB-1.0 MB]: 8797 frames, [2.0 MB-4.0 MB]: 1 frames
|
267 |
Requested Block Size 4.0 MB
|
268 |
Peak Block count 1
|
269 |
Peak Allocated memory 3.4 MB
|
|
|
275 |
Used Block count 1
|
276 |
Peak Allocated bytes 1.0 MB
|
277 |
[ALLOC_TYPETREE_MAIN]
|
278 |
+
Peak usage frame count: [0-1.0 KB]: 8798 frames
|
279 |
Requested Block Size 2.0 MB
|
280 |
Peak Block count 1
|
281 |
Peak Allocated memory 1.0 KB
|
282 |
Peak Large allocation bytes 0 B
|
283 |
[ALLOC_TYPETREE_THREAD]
|
284 |
+
Peak usage frame count: [1.0 KB-2.0 KB]: 8797 frames, [2.0 KB-4.0 KB]: 1 frames
|
285 |
Requested Block Size 2.0 MB
|
286 |
Peak Block count 1
|
287 |
Peak Allocated memory 2.2 KB
|
run_logs/timers.json
CHANGED
@@ -2,201 +2,201 @@
|
|
2 |
"name": "root",
|
3 |
"gauges": {
|
4 |
"SoccerTwos.Policy.Entropy.mean": {
|
5 |
-
"value": 2.
|
6 |
-
"min": 2.
|
7 |
-
"max": 2.
|
8 |
-
"count":
|
9 |
},
|
10 |
"SoccerTwos.Policy.Entropy.sum": {
|
11 |
-
"value":
|
12 |
-
"min":
|
13 |
-
"max":
|
14 |
-
"count":
|
15 |
},
|
16 |
"SoccerTwos.Environment.EpisodeLength.mean": {
|
17 |
-
"value":
|
18 |
-
"min":
|
19 |
-
"max":
|
20 |
-
"count":
|
21 |
},
|
22 |
"SoccerTwos.Environment.EpisodeLength.sum": {
|
23 |
-
"value":
|
24 |
-
"min":
|
25 |
-
"max":
|
26 |
-
"count":
|
27 |
},
|
28 |
"SoccerTwos.Self-play.ELO.mean": {
|
29 |
-
"value":
|
30 |
-
"min":
|
31 |
-
"max":
|
32 |
-
"count":
|
33 |
},
|
34 |
"SoccerTwos.Self-play.ELO.sum": {
|
35 |
-
"value":
|
36 |
-
"min":
|
37 |
-
"max":
|
38 |
-
"count":
|
39 |
},
|
40 |
"SoccerTwos.Step.mean": {
|
41 |
-
"value":
|
42 |
-
"min":
|
43 |
-
"max":
|
44 |
-
"count":
|
45 |
},
|
46 |
"SoccerTwos.Step.sum": {
|
47 |
-
"value":
|
48 |
-
"min":
|
49 |
-
"max":
|
50 |
-
"count":
|
51 |
},
|
52 |
"SoccerTwos.Policy.ExtrinsicBaselineEstimate.mean": {
|
53 |
-
"value": 0.
|
54 |
-
"min": -0.
|
55 |
-
"max": 0.
|
56 |
-
"count":
|
57 |
},
|
58 |
"SoccerTwos.Policy.ExtrinsicBaselineEstimate.sum": {
|
59 |
-
"value":
|
60 |
-
"min": -
|
61 |
-
"max":
|
62 |
-
"count":
|
63 |
},
|
64 |
"SoccerTwos.Policy.ExtrinsicValueEstimate.mean": {
|
65 |
-
"value": 0.
|
66 |
-
"min": -0.
|
67 |
-
"max": 0.
|
68 |
-
"count":
|
69 |
},
|
70 |
"SoccerTwos.Policy.ExtrinsicValueEstimate.sum": {
|
71 |
-
"value":
|
72 |
-
"min": -
|
73 |
-
"max":
|
74 |
-
"count":
|
75 |
},
|
76 |
"SoccerTwos.Environment.CumulativeReward.mean": {
|
77 |
"value": 0.0,
|
78 |
"min": 0.0,
|
79 |
"max": 0.0,
|
80 |
-
"count":
|
81 |
},
|
82 |
"SoccerTwos.Environment.CumulativeReward.sum": {
|
83 |
"value": 0.0,
|
84 |
"min": 0.0,
|
85 |
"max": 0.0,
|
86 |
-
"count":
|
87 |
},
|
88 |
"SoccerTwos.Policy.ExtrinsicReward.mean": {
|
89 |
-
"value": 0.
|
90 |
-
"min": -0.
|
91 |
-
"max": 0.
|
92 |
-
"count":
|
93 |
},
|
94 |
"SoccerTwos.Policy.ExtrinsicReward.sum": {
|
95 |
-
"value":
|
96 |
-
"min": -
|
97 |
-
"max":
|
98 |
-
"count":
|
99 |
},
|
100 |
"SoccerTwos.Environment.GroupCumulativeReward.mean": {
|
101 |
-
"value": 0.
|
102 |
-
"min": -0.
|
103 |
-
"max": 0.
|
104 |
-
"count":
|
105 |
},
|
106 |
"SoccerTwos.Environment.GroupCumulativeReward.sum": {
|
107 |
-
"value":
|
108 |
-
"min": -
|
109 |
-
"max":
|
110 |
-
"count":
|
111 |
},
|
112 |
"SoccerTwos.IsTraining.mean": {
|
113 |
"value": 1.0,
|
114 |
"min": 1.0,
|
115 |
"max": 1.0,
|
116 |
-
"count":
|
117 |
},
|
118 |
"SoccerTwos.IsTraining.sum": {
|
119 |
"value": 1.0,
|
120 |
"min": 1.0,
|
121 |
"max": 1.0,
|
122 |
-
"count":
|
123 |
},
|
124 |
"SoccerTwos.Losses.PolicyLoss.mean": {
|
125 |
-
"value": 0.
|
126 |
-
"min": 0.
|
127 |
-
"max": 0.
|
128 |
-
"count":
|
129 |
},
|
130 |
"SoccerTwos.Losses.PolicyLoss.sum": {
|
131 |
-
"value": 0.
|
132 |
-
"min": 0.
|
133 |
-
"max": 0.
|
134 |
-
"count":
|
135 |
},
|
136 |
"SoccerTwos.Losses.ValueLoss.mean": {
|
137 |
-
"value": 0.
|
138 |
-
"min": 0.
|
139 |
-
"max": 0.
|
140 |
-
"count":
|
141 |
},
|
142 |
"SoccerTwos.Losses.ValueLoss.sum": {
|
143 |
-
"value": 0.
|
144 |
-
"min": 0.
|
145 |
-
"max": 0.
|
146 |
-
"count":
|
147 |
},
|
148 |
"SoccerTwos.Losses.BaselineLoss.mean": {
|
149 |
-
"value": 0.
|
150 |
-
"min": 0.
|
151 |
-
"max": 0.
|
152 |
-
"count":
|
153 |
},
|
154 |
"SoccerTwos.Losses.BaselineLoss.sum": {
|
155 |
-
"value": 0.
|
156 |
-
"min": 0.
|
157 |
-
"max": 0.
|
158 |
-
"count":
|
159 |
},
|
160 |
"SoccerTwos.Policy.LearningRate.mean": {
|
161 |
-
"value": 0.
|
162 |
-
"min": 0.
|
163 |
-
"max": 0.
|
164 |
-
"count":
|
165 |
},
|
166 |
"SoccerTwos.Policy.LearningRate.sum": {
|
167 |
-
"value": 0.
|
168 |
-
"min": 0.
|
169 |
-
"max": 0.
|
170 |
-
"count":
|
171 |
},
|
172 |
"SoccerTwos.Policy.Epsilon.mean": {
|
173 |
"value": 0.25,
|
174 |
"min": 0.25,
|
175 |
"max": 0.25,
|
176 |
-
"count":
|
177 |
},
|
178 |
"SoccerTwos.Policy.Epsilon.sum": {
|
179 |
"value": 0.25,
|
180 |
"min": 0.25,
|
181 |
"max": 0.25,
|
182 |
-
"count":
|
183 |
},
|
184 |
"SoccerTwos.Policy.Beta.mean": {
|
185 |
"value": 0.010000000000000002,
|
186 |
"min": 0.010000000000000002,
|
187 |
"max": 0.010000000000000002,
|
188 |
-
"count":
|
189 |
},
|
190 |
"SoccerTwos.Policy.Beta.sum": {
|
191 |
"value": 0.010000000000000002,
|
192 |
"min": 0.010000000000000002,
|
193 |
"max": 0.010000000000000002,
|
194 |
-
"count":
|
195 |
}
|
196 |
},
|
197 |
"metadata": {
|
198 |
"timer_format_version": "0.1.0",
|
199 |
-
"start_time_seconds": "
|
200 |
"python_version": "3.9.16 | packaged by conda-forge | (main, Feb 1 2023, 21:38:11) \n[Clang 14.0.6 ]",
|
201 |
"command_line_arguments": "/Users/andreas.bjarlestam/mambaforge/envs/huggingface-rl-course/bin/mlagents-learn ./config/poca/SoccerTwos.yaml --env=./training-envs-executables/SoccerTwos/SoccerTwos.app --run-id=SoccerTwos --no-graphics --resume",
|
202 |
"mlagents_version": "0.31.0.dev0",
|
@@ -204,103 +204,103 @@
|
|
204 |
"communication_protocol_version": "1.5.0",
|
205 |
"pytorch_version": "1.11.0",
|
206 |
"numpy_version": "1.21.2",
|
207 |
-
"end_time_seconds": "
|
208 |
},
|
209 |
-
"total":
|
210 |
"count": 1,
|
211 |
-
"self": 0.
|
212 |
"children": {
|
213 |
"run_training.setup": {
|
214 |
-
"total": 0.
|
215 |
"count": 1,
|
216 |
-
"self": 0.
|
217 |
},
|
218 |
"TrainerController.start_learning": {
|
219 |
-
"total":
|
220 |
"count": 1,
|
221 |
-
"self": 0.
|
222 |
"children": {
|
223 |
"TrainerController._reset_env": {
|
224 |
-
"total":
|
225 |
-
"count":
|
226 |
-
"self":
|
227 |
},
|
228 |
"TrainerController.advance": {
|
229 |
-
"total":
|
230 |
-
"count":
|
231 |
-
"self": 0.
|
232 |
"children": {
|
233 |
"env_step": {
|
234 |
-
"total":
|
235 |
-
"count":
|
236 |
-
"self":
|
237 |
"children": {
|
238 |
"SubprocessEnvManager._take_step": {
|
239 |
-
"total":
|
240 |
-
"count":
|
241 |
-
"self": 1.
|
242 |
"children": {
|
243 |
"TorchPolicy.evaluate": {
|
244 |
-
"total":
|
245 |
-
"count":
|
246 |
-
"self":
|
247 |
}
|
248 |
}
|
249 |
},
|
250 |
"workers": {
|
251 |
-
"total": 0.
|
252 |
-
"count":
|
253 |
"self": 0.0,
|
254 |
"children": {
|
255 |
"worker_root": {
|
256 |
-
"total":
|
257 |
-
"count":
|
258 |
"is_parallel": true,
|
259 |
-
"self":
|
260 |
"children": {
|
261 |
"steps_from_proto": {
|
262 |
-
"total": 0.
|
263 |
-
"count":
|
264 |
"is_parallel": true,
|
265 |
-
"self": 0.
|
266 |
"children": {
|
267 |
"_process_rank_one_or_two_observation": {
|
268 |
-
"total": 0.
|
269 |
-
"count":
|
270 |
"is_parallel": true,
|
271 |
-
"self": 0.
|
272 |
}
|
273 |
}
|
274 |
},
|
275 |
"UnityEnvironment.step": {
|
276 |
-
"total":
|
277 |
-
"count":
|
278 |
"is_parallel": true,
|
279 |
-
"self":
|
280 |
"children": {
|
281 |
"UnityEnvironment._generate_step_input": {
|
282 |
-
"total":
|
283 |
-
"count":
|
284 |
"is_parallel": true,
|
285 |
-
"self":
|
286 |
},
|
287 |
"communicator.exchange": {
|
288 |
-
"total":
|
289 |
-
"count":
|
290 |
"is_parallel": true,
|
291 |
-
"self":
|
292 |
},
|
293 |
"steps_from_proto": {
|
294 |
-
"total":
|
295 |
-
"count":
|
296 |
"is_parallel": true,
|
297 |
-
"self":
|
298 |
"children": {
|
299 |
"_process_rank_one_or_two_observation": {
|
300 |
-
"total":
|
301 |
-
"count":
|
302 |
"is_parallel": true,
|
303 |
-
"self":
|
304 |
}
|
305 |
}
|
306 |
}
|
@@ -313,24 +313,24 @@
|
|
313 |
}
|
314 |
},
|
315 |
"trainer_advance": {
|
316 |
-
"total":
|
317 |
-
"count":
|
318 |
-
"self": 2.
|
319 |
"children": {
|
320 |
"process_trajectory": {
|
321 |
-
"total":
|
322 |
-
"count":
|
323 |
-
"self":
|
324 |
},
|
325 |
"_update_policy": {
|
326 |
-
"total":
|
327 |
-
"count":
|
328 |
-
"self":
|
329 |
"children": {
|
330 |
"TorchPOCAOptimizer.update": {
|
331 |
-
"total":
|
332 |
-
"count":
|
333 |
-
"self":
|
334 |
}
|
335 |
}
|
336 |
}
|
@@ -339,19 +339,19 @@
|
|
339 |
}
|
340 |
},
|
341 |
"trainer_threads": {
|
342 |
-
"total":
|
343 |
"count": 1,
|
344 |
-
"self":
|
345 |
},
|
346 |
"TrainerController._save_models": {
|
347 |
-
"total": 0.
|
348 |
"count": 1,
|
349 |
-
"self": 0.
|
350 |
"children": {
|
351 |
"RLTrainer._checkpoint": {
|
352 |
-
"total": 0.
|
353 |
"count": 1,
|
354 |
-
"self": 0.
|
355 |
}
|
356 |
}
|
357 |
}
|
|
|
2 |
"name": "root",
|
3 |
"gauges": {
|
4 |
"SoccerTwos.Policy.Entropy.mean": {
|
5 |
+
"value": 2.5312271118164062,
|
6 |
+
"min": 2.4752397537231445,
|
7 |
+
"max": 2.6057534217834473,
|
8 |
+
"count": 47
|
9 |
},
|
10 |
"SoccerTwos.Policy.Entropy.sum": {
|
11 |
+
"value": 50219.546875,
|
12 |
+
"min": 27830.3125,
|
13 |
+
"max": 57770.609375,
|
14 |
+
"count": 47
|
15 |
},
|
16 |
"SoccerTwos.Environment.EpisodeLength.mean": {
|
17 |
+
"value": 61.73076923076923,
|
18 |
+
"min": 52.10752688172043,
|
19 |
+
"max": 80.63934426229508,
|
20 |
+
"count": 47
|
21 |
},
|
22 |
"SoccerTwos.Environment.EpisodeLength.sum": {
|
23 |
+
"value": 19260.0,
|
24 |
+
"min": 9148.0,
|
25 |
+
"max": 20936.0,
|
26 |
+
"count": 47
|
27 |
},
|
28 |
"SoccerTwos.Self-play.ELO.mean": {
|
29 |
+
"value": 1655.8477577114181,
|
30 |
+
"min": 1630.1141578570837,
|
31 |
+
"max": 1672.5534725499353,
|
32 |
+
"count": 47
|
33 |
},
|
34 |
"SoccerTwos.Self-play.ELO.sum": {
|
35 |
+
"value": 258312.25020298123,
|
36 |
+
"min": 122544.41556046242,
|
37 |
+
"max": 306301.84157527966,
|
38 |
+
"count": 47
|
39 |
},
|
40 |
"SoccerTwos.Step.mean": {
|
41 |
+
"value": 7019974.0,
|
42 |
+
"min": 6559966.0,
|
43 |
+
"max": 7019974.0,
|
44 |
+
"count": 47
|
45 |
},
|
46 |
"SoccerTwos.Step.sum": {
|
47 |
+
"value": 7019974.0,
|
48 |
+
"min": 6559966.0,
|
49 |
+
"max": 7019974.0,
|
50 |
+
"count": 47
|
51 |
},
|
52 |
"SoccerTwos.Policy.ExtrinsicBaselineEstimate.mean": {
|
53 |
+
"value": -0.0246932040899992,
|
54 |
+
"min": -0.07469330728054047,
|
55 |
+
"max": 0.06775432825088501,
|
56 |
+
"count": 47
|
57 |
},
|
58 |
"SoccerTwos.Policy.ExtrinsicBaselineEstimate.sum": {
|
59 |
+
"value": -3.852139949798584,
|
60 |
+
"min": -11.428075790405273,
|
61 |
+
"max": 9.824377059936523,
|
62 |
+
"count": 47
|
63 |
},
|
64 |
"SoccerTwos.Policy.ExtrinsicValueEstimate.mean": {
|
65 |
+
"value": -0.025697926059365273,
|
66 |
+
"min": -0.07545823603868484,
|
67 |
+
"max": 0.06745122373104095,
|
68 |
+
"count": 47
|
69 |
},
|
70 |
"SoccerTwos.Policy.ExtrinsicValueEstimate.sum": {
|
71 |
+
"value": -4.008876323699951,
|
72 |
+
"min": -11.545109748840332,
|
73 |
+
"max": 9.780427932739258,
|
74 |
+
"count": 47
|
75 |
},
|
76 |
"SoccerTwos.Environment.CumulativeReward.mean": {
|
77 |
"value": 0.0,
|
78 |
"min": 0.0,
|
79 |
"max": 0.0,
|
80 |
+
"count": 47
|
81 |
},
|
82 |
"SoccerTwos.Environment.CumulativeReward.sum": {
|
83 |
"value": 0.0,
|
84 |
"min": 0.0,
|
85 |
"max": 0.0,
|
86 |
+
"count": 47
|
87 |
},
|
88 |
"SoccerTwos.Policy.ExtrinsicReward.mean": {
|
89 |
+
"value": 0.06588461383795127,
|
90 |
+
"min": -0.2788773345947266,
|
91 |
+
"max": 0.22914206899445633,
|
92 |
+
"count": 47
|
93 |
},
|
94 |
"SoccerTwos.Policy.ExtrinsicReward.sum": {
|
95 |
+
"value": 10.277999758720398,
|
96 |
+
"min": -41.831600189208984,
|
97 |
+
"max": 33.22560000419617,
|
98 |
+
"count": 47
|
99 |
},
|
100 |
"SoccerTwos.Environment.GroupCumulativeReward.mean": {
|
101 |
+
"value": 0.06588461383795127,
|
102 |
+
"min": -0.2788773345947266,
|
103 |
+
"max": 0.22914206899445633,
|
104 |
+
"count": 47
|
105 |
},
|
106 |
"SoccerTwos.Environment.GroupCumulativeReward.sum": {
|
107 |
+
"value": 10.277999758720398,
|
108 |
+
"min": -41.831600189208984,
|
109 |
+
"max": 33.22560000419617,
|
110 |
+
"count": 47
|
111 |
},
|
112 |
"SoccerTwos.IsTraining.mean": {
|
113 |
"value": 1.0,
|
114 |
"min": 1.0,
|
115 |
"max": 1.0,
|
116 |
+
"count": 47
|
117 |
},
|
118 |
"SoccerTwos.IsTraining.sum": {
|
119 |
"value": 1.0,
|
120 |
"min": 1.0,
|
121 |
"max": 1.0,
|
122 |
+
"count": 47
|
123 |
},
|
124 |
"SoccerTwos.Losses.PolicyLoss.mean": {
|
125 |
+
"value": 0.014652803967085978,
|
126 |
+
"min": 0.01367914140234158,
|
127 |
+
"max": 0.0207417576079024,
|
128 |
+
"count": 22
|
129 |
},
|
130 |
"SoccerTwos.Losses.PolicyLoss.sum": {
|
131 |
+
"value": 0.014652803967085978,
|
132 |
+
"min": 0.01367914140234158,
|
133 |
+
"max": 0.0207417576079024,
|
134 |
+
"count": 22
|
135 |
},
|
136 |
"SoccerTwos.Losses.ValueLoss.mean": {
|
137 |
+
"value": 0.06511050388216973,
|
138 |
+
"min": 0.054490877439578374,
|
139 |
+
"max": 0.0683522641658783,
|
140 |
+
"count": 22
|
141 |
},
|
142 |
"SoccerTwos.Losses.ValueLoss.sum": {
|
143 |
+
"value": 0.06511050388216973,
|
144 |
+
"min": 0.054490877439578374,
|
145 |
+
"max": 0.0683522641658783,
|
146 |
+
"count": 22
|
147 |
},
|
148 |
"SoccerTwos.Losses.BaselineLoss.mean": {
|
149 |
+
"value": 0.06548771560192108,
|
150 |
+
"min": 0.05498399945596854,
|
151 |
+
"max": 0.06909144831200441,
|
152 |
+
"count": 22
|
153 |
},
|
154 |
"SoccerTwos.Losses.BaselineLoss.sum": {
|
155 |
+
"value": 0.06548771560192108,
|
156 |
+
"min": 0.05498399945596854,
|
157 |
+
"max": 0.06909144831200441,
|
158 |
+
"count": 22
|
159 |
},
|
160 |
"SoccerTwos.Policy.LearningRate.mean": {
|
161 |
+
"value": 0.00019999999999999996,
|
162 |
+
"min": 0.00019999999999999996,
|
163 |
+
"max": 0.00019999999999999996,
|
164 |
+
"count": 22
|
165 |
},
|
166 |
"SoccerTwos.Policy.LearningRate.sum": {
|
167 |
+
"value": 0.00019999999999999996,
|
168 |
+
"min": 0.00019999999999999996,
|
169 |
+
"max": 0.00019999999999999996,
|
170 |
+
"count": 22
|
171 |
},
|
172 |
"SoccerTwos.Policy.Epsilon.mean": {
|
173 |
"value": 0.25,
|
174 |
"min": 0.25,
|
175 |
"max": 0.25,
|
176 |
+
"count": 22
|
177 |
},
|
178 |
"SoccerTwos.Policy.Epsilon.sum": {
|
179 |
"value": 0.25,
|
180 |
"min": 0.25,
|
181 |
"max": 0.25,
|
182 |
+
"count": 22
|
183 |
},
|
184 |
"SoccerTwos.Policy.Beta.mean": {
|
185 |
"value": 0.010000000000000002,
|
186 |
"min": 0.010000000000000002,
|
187 |
"max": 0.010000000000000002,
|
188 |
+
"count": 22
|
189 |
},
|
190 |
"SoccerTwos.Policy.Beta.sum": {
|
191 |
"value": 0.010000000000000002,
|
192 |
"min": 0.010000000000000002,
|
193 |
"max": 0.010000000000000002,
|
194 |
+
"count": 22
|
195 |
}
|
196 |
},
|
197 |
"metadata": {
|
198 |
"timer_format_version": "0.1.0",
|
199 |
+
"start_time_seconds": "1683489403",
|
200 |
"python_version": "3.9.16 | packaged by conda-forge | (main, Feb 1 2023, 21:38:11) \n[Clang 14.0.6 ]",
|
201 |
"command_line_arguments": "/Users/andreas.bjarlestam/mambaforge/envs/huggingface-rl-course/bin/mlagents-learn ./config/poca/SoccerTwos.yaml --env=./training-envs-executables/SoccerTwos/SoccerTwos.app --run-id=SoccerTwos --no-graphics --resume",
|
202 |
"mlagents_version": "0.31.0.dev0",
|
|
|
204 |
"communication_protocol_version": "1.5.0",
|
205 |
"pytorch_version": "1.11.0",
|
206 |
"numpy_version": "1.21.2",
|
207 |
+
"end_time_seconds": "1683491523"
|
208 |
},
|
209 |
+
"total": 2120.7075272919997,
|
210 |
"count": 1,
|
211 |
+
"self": 0.11400120799953584,
|
212 |
"children": {
|
213 |
"run_training.setup": {
|
214 |
+
"total": 0.013764458999999896,
|
215 |
"count": 1,
|
216 |
+
"self": 0.013764458999999896
|
217 |
},
|
218 |
"TrainerController.start_learning": {
|
219 |
+
"total": 2120.579761625,
|
220 |
"count": 1,
|
221 |
+
"self": 0.39264614000012443,
|
222 |
"children": {
|
223 |
"TrainerController._reset_env": {
|
224 |
+
"total": 1.9952624579999387,
|
225 |
+
"count": 4,
|
226 |
+
"self": 1.9952624579999387
|
227 |
},
|
228 |
"TrainerController.advance": {
|
229 |
+
"total": 2118.0091342349997,
|
230 |
+
"count": 32174,
|
231 |
+
"self": 0.3491077030012093,
|
232 |
"children": {
|
233 |
"env_step": {
|
234 |
+
"total": 1698.4356740170083,
|
235 |
+
"count": 32174,
|
236 |
+
"self": 1638.031515376033,
|
237 |
"children": {
|
238 |
"SubprocessEnvManager._take_step": {
|
239 |
+
"total": 60.13042827897286,
|
240 |
+
"count": 32174,
|
241 |
+
"self": 1.4789845239499186,
|
242 |
"children": {
|
243 |
"TorchPolicy.evaluate": {
|
244 |
+
"total": 58.65144375502294,
|
245 |
+
"count": 58650,
|
246 |
+
"self": 58.65144375502294
|
247 |
}
|
248 |
}
|
249 |
},
|
250 |
"workers": {
|
251 |
+
"total": 0.27373036200252665,
|
252 |
+
"count": 32173,
|
253 |
"self": 0.0,
|
254 |
"children": {
|
255 |
"worker_root": {
|
256 |
+
"total": 2117.892491209032,
|
257 |
+
"count": 32173,
|
258 |
"is_parallel": true,
|
259 |
+
"self": 529.1141985200231,
|
260 |
"children": {
|
261 |
"steps_from_proto": {
|
262 |
+
"total": 0.006709541000275099,
|
263 |
+
"count": 8,
|
264 |
"is_parallel": true,
|
265 |
+
"self": 0.0007980410003163296,
|
266 |
"children": {
|
267 |
"_process_rank_one_or_two_observation": {
|
268 |
+
"total": 0.005911499999958769,
|
269 |
+
"count": 32,
|
270 |
"is_parallel": true,
|
271 |
+
"self": 0.005911499999958769
|
272 |
}
|
273 |
}
|
274 |
},
|
275 |
"UnityEnvironment.step": {
|
276 |
+
"total": 1588.7715831480086,
|
277 |
+
"count": 32173,
|
278 |
"is_parallel": true,
|
279 |
+
"self": 4.106521291980243,
|
280 |
"children": {
|
281 |
"UnityEnvironment._generate_step_input": {
|
282 |
+
"total": 28.195529624995782,
|
283 |
+
"count": 32173,
|
284 |
"is_parallel": true,
|
285 |
+
"self": 28.195529624995782
|
286 |
},
|
287 |
"communicator.exchange": {
|
288 |
+
"total": 1497.7160278380102,
|
289 |
+
"count": 32173,
|
290 |
"is_parallel": true,
|
291 |
+
"self": 1497.7160278380102
|
292 |
},
|
293 |
"steps_from_proto": {
|
294 |
+
"total": 58.75350439302243,
|
295 |
+
"count": 64346,
|
296 |
"is_parallel": true,
|
297 |
+
"self": 6.588014732984448,
|
298 |
"children": {
|
299 |
"_process_rank_one_or_two_observation": {
|
300 |
+
"total": 52.165489660037984,
|
301 |
+
"count": 257384,
|
302 |
"is_parallel": true,
|
303 |
+
"self": 52.165489660037984
|
304 |
}
|
305 |
}
|
306 |
}
|
|
|
313 |
}
|
314 |
},
|
315 |
"trainer_advance": {
|
316 |
+
"total": 419.22435251499024,
|
317 |
+
"count": 32173,
|
318 |
+
"self": 2.6727334479645606,
|
319 |
"children": {
|
320 |
"process_trajectory": {
|
321 |
+
"total": 91.07927935702565,
|
322 |
+
"count": 32173,
|
323 |
+
"self": 91.07927935702565
|
324 |
},
|
325 |
"_update_policy": {
|
326 |
+
"total": 325.47233971,
|
327 |
+
"count": 22,
|
328 |
+
"self": 40.14159451100102,
|
329 |
"children": {
|
330 |
"TorchPOCAOptimizer.update": {
|
331 |
+
"total": 285.330745198999,
|
332 |
+
"count": 660,
|
333 |
+
"self": 285.330745198999
|
334 |
}
|
335 |
}
|
336 |
}
|
|
|
339 |
}
|
340 |
},
|
341 |
"trainer_threads": {
|
342 |
+
"total": 5.420001798484009e-07,
|
343 |
"count": 1,
|
344 |
+
"self": 5.420001798484009e-07
|
345 |
},
|
346 |
"TrainerController._save_models": {
|
347 |
+
"total": 0.18271825000010722,
|
348 |
"count": 1,
|
349 |
+
"self": 0.000976583000010578,
|
350 |
"children": {
|
351 |
"RLTrainer._checkpoint": {
|
352 |
+
"total": 0.18174166700009664,
|
353 |
"count": 1,
|
354 |
+
"self": 0.18174166700009664
|
355 |
}
|
356 |
}
|
357 |
}
|
run_logs/training_status.json
CHANGED
@@ -1,16 +1,7 @@
|
|
1 |
{
|
2 |
"SoccerTwos": {
|
3 |
-
"elo":
|
4 |
"checkpoints": [
|
5 |
-
{
|
6 |
-
"steps": 3999978,
|
7 |
-
"file_path": "results/SoccerTwos/SoccerTwos/SoccerTwos-3999978.onnx",
|
8 |
-
"reward": 0.0,
|
9 |
-
"creation_time": 1683424087.475253,
|
10 |
-
"auxillary_file_paths": [
|
11 |
-
"results/SoccerTwos/SoccerTwos/SoccerTwos-3999978.pt"
|
12 |
-
]
|
13 |
-
},
|
14 |
{
|
15 |
"steps": 5428910,
|
16 |
"file_path": "results/SoccerTwos/SoccerTwos/SoccerTwos-5428910.onnx",
|
@@ -46,15 +37,24 @@
|
|
46 |
"auxillary_file_paths": [
|
47 |
"results/SoccerTwos/SoccerTwos/SoccerTwos-6555492.pt"
|
48 |
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
50 |
],
|
51 |
"final_checkpoint": {
|
52 |
-
"steps":
|
53 |
"file_path": "results/SoccerTwos/SoccerTwos.onnx",
|
54 |
"reward": 0.0,
|
55 |
-
"creation_time":
|
56 |
"auxillary_file_paths": [
|
57 |
-
"results/SoccerTwos/SoccerTwos/SoccerTwos-
|
58 |
]
|
59 |
}
|
60 |
},
|
|
|
1 |
{
|
2 |
"SoccerTwos": {
|
3 |
+
"elo": 1664.046005142632,
|
4 |
"checkpoints": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
{
|
6 |
"steps": 5428910,
|
7 |
"file_path": "results/SoccerTwos/SoccerTwos/SoccerTwos-5428910.onnx",
|
|
|
37 |
"auxillary_file_paths": [
|
38 |
"results/SoccerTwos/SoccerTwos/SoccerTwos-6555492.pt"
|
39 |
]
|
40 |
+
},
|
41 |
+
{
|
42 |
+
"steps": 7021752,
|
43 |
+
"file_path": "results/SoccerTwos/SoccerTwos/SoccerTwos-7021752.onnx",
|
44 |
+
"reward": 0.0,
|
45 |
+
"creation_time": 1683491523.676715,
|
46 |
+
"auxillary_file_paths": [
|
47 |
+
"results/SoccerTwos/SoccerTwos/SoccerTwos-7021752.pt"
|
48 |
+
]
|
49 |
}
|
50 |
],
|
51 |
"final_checkpoint": {
|
52 |
+
"steps": 7021752,
|
53 |
"file_path": "results/SoccerTwos/SoccerTwos.onnx",
|
54 |
"reward": 0.0,
|
55 |
+
"creation_time": 1683491523.676715,
|
56 |
"auxillary_file_paths": [
|
57 |
+
"results/SoccerTwos/SoccerTwos/SoccerTwos-7021752.pt"
|
58 |
]
|
59 |
}
|
60 |
},
|