WEBVTT

00:00.330 --> 00:04.950
Xin chào và chào mừng bạn đến với hướng dẫn này, gần như là hướng dẫn cuối cùng của mô-đun này.

00:04.950 --> 00:10.200
Tôi chỉ giải thích mã chính sẽ thực thi toàn bộ trước khi chúng ta nhận được kết quả

00:10.200 --> 00:11.870
thú vị và xem video.

00:11.880 --> 00:15.690
Vì vậy, đây là mã chính và như bạn có thể thấy, đoạn mã này khá ngắn.

00:15.690 --> 00:21.060
Chúng tôi bắt đầu bằng cách nhập các thư viện và mô-đun cũng như các lớp và chức năng khác nhau mà

00:21.060 --> 00:27.450
chúng tôi đã thực hiện như phê bình tích cực từ tệp mô hình của chúng tôi, hàm đào tạo từ tệp đào tạo và chức năng kiểm

00:27.450 --> 00:28.680
tra từ tệp kiểm tra.

00:28.680 --> 00:31.200
Và tất nhiên, chúng tôi nhập trình tối ưu hóa của mình.

00:31.710 --> 00:38.460
Sau đó, chúng ta bắt đầu với phần đầu tiên mà chúng ta vào một lớp, tất cả các tham số và đây là

00:38.460 --> 00:39.510
tham số này.

00:39.510 --> 00:46.440
Hãy nhớ rằng, đây là đối tượng tham số mà chúng tôi đã tạo từ lớp tham số này mỗi khi chúng tôi nhận được một tham

00:46.440 --> 00:48.720
số như tốc độ học, gamma hoặc tau.

00:48.930 --> 00:50.610
Vì vậy, chúng ta hãy lướt qua chúng một cách nhanh chóng.

00:50.610 --> 00:54.270
R đầu tiên ở đây là tỷ lệ học tập.

00:54.270 --> 00:56.610
Vì vậy, như bạn có thể thấy, chúng tôi chọn một tỷ lệ học tập nhỏ.

00:56.820 --> 00:59.010
Tham số thứ hai là tham số gamma.

00:59.010 --> 01:01.920
Một lần nữa, chúng tôi coi nó là 8. 99.

01:01.920 --> 01:10.620
Chúng tôi lấy tham số một kiểu, một tập hợp gồm 116 quy trình, 20 bước, độ dài tối đa là 10.000.

01:10.620 --> 01:12.210
Hãy nhớ rằng chúng tôi đã nói về điều đó.

01:12.330 --> 01:18.360
Đây là thông số chúng tôi đặt để đảm bảo tác nhân không bị mắc kẹt vô thời hạn vào một trạng thái của

01:18.360 --> 01:18.870
môi trường.

01:18.870 --> 01:24.630
Vì vậy, điều này sẽ dừng trò chơi nếu thời lượng tập vượt quá thời lượng tập tối đa này.

01:24.750 --> 01:30.780
Và cuối cùng, tất nhiên, chúng tôi nhận được tên của môi trường của chúng tôi, phá vỡ con số không.

01:30.780 --> 01:37.710
Và nhân tiện, bạn cũng có thể chơi trên một số môi trường khác chỉ bằng cách thay đổi tên của môi trường này tại

01:37.710 --> 01:38.130
đây.

01:38.130 --> 01:43.800
Vì vậy, nếu bạn muốn chơi một số phiên bản đột phá khác hoặc thậm chí một số trò chơi Atari

01:43.800 --> 01:50.670
khác, bạn chỉ cần thay thế hình ảnh đột phá này ở đây bằng một số trò chơi khác, nhưng tôi có thể nói với bạn

01:50.670 --> 01:52.890
rằng video đột phá đã rất khó khăn.

01:53.580 --> 01:53.910
Được rồi.

01:53.910 --> 01:59.250
Vì vậy, tất cả các tham số ở đây và sau đó là mã chính cho lần chạy chính.

01:59.250 --> 02:02.610
Và ở đây, hãy xem những gì chúng tôi làm trong dòng đầu tiên này.

02:02.610 --> 02:05.100
Chúng tôi đặt một chủ đề cho mỗi lõi.

02:05.130 --> 02:12.540
Sau đó, trong dòng thứ hai, chúng ta nhận được tất cả các tham số của mình bằng cách tạo một đối tượng của lớp params sẽ

02:12.540 --> 02:13.950
nhận được một khởi tạo.

02:13.980 --> 02:19.380
Tất cả các tham số này ở đây bởi vì có các biến được gắn vào đối tượng tham số này.

02:19.380 --> 02:27.630
Sau đó, chúng tôi đặt hạt giống, sau đó chúng tôi nhận được môi trường của mình bằng cách sử dụng mục nhập và chức năng tạo với tên môi trường

02:27.630 --> 02:29.910
của chúng tôi là đột phá từ 0.

02:29.910 --> 02:35.100
Bạn thấy tên env đó và do đó các tham số của tên env đó bị phá vỡ bằng 0.

02:35.100 --> 02:37.650
Vì vậy, điều đó sẽ giúp chúng ta có được môi trường đột phá.

02:37.650 --> 02:42.540
Và nhân tiện, đây không phải là cách thông thường để tạo môi trường, nhưng bạn biết đấy, để cải

