WEBVTT

00:00.540 --> 00:05.090
Hola y bienvenidos a esta historia, casi el título final de este módulo.

00:05.100 --> 00:10.260
Solo voy a explicar el código principal que ejecutará todo antes de obtener los resultados

00:10.290 --> 00:11.930
emocionantes y ver los videos.

00:12.090 --> 00:15.920
Este es el código principal y, como pueden ver, es bastante corto.

00:15.930 --> 00:21.120
Comenzamos por importar las bibliotecas y los módulos y también las diferentes clases y funciones

00:21.120 --> 00:24.270
que hicimos como Altikriti desde nuestro archivo de modelo.

00:24.390 --> 00:30.210
La función de tren del archivo de tren y la función de prueba del archivo de prueba y,

00:30.270 --> 00:31.930
por supuesto, importamos nuestro optimizador.

00:31.950 --> 00:37.350
Luego comenzamos con la primera sección donde ingresamos a una clase con todos los parámetros.

00:37.500 --> 00:39.660
Y esto es esto tal vez.

00:39.720 --> 00:44.040
Recuerde que este es el objeto de BRAM que creamos a partir de esta clase de harams.

00:44.040 --> 00:48.900
Cada vez que tenemos un parámetro como la tasa de aprendizaje, no nos falta.

00:49.200 --> 00:50.870
Entonces, repasemos rápidamente.

00:50.880 --> 00:54.380
El primero o aquí son las tasas de aprendizaje.

00:54.480 --> 00:59.140
Entonces, como puedes ver, elegimos un pequeño y calificas el segundo es el parámetro.

00:59.160 --> 01:09.810
Nuevamente lo tomamos como 0. parámetro OneTel un conjunto de 1 16 procesos 20 pasos y una longitud máxima de 10000.

01:09.900 --> 01:10.850
39 tomamos un

01:10.850 --> 01:17.580
Y hablamos de que este es el parámetro que establecemos para asegurarnos de que el agente no se quede atascado indefinidamente en

01:17.730 --> 01:20.910
un estado del entorno, por lo que esto detendrá el juego.

01:21.060 --> 01:28.800
Si la duración del episodio supera esta longitud máxima y, finalmente, por supuesto, obtenemos el nombre de

01:28.800 --> 01:29.690
nuestro entorno.

01:29.790 --> 01:30.890
Romper es cero.

01:30.990 --> 01:37.770
Y, por cierto, también puedes jugar en otros entornos simplemente cambiando el nombre del entorno

01:37.770 --> 01:38.410
aquí.

01:38.430 --> 01:44.760
Entonces, si quieres jugar a otras versiones destacadas o incluso a algunos otros juegos de

01:45.030 --> 01:48.580
Atari, puedes reemplazar este cero por otros juegos.

01:48.750 --> 01:53.730
Pero puedo decirles que el video de presentación ya es muy desafiante.

01:53.730 --> 01:56.030
Muy bien, así que todos los parámetros aquí.

01:56.160 --> 01:59.330
Y luego está el código principal para la ejecución principal.

01:59.550 --> 02:02.850
Y entonces, veamos qué hacemos en esta primera línea.

02:02.850 --> 02:05.270
Establecemos un hilo por núcleo.

02:05.430 --> 02:11.880
Paramjit que inicializará todos estos parámetros aquí porque hay variables asociadas a este objeto de BRAM.

02:12.150 --> 02:18.810
Luego, en la segunda línea obtenemos todos los renderizadores, ya sabes, creando un nuevo objeto de

02:18.810 --> 02:19.490
la clase

02:19.560 --> 02:20.840
Luego establecemos la semilla.

02:20.970 --> 02:28.830
Luego obtenemos nuestro entorno utilizando el árbol Crear y la función con el nombre de nuestro entorno, que se

02:28.830 --> 02:30.040
rompe de cero.

02:30.040 --> 02:35.410
Ves células que nombran y, por lo tanto, el parámetro y el nombre es bastante cero.

02:35.430 --> 02:37.660
Entonces eso nos conseguirá el ambiente de ruptura.

