WEBVTT

00:02.310 --> 00:04.620
Luka: Witam wszystkich i zapraszam ponownie.

00:04.620 --> 00:05.453
W tym filmie będziemy

00:05.453 --> 00:07.710
mówić o ChatGPT i jak go używać do implementacji

00:07.710 --> 00:11.370
tego samego algorytmu dla Dooma, który będziemy używać

00:11.370 --> 00:13.350
w kursie, convolutional deep

00:13.350 --> 00:16.290
Q-learning.

00:16.290 --> 00:17.790
Więc w ciągu najbliższych

00:17.790 --> 00:22.440
kilku minut, mamy zamiar przejść przez sposób, że faktycznie wskazałem

00:22.440 --> 00:26.190
i poprosił ChatGPT dla nas, aby uzyskać nasz model.

00:26.190 --> 00:29.580
Pozwól więc, że pomogę ci zrozumieć, jak to zrobiłem i

00:29.580 --> 00:33.720
dlaczego zrobiłem pewne podpowiedzi w sposób, w jaki zrobiłem.

00:33.720 --> 00:38.460
Tak więc początkowa podpowiedź była dość dobrze opracowana z mojej strony.

00:38.460 --> 00:39.293
Powiedziałem: "Jesteś

00:39.293 --> 00:41.527
Senior Machine Learning Expert "z wieloletnim

00:41.527 --> 00:43.717
doświadczeniem w pracy nad projektami "stosującymi

00:43.717 --> 00:47.550
uczenie maszynowe do symulacji i robotyki. To jest pierwsza część, ustawienie sceny, nadanie

00:47.550 --> 00:48.750
im roli.

00:48.750 --> 00:51.330
Więc w zasadzie przestrzeń wektorowa całego ChatGPT

00:51.330 --> 00:55.410
będzie podpowiadana bardziej na tematy związane z uczeniem maszynowym.

00:55.410 --> 00:59.310
Teraz chcę wprowadzić do mojego kontekstu Dooma.

00:59.310 --> 01:04.310
I właściwie, jak dojść do tego punktu, powiedziałem: "Ok, zatrudniłem

01:04.500 --> 01:06.600
cię, abyś pomógł mi "z wdrożeniem

01:06.600 --> 01:08.887
algorytmu Convolutional Deep

01:08.887 --> 01:12.457
Q-Learning "dla środowiska Doom.

01:12.457 --> 01:14.407
"Celem jest posiadanie "w pełni funkcjonalnego

01:14.407 --> 01:15.337
algorytmu uczenia

01:15.337 --> 01:18.457
się wzmocnień "który może grać w Doom, środowisko gry.

01:18.457 --> 01:22.327
"Zaimplementowałem klasy "dla experience_replay" oraz pamięci

01:22.327 --> 01:24.187
i przetwarzania obrazów.

01:24.187 --> 01:27.903
"Dostarczę ci to "abyś mógł uwzględnić to w ostatecznym

01:28.777 --> 01:30.337
kodzie.

01:30.337 --> 01:34.800
To jest naprawdę ważne, co większości ludzi umyka.

01:34.800 --> 01:37.893
Musisz mieć jakiś sposób, aby powiedzieć mu,

01:38.790 --> 01:42.120
lub powiedzieć ChatGPT, że masz już coś i chcesz

01:42.120 --> 01:43.860
użyć tego kodu w ostatecznej

01:43.860 --> 01:45.720
implementacji.

01:45.720 --> 01:50.720
Więc jeśli nie dostarczyłem tego jako kontekstu, wygeneruje

01:50.910 --> 01:54.390
on jakiś kod, jakąś implementację konwencjonalnego

01:54.390 --> 01:57.240
głębokiego uczenia Q, która nie będzie

01:57.240 --> 02:01.140
rozważać użycia experience_replay i naszej funkcji

02:01.140 --> 02:06.330
przetwarzania obrazu, ale chcemy tego.

02:06.330 --> 02:07.323
Więc dalej mówię:

