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.
 
 

481 lines
12 KiB

WEBVTT
00:00.920 --> 00:02.690
Get it 여기까지 못 올 줄 알았죠?
00:02.720 --> 00:07.910
주피터 연구소에서 개척지 모델을 세밀하게 조정하고 있어요
00:07.910 --> 00:10.580
수입 부품부터 시작하죠
00:10.580 --> 00:12.860
테스트 데이터도 가져오죠
00:12.860 --> 00:19.250
기억하신다면 이건 250개의 테스트 예제를 실행할 수 있는 실용적인 코드입니다 아름다운
00:19.250 --> 00:21.140
차트를 제공하죠
00:21.140 --> 00:28.880
마지막에 우리 환경에서 끌어안는 얼굴 토큰을 로드합니다 이번에는 사용하지 않겠지만
00:28.910 --> 00:34.280
이전처럼 항상 끌어안고 얼굴을 안는 건 어떨까요?
00:34.310 --> 00:36.800
오픈AI를 사용할 거예요
00:36.830 --> 00:41.000
그래서 저 선을 저기와 여기에 실행해야 해요
00:41.000 --> 00:46.610
피클 파일에서 훈련 데이터와 테스트 데이터를 열어 이걸 하도록 하겠습니다
00:46.700 --> 00:51.200
모든 걸 처음부터 다시 만들 필요가 없도록요
00:51.470 --> 00:52.340
좋아요
00:52.340 --> 00:54.500
이제 뭘 할지 얘기해보죠
00:54.500 --> 01:04.680
오픈AI는 여러분이 훈련할 때 훈련에 사용한 예시를 50-100개 정도 사용하라고
01:04.830 --> 01:06.210
권장해요
01:06.210 --> 01:14.160
개척지 모델의 세밀한 조정은 음색과 스타일을 바꾸는 거예요 오류를
01:14.160 --> 01:19.860
수정하고 어떤 상황에서는 정확도를 높이는 거죠
01:20.010 --> 01:28.860
중요한 건 아니고 예시를 많이 넣는 것도 큰 의미가 없어요 GPT 4 시리즈 같은 모델은 너무 많은 데이터를 바탕으로
01:28.980 --> 01:35.070
훈련되어서 여러분이 정말 하려는 건 여러분이 원하는 특정 작업의 예시를 충분히
01:35.070 --> 01:39.150
제공하는 거예요 그래야 거기서 배울 수 있죠
01:39.390 --> 01:46.980
네, 아주 많은 숫자를 추천하지 않는 건 아니지만 적어도 500은
01:46.980 --> 01:50.970
뽑을 거예요 권장량보다 많죠
01:51.060 --> 01:55.830
그리고 제가 실험해 봤는데 작은 수치보다 결과가 좋았어요
01:56.130 --> 01:59.040
500가지 예시를 들어볼게요
01:59.070 --> 02:00.540
지금은 아주 작은 사례만 있죠
02:00.570 --> 02:07.310
텍스트는 아주 작아요 일반적으로 훨씬 더 큰 훈련 문서를 생각하고 있죠
02:07.310 --> 02:10.220
그래서 저는 전혀 미안하지 않아요
02:10.430 --> 02:14.510
지금은 미세한 조율이에요
02:14.660 --> 02:19.850
한동안은 비어요 9월 23일까지는요 9월 말까지는요
02:19.850 --> 02:26.840
하지만 무료가 아니게 되더라도 여러분이 지불하는 비용은 500개에 대한 추론만 수행하는
02:26.840 --> 02:30.830
비용과 비슷합니다 이것도 역시 몇 센트로 측정되죠
02:30.830 --> 02:38.480
그럼 지금으로서는 0달러 정도 되겠네요 5천 달러요, 그 정도 금액으로요
02:38.570 --> 02:41.930
여전히 적은 금액이네요
02:41.930 --> 02:46.490
말씀드렸듯이 9월 말까지는 무료예요
02:46.730 --> 02:54.170
500개의 훈련 세트를 만들었어요 실제 훈련 세트인 400,000개와
02:54.200 --> 02:56.600
비교해서요
02:56.780 --> 03:00.020
50달러로 검증 받을게요
03:00.020 --> 03:05.240
아까 언급했듯이 검증은 필요 없습니다 훈련 세트에서 한 번만
03:05.240 --> 03:07.190
할 것이기 때문이죠
03:07.460 --> 03:12.470
하지만 여러분께 보여드리면 유용할 것 같았어요 나중에 여러분 프로젝트에서 어떻게 사용할지
03:12.470 --> 03:13.340
알 수 있게요
03:13.340 --> 03:16.970
이 모든 게 여러분의 프로젝트에 따라 복제될 수 있거든요
03:16.970 --> 03:18.560
이걸 실행해요
03:19.010 --> 03:28.160
첫 단계는 Jsonl JSON 라인 데이터를 준비하는 거라고 말씀드렸죠 훈련 데이터를 이 포맷으로
03:28.160 --> 03:30.020
변환하는 거예요
03:30.020 --> 03:37.730
먼저 여러분이 잘 아는 메서드 함수를 작성했어요 메시지를 전달하는 함수죠 지난 시간에 했던
03:37.730 --> 03:40.040
것과 정확히 일치해요
03:40.130 --> 03:46.580
물품의 가격을 추정하고 가격으로만 답해야 해요 설명하지 말고요
03:46.580 --> 03:51.380
사용자 프롬프트는 아이템에서 테스트 프롬프트를 가져오고요
03:51.590 --> 03:58.850
그리고 1달러가 될 만한 건 다 빼고 빈 지폐로 바꿔요
03:58.850 --> 04:04.780
최저 금액을 제시하는 게 아닙니다 개척지 연구소는 그런 추측이
04:04.810 --> 04:05.740
필요 없죠
04:05.740 --> 04:10.900
그리고 이것도 빼요 그게 사용자 프롬프트에 가는 거죠
04:10.900 --> 04:17.350
그럼 전 보조에게 가격을 말하고 가격을 알려줘요
04:17.350 --> 04:19.090
실행해 보죠
04:19.090 --> 04:24.760
무슨 일인지 잘 모르실 수 있으니 예를 들어볼게요
04:24.790 --> 04:34.210
모델이 처음 보는 0번 열차에 보내는 메시지예요
04:34.210 --> 04:36.910
Get 롤 시스템이에요
04:36.910 --> 04:38.560
시스템 프롬프트죠
04:38.590 --> 04:42.970
만족스러운지 확인하고 사용자를 롤해요
04:43.090 --> 04:45.070
이게 사용자 프롬프트예요
04:45.430 --> 04:51.040
우리가 이 질문을 한 것 같네요 물음표는 얼마일까요?
04:51.040 --> 04:58.270
델포이 어쩌고 하는 장황한 얘기도 들었어요 연료 펌프 모듈요
04:58.690 --> 05:04.900
그리고 이건 비서의 대답이에요
05:04.900 --> 05:07.330
가격은 226달러예요
05:07.330 --> 05:12.310
그런 건 상상도 못 했어요 그런 건 상상도 못 했죠
05:12.520 --> 05:14.080
자, 보세요
05:14.080 --> 05:15.700
매일 새로운 걸 배우네요
05:15.700 --> 05:20.200
어쨌든 이게 메시지 형식입니다 이 단계에선 아주 익숙할
05:20.200 --> 05:21.040
거예요
05:21.040 --> 05:28.270
이게 어떻게 완벽하게 만들어진 테스트, 아니 훈련 데이터 포인트인지 알 수 있습니다 우리가 모델에
05:28.300 --> 05:29.410
제공할 것이죠
05:29.770 --> 05:36.910
좋아요, 여기 JSON L을 만드는 함수가 있어요 여러분이 예상하는 대로 항목을 여러
05:36.910 --> 05:38.530
개 받아들이죠
05:38.530 --> 05:40.570
그런 항목을 반복할 거예요
05:40.570 --> 05:47.560
각각의 객체를 위해 텍스트를 생성하죠
05:47.560 --> 05:54.340
그런 다음 Json을 사용하죠 덤프 스트링을 덤프 스트링으로 전환해 단순한 문자열로 변환하죠
05:54.340 --> 06:00.820
보세요, 문자열 하나에 추가하고 끝에 캐리지 리턴을 하죠
06:00.850 --> 06:05.020
그리고 다시 리턴합니다 마지막 캐리지 리턴을 제거하고요
06:05.020 --> 06:07.360
어떻게 작동하는지 보죠
06:07.360 --> 06:10.240
먼저 실행해 보죠
06:10.450 --> 06:12.340
나처럼 실수하지 마요
06:12.640 --> 06:13.600
됐어요
06:13.600 --> 06:15.730
이제 만들기를 해요 JSON
06:15.730 --> 06:22.180
훈련 데이터를 제출하도록 하죠
06:22.210 --> 06:27.370
앞의 세 곡만 통과시키죠 그래야 사람들이 안 몰려요
06:27.370 --> 06:29.860
get get get 문자열이죠
06:29.860 --> 06:34.090
그리고 문자열도 있어요
06:34.090 --> 06:35.830
인쇄하는 게 더 쉬울 것 같아요
06:35.860 --> 06:40.090
get을 해서 빈 선이 잘 보이게 만들어 줄게요
06:40.420 --> 06:48.130
문자열입니다 문자열에 1, 2, 3개의 줄이 있죠
06:48.370 --> 06:50.290
좀 휘감기고 있어요
06:50.290 --> 07:02.290
각 행에 있는 메시지를 보면 훈련 데이터 포인트를 나타내요
07:02.740 --> 07:03.400
07:03.410 --> 07:04.760
지금까진 좋아요
07:04.940 --> 07:08.240
이제 그 위에 구축된 함수가 있어요
07:08.240 --> 07:08.810
그렇죠?
07:08.840 --> 07:12.110
Jsonl은 항목을 취하고 파일 이름을 취해요
07:12.110 --> 07:13.850
아주 간단해요
07:13.880 --> 07:18.950
파일 이름을 열고 위의 함수를 호출해 써요
07:18.950 --> 07:23.270
그에 대한 데모는 드릴 필요가 없을 것 같네요
07:23.300 --> 07:26.180
실행해야 하지만 실제로 실행할 수 있어요
07:26.180 --> 07:34.190
이제 훈련 데이터 집합을 볼게요. 잘 조율된 트레인 기억하시죠? 500개의 아이템이 있어요.
07:34.190 --> 07:34.940
확인해 보죠
07:34.970 --> 07:40.550
됐어요, 훈련 데이터 세트 전체에서 500개, 400,000개예요
07:40.580 --> 07:45.590
전부 파일에 작성해 GPT 4에 업로드 하진 않아요
07:45.920 --> 07:52.550
파인 튠 트레인 닷 JSON 파일에 그걸 적어요
07:52.550 --> 07:58.700
그걸 실행하고 유효성 검증 세트를 가져다가 정확히 같은 걸 실행하죠
07:58.700 --> 08:03.170
저 두 파일을 작성했는데 몇 초 전에 작성된 걸 보실 수 있죠
08:03.170 --> 08:05.790
이걸 열면 열 수 있어요
08:05.790 --> 08:12.450
JupyterLab에도 JSON 라인 편집기가 있어요 일반 편집기로
08:12.450 --> 08:13.530
넘어가 보죠
08:13.560 --> 08:18.420
여러분이 기대하는 대로 500개의 행이 있네요
08:18.420 --> 08:24.270
자, 끝까지 갑니다 500줄이네요
08:24.300 --> 08:27.960
모두 우리가 바라는 구조로 이루어져 있어요
08:28.170 --> 08:35.010
잘 구성된 JSON이 아닌 걸 알 수 있어요 각 행은 잘 구성된 JSON 문서거든요
08:35.010 --> 08:39.330
제가 장황하게 말하고 있지만 이걸 읽을 수 없고 JSON 문서로 파싱할
08:39.330 --> 08:42.990
수 없는 게 중요해요 구성이 잘 된 JSON이 아니니까요
08:42.990 --> 08:44.910
선이 분리돼 있어요
08:45.240 --> 08:50.730
에디터로 여는 검증 파일이 50개 정도 될 거예요
08:50.760 --> 08:54.780
50줄은 거의 비슷하게 말했어요
08:54.900 --> 08:58.680
JSON 라인에서 어떻게 보이는지 보여드릴게요
08:58.680 --> 08:59.130
편집자요
08:59.130 --> 09:01.140
이렇게 생긴 멋진 편집기예요
09:01.140 --> 09:04.290
각각을 열 수 있어요 JSON 개체 같죠
09:04.720 --> 09:05.110
09:05.200 --> 09:06.310
보세요
09:07.060 --> 09:08.260
그렇게 시작을 했어야죠
09:08.260 --> 09:08.980
아마도요
09:09.010 --> 09:11.380
어떤 상황인지 잘 알 수 있죠
09:11.650 --> 09:17.080
메시지가 왜 포장되는지에 대한 직관적인 감각을 발휘하죠
09:17.080 --> 09:18.280
포장된 방식요
09:19.180 --> 09:23.950
좋아요, 그게 파일이에요
09:24.100 --> 09:26.080
그게 마지막 단계예요
09:26.080 --> 09:27.310
이 부분요
09:27.700 --> 09:33.550
오픈AI에 업로드 할 때가 된 것 같아요
09:33.550 --> 09:38.350
OpenAI.Files.Create라고 이름 붙였어요
09:38.350 --> 09:42.880
파일을 전달하고 목적이 미세하다고 말하죠
09:43.270 --> 09:47.350
한 가지 주의할 게 있어요
09:47.350 --> 09:50.560
이 파일을 전달할 때 반드시 전달해야 해요
09:50.590 --> 09:56.680
이진법 파일로 열어야 합니다. 왜냐하면 그 파일은 바이너리 바이트로 되어 있어서 OpenAI로 스트리밍
09:56.680 --> 09:58.270
될 것이니까요.
09:58.300 --> 10:02.980
R이 아니라 RB로 해야 해요
10:02.980 --> 10:07.160
아주 작은 뉘앙스만 조심하면 돼요
10:07.160 --> 10:12.140
파일의 모든 내용을 OpenAI로 보내고 있어요
10:12.290 --> 10:15.950
그 라인을 실행하는 데 1초가 걸리죠
10:15.980 --> 10:20.960
무엇이 돌아왔는지 검사하면 파일 객체를 가져오죠.
10:21.650 --> 10:24.410
특정 바이트의 개수가 있고요
10:24.620 --> 10:28.070
객체는 파일이고 목적은 잘 조정되었고 상태는 처리되었어요
10:28.070 --> 10:32.660
OpenAI는 이미 파일을 가져와서 처리하고 있어요
10:32.660 --> 10:35.930
검증도 똑같이 할 거예요
10:36.260 --> 10:38.660
실행하면 다 됐어요
10:38.660 --> 10:41.420
다시 한 번 처리하죠
10:41.420 --> 10:45.350
이 시점에서 우린 두 개의 JSON 파일을 만들었죠
10:45.350 --> 10:50.180
하나는 훈련용이고 하나는 검증용이죠
10:50.180 --> 10:53.000
우리 파일 시스템에 적어뒀어요
10:53.000 --> 11:00.560
그리고 OpenAI에 업로드했습니다 OpenAI에서 파일 객체로 자리 잡고 있죠
11:00.590 --> 11:05.150
다음 시간에는 미세한 조정을 할 거예요
11:05.180 --> 11:06.170
거기서 봐요