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.
433 lines
11 KiB
433 lines
11 KiB
WEBVTT |
|
|
|
00:00.920 --> 00:05.060 |
|
아주 오래 전에 데이터 세트를 만들던 때를 기억하실 거예요 |
|
|
|
00:05.060 --> 00:08.960 |
|
데이터를 허깅페이스에 업로드 했어요 |
|
|
|
00:08.990 --> 00:13.760 |
|
그 시점부터, 우린 피클 파일도 제작한 이후로 그 시점부터 피클 파일의 데이터를 |
|
|
|
00:13.760 --> 00:15.200 |
|
로드하고 있어요 |
|
|
|
00:15.200 --> 00:20.090 |
|
하지만 구글 Colab에 있으니 H깅페이스 허브에서 데이터를 |
|
|
|
00:20.090 --> 00:27.050 |
|
수집하는 게 가장 쉽죠 자신만의 모델을 만드는 이런 과정의 아주 전형적인 작업이에요 |
|
|
|
00:27.080 --> 00:28.400 |
|
그럼 시작할게요 |
|
|
|
00:28.430 --> 00:34.550 |
|
데이터셋을 로드합니다 얼굴 로드 데이터셋 메서드를 끌어안고 데이터셋 이름을 전달합니다. |
|
|
|
00:34.550 --> 00:40.190 |
|
그리고 그것을 기차와 테스트, 데이터셋 이름을 상수에 나눠 놓죠. |
|
|
|
00:40.220 --> 00:44.930 |
|
그 후에 첫 번째 훈련 데이터 포인트를 볼 수 있어요 |
|
|
|
00:45.080 --> 00:48.710 |
|
텍스트와 가격이 있는 것 같아요 |
|
|
|
00:48.740 --> 00:51.830 |
|
우리가 명시적으로 설정한 걸 기억하실 거예요 |
|
|
|
00:51.830 --> 00:54.800 |
|
글이 우리의 프롬프트예요 |
|
|
|
00:54.830 --> 01:00.590 |
|
가장 가까운 달러의 가격은 얼마일까요? 제품 설명과 가격은 |
|
|
|
01:00.590 --> 01:07.070 |
|
달러 그다음은 가격을 가장 가까운 숫자로 반올림해 볼게요 |
|
|
|
01:07.070 --> 01:08.330 |
|
그리고 위에도요 |
|
|
|
01:08.330 --> 01:09.920 |
|
이건 얼마냐고 물어볼게요 |
|
|
|
01:09.950 --> 01:11.330 |
|
최대한 많이요 |
|
|
|
01:11.720 --> 01:18.560 |
|
이렇게 하는 이유는 비트를 좀 더 쉽게 만들기 위해서예요 80억 개의 변수가 있는 |
|
|
|
01:18.560 --> 01:20.870 |
|
단일 모델이죠 |
|
|
|
01:21.230 --> 01:26.870 |
|
개척 모델로 보낼 때 그걸 지정할 필요가 없었어요 센트에 대한 결정을 스스로 |
|
|
|
01:26.870 --> 01:29.030 |
|
내릴 만큼 강력하니까요 |
|
|
|
01:29.030 --> 01:33.710 |
|
하지만 이 경우에는 최대한 단순하게 만들고 싶어요 |
|
|
|
01:33.920 --> 01:40.400 |
|
그리고 이건 항상 라마 3에서 토큰 하나로만 매핑되니까요 아주 쉽게 만들었어요 그냥 |
|
|
|
01:40.400 --> 01:46.490 |
|
저기 있는 토큰 하나만 예측하면 되죠 |
|
|
|
01:46.490 --> 01:50.180 |
|
그걸 잘 하는 방법을 배우려고 할 거예요 |
|
|
|
01:50.540 --> 01:54.320 |
|
이 데이터 세트에는 실제 가격도 있어요 |
|
|
|
01:54.680 --> 02:00.560 |
|
테스트 데이터를 보고 첫 번째 점을 보면 구조는 아주 비슷한데 한 가지 |
|
|
|
02:00.560 --> 02:02.600 |
|
작은 차이가 있어요 |
|
|
|
02:02.600 --> 02:03.950 |
|
그 차이가 뭔지 아세요? |
|
|
|
02:04.130 --> 02:05.030 |
|
물론 그러시겠죠 |
|
|
|
02:05.070 --> 02:11.220 |
|
물론 이 시점에서 테스트 데이터에 제공된 가격은 없어요 |
|
|
|
02:11.250 --> 02:13.260 |
|
텍스트는 텍스트가 될 거예요 |
|
|
|
02:13.290 --> 02:14.970 |
|
이게 얼마 정도 해요? |
|
|
|
02:14.970 --> 02:17.340 |
|
이 텍스트를 전달해요 |
|
|
|
02:17.340 --> 02:21.870 |
|
다음 토큰을 예측하는 게 우리 모델의 임무죠 |
|
|
|
02:21.900 --> 02:25.260 |
|
다음 토큰이 나올 확률은 얼마나 될까요? |
|
|
|
02:25.260 --> 02:33.090 |
|
3이라는 숫자와 일치하는 토큰이 나올 확률이 높기를 바라야죠 74,000달러예요 실제 |
|
|
|
02:33.180 --> 02:35.490 |
|
가격과 같네요 |
|
|
|
02:35.550 --> 02:37.350 |
|
그게 이번 과제예요 |
|
|
|
02:37.350 --> 02:42.810 |
|
이것은 하나의 토큰에 대응하기 때문에 다음 토큰을 예측하는 것이 매우 어렵습니다. |
|
|
|
02:42.810 --> 02:47.760 |
|
하나의 토큰이 비용을 나타내니까요. Get in get get it. |
|
|
|
02:48.030 --> 02:52.620 |
|
또 하나 언급할 점은 기억하실지 모르겠지만 이 텍스트가 정확히 |
|
|
|
02:52.620 --> 02:58.140 |
|
179t less 토큰에 맞는지 확인하기 위해 우리가 좀 고생을 했었죠 |
|
|
|
02:58.260 --> 03:05.670 |
|
그 덕분에 이제 알 수 있는 게 여기 연속적으로 최대 시퀀스 길이가 182이라고 |
|
|
|
03:05.670 --> 03:08.460 |
|
나오네요 |
|
|
|
03:08.880 --> 03:10.320 |
|
몇 가지 패를 더했어요 |
|
|
|
03:10.320 --> 03:13.140 |
|
여기 있네요, 179개 |
|
|
|
03:13.140 --> 03:20.790 |
|
하지만 저는 여분의 토큰을 몇 개 추가할 겁니다 토큰라이저는 문장 토큰의 시작 부분을 |
|
|
|
03:20.790 --> 03:26.880 |
|
순서 시작 부분에 추가하고 문장 끝이나 패드 토큰을 추가할 수도 |
|
|
|
03:26.910 --> 03:28.890 |
|
있기 때문이죠 |
|
|
|
03:28.890 --> 03:34.500 |
|
실수로 가장 중요한 토큰의 가격을 오차로 처리하는 일은 없었으면 합니다 |
|
|
|
03:34.500 --> 03:37.020 |
|
마지막에 나올 토큰이죠 |
|
|
|
03:37.020 --> 03:42.450 |
|
약간의 여유만 있다면요 사실 훈련이 시작되기 전까진 중요하지 않아요 Get in get |
|
|
|
03:42.450 --> 03:45.540 |
|
데이터를 보고 있으니 지금 지적하고 싶었어요 |
|
|
|
03:46.470 --> 03:48.510 |
|
자, 됐어요 |
|
|
|
03:48.720 --> 03:50.790 |
|
미안해요, 너무 심했어요 |
|
|
|
03:50.790 --> 03:53.010 |
|
방금 이 데이터를 봤어요 |
|
|
|
03:53.040 --> 03:57.630 |
|
다음으로 할 일은 올바른 퀀타이즈 구성을 고르는 거죠 |
|
|
|
03:57.630 --> 04:01.530 |
|
퀀트 포 비트 이상으로 상시 유지하기로 했어요 |
|
|
|
04:01.560 --> 04:03.420 |
|
이 경우엔 true로 설정했죠 |
|
|
|
04:03.450 --> 04:06.030 |
|
가서 확인해 보죠 |
|
|
|
04:06.060 --> 04:06.810 |
|
됐어요 |
|
|
|
04:06.810 --> 04:08.970 |
|
퀀트 포 비트가 트루로 설정됐어요 |
|
|
|
04:08.980 --> 04:14.320 |
|
이제 다시 내려오면 for 비트 퀀타이즈를 선택할게요 |
|
|
|
04:14.320 --> 04:17.110 |
|
8비트를 선택하면 어떻게 되는지 보여드릴게요 |
|
|
|
04:17.110 --> 04:20.680 |
|
하지만 아주 작은 4비트 버전을 고를 거예요 |
|
|
|
04:21.100 --> 04:24.370 |
|
그리고 토큰라이저와 모델을 로드하죠 |
|
|
|
04:24.370 --> 04:26.680 |
|
이 방은 안 쓸 거예요 이미 썼으니까요 |
|
|
|
04:26.680 --> 04:28.870 |
|
여기 메모리에 남아 있어요 |
|
|
|
04:28.870 --> 04:30.730 |
|
두 번 실행하면 메모리가 부족할 거예요 |
|
|
|
04:31.810 --> 04:36.100 |
|
여기서 토큰라이저를 로드할 거예요 |
|
|
|
04:36.130 --> 04:39.640 |
|
비트 박스는 상용적인 내용으로 자주 보게 될 거예요 |
|
|
|
04:39.760 --> 04:45.670 |
|
토큰라이저에 이렇게 알려 주는 거예요 시퀀스 끝에 패드를 넣어야 할 때는 |
|
|
|
04:45.670 --> 04:48.970 |
|
그냥 문장 끝부분을 쓰면 된다고요 |
|
|
|
04:48.970 --> 04:51.400 |
|
오른쪽에 이렇게 해야 해요 |
|
|
|
04:51.400 --> 04:54.430 |
|
훈련할 때 흔히 하는 거예요 |
|
|
|
04:54.430 --> 04:56.200 |
|
당장은 안 쓸 거예요 |
|
|
|
04:56.320 --> 04:57.910 |
|
걱정 안 하셔도 돼요 |
|
|
|
04:57.910 --> 04:59.740 |
|
하지만 어디서나 볼 수 있죠 |
|
|
|
04:59.740 --> 05:04.300 |
|
아주 표준적인 셋업이죠 여기 이 라인처럼요 이것도 지금 당장 걱정하실 필요는 없어요 |
|
|
|
05:04.300 --> 05:10.540 |
|
토큰이저를 만들어 llama 3을 로드하고 있어요 기본 모델 1개요 |
|
|
|
05:10.540 --> 05:15.370 |
|
5를 다 쓰고 있어요 메모리가 6GB예요 |
|
|
|
05:15.370 --> 05:22.090 |
|
저기 있네요, 55번 9개인 것 같아요 제가 아래에 추론을 했거든요 |
|
|
|
05:22.240 --> 05:29.710 |
|
아주 날씬한 4인치 비트 모델이에요 |
|
|
|
05:30.250 --> 05:34.810 |
|
이 함수는 여러분께 익숙할 겁니다 최근 프론티어 모델에서 |
|
|
|
05:34.840 --> 05:43.780 |
|
가격 추출에 사용했거든요 텍스트를 추출하죠 어떤 텍스트든요 예측된 가격을 추출해요 |
|
|
|
05:43.780 --> 05:55.570 |
|
가격을 추출하는 이런 걸 하면 가격은 $999 문자열로 이걸 넣어야겠죠 |
|
|
|
05:55.570 --> 05:57.040 |
|
잘 안 될 것 같아요 |
|
|
|
05:57.040 --> 06:01.120 |
|
가격은 달러 9999 어쩌고저쩌고죠 |
|
|
|
06:01.540 --> 06:04.600 |
|
가격은 999예요 |
|
|
|
06:04.840 --> 06:05.770 |
|
정말 싸요 |
|
|
|
06:07.060 --> 06:07.960 |
|
됐어요 |
|
|
|
06:08.260 --> 06:10.210 |
|
결과가 기대되네요 |
|
|
|
06:10.240 --> 06:10.540 |
|
네 |
|
|
|
06:10.570 --> 06:12.610 |
|
99999마리를 잡아낼 거예요 |
|
|
|
06:12.610 --> 06:16.760 |
|
모델은 프롬프트에서 제공될 거라는 걸 알죠 |
|
|
|
06:16.760 --> 06:21.680 |
|
9단계가 모두 포함돼야 해요 |
|
|
|
06:21.860 --> 06:25.820 |
|
이 모델이 예측해요 |
|
|
|
06:25.820 --> 06:30.080 |
|
이게 시험용 하네스에 사용할 함수예요 |
|
|
|
06:30.080 --> 06:33.020 |
|
우리가 그걸 알려주는 함수죠 |
|
|
|
06:33.050 --> 06:34.790 |
|
프롬프트를 하나 드리죠 |
|
|
|
06:34.790 --> 06:37.550 |
|
비용은 얼마나 드는지 알고 싶어요 |
|
|
|
06:37.550 --> 06:44.540 |
|
이건 추론 모드의 모델을 부르는 방법입니다 몇 주 전에 했던 것과 유사하죠 |
|
|
|
06:44.810 --> 06:52.490 |
|
프롬프트를 가져다가 Tokenizer.ex코드를 이용해 암호화해요 |
|
|
|
06:52.490 --> 06:55.820 |
|
이건 GPU 쪽으로 밀어내죠 |
|
|
|
06:56.510 --> 07:01.400 |
|
이건 그냥... 별로 중요하지 않은 거예요 |
|
|
|
07:01.400 --> 07:03.020 |
|
경고문을 인쇄하는 걸 막아주죠 |
|
|
|
07:03.020 --> 07:06.680 |
|
그럼 아무 영향도 없군요 |
|
|
|
07:07.190 --> 07:16.040 |
|
어, 그리고, 음 정확히 말하자면, 입력 토큰 영역에서 일어나는 일을 예측하지 못하게 합니다. |
|
|
|
07:16.040 --> 07:22.880 |
|
예측하지 않고, 이후에 일어날 일을 예측하고 싶어하죠. |
|
|
|
07:22.880 --> 07:24.170 |
|
어차피 그렇게 될 거예요 |
|
|
|
07:24.170 --> 07:27.230 |
|
하지만 우리가 말하지 않았다면 경고가 나왔을 거예요 |
|
|
|
07:27.410 --> 07:33.380 |
|
결과물을 위해 기본 모델 lemma 3을 호출하죠 1번요 |
|
|
|
07:33.380 --> 07:36.950 |
|
그 위에 생성 메서드를 호출할 거예요 |
|
|
|
07:36.980 --> 07:38.720 |
|
입력값을 통과시키죠 |
|
|
|
07:38.720 --> 07:41.930 |
|
최대 새 토큰을 위한 거라고 하죠 |
|
|
|
07:41.930 --> 07:43.340 |
|
훨씬 적은 숫자로 만들 수 있어요 |
|
|
|
07:43.340 --> 07:44.900 |
|
토큰 하나만 있으면 돼요 |
|
|
|
07:44.900 --> 07:51.680 |
|
4개까지 토큰을 생성하도록 할 것입니다 달러 기호를 또 출력할 수 있으니까요 |
|
|
|
07:52.100 --> 07:58.130 |
|
방금 설치한 주의력 마스크를 통과시키면 경고가 안 뜨죠 |
|
|
|
07:58.130 --> 08:00.590 |
|
이건 하나의 답만 원한다는 거죠 |
|
|
|
08:00.590 --> 08:03.290 |
|
여러 가지 답이 나오면 안 돼요 |
|
|
|
08:03.680 --> 08:08.000 |
|
그 답에 대한 답변은 그 답 하나를 취하면 다시 보내지죠 |
|
|
|
08:08.000 --> 08:13.130 |
|
Tokenizer.Dcoode를 호출해 다시 문자열로 바꾸죠 |
|
|
|
08:13.130 --> 08:15.830 |
|
그 문자열을 추출해요 |
|
|
|
08:16.340 --> 08:17.000 |
|
좋아요 |
|
|
|
08:17.000 --> 08:18.240 |
|
신나네요 |
|
|
|
08:18.240 --> 08:20.280 |
|
우리 스스로 되새겨 보죠 |
|
|
|
08:20.280 --> 08:27.270 |
|
0을 보면 첫 번째 테스트 항목이 여기 있네요 |
|
|
|
08:27.270 --> 08:30.000 |
|
OEM 에어컨 압축기예요 |
|
|
|
08:30.030 --> 08:33.780 |
|
실제 가격은 374달러예요 |
|
|
|
08:33.810 --> 08:34.920 |
|
누가 알았겠어요 |
|
|
|
08:34.920 --> 08:37.440 |
|
첫 번째 시도예요 |
|
|
|
08:37.440 --> 08:40.080 |
|
Model이라고 입력하죠 예측요 |
|
|
|
08:42.870 --> 08:44.010 |
|
0번째 테스트예요 |
|
|
|
08:44.010 --> 08:48.390 |
|
프롬프트를 얻기 위해 get 텍스트를 호출할게요 |
|
|
|
08:49.050 --> 08:50.190 |
|
그럼 준비되셨나요? |
|
|
|
08:50.220 --> 08:50.970 |
|
시작할게요 |
|
|
|
08:51.000 --> 08:59.910 |
|
라마 3요 1번 기본 모델은 OEM AC 압축기와 수리 키트의 |
|
|
|
08:59.940 --> 09:02.850 |
|
가격을 예측해 보려고 해요 |
|
|
|
09:02.850 --> 09:07.470 |
|
예상 가격은 1,800달러인데 차이가 너무 커요 |
|
|
|
09:07.470 --> 09:12.960 |
|
라마 3에 대한 나쁜 징조일 수도 있어요 기본 모델 1개면 돼요 |
|
|
|
09:12.960 --> 09:20.460 |
|
첫 번째 예시는 운이 나빴을 뿐이지만 그건 다음 영상에서 밝혀질 거예요
|
|
|