WEBVTT 00:00.320 --> 00:07.100 다시 콜랍으로 돌아왔어요 어제 시작한 바로 그 장소죠 00:07.100 --> 00:12.890 지금은 7주 차나 3일째라고 잘못 명명됐어요 7주 차나 4일째에 찍었거든요 00:13.190 --> 00:18.170 하지만 만질 수가 없어요 제가 어떤 식으로든 막을 수 있을까 봐서요 00:18.170 --> 00:28.070 GPU 램이 계속 천장 레벨 38에 근접하게 유지되고 있네요 40GB에서 2개요 00:28.070 --> 00:29.600 다행히도 바뀌지 않네요 00:29.600 --> 00:30.650 안 올라가요 00:30.980 --> 00:36.440 여기 출력된 게 보이시죠 각각의 배치 단계가 발생하는 대로요 00:36.440 --> 00:40.430 지금은 4350단계예요 00:40.640 --> 00:47.600 줌인해서 끝까지 올리면... 다시 말하지만 아주 섬세하게 작업하고 있어요 실수로 반죽이 00:47.630 --> 00:49.580 멈추는 일이 없도록요 00:49.610 --> 00:55.310 세 개 시대의 모습을 볼 수 있는 아주 작은 구역이에요 00:55.310 --> 01:01.580 여기 있는 것 중 하나는 모든 데이터를 훑는 거죠 01:01.820 --> 01:05.180 보다시피 배치 스텝이에요 01:05.360 --> 01:11.360 너무 빨리 가서 숫자는 말 못 하지만 10달러면... 좋아요 01:11.510 --> 01:19.310 여기 보이는 100,000라는 둥근 숫자에서 왜 이렇게 둥근지 궁금하실 01:19.310 --> 01:20.690 거예요 01:20.720 --> 01:24.290 그냥 우연의 일치예요 01:24.350 --> 01:33.380 데이터 포인트가 400,000개인데 16개씩 묶어서 한 단계에 있어요 01:33.410 --> 01:40.430 이 하찮은 수학 계산기에 대해 계산을 해보죠 40만 달러를 16으로 나누죠 01:40.730 --> 01:45.920 그걸 여러 시대의 개수로 곱한 거예요. 01:46.160 --> 01:51.950 세 개 개국인 줄 알았는데 네 개국인 것 같네요 01:51.980 --> 01:54.050 네 개국에서 활동했죠 01:54.200 --> 01:56.270 그래서 네 01:56.360 --> 01:59.630 네 개의 개화에 4를 곱하면 01:59.820 --> 02:07.890 결국 증거를 남기게 되죠 여기 카메라가 있네요 100,000번 카메라예요 이게 100,000번 02:07.890 --> 02:10.530 카메라죠 02:10.530 --> 02:15.120 무작위로 나온 숫자가 아니에요 02:15.120 --> 02:22.230 정확히 400,000개의 데이터 포인트에 관련된 배치 단계의 수입니다 16개의 02:22.230 --> 02:25.830 배치로 묶였고 4번 이상 이루어졌죠 02:26.160 --> 02:29.550 틱틱거리는 거죠 02:29.550 --> 02:34.470 이 수치만 봐도 알 수 있어요 훈련에서 손실이 컸을 때 시작했는데 02:34.470 --> 02:37.770 그 손실이 눈에 띄게 줄었어요 02:37.770 --> 02:44.490 하지만 이 화면만 봐서는 정확히 알 수 없어요 수치가 위아래로 흔들리거든요 02:44.700 --> 02:46.770 Get it 유행도 파악하기 어렵고요 02:46.770 --> 02:53.100 배치의 진행을 시각화할 수 있는 툴이 있다면 좋을 텐데요 실행과 비슷한 것을 02:53.100 --> 02:55.500 비교할 수 있는 툴이요 02:55.530 --> 02:59.880 무게와 편향성이라는 도구가 바로 여기 있어요 03:00.090 --> 03:03.060 이게 그 결과물이에요 03:03.060 --> 03:04.830 지금 벌어지고 있어요 03:05.070 --> 03:09.750 무슨 일이 일어나는지 보여주는 거예요 03:09.750 --> 03:10.020 그래서요? 03:10.020 --> 03:12.930 이 훈련의 손실은 실전이에요 03:12.930 --> 03:14.610 우리가 정말 보고 싶은 건 이거예요 03:14.640 --> 03:17.550 이 패널을 수정해서 좀 더 보도록 하죠 get it get it 03:17.730 --> 03:24.630 여기 있는 y축은 끝까지 0까지 이어지는데 0은 손실이 0이 되니 완벽을 03:24.630 --> 03:26.160 의미하죠 03:26.160 --> 03:33.690 이 모델은 항상 100% 확신으로 다음 토큰을 예측하고 100% 확신으로 예측한 03:33.690 --> 03:37.710 다음 토큰이 올바른 다음 토큰이 되는 거죠 03:37.830 --> 03:40.350 get it up 03:40.380 --> 03:45.450 1점보다 낮으면 의심받을 만하죠 5분 03:45.480 --> 03:49.950 보통은 경험에서 우러나오는 비법이지만 일반적으로 03:49.950 --> 03:52.080 보면 큰 손실이에요 03:52.080 --> 03:57.630 그 아래로는 너무 많이 끼는 건 아닌지 생각할 시간이 생기죠 03:57.840 --> 04:03.730 이 축을 바꿔서 y 축을 최소화할게요 04:03.760 --> 04:04.540 갈 수 있어요 04:04.570 --> 04:05.230 더 잘할 수 있어요 04:05.230 --> 04:12.250 1로 하죠 4시쯤에 보면 어떤지 알 수 있을 거예요 04:12.430 --> 04:18.340 울퉁불퉁한 코스지만 초반 단계에서도 분명한 건 울퉁불퉁한 코스지만 발전하는 04:18.370 --> 04:20.530 추세가 있다는 거예요 04:20.560 --> 04:27.580 GPT와 미세 조율로 봤을 때와는 달리 위아래로 흔들리기만 하고 별다른 04:27.580 --> 04:32.530 변화는 없었는데 지금은 나아지고 있는 것 같아요 04:32.530 --> 04:36.190 표면을 매끄럽게 하는 것도 가능해요 04:36.310 --> 04:37.600 이건 확실히 아니에요 04:37.600 --> 04:40.450 그 선이 나아지고 있어요 04:40.450 --> 04:42.700 부드러움을 더하면요 04:42.730 --> 04:45.820 왜 위아래로 흔들릴까요? 04:45.970 --> 04:47.530 상황에 따라 다르죠 04:47.530 --> 04:55.270 각각의 점들은 16개의 데이터 포인트와 16개의 프롬프트입니다. 하나의 끝부분에 04:55.270 --> 05:00.940 있는 예측할 수 있는 것들이죠. 무작위로 뒤섞여 있어요. 05:00.940 --> 05:03.190 16개의 무작위 세트예요 05:03.520 --> 05:06.940 16번 테이블에 어떤 제품을 넣었는지 누가 알겠어요? 05:06.970 --> 05:12.070 정말 비싼 제품이 있을 수도 있어요 그냥 추측만 하고 완전히 틀린 제품요 05:12.070 --> 05:14.410 그래서 소음이 많죠 05:14.500 --> 05:20.530 각 단계마다 구성이 다르기 때문에 비트를 좀 섞는 게 05:20.530 --> 05:27.640 좋아요 그래야 흔들리는 느낌이 나거든요 모델이 이리저리 흔들리는 05:27.670 --> 05:29.620 느낌요 05:29.710 --> 05:34.510 어떤 면에서는 수작업으로 하고 있어요 최소한의 지역에만 05:34.510 --> 05:39.580 머물러 있지 않고 다양한 가능성을 시도해야 하니까요 모델이 05:39.580 --> 05:47.170 개선될 수 있도록요 글로벌 최소의 큰 계곡을 찾으면서 그러데이션을 찾고 다음 토큰을 예측하는 05:47.170 --> 05:49.600 능력을 향상시키죠 05:49.960 --> 05:51.730 비트가 조금 바뀌었어요 05:51.730 --> 05:57.040 다시 말하지만 시각적으로 개선된 점이 분명히 보이네요 05:57.370 --> 05:58.990 또 뭐가 있을까요? 05:58.990 --> 06:00.940 이게 학습률이군요 06:00.940 --> 06:06.460 이게 그 키 하이퍼파라미터예요 얼마나 걸어야 하는지 알 수 있죠 06:06.460 --> 06:11.590 코사인 학습 비트를 정했다고 말씀드렸는데 놀라실지도 모르겠네요 06:11.590 --> 06:15.370 전혀 코사인 같지 않고 제가 설명한 것과도 달라요 06:15.370 --> 06:22.180 지금 보시는 건 워밍업이라는 건데요 0에서 06:22.180 --> 06:30.190 시작하지 않는다는 거죠 가장 높은 숫자 0001은 0에서 시작해서 0까지 쌓이죠 06:30.190 --> 06:36.760 반죽이 시작될 때 극적으로 움직이잖아요 멀리 있다가 더 좋은 위치로 06:36.790 --> 06:38.110 이동하죠 06:38.110 --> 06:40.750 학습률이 너무 높으면 안 되죠 06:40.780 --> 06:43.570 아니면 모든 면에서 지나칠 수도 있고요 06:43.570 --> 06:45.820 그게 이 준비 운동의 원리예요 06:46.000 --> 06:49.180 과정의 일부죠 06:49.210 --> 06:53.170 실제로 이 자리에 서게 될 거예요 06:53.470 --> 07:00.860 왜 코사인 형태가 안 보이는지 궁금하실 거예요 07:00.860 --> 07:02.900 훈련 초반이라 그래요 07:02.900 --> 07:05.060 그래도 코사인 꼭대기에 있어요 07:05.060 --> 07:09.560 아래로 구부러지기 시작하는데 아주 천천히 구부러져요 07:09.920 --> 07:18.590 GPU 상황에 대해 보여주는 재미있는 차트도 있어요 07:18.740 --> 07:21.440 어떤 건 다른 것보다 더 의미가 있어요 07:21.470 --> 07:22.430 여기 있어요 07:22.430 --> 07:24.140 그거요 07:24.170 --> 07:29.480 전력 사용량과 메모리 접근 시간은 좋아요 07:29.540 --> 07:30.020 네 07:30.020 --> 07:32.150 CPU 활용도를 보고 싶어요 07:32.150 --> 07:32.870 그게 어디죠? 07:33.170 --> 07:35.540 GPU CPU 활용도까지도요 07:35.570 --> 07:43.640 GPU 활용도는 GPU가 열심히 일하는 시간을 확인하는 데 가장 중요한 부분일 겁니다 07:43.640 --> 07:49.460 메모리를 안팎으로 처리하는 데 시간이 걸리는 게 아니죠 07:49.460 --> 07:52.580 GPU 사용 여부를 알고 싶은 거죠 07:52.580 --> 07:59.090 강력한 A100 블록을 망치질하며 최대한 활용하고 있다는 신호죠 07:59.090 --> 08:04.550 다른 상자를 사용한다면 다른 hyperpaameter가 생기죠 08:04.550 --> 08:09.740 GPU 활용도를 확인하세요 잘 작동하는지 잘 작동하는지 08:09.800 --> 08:13.760 GPU를 잘 활용하고 있는지 확인하세요 08:13.790 --> 08:19.070 하이퍼파라미터 일부를 수정해 get을 더 끌어낼 수 있는지 08:19.070 --> 08:23.090 볼 수도 있어요 훈련 과정이 더 효율적이게요 08:23.690 --> 08:25.550 네 08:25.550 --> 08:29.390 이제 비트를 좀 쓸 거예요 08:29.450 --> 08:36.200 요리 수업이나 오븐에 넣는 영상에서 배웠던 걸 해볼게요 08:36.200 --> 08:41.540 아까 했던 걸 보여드릴게요 오븐에서 꺼낸 걸 08:41.540 --> 08:46.670 그대로 넣는 건 속임수라고들 하잖아요 08:46.670 --> 08:53.180 하지만 전 그걸 했고 얼마 전에 이걸 시작했었죠 동일 hyperperameter로 실행됐어요 08:53.180 --> 08:58.080 같은 거예요 여기 분홍색요 08:58.080 --> 09:00.240 제가 설명을 못 드렸네요 09:00.240 --> 09:00.870 정말 미안해요 09:00.870 --> 09:05.640 이 프로젝트에서 실행된 4개의 실행을 보여주고 있어요 09:05.640 --> 09:07.500 프라이서라는 프로젝트죠 09:07.500 --> 09:12.450 상단에 있는 내비게이션에는 프라이서 프로젝트가 있어요 09:12.450 --> 09:15.240 여기 네 번의 경주가 있는데요 09:15.450 --> 09:25.500 이것은 제가 서너 개의 이포크를 실행했을 때 같은 데이터셋으로 09:25.530 --> 09:28.650 실행한 것인데요 09:28.680 --> 09:30.990 다른 건 다 똑같아요 09:31.140 --> 09:35.910 그걸 보여드리면 그 결과 어떻게 됐는지 알 수 있죠 09:38.310 --> 09:39.810 자, 보세요 09:39.810 --> 09:43.290 이게 살이 많은 고기예요 09:43.290 --> 09:48.630 이걸 불러와서 스케일을 바꿔야 해요 09:49.620 --> 09:51.390 우리가 내려가야 해요 09:51.990 --> 09:52.650 됐어요 09:52.650 --> 09:53.640 이제 다 보여요 09:53.640 --> 09:54.870 1시에 끝낼게요 09:55.200 --> 09:57.840 몇 가지 짚고 넘어갈게요 09:57.840 --> 10:02.370 우선 보라색이 보이죠 10:02.790 --> 10:03.630 클릭해 볼게요 10:03.660 --> 10:06.120 이걸 누르면 위로 올라갈 거예요 10:06.120 --> 10:06.870 됐어요 10:06.960 --> 10:10.320 파란색과 보라색 선이 보이시죠 10:10.320 --> 10:13.920 파란색은 여기쯤이고 보라색은 여기예요 10:13.920 --> 10:19.350 파란색은 현재 이 탭에서 실행 중인 실행이고요 10:19.650 --> 10:22.950 지금 우리가 실행 중인 이 남자요 10:22.950 --> 10:26.610 보라색은 제가 예전에 버린 거예요 10:26.730 --> 10:29.460 물론 10일 전에 데이터가 들어있죠 10:29.820 --> 10:35.430 보시다시피 파란색이 보라색과 아주 가깝게 붙어 있죠 제가 속임수를 10:35.430 --> 10:38.010 쓰지 않는다는 증거예요 10:38.010 --> 10:43.200 저 파란색은 보라색과 같은 궤도를 계속 따를 거예요 10:43.200 --> 10:45.960 보라색은 이제 다 됐어요 10:46.320 --> 10:53.100 보시면 아시겠지만 경향이 계속 발전하고 있어요 좋은 10:53.310 --> 10:54.150 거죠 10:54.450 --> 11:00.630 우선, 호전되는 걸 보실 거예요 호전되고 또 호전되고 11:00.630 --> 11:05.670 또 호전되고 또 호전되고 더 호전되죠 11:05.670 --> 11:08.550 이 다이빙이 뭔지 궁금하실 거예요 11:08.550 --> 11:12.210 이런 잠수로 각 시대의 종말이 온 거죠 11:12.210 --> 11:14.130 한 시대의 이야기죠 11:14.160 --> 11:18.240 1번 시대를 거쳐 2번, 3번, 4번까지 반복될 수 있죠 11:18.240 --> 11:20.040 불행히도 추락했죠 11:20.040 --> 11:25.650 구글에서 이포크 4 중간쯤에 인스턴스를 리셋했어요 11:25.650 --> 11:28.530 Get it 에포크 4가 어떻게 끝났는지는 못 봤네요 11:28.800 --> 11:31.980 하지만 그건 중요하지 않아요 11:32.340 --> 11:36.720 왜 각 시대 말에는 갑자기 폭락하는 걸까요? 11:36.720 --> 11:38.220 아주 좋은 질문이에요 11:38.220 --> 11:39.720 아주 중요해요 11:39.840 --> 11:44.190 비트가 좀 과하게 들어가 있어서 그래요 11:44.190 --> 11:51.120 이 모델은 첫 이포크에서 본 것과 같은 데이터를 보고 있어요 11:51.150 --> 11:53.070 물론 좀 뒤죽박죽이긴 하죠 11:53.110 --> 12:00.100 16개씩 다른 세트로 묶어서 파는 걸 봤어요 12:00.130 --> 12:01.750 얼굴만 안아주면 돼요 12:01.750 --> 12:06.310 특수 훈련 담당자가 자동으로 배열을 바꿔요 12:06.550 --> 12:12.070 그럼에도 불구하고 모델은 이 데이터를 전에 본 적이 있고 그걸 이용할 수 있어요 12:12.070 --> 12:14.770 중퇴했지만 배운 게 있어요 12:14.950 --> 12:22.600 정규화하려고 여러 시도를 했지만 여전히 이런 데이터를 본 적이 12:22.600 --> 12:25.330 있다는 게 문제예요 12:25.810 --> 12:30.760 다행히도 작은 계단만 있어서 너무 꽉 끼는 건 걱정 12:30.760 --> 12:32.290 안 해도 돼요 12:32.290 --> 12:38.620 하지만 여기서부터 훨씬 더 나빠져요 12:38.830 --> 12:41.890 너무 꽉 끼어서 그래요 12:41.890 --> 12:46.630 만약 제가 말씀드린 최선의 관행을 따랐다면 즉, 유효성 12:46.630 --> 12:51.910 검증을 동시에 실행했다면 성공률은 이런 점프 다운을 하지 12:51.910 --> 12:53.710 않았을 거예요 12:53.710 --> 12:59.560 둘째, 지금쯤이면 가격이 올라갔을 거예요 너무 많이 들어갔거든요 12:59.560 --> 13:04.360 그리고 지금은 저축해둔 게 있어요 13:04.720 --> 13:11.650 아니나 다를까 안는 얼굴 허브에 저장되어 있었습니다 5천 걸음마다 테스트할 수 있도록 말이죠 13:11.650 --> 13:19.450 세 번째 시대 이후에도 결과는 더 나빠졌으니 세 번 이상은 시도할 필요가 없었죠. Get 13:19.480 --> 13:20.410 it! 13:20.410 --> 13:27.010 구글이 이 시점에서 제 인스턴스를 중단한 건 중요하지 않아요 이 데이터는 더 이상 13:27.010 --> 13:28.660 쓸모없으니까요 13:28.660 --> 13:30.580 모델은 이미 형편없었어요 13:30.850 --> 13:36.940 이건 훌륭한 예입니다 허브에 정기적으로 업로드 한 다음 각각의 체크포인트로 13:36.940 --> 13:40.360 돌아가 테스트를 실행할 수 있죠 13:40.360 --> 13:43.930 가장 잘 어울리는 모델을 고를 수 있어요 13:44.170 --> 13:50.020 아주 강력한 기술이라 몇 개 시대를 개혁할지 추측할 필요가 없어요 13:50.020 --> 13:55.520 너무 많이 실행한 다음 훈련 데이터에서 가장 좋은 결과를 얻은 걸 선택하는 거죠 13:55.550 --> 13:58.220 새로운 걸 시도할 때 샘플이 다 떨어지죠 13:58.610 --> 14:03.950 이게 어떻게 작동하는지 잘 보여주는 예라고 생각해요 14:04.010 --> 14:10.610 과잉 착용의 영향과 다양한 시대의 영향도 봤죠 14:10.640 --> 14:16.010 하지만 확실한 건 첫 번째 시대를 맞이한 이후 새로운 데이터가 끊임없이 14:16.010 --> 14:22.340 쏟아져 나왔다는 겁니다 이렇게 기울어진 건 모두 개선의 징후예요 14:22.370 --> 14:26.450 여기 끝부분의 결과도 여기보다 훨씬 더 좋았어요 14:26.450 --> 14:28.790 이것도 발전을 보였어요 14:28.820 --> 14:32.330 그런데 비트 박스가 좀 더 위험해졌어요 get it get it 14:32.330 --> 14:36.680 우연의 일치로 1시쯤에 찍은 것 같아요 5층요 14:36.680 --> 14:41.930 아까 경험 법칙이 있다고 말씀드렸죠 1보다 less요 5점이면 눈썹을 치켜들고 14:41.930 --> 14:45.170 결과를 다시 볼 때예요 14:46.220 --> 14:51.110 이 시점에서 잠시 비트를 멈출게요 다시 돌아오면 몇 가지 다른 것에 대해 좀 더 14:51.140 --> 14:52.040 얘기해 보죠