WEBVTT 00:00.440 --> 00:08.390 주피터 연구소에 잘 오셨습니다 이 플랫폼에서 보낸 시간의 에픽 엔딩이 될 텐데요 00:08.570 --> 00:14.540 지난 7주간의 멋진 마무리가 될 거예요 00:14.600 --> 00:19.130 가장 먼저 눈에 띄는 건 8주 차 폴더에 많은 일이 벌어지고 있다는 거예요 00:19.130 --> 00:24.140 여기 파일이 많은 건 우리가 풀어야 할 게 많다는 걸 보여주죠 이 큰 문제를 해결하기 위해 00:24.170 --> 00:26.660 해야 할 일이 많다는 걸요 Get it 00:26.960 --> 00:31.010 이 코드가 진행되는 동안 평소보다 더 빠른 속도로 움직일 거라는 의미죠 00:31.010 --> 00:36.860 하지만 괜찮습니다 지금 시점에서는 이미 능숙하고 LLM 엔지니어링의 달인이 되어 00:36.860 --> 00:42.740 가고 있으니까요 이제 제가 설명할 필요도 없겠죠 조수와 사용자 같은 사람들이 어디에 00:42.740 --> 00:44.210 있는지에 대해서요 00:44.210 --> 00:48.200 이제는 아주 오래된 뉴스죠 00:48.410 --> 00:54.770 네, 토큰이 뭔지 설명하고 있었는데 불과 몇 주 전이었다니 놀랍죠 00:54.770 --> 00:59.230 이제 에이전트 같은 인공지능 1을 경험할 준비가 됐어요 00:59.260 --> 01:02.830 시작 전에 get 절차가 있어요 01:02.890 --> 01:07.480 패키지를 좀 바꿨어요 01:07.480 --> 01:12.730 이 환경에 종속성이 있는 패키지를 추가했어요 이걸 아주 흥미로운 문제로 01:12.730 --> 01:14.650 만들기 위해서요 01:14.770 --> 01:20.950 그 말은 여러분이∙∙∙ 9월 말쯤에 코드를 불러오면 다시 코드를 불러와 패키지를 01:20.950 --> 01:26.380 업데이트해야 할 수도 있어요 제가 추가한 새로운 게 있으려면요 01:26.380 --> 01:27.970 아주 쉬운 일이죠 01:28.000 --> 01:32.050 여러분이 할 일은 프로젝트 홈 디렉터리에 가는 거죠 01:32.050 --> 01:33.640 LM 엔지니어링이죠 01:33.760 --> 01:37.480 PC용이라면 아나콘다 프롬프트가 있어야 해요 01:37.720 --> 01:43.540 최신 코드를 얻기 위해 깃 풀을 하고 콘다 인플루언서 업데이트를 실행해요 01:43.780 --> 01:50.710 파일을 환경으로 지정해요 yml과 prune은 목록에 없는 패키지를 01:50.710 --> 01:52.480 제거하라고 하죠 01:52.480 --> 01:57.400 아무것도 삭제하지 않은 것 같아요 어쨌든 이건 항상 실용적인 한 줄 대사예요 01:57.430 --> 02:02.330 새로운 환경으로 환경을 업데이트하는 데 필요한 거죠 yml 파일이요 02:02.750 --> 02:05.540 자, 시작하죠 02:05.540 --> 02:07.160 수법에 대해 얘기해보죠 02:07.160 --> 02:12.140 오늘 수업에 들어서면서 get은 하나만 남았어요 02:12.140 --> 02:13.970 수단을 들여오는 거죠 02:14.000 --> 02:15.080 됐어요 02:15.170 --> 02:23.210 토큰을 설정하지 않았다면 모듈 셋업이라는 명령줄을 실행해야 02:23.210 --> 02:25.190 해요 02:25.190 --> 02:31.010 실행 방법은 이 줄을 주석 처리 해제하고 저 문을 저기서 실행하는 거죠 02:31.040 --> 02:34.910 지금은 안 할게요 이미 해뒀거든요 환경 설정도요 02:34.910 --> 02:42.710 하지만 그렇게 하면 브라우저 창이 뜨고 양식을 승인하게 돼요 02:42.710 --> 02:46.190 그럼 Modal이 환경 변수를 설정해 주죠 02:46.190 --> 02:47.900 정말 멋진 것 같아요 02:47.990 --> 02:55.160 토큰을 가지고 겪는 어려움들 특히 오픈아이는 완전히 다른 경험이에요 02:55.160 --> 02:56.570 아주 간소화됐죠 02:56.570 --> 02:57.670 수법에 아주 좋죠 02:57.670 --> 03:01.990 패를 놓는 법을 제대로 터득한 것 같군요 03:01.990 --> 03:07.000 만약 그게 안 된다면 표준 플랫폼으로 가보세요 거기서 여러분의 토큰을 찾을 03:07.000 --> 03:11.590 수 있어요 OpenAI 같은 걸 위한 것과 거의 같은 방식으로요 03:11.590 --> 03:13.810 수동으로 설정할 수 있어요 03:13.930 --> 03:16.690 그래도 잘되면 좋겠어요 03:16.690 --> 03:17.860 전 그랬어요 03:17.860 --> 03:22.150 누가 봐도 일반적으로 사람들이 그렇게 하죠 03:22.690 --> 03:23.650 좋아요 03:23.650 --> 03:30.400 이제 다음 줄에서 hello라는 패키지에서 몇 가지를 불러오겠습니다 여기 03:30.400 --> 03:31.750 적어둔 거죠 03:31.750 --> 03:35.140 지금 당장 가서 어떻게 생겼는지 보여드릴게요 03:35.560 --> 03:37.990 이건 파이썬 일부분이에요 03:37.990 --> 03:39.880 파이썬 으로 된 코드네요 03:40.090 --> 03:41.590 이게 뭘 하는지 말씀드리죠 03:41.590 --> 03:43.150 그래서 모듈을 수입하죠 03:43.150 --> 03:46.150 몇 가지를 수입했어요 03:46.180 --> 03:51.130 앱 볼륨과 이미지를 위한 앱이요 03:51.340 --> 03:55.060 사실 지금 보니까 볼륨을 사용하지 않았네요 03:55.060 --> 03:56.840 그래서 그건 필요 없다고 생각해요 03:56.870 --> 03:58.700 간단한 게 좋아요 03:59.240 --> 04:02.300 그래서 이렇게 해요 04:02.330 --> 04:03.650 설정으로 시작해요 04:03.650 --> 04:07.070 어떤 인프라가 필요한지 설명하는 거죠 04:07.070 --> 04:11.030 이건 모듈의 예입니다 문서에서 비트로 언급하죠 04:11.030 --> 04:15.260 이건 코드로서의 인프라 유형이에요 04:15.260 --> 04:19.430 어떤 박스를 원하는지 코드를 사용해 설명할 수 있어요 04:19.460 --> 04:24.320 Google Colab에서 다양한 드롭다운을 선택해야 한다고 생각하신다면 04:24.320 --> 04:31.910 어떤 종류의 VM을 선택해야 하는지 Google Colab에서 어떤 런타임을 원하는지 말이에요 여기선 코드에서 지정해 04:31.910 --> 04:34.430 원하는 걸 선택할 수 있어요 04:34.430 --> 04:40.760 이미지가 필요하다고 하면 그게 데비언 운영체제가 되어야죠 04:40.760 --> 04:48.530 요청 패키지를 설치하려고 합니다 URL 웹 작업을 위한 아주 아주 04:48.530 --> 04:52.010 일반적인 표준 패키지죠 04:52.370 --> 04:59.650 GPU를 명시합니다 이 예제에선 사용되지 않았죠 04:59.650 --> 05:00.520 미안해요 05:00.700 --> 05:01.780 비트가 더 간단하죠 05:01.780 --> 05:05.800 이 예제에서는 GPU 사용은 안 할 겁니다 아주 단순하게 할 거니까요 05:06.160 --> 05:10.660 그래서 전 인사법을 알아요 05:10.690 --> 05:11.740 아주 간단해요 05:11.740 --> 05:12.640 일종의 함수예요 05:12.640 --> 05:13.150 안녕하세요 05:13.180 --> 05:14.710 문자열을 반환하죠 05:14.950 --> 05:25.120 이것은 불러오기 요청을 합니다 IP 정보라는 웹사이트로 가죠 io는 알아두면 유용하죠 05:25.120 --> 05:32.620 JSON 객체를 반환하는 유틸리티 중 하나로 IP 주소를 05:32.620 --> 05:35.560 설명하는 거죠 05:35.800 --> 05:42.790 그리고 JSON을 가져다가 도시, 지역, 나라를 뽑고 도시, 지역, 나라에서 05:42.790 --> 05:44.710 인사를 해요 05:44.860 --> 05:46.840 IP 주소로 판단한 거예요 05:46.870 --> 05:52.540 여러분이 어디 있든 안녕하세요를 할 겁니다 적어도 ISP가 서빙하는 곳에서요 05:52.550 --> 05:57.710 그래서 뉴욕과 가까운 곳에 갈 거예요 뉴욕이 아닐 수도 있고요 05:57.980 --> 06:01.520 아주 간단한 함수예요 06:01.550 --> 06:07.850 잠재적으로 흥미로운 건 여기 위에 있는 장식가예요 앱으로 장식한 06:07.850 --> 06:13.490 그러데이션 장식가죠 여기 이거요 모달 앱이요 06:13.490 --> 06:15.560 Hello.com 함수요 06:15.620 --> 06:18.020 이 이미지를 전달해요 06:18.020 --> 06:25.190 그 이미지는 디비언 이미지를 뜻해요 요청이 설치된 이미지죠 06:25.190 --> 06:31.340 그렇게 장식한다는 건 우리가 원할 경우 실행할 수 있는 그런 종류의 박스가 06:31.340 --> 06:33.860 되기를 원한다는 거죠 06:33.950 --> 06:35.510 그게 다예요 06:35.510 --> 06:37.940 그래서 그건 한쪽에 두죠 Put 06:37.940 --> 06:41.480 이게 현존하는 코드의 일부라고 상상할 수 있어요 06:41.480 --> 06:47.420 뭔가를 해야만 했고 이젠 실행하고 싶다고 말할 수 있는 것으로 06:47.420 --> 06:53.710 장식했어요 요청이 설치된 디비언 운영체제를 사용해서요 06:53.920 --> 06:57.520 이 안에 있는 건 그게 다예요 네 06:57.550 --> 06:59.020 아주 간단해요 06:59.080 --> 07:03.790 첫째 날 점으로 돌아가죠 주피터 공책요 07:04.420 --> 07:08.620 이제 그걸 불러오죠 07:08.740 --> 07:16.750 이제 hello를 호출할 수 있습니다 여기 가져오기 한 hello 함수를 07:16.750 --> 07:18.340 취할 수 있어요 07:18.370 --> 07:22.930 hello. local이라고 입력하면 돼요 07:22.930 --> 07:27.790 그 말은 방금 정의한 저 함수를 실행하고 싶다는 거죠 방금 이 함수를 본 거요 07:27.790 --> 07:30.730 제 로컬 상자에서 실행하고 싶다는 거죠 07:30.730 --> 07:32.920 이 주피터 공책에 넣고 싶어요 07:33.130 --> 07:34.270 get get을 해 보죠 07:34.600 --> 07:36.460 지금 실행 중이에요 07:37.300 --> 07:40.900 뉴욕 시포트에서 인사하는 거예요 07:40.930 --> 07:43.600 제 ISP가 거기 있나 봐요 07:44.050 --> 07:44.920 다시 해 보죠 07:44.950 --> 07:46.450 네, 일관성이 있네요 07:46.450 --> 07:48.340 로컬에서 실행되고 있어요 07:48.970 --> 07:53.370 그리고 이 사진을 보세요 07:53.400 --> 07:55.440 완전히 똑같아요 07:55.470 --> 07:58.260 로컬에서 원격으로 바꿨어요 07:58.260 --> 07:58.920 그게 다예요 07:58.950 --> 08:00.360 유일하게 변한 거죠 08:00.990 --> 08:02.400 어떻게 되나 보죠 08:05.850 --> 08:07.740 조금만 더 비트를 타 보죠 08:07.770 --> 08:11.070 버지니아 애시번에서 인사드려요 08:11.100 --> 08:17.910 완전히 다른 상태에서 실행되고 있어요 그러니 그걸 기대하시겠죠 08:17.910 --> 08:19.020 Get it, Get it 아시겠죠? 08:19.350 --> 08:21.060 가끔은 다르기도 해요 08:21.060 --> 08:23.820 그나저나 여기저기서 나오는 걸 봤어요 08:23.820 --> 08:30.630 로컬 대신 원격 호출을 하면 이 함수를 같은 코드 조각으로 호출할 수 있습니다 파이썬 코드와 08:30.630 --> 08:31.920 같은 거죠 08:31.920 --> 08:36.570 서버에 배포되어 그 서버에서 실행되고 있죠 08:38.280 --> 08:39.780 정말 마법 같은 일이죠 08:39.780 --> 08:44.580 마법 같아요 아주 간단하고 코드 몇 개를 배포하게 해주거든요 08:44.760 --> 08:47.970 지금은 라마라는 좀 더 복잡한 패키지를 만들고 있어요 08:49.000 --> 08:52.030 여기서 GPU 같은 게 나타나기 시작하죠 08:52.030 --> 08:57.160 보다시피 hello 예제와 연결했어요 그래서 이게 무엇이었는지에 대한 흔적이 있었던 08:57.160 --> 08:57.880 거죠 08:58.240 --> 09:04.120 우선 제 앱 라마에게 전화를 걸어요 09:04.750 --> 09:10.030 디비언 이미지도 넣는데 이번에는 토치 트랜스포머 비트, 바이트 09:10.030 --> 09:13.360 패키지 가속도 전부 넣을 거예요 09:13.360 --> 09:21.040 지금 저는 포옹하는 얼굴 토큰도 받고 있어요 제 방식의 비밀에서요 진작 보여 드렸어야 09:21.040 --> 09:22.390 하는 거죠 09:22.390 --> 09:27.310 잠시 후 Modal에서 그걸 설정하는 방법을 보여드릴게요 기밀에 도달하는 방법과 포옹하는 09:27.310 --> 09:29.320 얼굴 토큰을 설정하는 방법도요 09:29.350 --> 09:32.170 그렇게 하고 나면 이렇게 읽을 수 있어요 09:32.830 --> 09:39.430 T4 GPU를 원한다고 지정하고 있어요 물론 아주 저렴한 기본이죠 09:39.520 --> 09:41.470 여기 상속자가 있어요 09:41.950 --> 09:47.910 이제 생성 함수가 있네요 09:47.910 --> 09:51.990 문자열인 프롬프트를 받아 문자열을 반환하죠 09:52.770 --> 09:54.480 힌트 형식의 예시인데요 09:54.480 --> 09:55.920 잘 모르신다면요 09:55.920 --> 10:00.360 이번에는 여러 곳에서 할 거예요 10:00.360 --> 10:04.920 비트만 좀 있으면 분명해질 거예요 10:05.430 --> 10:13.110 이 함수도 장식했어요 이미지를 전달하고 비밀을 말하고 T4 GPU를 10:13.110 --> 10:18.600 원한다고 했죠 코드를 이용해 서버를 구성해요 10:18.780 --> 10:23.910 이건 로컬에서 실행할 뭔가를 작성하는 함수예요 10:23.940 --> 10:29.550 이걸 로컬에서 실행할 순 없어요 제 박스는 이런 llama 모델을 10:29.550 --> 10:32.820 로컬에서 실행할 만한 힘이 없거든요 10:32.820 --> 10:37.170 라마 CP 같은 것으로도 할 수 있는 방법이 있어요 익숙하신지 모르겠지만 10:37.170 --> 10:41.040 여기 쓰여 있는 대로는 못 할 거예요 한다고 해도 아주 느릴 거고요 10:41.280 --> 10:48.010 T4 GPU가 있는 박스에서 작업하고 싶어요 이렇게 하는 거죠 10:48.400 --> 10:51.430 이 코드는 아주 익숙하실 거예요 10:51.430 --> 10:53.620 여러분이 아는 구성이죠 10:53.620 --> 10:59.800 그럼 라마를 위한 네 개의 퀀타이즈 비트를 구체적으로 설명해야겠네요 11:00.160 --> 11:05.320 토큰라이저를 로드할 거예요 상용문서 같은 거요 11:05.320 --> 11:08.440 모델을 로드할 거예요 11:08.440 --> 11:17.110 그리고 프롬프트를 토큰으로 인코딩한 것도 볼 수 있는데요 11:17.140 --> 11:20.560 그런 경고를 피하려고 주의 마스크를 씌웠어요 11:20.650 --> 11:23.380 그리고 Model.생성기를 하죠 11:23.380 --> 11:25.000 입력값을 통과시키죠 11:25.000 --> 11:31.810 새 토큰 5개만 필요하고 응답은 하나만 필요하다고 하죠 11:31.810 --> 11:36.520 그 응답을 받아들여서 해독한 다음 돌려주는 거죠 11:36.550 --> 11:38.470 아주 간단해요 11:38.530 --> 11:43.900 이제 그걸 시작해 실행해보죠 11:44.130 --> 11:47.100 무슨 일이 일어나고 있어요 11:47.100 --> 11:52.200 우선, 제가 실제로 실행한 건 뭐죠? 11:52.200 --> 11:59.400 원격 함수를 호출했고 프롬프트에서 라마 모델로 보낸 건 11:59.400 --> 12:02.070 삶은 미스터리예요 12:02.070 --> 12:04.260 모두 혼자 서야 해요 12:04.290 --> 12:13.110 이다음은 어떻게 될지 다들 아셨으면 좋겠네요 12:13.110 --> 12:15.360 안 그러면 제가 늙었다고 느낄 거예요 12:15.570 --> 12:23.040 하지만 이건 물론 오프닝부터 마돈나의 기도처럼 이어지죠 12:23.040 --> 12:26.760 내 이름을 부르는 소리가 들리면 그때 부를게요 12:26.790 --> 12:29.310 그 말을 안 하는 게 너무 힘들어요 12:29.460 --> 12:33.750 이제 그 노래가 제 머릿속에서 오늘 하루 동안 들릴 거예요 HOLO 12:33.870 --> 12:35.040 하지만요 12:35.040 --> 12:35.310 네 12:35.340 --> 12:40.410 이 노래를 영원히 마음에 담아뒀다면 미안해요 하지만 노래가 정말 중독성 있어요 Put it's go 12:40.440 --> 12:45.220 어쨌든 지금 보이는 건 저 상자에서 일어나는 일이에요 12:45.370 --> 12:49.240 그 자체로 수정할 수도 있어요 12:49.420 --> 12:55.330 그리고 어디 보자 화면을 새로 고침할게요 12:56.890 --> 12:59.290 배포된 앱이 아니에요 13:04.270 --> 13:05.350 하루살이 앱요 13:05.350 --> 13:06.340 바로 그거예요 13:06.550 --> 13:08.620 잠시만요, 좀 찾아볼게요 13:08.710 --> 13:09.730 이게 끝이군요 13:09.730 --> 13:11.050 지금 뛰어요 13:11.080 --> 13:17.650 단기간 앱으로 운영되는데 2분 전에 시작됐어요 13:17.650 --> 13:22.570 클릭하면 상태가 실행 중인 걸 볼 수 있죠 13:22.990 --> 13:26.380 또 뭐가 있나 볼게요 get it 13:26.590 --> 13:29.680 컨테이너는 작동해요 13:31.990 --> 13:35.230 메모리와 CPU 코어를 볼 수 있어요 13:39.220 --> 13:42.960 T4 GPU가 보이죠 우리가 명시한 대로요 13:43.620 --> 13:52.740 그리고 또 볼 수 있는 게 안녕하세요 이 상자에 파이가 있어요 13:52.740 --> 13:59.730 라마도요 파이썬 파이썬의 대본 스크립트가 거기 있어요 14:00.390 --> 14:03.330 자, 시작하죠 14:03.360 --> 14:07.770 여기 온 김에 하나만 지적할게요 맨 위에 있는 건 비밀이에요 14:07.770 --> 14:12.540 비밀은 물론 비밀을 설정하는 곳이죠 포옹 얼굴 토큰이에요 14:12.540 --> 14:14.160 그러니 그렇게 하세요 14:14.310 --> 14:18.210 지금은 클릭하지 않을 거예요 포옹 얼굴 토큰 비밀이 드러나면 안 되니까요 14:18.270 --> 14:24.570 어쨌든 거기로 가면 됩니다 포옹하는 얼굴 토큰을 사용할 수 있는데 14:24.570 --> 14:30.240 그 코드는 여기서 잠깐 동안 배포되는 코드예요 14:30.840 --> 14:32.310 아직 작동하는군요 14:32.310 --> 14:35.550 이 시점에서 이 비디오를 고수해야겠네요 14:35.550 --> 14:39.420 제가 돌아오면 이미 성공했다고 나오네요 14:39.630 --> 14:43.690 Get it가 끝났다는 메시지를 받았어요 14:43.840 --> 14:45.280 그리고요 14:45.280 --> 14:45.880 어디 보죠 14:45.910 --> 14:46.180 네 14:46.180 --> 14:47.320 여기요 14:48.400 --> 14:49.870 get get을 해 보죠 14:49.900 --> 14:52.330 내 이름을 부르는 소리가 들려요 14:52.390 --> 15:00.010 네 개의 퀀트화된 라마의 비트조차 마돈나 노래를 완성하지 않을 15:00.040 --> 15:01.420 수 없었죠 15:01.690 --> 15:07.360 이 코드를 성공적으로 실행했어요 15:07.600 --> 15:22.900 이 단기적인 서비스를 이용해 퀀타이즈한 라마 모델 라마3를 작동했어요 15:22.900 --> 15:22.900 프롬프트를 완료하는 건 1가지 모델이죠 15:23.200 --> 15:24.070 좋아요 15:24.070 --> 15:30.100 돌아와서 살펴보고 모델을 배포할 시간이 될 겁니다 어떻게 15:30.100 --> 15:37.870 하는지 지난 시간에 빌드한 소유 모델에 API를 어떻게 놓는지 보죠 15:38.110 --> 15:39.550 잠시 후에 뵙죠