02:42.540 --> 02:49.740
thiện toàn bộ quá trình và cải thiện hiệu suất trong khi chúng tôi sử dụng cách này để thực sự tạo ra một môi trường được tối ưu hóa

02:49.740 --> 02:52.560
và chúng tôi làm được điều này nhờ vào vũ trụ.

02:52.560 --> 02:57.150
Universe là một gói đi kèm với tất cả các gói bạn đã cài đặt trên không gian mở.

02:57.630 --> 03:01.380
Chà, nhờ có Universe, chúng tôi có được một môi trường được tối ưu hóa.

03:01.380 --> 03:03.240
Đây là tất cả những gì về ở đây.

03:03.860 --> 03:09.050
Sau đó, chúng tôi nhận được mô hình được chia sẻ của chúng tôi bằng cách tạo một đối tượng của lớp phê bình tích cực.

03:09.050 --> 03:14.360
Và vì vậy ở đây cần hiểu rằng mô hình dùng chung này là mô hình được chia sẻ bởi các tác nhân

03:14.360 --> 03:14.990
khác nhau.

03:14.990 --> 03:17.690
Vì vậy, chúng tôi có các luồng khác nhau trong các lõi khác nhau.

03:17.990 --> 03:25.370
Và nói về các luồng ở dòng tiếp theo ở đây, mô hình dùng chung chia sẻ bộ nhớ, những gì chúng ta làm là lưu mô hình

03:25.370 --> 03:31.220
trong bộ nhớ dùng chung của máy tính để tất cả các luồng có thể truy cập vào nó, ngay cả khi chúng

03:31.220 --> 03:32.780
ở các lõi khác nhau.

03:32.780 --> 03:34.400
Vì vậy, đó là những gì chúng tôi làm ở đây.

03:34.400 --> 03:36.440
Điều này là để kích hoạt điều này.

03:36.620 --> 03:43.670
Sau đó, chúng tôi nhận được trình tối ưu hóa của mình được liên kết với các thông số của mô hình được chia sẻ của chúng tôi và với tỷ lệ

03:43.670 --> 03:45.440
học tập là 0. 01 cái.

03:45.650 --> 03:50.870
Và một lần nữa, điều quan trọng là phải hiểu rằng trình tối ưu hóa cũng được chia sẻ vì nó sẽ

03:50.870 --> 03:55.940
hoạt động trên mô hình được chia sẻ và ở dòng tiếp theo sẽ tối ưu hóa bộ nhớ chia sẻ.

03:55.940 --> 04:01.730
Chúng tôi lưu trữ trình tối ưu hóa trong bộ nhớ dùng chung để tất cả các tác nhân có thể truy cập vào nó để tối ưu hóa

04:01.730 --> 04:02.330
mô hình.

04:02.720 --> 04:10.190
Sau đó, chúng tôi khởi tạo các quy trình của mình để quy trình kiểm tra không cập nhật mô hình được chia sẻ mà chỉ sử

04:10.190 --> 04:14.660
dụng mô hình đó để thử trên một phần và in điểm số và quay video.

04:14.660 --> 04:17.720
Vì vậy, đó chính xác là những gì được thực hiện ở đây với Kiểm tra Công bằng Mục tiêu.

04:17.720 --> 04:24.230
Đó là quá trình thử nghiệm và quá trình này ở đây là từ tiền xử lý đa.

04:24.230 --> 04:31.490
Vì vậy, đây và những gì nó làm là về cơ bản nó chạy một chức năng trên một luồng độc lập.

04:31.580 --> 04:38.060
Vì vậy, sau đó khi chúng ta bắt đầu P, chúng ta bắt đầu một quá trình mới được khởi tạo ở đây tại dòng này.

04:38.060 --> 04:44.990
Và sau đó với quy trình này mà thêm P, chúng tôi thêm quy trình vào danh sách các quy trình.

04:44.990 --> 04:52.190
Và cuối cùng trong vòng lặp này ở đây, chúng tôi chỉ thực hiện một vòng lặp để chạy tất cả các quy trình khác sẽ được đào tạo bằng

04:52.190 --> 04:54.230
cách cập nhật mô hình được chia sẻ.

04:54.470 --> 04:57.860
Và về cơ bản đó là những gì xảy ra trong những dòng mã cuối cùng ở đây.

04:58.130 --> 05:03.350
Vì vậy, nếu bạn không muốn đi vào chi tiết của nó, điều quan trọng cần hiểu là điều này sẽ

05:03.350 --> 05:09.230
chạy các quy trình theo cách tối ưu và do đó tất cả chúng ta nên thực hiện tốt mã này và có

05:09.230 --> 05:12.530
một mô hình được đào tạo và cuối cùng xem kết quả.

05:12.530 --> 05:14.060
Vì vậy, tôi không thể chờ đợi để làm điều đó.

05:14.060 --> 05:15.830
Điều này sẽ khá thú vị.

05:15.830 --> 05:19.130
Tôi sẽ cố gắng tìm ra vai trò quan trọng bây giờ để tất cả chúng ta có thể xem nó cùng nhau.

05:19.130 --> 05:21.560
Và vì vậy cho đến lần sau, hãy tận hưởng tôi.