02:37.890 --> 02:42.870
de crear un entorno, pero usted sabe que debe mejorar todo el proceso y mejorar el rendimiento.

02:42.870 --> 02:45.540
Y, por cierto, esta no es la forma habitual

02:45.690 --> 02:52.470
Bueno, usamos esto para crear un ambiente optimizado y esto lo hacemos. El universo del universo es un

02:52.630 --> 02:57.730
paquete que viene con todos los paquetes que instaló en el motor abierto.

02:57.870 --> 03:01.490
Bien, gracias al universo obtenemos un entorno optimizado.

03:01.590 --> 03:03.320
Esto es de lo que se trata aquí.

03:04.050 --> 03:09.240
Luego obtenemos nuestro modelo compartido creando un objeto de la clase crítica activa.

03:09.240 --> 03:14.430
Y aquí es importante comprender que este modelo compartido es el modelo compartido por los

03:14.430 --> 03:15.030
diferentes agentes.

03:15.180 --> 03:17.880
Entonces tenemos diferentes hilos en diferentes cursos.

03:18.210 --> 03:25.410
Y hablando de amenazas en la próxima línea aquí, modelo fruncido que comparte memoria, lo que hacemos es almacenar el modelo en

03:25.500 --> 03:31.260
la memoria compartida de la computadora para que todos los hilos puedan tener acceso a ella aunque

03:31.260 --> 03:32.960
estén en un rumbo diferente.

03:33.000 --> 03:34.510
Entonces eso es lo que hacemos aquí.

03:34.530 --> 03:42.410
Esto es para habilitar esto, luego tenemos nuestro optimizador vinculado a los parámetros de nuestro modelo compartido y con una

03:42.410 --> 03:45.780
tasa de aprendizaje de un punto o uno.

03:45.930 --> 03:51.030
la memoria compartida para que todos los agentes puedan acceder a ella para optimizar el modelo.

03:51.030 --> 03:57.720
Y de nuevo, es importante entender que el optimizador también se comparte porque va a actuar sobre el modelo compartido

03:57.780 --> 04:02.530
y diciendo que la próxima línea optimizada que comparte memoria almacenamos el optimizador en

04:02.910 --> 04:10.260
Luego, inicializamos nuestros procesos para que el proceso de prueba no actualice el modelo compartido, pero solo lo usa para

04:10.260 --> 04:14.710
probarlo en una parte e imprimir el puntaje y grabar los videos.

04:14.820 --> 04:17.920
Entonces eso es exactamente lo que se hace aquí con Target es igual a prueba.

04:17.940 --> 04:24.330
Ese es el proceso de prueba y este proceso aquí está cortado de la tortura que preprocesamiento múltiple.

04:24.450 --> 04:31.600
Entonces, aquí y lo que hace es que básicamente ejecuta una función en un hilo independiente.

04:31.860 --> 04:38.050
Entonces, cuando reiniciamos, comenzamos un nuevo proceso que fue el año pasado inicial en este momento.

04:38.370 --> 04:45.030
Y luego, con este proceso para agregar P, agregamos el proceso en la lista de procesos.

04:45.270 --> 04:52.170
Y finalmente en este ciclo aquí hacemos un ciclo para ejecutar todos los otros procesos que serán entrenados

04:52.380 --> 04:54.320
al actualizar el modelo compartido.

04:54.780 --> 04:58.030
Y eso es básicamente lo que sucede en las últimas líneas de código aquí.

04:58.380 --> 05:03.870
Entonces, si no quiere entrar en detalles, lo importante es entender que esto ejecutará los procesos

05:03.870 --> 05:09.420
de una manera óptima y, por lo tanto, todos deberíamos ser buenos para ejecutar este código

05:09.420 --> 05:12.670
y tener un modelo capacitado y eventualmente mirar Los resultados.

05:12.840 --> 05:14.150
Entonces no puedo esperar para hacer eso.

05:14.160 --> 05:16.110
Esto va a ser muy emocionante.

05:16.110 --> 05:19.240
Trataré de encontrar gente ahora para que todos podamos verla juntos.

05:19.350 --> 05:21.440
Y así hasta la próxima vez I.