02:08.250 --> 02:10.537
"Twoim celem jest wdrożenie pełnego

02:10.537 --> 02:14.107
rozwiązania przy użyciu Pythona, "Torch dla modelu, "i

02:14.107 --> 02:16.717
optymalizacja kodu do wykonania w Google

02:16.717 --> 02:21.187
Colab "tak, że studenci przechodzący przez kod "może wykonać te z nie tak

02:21.187 --> 02:23.167
silnych komputerów. To jest w zasadzie powiedzenie

02:23.167 --> 02:28.167
ChatGPT, jaki jest format ostatecznego rozwiązania,

02:28.260 --> 02:33.060
które chciałbyś mieć.

02:33.060 --> 02:35.190
I wreszcie "w razie potrzeby zadawaj pytania wyjaśniające",

02:35.190 --> 02:37.200
które zapewnią jej więcej kontekstu.

02:37.200 --> 02:40.050
I "Ech, jeśli nie wiesz, "jeśli nie masz wystarczającego

02:40.050 --> 02:42.060
kontekstu, to proszę, zapytaj mnie. A na koniec zapytany: "Masz to? Chciałem potwierdzić, że dostała.

02:42.060 --> 02:44.197
Jest to sprytny sposób na umożliwienie mu zastanowienia się

02:44.197 --> 02:47.580
nad tym, a nie ścisłe przejście do generowania kolejnych podpowiedzi, kolejnych odpowiedzi.

02:47.580 --> 02:49.737
Jeśli tego nie zrobisz,

02:50.640 --> 02:53.730
jeśli nie zapytasz "Masz to? " lub "Jasne? albo "Czy rozumiesz? " lub coś takiego, to

02:53.730 --> 02:58.730
całkowicie zignoruje niektóre

03:00.210 --> 03:05.210
części i zacznie generować.

03:05.820 --> 03:07.230
Ponieważ masz limit liczby tokenów

03:07.230 --> 03:09.090
w pytaniach i w odpowiedzi,

03:09.090 --> 03:12.780
chciałbyś go złamać, abyś mógł uzyskać odświeżenie

03:12.780 --> 03:16.020
ilości tokenów, które możesz wygenerować.

03:16.020 --> 03:18.240
Zatem pierwsza odpowiedź brzmi:

03:18.240 --> 03:20.760
"Zrozumiałem zadanie.

03:20.760 --> 03:22.980
"Zrobię dokładnie to, o co poproszę.

03:22.980 --> 03:26.310
"Ale zanim przejdę dalej, mam kilka pytań. I tu właśnie pojawiło się to "jeśli masz jakieś pytania, to pytaj",

03:26.310 --> 03:28.610
zadało mi całkiem dobre pytania.

03:29.820 --> 03:32.377
Po pierwsze, czy masz niestandardowe środowisko, czy używasz

03:32.377 --> 03:33.607
czegoś, co już jest?

03:33.607 --> 03:36.697
Czyli OpenAI, VizDoom i tego typu rzeczy.

03:36.697 --> 03:39.600
Następnie przechodzimy do czegoś w rodzaju,

03:39.600 --> 03:43.980
czy są jakieś konkretne metryki wydajności, które chciałbyś,

03:43.980 --> 03:45.750
żebym śledził?

03:45.750 --> 03:49.200
Czy są wymagania co do samego modelu?

03:49.200 --> 03:51.240
Jakie wersje Pythona i PyTorcha?

03:51.240 --> 03:53.883
I wreszcie, czy są jakieś konkretne ograniczenia

03:54.750 --> 03:56.850
co do terminu?

03:56.850 --> 03:58.950
To jest z głównie biznesplanów,

03:58.950 --> 04:00.783
na których była szkolona, ale

04:01.800 --> 04:05.850
dla niej, tak jakby, to nie jest istotne dla niej, ale ok.

04:05.850 --> 04:08.223
Podałem: "Tak, będę używał OpenAI Gym, a oto jak

