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

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
첫 번째 예시는 운이 나빴을 뿐이지만 그건 다음 영상에서 밝혀질 거예요