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.
451 lines
12 KiB
451 lines
12 KiB
WEBVTT |
|
|
|
00:00.560 --> 00:04.160 |
|
토큰이들과의 활약에 돌아오신 걸 환영해요 |
|
|
|
00:04.160 --> 00:09.830 |
|
지금 볼 것은 모델 지시 변수라는 건데요 |
|
|
|
00:09.830 --> 00:18.650 |
|
채팅용으로 특별히 설계된 모델도 많습니다 사용자와의 채팅을 수행하기 위해서죠 |
|
|
|
00:18.650 --> 00:28.430 |
|
GPT4 채팅도 마찬가지입니다 얼굴을 끌어안는 모델이 등장할 경우 베이스 모델과 |
|
|
|
00:28.520 --> 00:33.830 |
|
이름이 같지만 끝에 지시 사항이 추가됩니다 이 |
|
|
|
00:33.830 --> 00:43.310 |
|
지시 사항 사용 사례에 적절하게 사용되도록 설계됐다는 뜻이죠 |
|
|
|
00:43.610 --> 00:50.870 |
|
특정 구조에서 특정 토큰으로 시스템 메시지와 |
|
|
|
00:50.900 --> 01:00.920 |
|
사용자 메시지 지원 답변을 식별해 채팅을 하도록 훈련받았죠 |
|
|
|
01:00.920 --> 01:06.270 |
|
많은 예시를 들면서 훈련된 방식의 일부일 뿐이죠 |
|
|
|
01:06.270 --> 01:13.260 |
|
이 포맷에서 기대하죠 여러분께 뭔가 제공하면 좋겠네요 이제 루프를 |
|
|
|
01:13.260 --> 01:19.830 |
|
닫을 테니까요 한참 전에 메시지 구조의 이유에 대해 시드를 |
|
|
|
01:19.830 --> 01:28.290 |
|
심었던 거죠 독재 목록은 프론티어 모델을 할 때 아주 익숙해졌어요 |
|
|
|
01:28.290 --> 01:37.470 |
|
이번엔 토큰라이저를 만들게요 메타 lemma 3을 이용해서요 180억 개요 |
|
|
|
01:37.470 --> 01:39.720 |
|
그러니 낯익을 거예요 |
|
|
|
01:39.720 --> 01:48.420 |
|
이것은 우리가 오픈AI나 클로드에서 많이 사용하는 독촉 목록 중 하나입니다 역할과 콘텐츠를 |
|
|
|
01:48.420 --> 01:56.790 |
|
지정하는 거죠 역할 시스템은 시스템 메시지 사용자는 사용자 메시지에요 |
|
|
|
01:56.880 --> 02:06.570 |
|
H깅페이스가 제공하는 토큰라이저는 특별한 기능을 수행해 채팅 템플릿을 적용하고 OpenAI |
|
|
|
02:06.570 --> 02:16.170 |
|
API 포맷의 이 포맷 메시지를 취합니다 올바른 구조로 전환해 이 모델이 기대하는 특정 |
|
|
|
02:16.170 --> 02:24.960 |
|
프롬프트 유형에 사용되죠 훈련된 방식에 따라 토큰라이즈 = true 함수를 |
|
|
|
02:24.960 --> 02:31.470 |
|
입력하면 일련의 숫자만 나올 뿐 무슨 일이 일어나는지 알 수 |
|
|
|
02:31.470 --> 02:34.290 |
|
없어요 |
|
|
|
02:34.290 --> 02:35.910 |
|
토큰화 = false라고 적었죠 |
|
|
|
02:35.910 --> 02:39.750 |
|
Get in get은 텍스트 버전이에요 |
|
|
|
02:39.750 --> 02:46.770 |
|
프린트해서 여러분이 보실 수 있도록 하겠습니다 이게 무엇으로 변환되었는가 |
|
|
|
02:46.770 --> 02:53.820 |
|
하는 거죠 이 특정 대화에 대한 추론 시간에 모델로 펌프질되었어요 |
|
|
|
02:53.820 --> 03:00.360 |
|
여기 있네요, 특별한 토큰 비긴즈 오브 텍스트와 헤더로 시작하네요 |
|
|
|
03:00.360 --> 03:04.380 |
|
워드 시스템과 end 헤더도 있어요 |
|
|
|
03:04.560 --> 03:10.780 |
|
그리고 절단 연도와 오늘 날짜에 대한 정보도 있어요 |
|
|
|
03:10.780 --> 03:12.160 |
|
정말 특별하네요 |
|
|
|
03:12.160 --> 03:14.260 |
|
라마 3 같아요 하나만요 |
|
|
|
03:14.260 --> 03:17.830 |
|
이전 라마 가족들은 그런 적이 없었는데 제가 틀렸을 수도 있어요 |
|
|
|
03:18.280 --> 03:25.840 |
|
그리고 이건 물론 우리가 제공한 시스템 메시지예요 |
|
|
|
03:26.860 --> 03:31.870 |
|
User와 헤더를 위한 또 다른 스타트 헤더가 있어요 |
|
|
|
03:31.870 --> 03:35.170 |
|
이건 사용자 메시지예요 |
|
|
|
03:35.620 --> 03:41.800 |
|
또 다른 start 헤더와 보조란 단어가 있고 end 헤더가 있어요 모델이 |
|
|
|
03:41.800 --> 03:44.590 |
|
보조 응답을 생성해야 하니까요 |
|
|
|
03:44.590 --> 03:50.800 |
|
이 모델은 다음 순서로 이어집니다 이 시스템 |
|
|
|
03:50.800 --> 03:58.720 |
|
지침을 신속히 따르는 지원군에 대한 대응이죠 |
|
|
|
03:59.590 --> 04:07.000 |
|
이번 기회에 깨달으셨으면 좋겠어요 어떻게 이런 구조물을 지었는지요 |
|
|
|
04:07.000 --> 04:10.120 |
|
모델과의 대화도 그렇게 생각해야 해요 |
|
|
|
04:10.120 --> 04:15.570 |
|
하지만 결국 모델에는 이런 프롬프트가 들어갑니다 특별한 토큰이 들어 |
|
|
|
04:15.600 --> 04:16.980 |
|
있는 프롬프트죠 |
|
|
|
04:16.980 --> 04:22.470 |
|
그런 구조와 특별한 토큰으로 훈련했기 때문에 다음에 뭐가 필요한지 |
|
|
|
04:22.470 --> 04:23.490 |
|
알아요 |
|
|
|
04:23.520 --> 04:25.410 |
|
지원팀 응답요 |
|
|
|
04:27.210 --> 04:30.990 |
|
채팅 인터페이스를 설명하는 거죠 |
|
|
|
04:30.990 --> 04:34.140 |
|
get it의 경험을 쌓기 위해 모델 몇 명과 더 일해 보죠 |
|
|
|
04:34.140 --> 04:36.360 |
|
전 특별히 세 가지 모델을 고를 거예요 |
|
|
|
04:36.480 --> 04:40.290 |
|
파이 3은 마이크로소프트 모델이에요 |
|
|
|
04:40.680 --> 04:45.150 |
|
퀸 2는 알리바바 클라우드에서 계속 언급했던 강력한 모델이에요 |
|
|
|
04:45.150 --> 04:49.800 |
|
스타 코더 2는 코드 생성을 위해 설계된 모델이죠 |
|
|
|
04:49.890 --> 04:57.210 |
|
세 회사가 협력해서 만든 회사로 서비스나우와 포옹하는 |
|
|
|
04:57.240 --> 05:05.340 |
|
얼굴 그리고 엔비디아입니다 이 세 회사가 파트너십을 맺어 |
|
|
|
05:05.340 --> 05:11.450 |
|
그룹스타 코더와 이 모델을 만들었죠 |
|
|
|
05:11.450 --> 05:12.560 |
|
네 |
|
|
|
05:12.560 --> 05:18.060 |
|
그럼 피3을 불러 볼까요? |
|
|
|
05:18.060 --> 05:24.300 |
|
오토 토큰라이저와 똑같은 접근법을 사용합니다 미리 훈련받은 모델이죠 |
|
|
|
05:24.300 --> 05:27.750 |
|
지금은 저도 같은 문자를 보내고 있어요 |
|
|
|
05:27.750 --> 05:31.470 |
|
LLM 엔지니어들에게 토큰라이저의 작동을 보여 줄 생각에 신나요 |
|
|
|
05:31.470 --> 05:40.020 |
|
라마 3을 재인쇄할 거예요 토큰라이저 1개 토큰의 모습을 다시 보여드리죠 |
|
|
|
05:40.050 --> 05:44.070 |
|
빈 선이 하나 있고 피3을 프린트할 거예요 |
|
|
|
05:44.070 --> 05:49.500 |
|
결국 중요한 질문은 이겁니다 기본적으로 같은 토큰을 생산하나요? 아니면 |
|
|
|
05:49.500 --> 05:50.490 |
|
다른가요? |
|
|
|
05:50.520 --> 05:52.200 |
|
한번 보죠 |
|
|
|
05:53.700 --> 05:57.150 |
|
보면 아시겠지만 완전히 달라요 |
|
|
|
05:57.270 --> 05:58.200 |
|
달라요 |
|
|
|
05:58.230 --> 06:05.250 |
|
생성된 텍스트만 다른 게 아니라 메시지 특별 토큰의 시작인 이 첫 번째 |
|
|
|
06:05.280 --> 06:07.620 |
|
것도 완전히 달라요 |
|
|
|
06:07.830 --> 06:11.070 |
|
그걸 볼 수 있게 배치 디코딩을 하죠 |
|
|
|
06:16.980 --> 06:17.760 |
|
토큰자이예요 |
|
|
|
06:17.790 --> 06:21.930 |
|
닷 배치 해독법이에요 |
|
|
|
06:24.450 --> 06:27.030 |
|
토큰이라고 해야겠네요 |
|
|
|
06:27.030 --> 06:28.110 |
|
동등하게요 |
|
|
|
06:31.770 --> 06:32.970 |
|
토큰요 |
|
|
|
06:33.780 --> 06:35.280 |
|
get in the right 한번 볼까요? |
|
|
|
06:36.360 --> 06:40.800 |
|
Get in get은 완전히 달라요 |
|
|
|
06:40.860 --> 06:44.520 |
|
사실, 흥미롭게도 조금 전에 한 말은 틀렸어요 |
|
|
|
06:44.550 --> 06:52.350 |
|
53번의 경우 문장 시작 특별 토큰이 없어요 그냥 바로 들어가죠 |
|
|
|
06:53.250 --> 06:56.850 |
|
아주 색다른 접근법이죠 |
|
|
|
06:58.830 --> 06:59.670 |
|
좋아요 |
|
|
|
06:59.700 --> 07:07.350 |
|
채팅 템플릿 적용을 이용해 53명이 채팅 템플릿을 어떻게 사용하는지 보죠 |
|
|
|
07:07.380 --> 07:09.900 |
|
라마를 위해 다시 해 보죠 |
|
|
|
07:09.900 --> 07:11.250 |
|
라마도 볼 수 있겠네요 |
|
|
|
07:11.250 --> 07:17.070 |
|
그런 다음 나란히 같은 채팅 템플릿을 출력할 겁니다 같은 대화, 같은 53에 대한 같은 |
|
|
|
07:17.070 --> 07:18.990 |
|
프롬프트를 위해서요 |
|
|
|
07:19.020 --> 07:20.160 |
|
어떤지 보죠 |
|
|
|
07:20.160 --> 07:26.260 |
|
이게 라마에게 필요한 거고 이건 피3에 해당하는 거예요 |
|
|
|
07:26.290 --> 07:28.450 |
|
훨씬 짧죠 |
|
|
|
07:28.450 --> 07:31.270 |
|
날짜에 안 들어가요 |
|
|
|
07:31.510 --> 07:38.230 |
|
흥미롭게도 라마라는 단어는 헤더가 기본이었어요 워드 시스템과 엔드 |
|
|
|
07:38.260 --> 07:42.730 |
|
헤더가 사용자와 엔드 헤더로 이어졌죠 |
|
|
|
07:42.730 --> 07:51.310 |
|
파이 3의 경우 시스템을 위한 특별한 태그와 사용자를 위한 특별한 태그 보조를 위한 특별한 |
|
|
|
07:51.310 --> 07:52.720 |
|
태그가 있어요 |
|
|
|
07:52.720 --> 07:55.870 |
|
접근 방식이 완전히 달라요 |
|
|
|
07:56.110 --> 08:02.020 |
|
흥미로운 점은 두 토큰라이저, 두 모델이 프롬프트를 get으로 보내는 방법에 |
|
|
|
08:02.020 --> 08:04.240 |
|
다른 접근법을 취한다는 거죠 |
|
|
|
08:04.240 --> 08:07.870 |
|
만약 잘못된 토큰라이저를 잘못된 모델로 사용한다면 가비지가 |
|
|
|
08:07.870 --> 08:12.940 |
|
된다는 것을 아셔야 합니다. 왜냐하면 토큰이 다르고 구조가 다르다면 llama3에는 |
|
|
|
08:12.940 --> 08:15.430 |
|
의미가 없기 때문이죠. |
|
|
|
08:16.120 --> 08:18.850 |
|
이제 퀸 2호도 똑같이 해 보죠 |
|
|
|
08:18.880 --> 08:23.020 |
|
라마의 원조 버전을 볼 거예요 |
|
|
|
08:23.020 --> 08:26.870 |
|
파이3 버전을 보여드리고 두 가지 버전을 보여드릴게요 |
|
|
|
08:27.050 --> 08:28.460 |
|
저기 오네요 |
|
|
|
08:29.120 --> 08:35.690 |
|
보시다시피 토큰라이저 세 개는 완전히 다른 결과를 볼 수 있죠 |
|
|
|
08:35.750 --> 08:38.720 |
|
하이라이트 한 번 더 할게요 |
|
|
|
08:38.720 --> 08:41.810 |
|
모델에 맞는 토큰라이저를 골라야 해요 |
|
|
|
08:43.370 --> 08:49.430 |
|
채팅 템플릿을 적용해 보죠 같은 메시지를 전달하는 채팅 템플릿이 |
|
|
|
08:49.430 --> 08:51.170 |
|
또 있어요 |
|
|
|
08:51.170 --> 08:52.400 |
|
곧 알게 되겠죠 |
|
|
|
08:52.400 --> 08:56.330 |
|
다섯, 셋, 퀸, 둘 이렇게 나란히요 |
|
|
|
08:56.330 --> 08:57.350 |
|
어떻게 생겼는지 보죠 |
|
|
|
08:57.380 --> 08:59.000 |
|
라마 사진은 이미 봤어요 |
|
|
|
08:59.000 --> 09:01.010 |
|
53편은 이미 봤어요 |
|
|
|
09:01.010 --> 09:03.560 |
|
그리고 이건 퀸의 두 번째예요 |
|
|
|
09:03.560 --> 09:06.650 |
|
보시면 알겠지만 그 중간쯤에 있어요 |
|
|
|
09:06.680 --> 09:08.840 |
|
비트도 라마랑 비슷해요 |
|
|
|
09:08.840 --> 09:14.030 |
|
시작과 끝이라는 시스템도 있고요 |
|
|
|
09:14.210 --> 09:16.850 |
|
그 다음은 사용자, 그 다음은 조수죠 |
|
|
|
09:16.850 --> 09:19.250 |
|
그 둘 사이의 어디쯤이죠 |
|
|
|
09:19.250 --> 09:23.870 |
|
그 어정쩡한 단어가 없어요 |
|
|
|
09:23.870 --> 09:26.000 |
|
헤더 스페셜 태그가 없어요 |
|
|
|
09:26.000 --> 09:28.440 |
|
이런 식으로 접근해요 |
|
|
|
09:28.440 --> 09:36.810 |
|
흥미로운 제3의 접근법이죠 또 다른 변종으로 특별한 토큰을 사용해요 |
|
|
|
09:37.740 --> 09:38.370 |
|
좋아요 |
|
|
|
09:38.370 --> 09:41.580 |
|
마지막으로 스타 코더 2를 보여드릴게요 |
|
|
|
09:41.610 --> 09:44.520 |
|
코드 생성 모듈이에요 |
|
|
|
09:44.520 --> 09:46.440 |
|
토큰라이저를 가져갈 거예요 |
|
|
|
09:46.440 --> 09:49.470 |
|
이 코드를 저기에 Put 할게요 |
|
|
|
09:49.500 --> 09:54.570 |
|
안녕 세계, 안녕 세계 변수를 선택하는 거죠 |
|
|
|
09:54.570 --> 09:55.980 |
|
그러면 hello를 출력하죠 |
|
|
|
09:55.980 --> 09:57.090 |
|
그리고 그 사람도요 |
|
|
|
09:57.090 --> 10:02.220 |
|
그런 다음 같은 인코드를 사용해 토큰으로 바꾸죠 |
|
|
|
10:02.220 --> 10:09.000 |
|
이제 해야 할 일은 각각의 토큰을 프린트하는 것입니다. 그리고 무엇이 get이 되었는지, 어떤 텍스트를 |
|
|
|
10:09.030 --> 10:11.730 |
|
나타내는지 매핑하는 것이죠. |
|
|
|
10:11.730 --> 10:18.840 |
|
여기 보시면 처음에 뭔가 있었어요 데프가 토큰 하나에 들어갔고 |
|
|
|
10:18.840 --> 10:25.110 |
|
hello_ world와 Person이 나왔죠 |
|
|
|
10:25.110 --> 10:33.210 |
|
여기 이건 탭을 반영할 겁니다 그런 다음 hello, 사람 괄호 닫기를 인쇄하죠 |
|
|
|
10:33.210 --> 10:42.660 |
|
대충 감이 오실 겁니다 스타 코더 2 토큰라이저는 토큰라이저로 영어보다는 토큰라이저 |
|
|
|
10:42.660 --> 10:46.140 |
|
코드를 중심으로 디자인됐죠 |
|
|
|
10:46.500 --> 10:48.120 |
|
실험할 수 있는 게 있어요 |
|
|
|
10:48.150 --> 10:54.060 |
|
먼저, 다양한 토큰라이저를 사용해보고 텍스트에서 토큰으로의 매핑을 탐색해보세요 |
|
|
|
10:54.180 --> 10:55.590 |
|
어떤 단어인지 찾아봐요 |
|
|
|
10:55.590 --> 11:02.040 |
|
라마 안에 토큰이 하나 있는 가장 희귀한 단어를 찾아보세요 |
|
|
|
11:02.040 --> 11:06.360 |
|
토큰이거나 가장 긴 단어였을 거예요 |
|
|
|
11:06.360 --> 11:09.720 |
|
실험도 좀 하고 여러분을 만족시켜 드릴게요 |
|
|
|
11:10.170 --> 11:15.210 |
|
꽤 복잡한 코드를 가지고 있다면 이 스타 코더의 토큰라이저 토큰화가 |
|
|
|
11:15.240 --> 11:22.260 |
|
더 효율적으로 이루어질 것입니다 토큰라이저의 영어 버전보다 더 효율적이죠 |
|
|
|
11:22.650 --> 11:30.570 |
|
그때쯤이면 여러분은 오픈 소스 토큰라이저의 전문가가 되어 다음 단계인 모델에 |
|
|
|
11:30.570 --> 11:33.180 |
|
도전할 준비가 될 거예요 |
|
|
|
11:33.180 --> 11:35.160 |
|
먼저 슬라이드로 돌아가죠
|
|
|