04:09.180 --> 04:10.140
go załadować. To jest z kursu.

04:10.140 --> 04:12.990
Powiedziałem, ok, kieruj się średnią nagrodą,

04:12.990 --> 04:17.160
nie ma konkretnych wymagań, bądź kreatywny, dopóki działa,

04:17.160 --> 04:19.803
użyj najnowszych modeli lub wersji bibliotek

04:20.970 --> 04:23.283
i jaki jest termin.

04:24.150 --> 04:25.177
Napisałem tylko "ASAP".

04:25.177 --> 04:30.177
Dodatkowo tutaj są te zajęcia, o których wspomniałem.

04:30.480 --> 04:31.713
Więc po prostu wkleiłem klasy, które mamy w kursie.

04:33.000 --> 04:35.133
Czyli powtórka z doświadczenia,

04:36.030 --> 04:40.953
wszystko, a na koniec pamięć powtórkowa, przetwarzanie

04:42.120 --> 04:46.320
obrazu i tyle.

04:46.320 --> 04:48.090
I dzięki temu buduję kontekst, a

04:48.090 --> 04:49.797
teraz zaczęło się generować.

04:51.150 --> 04:54.120
Wygenerowało więc kod.

04:54.120 --> 04:57.000
Zasadniczo zaczął od wstępnego przetwarzania

04:57.000 --> 05:00.720
obrazu, a następnie stworzył głęboką sieć Q, która

05:00.720 --> 05:04.773
jest dość podobna do tego, co mamy.

05:05.790 --> 05:06.623
Potem zaczęło się od

05:07.681 --> 05:10.230
inicjalizacji tego, a następnie kodu szkoleniowego.

05:10.230 --> 05:13.530
Wszystko do tej pory działało, a tu potem się psuje.

05:13.530 --> 05:15.753
Jeśli chcesz kontynuować generowanie

05:16.590 --> 05:21.363
czegoś dłużej, napisałem po prostu "kontynuuj".

05:22.560 --> 05:25.110
I powiedział, "Kontynuuj? Tak, z pewnością. Kontynuuje generowanie

05:25.110 --> 05:27.513
i bam, mamy pełny kod.

05:29.070 --> 05:31.983
Niesamowite.

05:32.910 --> 05:34.863
Podane było jak go używać,

05:36.000 --> 05:40.350
częstotliwość, co zmieniać i takie tam.

05:40.350 --> 05:43.950
Pomogło mi to również w tej kwestii.

05:43.950 --> 05:46.110
I pozwólcie, że przeniosę was do mojego Google Colab.

05:46.110 --> 05:49.530
Więc zacząłem od wklejenia kodu tutaj,

05:49.530 --> 05:51.840
wkleiłem naszą funkcję wstępnego przetwarzania.

05:51.840 --> 05:55.853
Za chwilę przeskoczę do zmian w tej funkcji wstępnego przetwarzania.

05:57.060 --> 06:00.750
Następnie wkleiłem ten replay doświadczenia, część

06:00.750 --> 06:02.793
instalacji z mojego końca.

06:03.720 --> 06:05.940
Wyjaśnimy to za chwilę.

06:05.940 --> 06:09.630
Grałem z jego głęboką siecią Q i kodem szkoleniowym.

06:09.630 --> 06:13.053
Więc na pewno są sposoby, aby to poprawić.

06:14.040 --> 06:16.290
Zwłaszcza jeśli masz lokalne środowisko, to będzie działać.

06:16.290 --> 06:18.720
Jeśli używasz tego w Google Colab, może to się zepsuć.

06:18.720 --> 06:19.553
Więc pozwól, że cię do tego doprowadzę.

06:20.970 --> 06:24.843
Więc zrobiłem to i dostałem błąd.

06:25.740 --> 06:29.163
Powiedziałem: "Hej, mój początkowy kod, który dostarczył, nie zadziałał.

06:30.150 --> 06:31.833
Właśnie wkleiłem kod, ten

