From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
379 lines
10 KiB
379 lines
10 KiB
WEBVTT |
|
|
|
00:00.560 --> 00:02.960 |
|
다시 구글 콜랩에 왔네요 |
|
|
|
00:02.960 --> 00:06.230 |
|
여기 온 지 좀 됐는데 잘 돌아왔어요 |
|
|
|
00:06.290 --> 00:10.790 |
|
이번 주에는 여기서 시간을 보낼 거예요 정말 멋질 거예요 |
|
|
|
00:10.790 --> 00:12.680 |
|
최고의 한 주가 될 거예요 |
|
|
|
00:12.680 --> 00:16.610 |
|
제가 계속 그렇게 말하지만 이번엔 정말 절정일 거예요 |
|
|
|
00:16.640 --> 00:21.740 |
|
지금보다 더 나은 건 8주 차에 나올 다음 주 영상뿐이에요 |
|
|
|
00:21.740 --> 00:24.590 |
|
빨리 보여드리고 싶네요 |
|
|
|
00:24.590 --> 00:27.860 |
|
하지만 7주 차에 집중하세요 |
|
|
|
00:27.890 --> 00:29.870 |
|
살펴볼 게 많아요 |
|
|
|
00:29.870 --> 00:32.240 |
|
그럼 먼저 하죠 |
|
|
|
00:32.270 --> 00:35.660 |
|
이번 주에는 콜랍을 7일간 준비했어요 |
|
|
|
00:35.660 --> 00:37.730 |
|
설치부터 시작하죠 |
|
|
|
00:37.850 --> 00:42.380 |
|
저희가 설치하는 것 중 하나는 여러분이 처음 보시는 새로운 패키지예요 |
|
|
|
00:42.380 --> 00:48.950 |
|
얼굴을 끌어안는 Pft라는 라이브러리인데 매개 변수 효율적인 미세 조정의 약자죠 매개 변수 효율 |
|
|
|
00:48.950 --> 00:52.460 |
|
미세 조정 로라를 포함한 라이브러리의 이름이에요 |
|
|
|
00:52.610 --> 00:54.080 |
|
이 라이브러리 안에 있어요 |
|
|
|
00:54.110 --> 00:55.220 |
|
네 |
|
|
|
00:55.220 --> 00:56.420 |
|
입에 착 붙네요 |
|
|
|
00:56.480 --> 00:57.830 |
|
그게 다예요 |
|
|
|
00:57.830 --> 01:08.180 |
|
T4 박스에 올라왔습니다 GPU 박스에서 가장 낮은 것으로 15기가바이트의 GPU 램이 있죠 |
|
|
|
01:08.210 --> 01:12.890 |
|
보시다시피 대부분 이미 셀 몇 개를 사용하고 있죠 |
|
|
|
01:12.890 --> 01:15.170 |
|
어쨌든 우리는 Pip 설치를 해요 |
|
|
|
01:15.170 --> 01:20.000 |
|
수입품도 많이 만들고 상수도 설정했어요 |
|
|
|
01:20.000 --> 01:24.800 |
|
기본 모델인 llama 3으로 작업할 거예요 180억 달러요 |
|
|
|
01:24.800 --> 01:27.440 |
|
미세 튜닝 모델도 설정하고 있어요 |
|
|
|
01:27.440 --> 01:29.690 |
|
아직 세부 조정은 안 했어요 |
|
|
|
01:29.690 --> 01:30.110 |
|
네 |
|
|
|
01:30.140 --> 01:31.670 |
|
미래에서 온 거예요 |
|
|
|
01:31.790 --> 01:37.070 |
|
이걸 가져와서 미세한 조율 모델이 어떤지 보여 드릴게요 |
|
|
|
01:37.070 --> 01:42.980 |
|
로라 행렬이 목표물 모듈에 적용되는 걸 보면요 |
|
|
|
01:43.160 --> 01:52.310 |
|
여기 3개의 하이퍼 매개 변수가 있어요 이제 당신이 전문가니까 32로 설정할게요 |
|
|
|
01:52.580 --> 01:56.690 |
|
8로 시작해서 16으로 가고 32로 가라고 한 거 기억하죠? |
|
|
|
01:56.720 --> 01:58.130 |
|
32,000달러까지 올렸어요 |
|
|
|
01:58.130 --> 02:00.680 |
|
그렇게 된 거예요 |
|
|
|
02:00.680 --> 02:03.650 |
|
전 지금 32마일로 가고 있어요 |
|
|
|
02:03.770 --> 02:06.980 |
|
알파는 경험에서 나온 거예요 |
|
|
|
02:07.010 --> 02:08.630 |
|
64에 있네요 |
|
|
|
02:08.630 --> 02:10.610 |
|
목표 모듈도요 |
|
|
|
02:10.610 --> 02:14.780 |
|
이건 우리가 대상으로 하는 레이어 이름 4개예요 |
|
|
|
02:14.780 --> 02:17.420 |
|
그 이유는 곧 알게 될 거예요 |
|
|
|
02:17.420 --> 02:22.880 |
|
이게 가장 흔한 라마 모델이에요 |
|
|
|
02:22.910 --> 02:27.590 |
|
다른 모델은 계층 이름이 다를 수도 있지만 네, 여러분이 대상으로 할 |
|
|
|
02:27.590 --> 02:32.120 |
|
이 리스트에서 대상으로 할 계층 이름을 부여하죠 대상 모드에요 |
|
|
|
02:32.870 --> 02:33.530 |
|
네 |
|
|
|
02:33.530 --> 02:38.990 |
|
다음은 여러분이 이미 몇 번 했던 기본 기능이에요 페이스 포옹에 로그인하기 위해서요 |
|
|
|
02:39.200 --> 02:43.760 |
|
포옹 얼굴 계정이 없으면 이런 문구가 뜨겠지만 지금쯤은 |
|
|
|
02:43.760 --> 02:45.290 |
|
당연히 있겠죠 |
|
|
|
02:45.440 --> 02:51.680 |
|
로그인하면 무료고 토큰을 받아요 그리고 Colab에 있는 |
|
|
|
02:51.710 --> 02:59.570 |
|
이 구역으로 가서 키를 입력하고 토큰을 입력하면 돼요 전에도 해 봤잖아요 |
|
|
|
02:59.570 --> 03:03.500 |
|
그렇게 하면 이 셀을 실행할 수 있어요 얼굴 안기로 로그인되죠 |
|
|
|
03:03.710 --> 03:06.260 |
|
대안은 그냥 토큰을 입력하는 거죠 |
|
|
|
03:06.260 --> 03:09.440 |
|
공책 접근에 문제가 있다면요 |
|
|
|
03:09.680 --> 03:18.480 |
|
좋아요, 지체 없이 기본 모델에서 읽겠습니다 양자화 없이요 |
|
|
|
03:18.480 --> 03:19.440 |
|
허튼짓하지 말고요 |
|
|
|
03:19.470 --> 03:25.290 |
|
전체 라마를 읽어볼게요 180억 기본 모델이죠 라마 시리즈 |
|
|
|
03:25.290 --> 03:26.940 |
|
중 가장 작아요 |
|
|
|
03:27.090 --> 03:33.120 |
|
장치 맵은 자동이란 뜻입니다 이 박스와 같은 GPU를 사용하라는 거죠 |
|
|
|
03:33.150 --> 03:36.810 |
|
지금 실행하진 않겠습니다 방금 실행했는데 5분 정도 걸렸거든요 |
|
|
|
03:36.930 --> 03:40.830 |
|
GPU에 다 넣을 수 없다는 경고가 떴어요 |
|
|
|
03:40.830 --> 03:42.600 |
|
그래서 일부는 CPU로 갔죠 |
|
|
|
03:42.600 --> 03:47.850 |
|
오른쪽 리소스를 보시면 GPU 15기가 중 11기가가 |
|
|
|
03:47.850 --> 03:53.880 |
|
차 있는 걸 보실 수 있습니다 거의 13기가 램도 차 있고요 |
|
|
|
03:53.880 --> 04:01.710 |
|
여기 스파이크가 있는 이유는 두 가지 다 해당합니다 한 번 하고 다시 시작했거든요 |
|
|
|
04:01.710 --> 04:07.620 |
|
이걸 실행하면 제일 위에 있는 것만 보일 거예요 |
|
|
|
04:07.710 --> 04:08.310 |
|
네 |
|
|
|
04:08.340 --> 04:14.460 |
|
이제 이 기본 모델이 얼마나 많은 메모리를 사용하는지 프린트할게요 |
|
|
|
04:14.460 --> 04:18.990 |
|
다시 말하지만 훈련하려면 훨씬 더 많이 해야 해요 |
|
|
|
04:18.990 --> 04:25.440 |
|
이건 기본 모델이 얼마나 많은 메모리를 사용하는지 보여줍니다 메모리 공간은 |
|
|
|
04:25.440 --> 04:29.790 |
|
32GB 북쪽 32GB 메모리가 사용되고 있어요 |
|
|
|
04:29.790 --> 04:31.890 |
|
아까 했던 말 기억하시죠? |
|
|
|
04:31.890 --> 04:38.310 |
|
80억 매개 변수에 대한 32 비트 플로트죠 |
|
|
|
04:39.120 --> 04:39.690 |
|
네 |
|
|
|
04:39.690 --> 04:41.610 |
|
정말 큰 변화죠 |
|
|
|
04:41.850 --> 04:43.770 |
|
어디 한번 볼까요? |
|
|
|
04:43.770 --> 04:47.340 |
|
기본 모델 자체를 프린트해서 살펴볼 수 있어요 |
|
|
|
04:47.340 --> 04:54.870 |
|
지금 보시는 건 어떻게 생겼는지에 대한 건데요 아주 간략하지만 잠시 멈춰보죠 |
|
|
|
04:54.870 --> 04:59.700 |
|
다시 말씀드리지만 이론만 따지는 수업이 아니므로 제가 길게 설명하지 |
|
|
|
04:59.700 --> 05:02.310 |
|
않고 있는 그대로 말씀드릴게요 |
|
|
|
05:02.340 --> 05:07.770 |
|
이 신경망 구조를 보면 명확히 알 수 있는 건 내장 |
|
|
|
05:07.770 --> 05:14.070 |
|
레이어로 구성돼 있다는 겁니다 텍스트를 취해 변환해 |
|
|
|
05:14.070 --> 05:18.840 |
|
신경망 내 벡터에 내장하는 거죠 |
|
|
|
05:18.840 --> 05:23.700 |
|
이건 아주∙∙∙ 아까 얘기했던 인코딩 LMS 같은 거죠 |
|
|
|
05:23.730 --> 05:32.270 |
|
첫 번째 레이어는 토큰을 벡터로 넣는 거예요 |
|
|
|
05:32.300 --> 05:36.740 |
|
사실, 가능한 기념품이 얼마나 많은지 그게 차원이에요 |
|
|
|
05:36.740 --> 05:40.130 |
|
이건 내부 벡터의 입체성이에요 |
|
|
|
05:40.550 --> 05:46.820 |
|
라마 디코더라는 층이 32개 있어요 |
|
|
|
05:46.850 --> 05:48.860 |
|
32세트요 |
|
|
|
05:48.860 --> 05:53.510 |
|
32개 모두 이런 모양이에요 |
|
|
|
05:53.960 --> 05:55.490 |
|
Get it을 하죠 |
|
|
|
05:55.520 --> 06:02.810 |
|
이 부분을 살펴보면 주의력 레이어 세트로 구성된 걸 볼 수 있어요 q, proj, |
|
|
|
06:02.810 --> 06:08.180 |
|
k proj, v, o proj라고 하죠 |
|
|
|
06:08.180 --> 06:15.410 |
|
이건 대상 모듈에서 우리가 대상으로 하는 층입니다 여러분이 주로 하는 거죠 |
|
|
|
06:15.440 --> 06:19.190 |
|
다른 방법도 있지만 이게 가장 일반적인 방법이에요 |
|
|
|
06:19.190 --> 06:26.120 |
|
어떤 층은 4천여 개의 차원이 들락날락해요 |
|
|
|
06:26.330 --> 06:31.530 |
|
이것과 이것, 어떤 건 4천 개, 1천 개예요 |
|
|
|
06:32.700 --> 06:36.030 |
|
그래서 입체감이 좀 달라요 |
|
|
|
06:36.030 --> 06:39.690 |
|
로라 A와 로라 B를 볼 때 어느 정도 관련이 있죠 |
|
|
|
06:39.720 --> 06:45.330 |
|
너무 깊이 들어가진 않겠지만 여러분이 실험하고 읽어보세요 더 많은 정보가 필요하다면요 |
|
|
|
06:45.330 --> 06:47.430 |
|
get it get it |
|
|
|
06:47.670 --> 06:54.450 |
|
다중 인터셉트론 레이어도 있는데 예를 들어 위는 차원의 개수를 폭발적으로 |
|
|
|
06:54.450 --> 07:00.090 |
|
늘리고 아래는 차원의 개수를 줄이는 거죠 |
|
|
|
07:00.090 --> 07:03.150 |
|
그리고 활성화 함수가 뒤따르죠 |
|
|
|
07:03.150 --> 07:06.360 |
|
이런 것에 익숙한 분들을 위해서요 |
|
|
|
07:06.390 --> 07:12.540 |
|
라마에 사용되는 활성화 함수는 셀루예요 피토크 문서화에서 보실 수 있죠 |
|
|
|
07:12.540 --> 07:19.020 |
|
그걸 보면 그게 무엇이고 왜 사용되는지 더 알 수 있죠 |
|
|
|
07:19.410 --> 07:25.830 |
|
그 뒤에 레이어 보통 레이어가 있어요 |
|
|
|
07:26.280 --> 07:33.110 |
|
그리고 맨 끝에는 LM 헤드라는 직선 층이 있어요 |
|
|
|
07:33.110 --> 07:34.910 |
|
특정 목표를 노리기도 하죠 |
|
|
|
07:34.910 --> 07:36.950 |
|
대상 모듈에 추가되기도 하죠 |
|
|
|
07:36.950 --> 07:41.930 |
|
전에 말씀드렸듯이 뭔가를 생성하고자 하는 경우 결과를 생성하는 |
|
|
|
07:41.930 --> 07:47.120 |
|
걸 배우길 원하는 경우 그건 일종의 다른 포맷을 갖죠 |
|
|
|
07:47.150 --> 07:52.700 |
|
JSON의 특정 구조를 원할 수도 있고 완전히 다른 걸 원할 수도 있죠 다른 |
|
|
|
07:52.730 --> 07:58.490 |
|
언어를 사용하길 원하거나 아주 독특한 방식으로 구조를 원하거나요 |
|
|
|
07:58.520 --> 08:02.210 |
|
그럼 이것도 대상 모듈에 대상으로 할 수 있죠 |
|
|
|
08:02.840 --> 08:05.540 |
|
그러면 건축물이 어떤 느낌인지 알 수 있죠 |
|
|
|
08:05.540 --> 08:11.420 |
|
잠시 후 로라 어댑터를 보면 제가 왜 이 얘기를 계속하는지 알게 될 |
|
|
|
08:11.420 --> 08:12.170 |
|
거예요 |
|
|
|
08:12.470 --> 08:13.250 |
|
좋아요 |
|
|
|
08:13.250 --> 08:15.020 |
|
32GB를 썼어요 |
|
|
|
08:15.050 --> 08:21.200 |
|
다음으로 할 일은 이 세션을 다시 시작하는 겁니다 런타임으로 가서요 세션을 다시 시작해 메모리를 |
|
|
|
08:21.230 --> 08:23.120 |
|
지우고 계속 진행해야죠 |
|
|
|
08:23.480 --> 08:27.110 |
|
캐시를 비우라는 명령이 있었지만 그렇게 적극적이지 않았어요 |
|
|
|
08:27.110 --> 08:31.070 |
|
너무 많이 소비해서 아직도 너무 오래 붙어 있어요 |
|
|
|
08:31.100 --> 08:33.950 |
|
이제 유일한 방법은 세션을 다시 시작하는 거예요 |
|
|
|
08:33.950 --> 08:35.420 |
|
그렇게 할 거예요 |
|
|
|
08:35.540 --> 08:40.430 |
|
다음 비디오에서 다시 시작하면 다시 여기로 돌아오죠
|
|
|