File size: 67,497 Bytes
c81c30d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
diff --git a/notebooks/unit8/unit8_part2.ipynb b/notebooks/unit8/unit8_part2.ipynb
index b36924a..d7fd26d 100644
--- a/notebooks/unit8/unit8_part2.ipynb
+++ b/notebooks/unit8/unit8_part2.ipynb
@@ -3,8 +3,8 @@
     {
       "cell_type": "markdown",
       "metadata": {
-        "id": "view-in-github",
-        "colab_type": "text"
+        "colab_type": "text",
+        "id": "view-in-github"
       },
       "source": [
         "<a href=\"https://colab.research.google.com/github/huggingface/deep-rl-class/blob/EdBeeching%2FPPOPart2/notebooks/unit8/unit8_part2.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
@@ -202,11 +202,26 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 1,
       "metadata": {
         "id": "RJMxkaldwIVx"
       },
-      "outputs": [],
+      "outputs": [
+        {
+          "ename": "CalledProcessError",
+          "evalue": "Command 'b'# Install ViZDoom deps from \\n# https://github.com/mwydmuch/ViZDoom/blob/master/doc/Building.md#-linux\\n\\napt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \\\\\\nnasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \\\\\\nlibopenal-dev timidity libwildmidi-dev unzip ffmpeg\\n\\n# Boost libraries\\napt-get install libboost-all-dev\\n\\n# Lua binding dependencies\\napt-get install liblua5.1-dev\\n'' returned non-zero exit status 100.",
+          "output_type": "error",
+          "traceback": [
+            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+            "\u001b[0;31mCalledProcessError\u001b[0m                        Traceback (most recent call last)",
+            "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m get_ipython()\u001b[39m.\u001b[39;49mrun_cell_magic(\u001b[39m'\u001b[39;49m\u001b[39mbash\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39m'\u001b[39;49m, \u001b[39m'\u001b[39;49m\u001b[39m# Install ViZDoom deps from \u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39m# https://github.com/mwydmuch/ViZDoom/blob/master/doc/Building.md#-linux\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39m\\n\u001b[39;49;00m\u001b[39mapt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \u001b[39;49m\u001b[39m\\\\\u001b[39;49;00m\u001b[39m\\n\u001b[39;49;00m\u001b[39mnasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \u001b[39;49m\u001b[39m\\\\\u001b[39;49;00m\u001b[39m\\n\u001b[39;49;00m\u001b[39mlibopenal-dev timidity libwildmidi-dev unzip ffmpeg\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39m\\n\u001b[39;49;00m\u001b[39m# Boost libraries\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39mapt-get install libboost-all-dev\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39m\\n\u001b[39;49;00m\u001b[39m# Lua binding dependencies\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39mapt-get install liblua5.1-dev\u001b[39;49m\u001b[39m\\n\u001b[39;49;00m\u001b[39m'\u001b[39;49m)\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2430\u001b[0m, in \u001b[0;36mInteractiveShell.run_cell_magic\u001b[0;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[1;32m   2428\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mbuiltin_trap:\n\u001b[1;32m   2429\u001b[0m     args \u001b[39m=\u001b[39m (magic_arg_s, cell)\n\u001b[0;32m-> 2430\u001b[0m     result \u001b[39m=\u001b[39m fn(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m   2432\u001b[0m \u001b[39m# The code below prevents the output from being displayed\u001b[39;00m\n\u001b[1;32m   2433\u001b[0m \u001b[39m# when using magics with decodator @output_can_be_silenced\u001b[39;00m\n\u001b[1;32m   2434\u001b[0m \u001b[39m# when the last Python token in the expression is a ';'.\u001b[39;00m\n\u001b[1;32m   2435\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mgetattr\u001b[39m(fn, magic\u001b[39m.\u001b[39mMAGIC_OUTPUT_CAN_BE_SILENCED, \u001b[39mFalse\u001b[39;00m):\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/IPython/core/magics/script.py:153\u001b[0m, in \u001b[0;36mScriptMagics._make_script_magic.<locals>.named_script_magic\u001b[0;34m(line, cell)\u001b[0m\n\u001b[1;32m    151\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m    152\u001b[0m     line \u001b[39m=\u001b[39m script\n\u001b[0;32m--> 153\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mshebang(line, cell)\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/IPython/core/magics/script.py:305\u001b[0m, in \u001b[0;36mScriptMagics.shebang\u001b[0;34m(self, line, cell)\u001b[0m\n\u001b[1;32m    300\u001b[0m \u001b[39mif\u001b[39;00m args\u001b[39m.\u001b[39mraise_error \u001b[39mand\u001b[39;00m p\u001b[39m.\u001b[39mreturncode \u001b[39m!=\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[1;32m    301\u001b[0m     \u001b[39m# If we get here and p.returncode is still None, we must have\u001b[39;00m\n\u001b[1;32m    302\u001b[0m     \u001b[39m# killed it but not yet seen its return code. We don't wait for it,\u001b[39;00m\n\u001b[1;32m    303\u001b[0m     \u001b[39m# in case it's stuck in uninterruptible sleep. -9 = SIGKILL\u001b[39;00m\n\u001b[1;32m    304\u001b[0m     rc \u001b[39m=\u001b[39m p\u001b[39m.\u001b[39mreturncode \u001b[39mor\u001b[39;00m \u001b[39m-\u001b[39m\u001b[39m9\u001b[39m\n\u001b[0;32m--> 305\u001b[0m     \u001b[39mraise\u001b[39;00m CalledProcessError(rc, cell)\n",
+            "\u001b[0;31mCalledProcessError\u001b[0m: Command 'b'# Install ViZDoom deps from \\n# https://github.com/mwydmuch/ViZDoom/blob/master/doc/Building.md#-linux\\n\\napt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \\\\\\nnasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \\\\\\nlibopenal-dev timidity libwildmidi-dev unzip ffmpeg\\n\\n# Boost libraries\\napt-get install libboost-all-dev\\n\\n# Lua binding dependencies\\napt-get install liblua5.1-dev\\n'' returned non-zero exit status 100."
+          ]
+        }
+      ],
       "source": [
         "%%capture\n",
         "%%bash\n",
@@ -236,11 +251,162 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 2,
       "metadata": {
         "id": "bbqfPZnIsvA6"
       },
-      "outputs": [],
+      "outputs": [
+        {
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "Collecting sample-factory\n",
+            "  Downloading sample_factory-2.0.3-py3-none-any.whl (9.0 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.0/9.0 MB\u001b[0m \u001b[31m3.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0mm\n",
+            "\u001b[?25hCollecting huggingface-hub<1.0,>=0.10.0\n",
+            "  Downloading huggingface_hub-0.12.1-py3-none-any.whl (190 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.3/190.3 kB\u001b[0m \u001b[31m19.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hCollecting gym<1.0,>=0.26.1\n",
+            "  Downloading gym-0.26.2.tar.gz (721 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m721.7/721.7 kB\u001b[0m \u001b[31m26.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25h  Installing build dependencies ... \u001b[?25ldone\n",
+            "\u001b[?25h  Getting requirements to build wheel ... \u001b[?25ldone\n",
+            "\u001b[?25h  Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25hCollecting colorlog\n",
+            "  Downloading colorlog-6.7.0-py2.py3-none-any.whl (11 kB)\n",
+            "Collecting filelock\n",
+            "  Using cached filelock-3.9.0-py3-none-any.whl (9.7 kB)\n",
+            "Requirement already satisfied: psutil>=5.7.0 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from sample-factory) (5.9.0)\n",
+            "Collecting faster-fifo<2.0,>=1.4.2\n",
+            "  Downloading faster-fifo-1.4.2.tar.gz (84 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m84.6/84.6 kB\u001b[0m \u001b[31m7.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25h  Installing build dependencies ... \u001b[?25ldone\n",
+            "\u001b[?25h  Getting requirements to build wheel ... \u001b[?25ldone\n",
+            "\u001b[?25h  Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25hCollecting pyglet\n",
+            "  Downloading pyglet-2.0.4-py3-none-any.whl (831 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m831.0/831.0 kB\u001b[0m \u001b[31m39.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hRequirement already satisfied: torch!=1.13.0,<2.0,>=1.9 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from sample-factory) (1.13.1)\n",
+            "Collecting threadpoolctl>=2.0.0\n",
+            "  Using cached threadpoolctl-3.1.0-py3-none-any.whl (14 kB)\n",
+            "Collecting signal-slot-mp<2.0,>=1.0.3\n",
+            "  Downloading signal_slot_mp-1.0.3-py3-none-any.whl (11 kB)\n",
+            "Collecting opencv-python!=3.4.18.65\n",
+            "  Downloading opencv_python-4.7.0.72-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (61.8 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m61.8/61.8 MB\u001b[0m \u001b[31m24.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
+            "\u001b[?25hCollecting wandb>=0.12.9\n",
+            "  Downloading wandb-0.13.10-py3-none-any.whl (2.0 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m29.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
+            "\u001b[?25hRequirement already satisfied: numpy<2.0,>=1.18.1 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from sample-factory) (1.23.5)\n",
+            "Collecting tensorboard>=1.15.0\n",
+            "  Using cached tensorboard-2.12.0-py3-none-any.whl (5.6 MB)\n",
+            "Collecting tensorboardx>=2.0\n",
+            "  Downloading tensorboardX-2.6-py2.py3-none-any.whl (114 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m114.5/114.5 kB\u001b[0m \u001b[31m15.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hRequirement already satisfied: setuptools>=45.2.0 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from faster-fifo<2.0,>=1.4.2->sample-factory) (65.6.3)\n",
+            "Collecting cython>=0.29\n",
+            "  Using cached Cython-0.29.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (1.9 MB)\n",
+            "Collecting gym-notices>=0.0.4\n",
+            "  Downloading gym_notices-0.0.8-py3-none-any.whl (3.0 kB)\n",
+            "Collecting cloudpickle>=1.2.0\n",
+            "  Downloading cloudpickle-2.2.1-py3-none-any.whl (25 kB)\n",
+            "Collecting tqdm>=4.42.1\n",
+            "  Using cached tqdm-4.64.1-py2.py3-none-any.whl (78 kB)\n",
+            "Collecting pyyaml>=5.1\n",
+            "  Using cached PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (682 kB)\n",
+            "Requirement already satisfied: packaging>=20.9 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from huggingface-hub<1.0,>=0.10.0->sample-factory) (22.0)\n",
+            "Requirement already satisfied: typing-extensions>=3.7.4.3 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from huggingface-hub<1.0,>=0.10.0->sample-factory) (4.4.0)\n",
+            "Requirement already satisfied: requests in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from huggingface-hub<1.0,>=0.10.0->sample-factory) (2.28.1)\n",
+            "Collecting absl-py>=0.4\n",
+            "  Using cached absl_py-1.4.0-py3-none-any.whl (126 kB)\n",
+            "Collecting tensorboard-plugin-wit>=1.6.0\n",
+            "  Using cached tensorboard_plugin_wit-1.8.1-py3-none-any.whl (781 kB)\n",
+            "Collecting markdown>=2.6.8\n",
+            "  Using cached Markdown-3.4.1-py3-none-any.whl (93 kB)\n",
+            "Requirement already satisfied: wheel>=0.26 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from tensorboard>=1.15.0->sample-factory) (0.38.4)\n",
+            "Collecting google-auth-oauthlib<0.5,>=0.4.1\n",
+            "  Using cached google_auth_oauthlib-0.4.6-py2.py3-none-any.whl (18 kB)\n",
+            "Collecting google-auth<3,>=1.6.3\n",
+            "  Downloading google_auth-2.16.1-py2.py3-none-any.whl (177 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m177.2/177.2 kB\u001b[0m \u001b[31m19.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hCollecting tensorboard-data-server<0.8.0,>=0.7.0\n",
+            "  Using cached tensorboard_data_server-0.7.0-py3-none-manylinux2014_x86_64.whl (6.6 MB)\n",
+            "Collecting grpcio>=1.48.2\n",
+            "  Downloading grpcio-1.51.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4.8/4.8 MB\u001b[0m \u001b[31m28.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
+            "\u001b[?25hCollecting werkzeug>=1.0.1\n",
+            "  Downloading Werkzeug-2.2.3-py3-none-any.whl (233 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m233.6/233.6 kB\u001b[0m \u001b[31m20.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hCollecting protobuf>=3.19.6\n",
+            "  Downloading protobuf-4.22.0-cp37-abi3-manylinux2014_x86_64.whl (302 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m302.4/302.4 kB\u001b[0m \u001b[31m23.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25h  Using cached protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB)\n",
+            "Collecting GitPython>=1.0.0\n",
+            "  Downloading GitPython-3.1.31-py3-none-any.whl (184 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m184.3/184.3 kB\u001b[0m \u001b[31m18.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hCollecting docker-pycreds>=0.4.0\n",
+            "  Using cached docker_pycreds-0.4.0-py2.py3-none-any.whl (9.0 kB)\n",
+            "Collecting pathtools\n",
+            "  Using cached pathtools-0.1.2-py3-none-any.whl\n",
+            "Collecting sentry-sdk>=1.0.0\n",
+            "  Downloading sentry_sdk-1.15.0-py2.py3-none-any.whl (181 kB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m181.3/181.3 kB\u001b[0m \u001b[31m20.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
+            "\u001b[?25hCollecting setproctitle\n",
+            "  Using cached setproctitle-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (30 kB)\n",
+            "Collecting appdirs>=1.4.3\n",
+            "  Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)\n",
+            "Collecting Click!=8.0.0,>=7.0\n",
+            "  Using cached click-8.1.3-py3-none-any.whl (96 kB)\n",
+            "Requirement already satisfied: six>=1.4.0 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from docker-pycreds>=0.4.0->wandb>=0.12.9->sample-factory) (1.16.0)\n",
+            "Collecting gitdb<5,>=4.0.1\n",
+            "  Using cached gitdb-4.0.10-py3-none-any.whl (62 kB)\n",
+            "Collecting pyasn1-modules>=0.2.1\n",
+            "  Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)\n",
+            "Collecting rsa<5,>=3.1.4\n",
+            "  Using cached rsa-4.9-py3-none-any.whl (34 kB)\n",
+            "Collecting cachetools<6.0,>=2.0.0\n",
+            "  Using cached cachetools-5.3.0-py3-none-any.whl (9.3 kB)\n",
+            "Collecting requests-oauthlib>=0.7.0\n",
+            "  Using cached requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB)\n",
+            "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from requests->huggingface-hub<1.0,>=0.10.0->sample-factory) (1.26.14)\n",
+            "Requirement already satisfied: certifi>=2017.4.17 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from requests->huggingface-hub<1.0,>=0.10.0->sample-factory) (2022.12.7)\n",
+            "Requirement already satisfied: charset-normalizer<3,>=2 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from requests->huggingface-hub<1.0,>=0.10.0->sample-factory) (2.0.4)\n",
+            "Requirement already satisfied: idna<4,>=2.5 in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from requests->huggingface-hub<1.0,>=0.10.0->sample-factory) (3.4)\n",
+            "Collecting MarkupSafe>=2.1.1\n",
+            "  Using cached MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)\n",
+            "Collecting smmap<6,>=3.0.1\n",
+            "  Using cached smmap-5.0.0-py3-none-any.whl (24 kB)\n",
+            "Collecting pyasn1<0.5.0,>=0.4.6\n",
+            "  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)\n",
+            "Collecting oauthlib>=3.0.0\n",
+            "  Using cached oauthlib-3.2.2-py3-none-any.whl (151 kB)\n",
+            "Building wheels for collected packages: faster-fifo, gym\n",
+            "  Building wheel for faster-fifo (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25h  Created wheel for faster-fifo: filename=faster_fifo-1.4.2-cp310-cp310-linux_x86_64.whl size=78864 sha256=db802db0bb9e4e639957e0cc929a5055871d73dac2a78aab10dd613331d4e086\n",
+            "  Stored in directory: /home/chqma/.cache/pip/wheels/46/57/35/44590621055121fe1a2f1ae60846e531621498f6d6e48c8975\n",
+            "  Building wheel for gym (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25h  Created wheel for gym: filename=gym-0.26.2-py3-none-any.whl size=827634 sha256=2ecaeda2a512edc3ad62eb999df1ba486447df53cdcd38d3cd5acc3b0b013d44\n",
+            "  Stored in directory: /home/chqma/.cache/pip/wheels/ae/5f/67/64914473eb34e9ba89dbc7eefe7e9be8f6673fbc6f0273b29f\n",
+            "Successfully built faster-fifo gym\n",
+            "Installing collected packages: tensorboard-plugin-wit, pyglet, pyasn1, pathtools, gym-notices, appdirs, tqdm, threadpoolctl, tensorboard-data-server, smmap, setproctitle, sentry-sdk, rsa, pyyaml, pyasn1-modules, protobuf, opencv-python, oauthlib, MarkupSafe, markdown, grpcio, filelock, docker-pycreds, cython, colorlog, cloudpickle, Click, cachetools, absl-py, werkzeug, tensorboardx, requests-oauthlib, huggingface-hub, gym, google-auth, gitdb, faster-fifo, signal-slot-mp, google-auth-oauthlib, GitPython, wandb, tensorboard, sample-factory\n",
+            "Successfully installed Click-8.1.3 GitPython-3.1.31 MarkupSafe-2.1.2 absl-py-1.4.0 appdirs-1.4.4 cachetools-5.3.0 cloudpickle-2.2.1 colorlog-6.7.0 cython-0.29.33 docker-pycreds-0.4.0 faster-fifo-1.4.2 filelock-3.9.0 gitdb-4.0.10 google-auth-2.16.1 google-auth-oauthlib-0.4.6 grpcio-1.51.3 gym-0.26.2 gym-notices-0.0.8 huggingface-hub-0.12.1 markdown-3.4.1 oauthlib-3.2.2 opencv-python-4.7.0.72 pathtools-0.1.2 protobuf-3.20.3 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyglet-2.0.4 pyyaml-6.0 requests-oauthlib-1.3.1 rsa-4.9 sample-factory-2.0.3 sentry-sdk-1.15.0 setproctitle-1.3.2 signal-slot-mp-1.0.3 smmap-5.0.0 tensorboard-2.12.0 tensorboard-data-server-0.7.0 tensorboard-plugin-wit-1.8.1 tensorboardx-2.6 threadpoolctl-3.1.0 tqdm-4.64.1 wandb-0.13.10 werkzeug-2.2.3\n",
+            "Collecting vizdoom\n",
+            "  Downloading vizdoom-1.1.14.tar.gz (15.7 MB)\n",
+            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m15.7/15.7 MB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
+            "\u001b[?25h  Installing build dependencies ... \u001b[?25ldone\n",
+            "\u001b[?25h  Getting requirements to build wheel ... \u001b[?25ldone\n",
+            "\u001b[?25h  Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25hRequirement already satisfied: numpy in /home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages (from vizdoom) (1.23.5)\n",
+            "Building wheels for collected packages: vizdoom\n",
+            "  Building wheel for vizdoom (pyproject.toml) ... \u001b[?25ldone\n",
+            "\u001b[?25h  Created wheel for vizdoom: filename=vizdoom-1.1.14-cp310-cp310-linux_x86_64.whl size=14192416 sha256=732a3631973e8da574807abc6da03d63e48238fdf6024c6f34c11e5c4dcf2056\n",
+            "  Stored in directory: /home/chqma/.cache/pip/wheels/a4/13/80/6927dae582137aef0836f48491051c797a5de184891b8ca6c5\n",
+            "Successfully built vizdoom\n",
+            "Installing collected packages: vizdoom\n",
+            "Successfully installed vizdoom-1.1.14\n"
+          ]
+        }
+      ],
       "source": [
         "# install python libraries\n",
         "!pip install sample-factory\n",
@@ -258,24 +424,24 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 6,
       "metadata": {
         "id": "bCgZbeiavcDU"
       },
       "outputs": [],
       "source": [
         "import functools\n",
-        "\n",
+        "from encoder import make_vizdoom_encoder\n",
         "from sample_factory.algo.utils.context import global_model_factory\n",
         "from sample_factory.cfg.arguments import parse_full_cfg, parse_sf_args\n",
         "from sample_factory.envs.env_utils import register_env\n",
         "from sample_factory.train import run_rl\n",
         "\n",
-        "from sf_examples.vizdoom.doom.doom_model import make_vizdoom_encoder\n",
         "from sf_examples.vizdoom.doom.doom_params import add_doom_env_args, doom_override_defaults\n",
         "from sf_examples.vizdoom.doom.doom_utils import DOOM_ENVS, make_doom_env_from_spec\n",
         "\n",
         "\n",
+        "\n",
         "# Registers all the ViZDoom environments\n",
         "def register_vizdoom_envs():\n",
         "    for env_spec in DOOM_ENVS:\n",
@@ -346,11 +512,88 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 1,
+      "metadata": {},
+      "outputs": [
+        {
+          "name": "stdout",
+          "output_type": "stream",
+          "text": [
+            "env: CUDA_VISIBLE_DEVICES=1\n"
+          ]
+        }
+      ],
+      "source": [
+        "%env CUDA_VISIBLE_DEVICES=1"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": 5,
       "metadata": {
         "id": "y_TeicMvyKHP"
       },
-      "outputs": [],
+      "outputs": [
+        {
+          "name": "stderr",
+          "output_type": "stream",
+          "text": [
+            "\u001b[33m[2023-02-24 08:05:26,614][795538] Environment doom_basic already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,616][795538] Environment doom_two_colors_easy already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,617][795538] Environment doom_two_colors_hard already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,619][795538] Environment doom_dm already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,619][795538] Environment doom_dwango5 already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,620][795538] Environment doom_my_way_home_flat_actions already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,621][795538] Environment doom_defend_the_center_flat_actions already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,621][795538] Environment doom_my_way_home already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,623][795538] Environment doom_deadly_corridor already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,623][795538] Environment doom_defend_the_center already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,624][795538] Environment doom_defend_the_line already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,624][795538] Environment doom_health_gathering already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,625][795538] Environment doom_health_gathering_supreme already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,625][795538] Environment doom_battle already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,626][795538] Environment doom_battle2 already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,626][795538] Environment doom_duel_bots already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,627][795538] Environment doom_deathmatch_bots already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,628][795538] Environment doom_duel already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,628][795538] Environment doom_deathmatch_full already registered, overwriting...\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,629][795538] Environment doom_benchmark already registered, overwriting...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 08:05:26,629][795538] register_encoder_factory: <function make_vizdoom_encoder at 0x7efc41caae60>\u001b[0m\n",
+            "\u001b[33m[2023-02-24 08:05:26,640][795538] Loading existing experiment configuration from /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment/config.json\u001b[0m\n",
+            "\u001b[36m[2023-02-24 08:05:26,640][795538] Overriding arg 'train_for_env_steps' with value 40000000 passed from command line\u001b[0m\n",
+            "\u001b[36m[2023-02-24 08:05:26,645][795538] Experiment dir /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment already exists!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 08:05:26,646][795538] Resuming existing experiment from /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 08:05:26,646][795538] Weights and Biases integration disabled\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 08:05:26,649][795538] Environment var CUDA_VISIBLE_DEVICES is 1\u001b[0m\n",
+            "Traceback (most recent call last):\n",
+            "  File \"<string>\", line 1, in <module>\n",
+            "  File \"/home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/spawn.py\", line 116, in spawn_main\n",
+            "    exitcode = _main(fd, parent_sentinel)\n",
+            "  File \"/home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/spawn.py\", line 126, in _main\n",
+            "    self = reduction.pickle.load(from_parent)\n",
+            "AttributeError: Can't get attribute 'make_vizdoom_encoder' on <module '__main__' (built-in)>\n"
+          ]
+        },
+        {
+          "ename": "KeyboardInterrupt",
+          "evalue": "",
+          "output_type": "error",
+          "traceback": [
+            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+            "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
+            "Cell \u001b[0;32mIn[5], line 9\u001b[0m\n\u001b[1;32m      6\u001b[0m env \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mdoom_health_gathering_supreme\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m      7\u001b[0m cfg \u001b[39m=\u001b[39m parse_vizdoom_cfg(argv\u001b[39m=\u001b[39m[\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m--env=\u001b[39m\u001b[39m{\u001b[39;00menv\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39m--num_workers=8\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39m--num_envs_per_worker=4\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39m\"\u001b[39m\u001b[39m--train_for_env_steps=40000000\u001b[39m\u001b[39m\"\u001b[39m])\n\u001b[0;32m----> 9\u001b[0m status \u001b[39m=\u001b[39m run_rl(cfg)\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/sample_factory/train.py:37\u001b[0m, in \u001b[0;36mrun_rl\u001b[0;34m(cfg)\u001b[0m\n\u001b[1;32m     32\u001b[0m cfg, runner \u001b[39m=\u001b[39m make_runner(cfg)\n\u001b[1;32m     34\u001b[0m \u001b[39m# here we can register additional message or summary handlers\u001b[39;00m\n\u001b[1;32m     35\u001b[0m \u001b[39m# see sf_examples/dmlab/train_dmlab.py for example\u001b[39;00m\n\u001b[0;32m---> 37\u001b[0m status \u001b[39m=\u001b[39m runner\u001b[39m.\u001b[39;49minit()\n\u001b[1;32m     38\u001b[0m \u001b[39mif\u001b[39;00m status \u001b[39m==\u001b[39m ExperimentStatus\u001b[39m.\u001b[39mSUCCESS:\n\u001b[1;32m     39\u001b[0m     status \u001b[39m=\u001b[39m runner\u001b[39m.\u001b[39mrun()\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/sample_factory/algo/runners/runner_parallel.py:21\u001b[0m, in \u001b[0;36mParallelRunner.init\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m     20\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39minit\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m StatusCode:\n\u001b[0;32m---> 21\u001b[0m     status \u001b[39m=\u001b[39m \u001b[39msuper\u001b[39;49m()\u001b[39m.\u001b[39;49minit()\n\u001b[1;32m     22\u001b[0m     \u001b[39mif\u001b[39;00m status \u001b[39m!=\u001b[39m ExperimentStatus\u001b[39m.\u001b[39mSUCCESS:\n\u001b[1;32m     23\u001b[0m         \u001b[39mreturn\u001b[39;00m status\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/sample_factory/algo/runners/runner.py:542\u001b[0m, in \u001b[0;36mRunner.init\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    540\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39minit\u001b[39m(\u001b[39mself\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m StatusCode:\n\u001b[1;32m    541\u001b[0m     set_global_cuda_envvars(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcfg)\n\u001b[0;32m--> 542\u001b[0m     \u001b[39mself\u001b[39m\u001b[39m.\u001b[39menv_info \u001b[39m=\u001b[39m obtain_env_info_in_a_separate_process(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mcfg)\n\u001b[1;32m    544\u001b[0m     \u001b[39mfor\u001b[39;00m policy_id \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mcfg\u001b[39m.\u001b[39mnum_policies):\n\u001b[1;32m    545\u001b[0m         \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mreward_shaping[policy_id] \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39menv_info\u001b[39m.\u001b[39mreward_shaping_scheme\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/sample_factory/algo/utils/env_info.py:127\u001b[0m, in \u001b[0;36mobtain_env_info_in_a_separate_process\u001b[0;34m(cfg)\u001b[0m\n\u001b[1;32m    124\u001b[0m p \u001b[39m=\u001b[39m ctx\u001b[39m.\u001b[39mProcess(target\u001b[39m=\u001b[39mspawn_tmp_env_and_get_info, args\u001b[39m=\u001b[39m(sf_context, q, cfg))\n\u001b[1;32m    125\u001b[0m p\u001b[39m.\u001b[39mstart()\n\u001b[0;32m--> 127\u001b[0m env_info \u001b[39m=\u001b[39m q\u001b[39m.\u001b[39;49mget()\n\u001b[1;32m    128\u001b[0m p\u001b[39m.\u001b[39mjoin()\n\u001b[1;32m    130\u001b[0m \u001b[39mif\u001b[39;00m cfg\u001b[39m.\u001b[39muse_env_info_cache:\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/queues.py:103\u001b[0m, in \u001b[0;36mQueue.get\u001b[0;34m(self, block, timeout)\u001b[0m\n\u001b[1;32m    101\u001b[0m \u001b[39mif\u001b[39;00m block \u001b[39mand\u001b[39;00m timeout \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m    102\u001b[0m     \u001b[39mwith\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_rlock:\n\u001b[0;32m--> 103\u001b[0m         res \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_recv_bytes()\n\u001b[1;32m    104\u001b[0m     \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_sem\u001b[39m.\u001b[39mrelease()\n\u001b[1;32m    105\u001b[0m \u001b[39melse\u001b[39;00m:\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/connection.py:216\u001b[0m, in \u001b[0;36m_ConnectionBase.recv_bytes\u001b[0;34m(self, maxlength)\u001b[0m\n\u001b[1;32m    214\u001b[0m \u001b[39mif\u001b[39;00m maxlength \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m maxlength \u001b[39m<\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[1;32m    215\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mnegative maxlength\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m--> 216\u001b[0m buf \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_recv_bytes(maxlength)\n\u001b[1;32m    217\u001b[0m \u001b[39mif\u001b[39;00m buf \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m    218\u001b[0m     \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_bad_message_length()\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/connection.py:414\u001b[0m, in \u001b[0;36mConnection._recv_bytes\u001b[0;34m(self, maxsize)\u001b[0m\n\u001b[1;32m    413\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_recv_bytes\u001b[39m(\u001b[39mself\u001b[39m, maxsize\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m):\n\u001b[0;32m--> 414\u001b[0m     buf \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_recv(\u001b[39m4\u001b[39;49m)\n\u001b[1;32m    415\u001b[0m     size, \u001b[39m=\u001b[39m struct\u001b[39m.\u001b[39munpack(\u001b[39m\"\u001b[39m\u001b[39m!i\u001b[39m\u001b[39m\"\u001b[39m, buf\u001b[39m.\u001b[39mgetvalue())\n\u001b[1;32m    416\u001b[0m     \u001b[39mif\u001b[39;00m size \u001b[39m==\u001b[39m \u001b[39m-\u001b[39m\u001b[39m1\u001b[39m:\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/multiprocessing/connection.py:379\u001b[0m, in \u001b[0;36mConnection._recv\u001b[0;34m(self, size, read)\u001b[0m\n\u001b[1;32m    377\u001b[0m remaining \u001b[39m=\u001b[39m size\n\u001b[1;32m    378\u001b[0m \u001b[39mwhile\u001b[39;00m remaining \u001b[39m>\u001b[39m \u001b[39m0\u001b[39m:\n\u001b[0;32m--> 379\u001b[0m     chunk \u001b[39m=\u001b[39m read(handle, remaining)\n\u001b[1;32m    380\u001b[0m     n \u001b[39m=\u001b[39m \u001b[39mlen\u001b[39m(chunk)\n\u001b[1;32m    381\u001b[0m     \u001b[39mif\u001b[39;00m n \u001b[39m==\u001b[39m \u001b[39m0\u001b[39m:\n",
+            "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+          ]
+        }
+      ],
       "source": [
         "## Start the training, this should take around 15 minutes\n",
         "register_vizdoom_components()\n",
@@ -358,7 +601,7 @@
         "# The scenario we train on today is health gathering\n",
         "# other scenarios include \"doom_basic\", \"doom_two_colors_easy\", \"doom_dm\", \"doom_dwango5\", \"doom_my_way_home\", \"doom_deadly_corridor\", \"doom_defend_the_center\", \"doom_defend_the_line\"\n",
         "env = \"doom_health_gathering_supreme\"\n",
-        "cfg = parse_vizdoom_cfg(argv=[f\"--env={env}\", \"--num_workers=8\", \"--num_envs_per_worker=4\", \"--train_for_env_steps=4000000\"])\n",
+        "cfg = parse_vizdoom_cfg(argv=[f\"--env={env}\", \"--num_workers=8\", \"--num_envs_per_worker=4\", \"--train_for_env_steps=40000000\"])\n",
         "\n",
         "status = run_rl(cfg)"
       ]
@@ -416,12 +659,12 @@
     },
     {
       "cell_type": "markdown",
-      "source": [
-        "The agent has learned something, but its performance could be better. We would clearly need to train for longer. But let's upload this model to the Hub."
-      ],
       "metadata": {
         "id": "2A4pf_1VwPqR"
-      }
+      },
+      "source": [
+        "The agent has learned something, but its performance could be better. We would clearly need to train for longer. But let's upload this model to the Hub."
+      ]
     },
     {
       "cell_type": "markdown",
@@ -464,11 +707,28 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 6,
       "metadata": {
         "id": "GoQm_jYSOts0"
       },
-      "outputs": [],
+      "outputs": [
+        {
+          "ename": "ImportError",
+          "evalue": "The `notebook_login` function can only be used in a notebook (Jupyter or Colab) and you need the `ipywidgets` module: `pip install ipywidgets`.",
+          "output_type": "error",
+          "traceback": [
+            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+            "\u001b[0;31mModuleNotFoundError\u001b[0m                       Traceback (most recent call last)",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/huggingface_hub/_login.py:188\u001b[0m, in \u001b[0;36mnotebook_login\u001b[0;34m()\u001b[0m\n\u001b[1;32m    187\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 188\u001b[0m     \u001b[39mimport\u001b[39;00m \u001b[39mipywidgets\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mwidgets\u001b[39;00m \u001b[39mas\u001b[39;00m \u001b[39mwidgets\u001b[39;00m  \u001b[39m# type: ignore\u001b[39;00m\n\u001b[1;32m    189\u001b[0m     \u001b[39mfrom\u001b[39;00m \u001b[39mIPython\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdisplay\u001b[39;00m \u001b[39mimport\u001b[39;00m clear_output, display  \u001b[39m# type: ignore\u001b[39;00m\n",
+            "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'ipywidgets'",
+            "\nDuring handling of the above exception, another exception occurred:\n",
+            "\u001b[0;31mImportError\u001b[0m                               Traceback (most recent call last)",
+            "Cell \u001b[0;32mIn[6], line 2\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mhuggingface_hub\u001b[39;00m \u001b[39mimport\u001b[39;00m notebook_login\n\u001b[0;32m----> 2\u001b[0m notebook_login()\n\u001b[1;32m      3\u001b[0m get_ipython()\u001b[39m.\u001b[39msystem(\u001b[39m'\u001b[39m\u001b[39mgit config --global credential.helper store\u001b[39m\u001b[39m'\u001b[39m)\n",
+            "File \u001b[0;32m~/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/huggingface_hub/_login.py:191\u001b[0m, in \u001b[0;36mnotebook_login\u001b[0;34m()\u001b[0m\n\u001b[1;32m    189\u001b[0m     \u001b[39mfrom\u001b[39;00m \u001b[39mIPython\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdisplay\u001b[39;00m \u001b[39mimport\u001b[39;00m clear_output, display  \u001b[39m# type: ignore\u001b[39;00m\n\u001b[1;32m    190\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mImportError\u001b[39;00m:\n\u001b[0;32m--> 191\u001b[0m     \u001b[39mraise\u001b[39;00m \u001b[39mImportError\u001b[39;00m(\n\u001b[1;32m    192\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39mThe `notebook_login` function can only be used in a notebook (Jupyter or\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    193\u001b[0m         \u001b[39m\"\u001b[39m\u001b[39m Colab) and you need the `ipywidgets` module: `pip install ipywidgets`.\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    194\u001b[0m     )\n\u001b[1;32m    196\u001b[0m box_layout \u001b[39m=\u001b[39m widgets\u001b[39m.\u001b[39mLayout(\n\u001b[1;32m    197\u001b[0m     display\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mflex\u001b[39m\u001b[39m\"\u001b[39m, flex_flow\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mcolumn\u001b[39m\u001b[39m\"\u001b[39m, align_items\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mcenter\u001b[39m\u001b[39m\"\u001b[39m, width\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m50\u001b[39m\u001b[39m%\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m    198\u001b[0m )\n\u001b[1;32m    200\u001b[0m token_widget \u001b[39m=\u001b[39m widgets\u001b[39m.\u001b[39mPassword(description\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mToken:\u001b[39m\u001b[39m\"\u001b[39m)\n",
+            "\u001b[0;31mImportError\u001b[0m: The `notebook_login` function can only be used in a notebook (Jupyter or Colab) and you need the `ipywidgets` module: `pip install ipywidgets`."
+          ]
+        }
+      ],
       "source": [
         "from huggingface_hub import notebook_login\n",
         "notebook_login()\n",
@@ -477,15 +737,231 @@
     },
     {
       "cell_type": "code",
-      "execution_count": null,
+      "execution_count": 8,
       "metadata": {
         "id": "sEawW_i0OvJV"
       },
-      "outputs": [],
+      "outputs": [
+        {
+          "name": "stderr",
+          "output_type": "stream",
+          "text": [
+            "\u001b[33m[2023-02-24 07:58:39,896][784615] Loading existing experiment configuration from /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment/config.json\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,896][784615] Overriding arg 'num_workers' with value 1 passed from command line\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,897][784615] Adding new argument 'no_render'=True that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,897][784615] Adding new argument 'save_video'=True that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,898][784615] Adding new argument 'video_frames'=1000000000.0 that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,898][784615] Adding new argument 'video_name'=None that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,899][784615] Adding new argument 'max_num_frames'=100000 that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,899][784615] Adding new argument 'max_num_episodes'=10 that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,900][784615] Adding new argument 'push_to_hub'=True that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,900][784615] Adding new argument 'hf_repository'='chqmatteo/rl_course_vizdoom_health_gathering_supreme' that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,900][784615] Adding new argument 'policy_index'=0 that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,901][784615] Adding new argument 'eval_deterministic'=False that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,901][784615] Adding new argument 'train_script'=None that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,902][784615] Adding new argument 'enjoy_script'=None that is not in the saved config file!\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,902][784615] Using frameskip 1 and render_action_repeat=4 for evaluation\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,911][784615] RunningMeanStd input shape: (3, 72, 128)\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,912][784615] RunningMeanStd input shape: (1,)\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,919][784615] ConvEncoder: input_channels=3\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,943][784615] Conv encoder output size: 512\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:39,944][784615] Policy head output size: 512\u001b[0m\n",
+            "\u001b[33m[2023-02-24 07:58:39,980][784615] Loading state from checkpoint /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment/checkpoint_p0/checkpoint_000000268_1097728.pth...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,400][784615] Num frames 100...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,470][784615] Num frames 200...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,530][784615] Num frames 300...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,596][784615] Num frames 400...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:40,684][784615] Avg episode rewards: #0: 5.480, true rewards: #0: 4.480\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:40,685][784615] Avg episode reward: 5.480, avg true_objective: 4.480\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,719][784615] Num frames 500...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,787][784615] Num frames 600...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,850][784615] Num frames 700...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:40,918][784615] Num frames 800...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,005][784615] Num frames 900...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:41,078][784615] Avg episode rewards: #0: 6.640, true rewards: #0: 4.640\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:41,079][784615] Avg episode reward: 6.640, avg true_objective: 4.640\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,129][784615] Num frames 1000...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,202][784615] Num frames 1100...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,276][784615] Num frames 1200...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,360][784615] Num frames 1300...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,429][784615] Num frames 1400...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,493][784615] Num frames 1500...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,554][784615] Num frames 1600...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:41,667][784615] Avg episode rewards: #0: 8.653, true rewards: #0: 5.653\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:41,668][784615] Avg episode reward: 8.653, avg true_objective: 5.653\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,673][784615] Num frames 1700...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,734][784615] Num frames 1800...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,791][784615] Num frames 1900...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,848][784615] Num frames 2000...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,905][784615] Num frames 2100...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:41,961][784615] Num frames 2200...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,055][784615] Avg episode rewards: #0: 8.680, true rewards: #0: 5.680\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,056][784615] Avg episode reward: 8.680, avg true_objective: 5.680\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,077][784615] Num frames 2300...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,141][784615] Num frames 2400...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,203][784615] Num frames 2500...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,260][784615] Num frames 2600...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,346][784615] Avg episode rewards: #0: 7.712, true rewards: #0: 5.312\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,348][784615] Avg episode reward: 7.712, avg true_objective: 5.312\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,385][784615] Num frames 2700...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,449][784615] Num frames 2800...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,506][784615] Num frames 2900...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,563][784615] Num frames 3000...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,621][784615] Num frames 3100...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,688][784615] Num frames 3200...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,788][784615] Avg episode rewards: #0: 7.940, true rewards: #0: 5.440\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:42,788][784615] Avg episode reward: 7.940, avg true_objective: 5.440\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,817][784615] Num frames 3300...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,890][784615] Num frames 3400...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:42,964][784615] Num frames 3500...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,040][784615] Num frames 3600...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,128][784615] Avg episode rewards: #0: 7.354, true rewards: #0: 5.211\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,130][784615] Avg episode reward: 7.354, avg true_objective: 5.211\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,174][784615] Num frames 3700...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,248][784615] Num frames 3800...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,316][784615] Num frames 3900...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,383][784615] Num frames 4000...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,475][784615] Avg episode rewards: #0: 7.205, true rewards: #0: 5.080\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,476][784615] Avg episode reward: 7.205, avg true_objective: 5.080\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,498][784615] Num frames 4100...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,556][784615] Num frames 4200...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,614][784615] Num frames 4300...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,670][784615] Num frames 4400...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,727][784615] Num frames 4500...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,790][784615] Num frames 4600...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,891][784615] Avg episode rewards: #0: 7.413, true rewards: #0: 5.191\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:43,891][784615] Avg episode reward: 7.413, avg true_objective: 5.191\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,912][784615] Num frames 4700...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:43,982][784615] Num frames 4800...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:44,049][784615] Num frames 4900...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:44,117][784615] Num frames 5000...\u001b[0m\n",
+            "\u001b[36m[2023-02-24 07:58:44,184][784615] Num frames 5100...\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:44,250][784615] Avg episode rewards: #0: 7.220, true rewards: #0: 5.120\u001b[0m\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:58:44,250][784615] Avg episode reward: 7.220, avg true_objective: 5.120\u001b[0m\n",
+            "ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers\n",
+            "  built with gcc 7.3.0 (crosstool-NG 1.23.0.449-a04d0)\n",
+            "  configuration: --prefix=/opt/conda/conda-bld/ffmpeg_1597178665428/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh --cc=/opt/conda/conda-bld/ffmpeg_1597178665428/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-pic --enable-pthreads --enable-shared --disable-static --enable-version3 --enable-zlib --enable-libmp3lame\n",
+            "  libavutil      56. 51.100 / 56. 51.100\n",
+            "  libavcodec     58. 91.100 / 58. 91.100\n",
+            "  libavformat    58. 45.100 / 58. 45.100\n",
+            "  libavdevice    58. 10.100 / 58. 10.100\n",
+            "  libavfilter     7. 85.100 /  7. 85.100\n",
+            "  libavresample   4.  0.  0 /  4.  0.  0\n",
+            "  libswscale      5.  7.100 /  5.  7.100\n",
+            "  libswresample   3.  7.100 /  3.  7.100\n",
+            "Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/sf2_chqma/replay.mp4':\n",
+            "  Metadata:\n",
+            "    major_brand     : isom\n",
+            "    minor_version   : 512\n",
+            "    compatible_brands: isomiso2mp41\n",
+            "    encoder         : Lavf59.27.100\n",
+            "  Duration: 00:02:26.57, start: 0.000000, bitrate: 1521 kb/s\n",
+            "    Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 240x180 [SAR 1:1 DAR 4:3], 1519 kb/s, 35 fps, 35 tbr, 17920 tbn, 35 tbc (default)\n",
+            "    Metadata:\n",
+            "      handler_name    : VideoHandler\n",
+            "Unknown encoder 'libx264'\n",
+            "\u001b[36m[2023-02-24 07:58:46,584][784615] Replay video saved to /mnt/chqma/data-ssd-01/dataset/oss/RWKV-LM/deep-rl-class/notebooks/unit8/train_dir/default_experiment/replay.mp4!\u001b[0m\n",
+            "/home/chqma/miniconda3/envs/deep-rl-class/lib/python3.10/site-packages/huggingface_hub/_commit_api.py:493: UserWarning: About to commit an empty file: 'git.diff'. Are you sure this is intended?\n",
+            "  warnings.warn(\n",
+            "\n",
+            "\u001b[A\n",
+            "\n",
+            "best_000000254_1040384_reward_6.010.pth:   0%|          | 0.00/34.9M [00:00<?, ?B/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:   0%|          | 123k/34.9M [00:00<01:35, 364kB/s]  \n",
+            "best_000000254_1040384_reward_6.010.pth:   1%|          | 279k/34.9M [00:00<01:00, 576kB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:   4%|▍         | 1.42M/34.9M [00:00<00:10, 3.29MB/s]\n",
+            "events.out.tfevents.1677225358.pop-os: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 72.8k/72.8k [00:01<00:00, 65.3kB/s]s]\n",
+            "\n",
+            "\n",
+            "\u001b[A\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  11%|β–ˆ         | 3.80M/34.9M [00:01<00:11, 2.67MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  13%|β–ˆβ–Ž        | 4.55M/34.9M [00:02<00:11, 2.55MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  15%|β–ˆβ–Œ        | 5.37M/34.9M [00:02<00:13, 2.27MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  21%|β–ˆβ–ˆ        | 7.19M/34.9M [00:03<00:11, 2.47MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  23%|β–ˆβ–ˆβ–Ž       | 7.95M/34.9M [00:03<00:11, 2.41MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  27%|β–ˆβ–ˆβ–‹       | 9.45M/34.9M [00:04<00:10, 2.32MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  29%|β–ˆβ–ˆβ–‰       | 10.2M/34.9M [00:04<00:10, 2.30MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  34%|β–ˆβ–ˆβ–ˆβ–Ž      | 11.8M/34.9M [00:05<00:09, 2.33MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  36%|β–ˆβ–ˆβ–ˆβ–Œ      | 12.6M/34.9M [00:05<00:09, 2.35MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  38%|β–ˆβ–ˆβ–ˆβ–Š      | 13.4M/34.9M [00:05<00:09, 2.36MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  41%|β–ˆβ–ˆβ–ˆβ–ˆ      | 14.2M/34.9M [00:06<00:08, 2.34MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž     | 14.9M/34.9M [00:06<00:08, 2.33MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹     | 16.4M/34.9M [00:07<00:08, 2.28MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰     | 17.2M/34.9M [00:07<00:07, 2.29MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–    | 17.9M/34.9M [00:07<00:07, 2.27MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž    | 18.7M/34.9M [00:08<00:07, 2.27MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š    | 20.2M/34.9M [00:08<00:06, 2.24MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰    | 20.9M/34.9M [00:09<00:06, 2.22MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 21.8M/34.9M [00:09<00:06, 2.20MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–   | 22.5M/34.9M [00:10<00:05, 2.09MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹   | 23.3M/34.9M [00:10<00:05, 2.04MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰   | 24.0M/34.9M [00:10<00:05, 1.98MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   | 24.8M/34.9M [00:11<00:05, 1.94MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž  | 25.5M/34.9M [00:11<00:04, 1.90MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ  | 26.3M/34.9M [00:12<00:04, 1.84MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹  | 27.0M/34.9M [00:12<00:04, 1.81MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰  | 27.8M/34.9M [00:12<00:03, 1.79MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 28.5M/34.9M [00:13<00:03, 1.76MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 29.3M/34.9M [00:13<00:03, 1.75MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 30.0M/34.9M [00:14<00:02, 1.74MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 30.8M/34.9M [00:14<00:02, 1.73MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 31.6M/34.9M [00:15<00:01, 1.72MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 32.3M/34.9M [00:15<00:01, 1.71MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 33.1M/34.9M [00:16<00:01, 1.70MB/s]\n",
+            "best_000000254_1040384_reward_6.010.pth:  97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 33.8M/34.9M [00:16<00:00, 1.70MB/s]\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth:  99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 34.6M/34.9M [00:16<00:00, 1.70MB/s]\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "best_000000254_1040384_reward_6.010.pth: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 34.9M/34.9M [00:18<00:00, 1.89MB/s]\n",
+            "\n",
+            "\n",
+            "\u001b[A\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "\u001b[A\n",
+            "checkpoint_000000268_1097728.pth: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 34.9M/34.9M [00:23<00:00, 1.49MB/s]\n",
+            "\n",
+            "\n",
+            "Upload 3 LFS files: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 3/3 [00:23<00:00,  7.81s/it]\n",
+            "\u001b[37m\u001b[1m[2023-02-24 07:59:12,402][784615] The model has been pushed to https://huggingface.co/chqmatteo/rl_course_vizdoom_health_gathering_supreme\u001b[0m\n"
+          ]
+        }
+      ],
       "source": [
         "from sample_factory.enjoy import enjoy\n",
         "\n",
-        "hf_username = \"ThomasSimonini\" # insert your HuggingFace username here\n",
+        "hf_username = \"chqmatteo\" # insert your HuggingFace username here\n",
         "\n",
         "cfg = parse_vizdoom_cfg(argv=[f\"--env={env}\", \"--num_workers=1\", \"--save_video\", \"--no_render\", \"--max_num_episodes=10\", \"--max_num_frames=100000\", \"--push_to_hub\", f\"--hf_repository={hf_username}/rl_course_vizdoom_health_gathering_supreme\"], evaluation=True)\n",
         "status = enjoy(cfg)"
@@ -493,14 +969,14 @@
     },
     {
       "cell_type": "markdown",
+      "metadata": {
+        "id": "9PzeXx-qxVvw"
+      },
       "source": [
         "## Let's load another model\n",
         "\n",
         "\n"
-      ],
-      "metadata": {
-        "id": "9PzeXx-qxVvw"
-      }
+      ]
     },
     {
       "cell_type": "markdown",
@@ -566,16 +1042,16 @@
     },
     {
       "cell_type": "markdown",
+      "metadata": {
+        "id": "ie5YWC3NyKO8"
+      },
       "source": [
         "## Some additional challenges πŸ†: Doom Deathmatch\n",
         "\n",
         "Training an agent to play a Doom deathmatch **takes many hours on a more beefy machine than is available in Colab**. \n",
         "\n",
         "Fortunately, we have have **already trained an agent in this scenario and it is available in the πŸ€— Hub!** Let’s download the model and visualize the agent’s performance."
-      ],
-      "metadata": {
-        "id": "ie5YWC3NyKO8"
-      }
+      ]
     },
     {
       "cell_type": "code",
@@ -591,12 +1067,12 @@
     },
     {
       "cell_type": "markdown",
-      "source": [
-        "Given the agent plays for a long time the video generation can take **10 minutes**."
-      ],
       "metadata": {
         "id": "7AX_LwxR2FQ0"
-      }
+      },
+      "source": [
+        "Given the agent plays for a long time the video generation can take **10 minutes**."
+      ]
     },
     {
       "cell_type": "code",
@@ -623,17 +1099,20 @@
     },
     {
       "cell_type": "markdown",
+      "metadata": {
+        "id": "N6mEC-4zyihx"
+      },
       "source": [
         "\n",
         "You **can try to train your agent in this environment** using the code above, but not on colab.\n",
         "**Good luck 🀞**"
-      ],
-      "metadata": {
-        "id": "N6mEC-4zyihx"
-      }
+      ]
     },
     {
       "cell_type": "markdown",
+      "metadata": {
+        "id": "YnDAngN6zeeI"
+      },
       "source": [
         "If you prefer an easier scenario, **why not try training in another ViZDoom scenario such as `doom_deadly_corridor` or `doom_defend_the_center`.**\n",
         "\n",
@@ -645,34 +1124,46 @@
         "This concludes the last unit. But we are not finished yet! πŸ€— The following **bonus section include some of the most interesting, advanced and cutting edge work in Deep Reinforcement Learning**.\n",
         "\n",
         "## Keep learning, stay awesome πŸ€—"
-      ],
-      "metadata": {
-        "id": "YnDAngN6zeeI"
-      }
+      ]
     }
   ],
   "metadata": {
     "accelerator": "GPU",
     "colab": {
-      "provenance": [],
       "collapsed_sections": [
         "PU4FVzaoM6fC",
         "nB68Eb9UgC94",
         "ez5UhUtYcWXF",
         "sgRy6wnrgnij"
       ],
+      "include_colab_link": true,
       "private_outputs": true,
-      "include_colab_link": true
+      "provenance": []
     },
     "gpuClass": "standard",
     "kernelspec": {
-      "display_name": "Python 3",
+      "display_name": "deep-rl-class",
+      "language": "python",
       "name": "python3"
     },
     "language_info": {
-      "name": "python"
+      "codemirror_mode": {
+        "name": "ipython",
+        "version": 3
+      },
+      "file_extension": ".py",
+      "mimetype": "text/x-python",
+      "name": "python",
+      "nbconvert_exporter": "python",
+      "pygments_lexer": "ipython3",
+      "version": "3.10.9"
+    },
+    "vscode": {
+      "interpreter": {
+        "hash": "da4ecdf31b09708386948f91c5b725d7113689587e88c28098219103c44ec57b"
+      }
     }
   },
   "nbformat": 4,
   "nbformat_minor": 0
-}
\ No newline at end of file
+}