06:32.790 --> 06:37.790
komunikat o błędzie i powiedzenie "Nie mogę zmienić rozmiaru obrazu. A jeśli spojrzysz na nasz kod z kursu, wymaga on zmiany

06:38.430 --> 06:41.640
rozmiaru obrazu za pomocą tego.

06:41.640 --> 06:45.810
Ale nowsza wersja SciPy faktycznie to usuwa.

06:45.810 --> 06:49.440
Więc powiedział, "Oh, yeah, "wygląda na to, że to mogło

06:49.440 --> 06:50.840
zostać usunięte. "Oto nowa wersja z Pillow.

06:51.750 --> 06:54.240
A właściwie to nie wymagał.

06:54.240 --> 06:58.110
To w zasadzie przepisało całą klasę obrazu

06:58.110 --> 07:03.110
wstępnego przetwarzania z Pillow zamiast SciPy.

07:03.810 --> 07:06.600
Więc użyłem go i faktycznie działa.

07:06.600 --> 07:10.440
I wtedy powiedziałem: "Ok, "Mam problem ze środowiskiem

07:10.440 --> 07:13.200
używającym Google Colab.

07:13.200 --> 07:17.310
"Jak to rozwiązać? To jest ten błąd. I powiedział: "O, tak, przepraszam.

07:17.310 --> 07:18.663
"Wydaje się, że to konkretne środowisko nie działa.

07:19.537 --> 07:21.637
"Oto co zrobisz.

07:21.637 --> 07:25.200
"W zasadzie instalujesz i robisz to. Dostałem błąd, kolejny błąd.

07:25.200 --> 07:27.360
I ten błąd faktycznie wskazywał,

07:27.360 --> 07:32.260
że renderowanie nie jest znalezione w tej konkretnej wersji.

07:33.270 --> 07:36.723
I powiedział: "Ok, zainstaluj tę wersję. Tak. Kolejny błąd.

07:37.620 --> 07:41.283
I powiedział: "O, tak, tak, "Google Colab nie obsługuje renderingu,

07:42.990 --> 07:44.227
bibliotek OpenGL",

07:44.227 --> 07:47.257
co oznacza dla nas, że musimy zrobić, zamiast Google

07:47.257 --> 07:50.160
Colab, coś innego do celów

07:50.160 --> 07:52.087
wizualizacji.

07:52.087 --> 07:55.657
I to w zasadzie dało mi krok po kroku, prowadząc

07:55.657 --> 07:56.917
na co zrobić, jak

07:56.917 --> 07:59.880
zmienić to i takie rzeczy.

07:59.880 --> 08:02.580
A jeśli zrobisz to lokalnie, rozwiążesz problem.

08:02.580 --> 08:04.350
Ale to jest w zasadzie

08:04.350 --> 08:09.350
teraz nauczanie, jak prawidłowo używać ChatGPT.

08:11.850 --> 08:14.280
Podobnie jak tutaj, widziałeś, że dostałem kilka błędów, podpowiedziałem

08:14.280 --> 08:17.040
z tymi błędami i tak dalej.

08:17.040 --> 08:18.457
A teraz masz, jak,

08:18.457 --> 08:23.457
jeśli przewiniesz do tyłu, masz w pełni funkcjonujący kod

08:24.270 --> 08:27.870
z głęboką siecią Q, z kodem treningowym, i

08:27.870 --> 08:31.350
możesz iść i poprosić go o wygenerowanie

08:31.350 --> 08:34.500
kodu testowego, a on to zrobi.

08:34.500 --> 08:37.440
Niesamowite, prawda?

08:37.440 --> 08:38.820
Więc to jest to.

08:38.820 --> 08:42.450
Oto jak używać ChatGPT do rozwiązywania głębokiego Q, czyli konwencjonalnej

08:42.450 --> 08:45.120
głębokiej sieci Q dla Dooma.

08:45.120 --> 08:47.200
Dzięki. Ciesz się kursem!
