아주 오래 전에 데이터 세트를 만들던 때를 기억하실 거예요
데이터를 허깅페이스에 업로드 했어요
그 시점부터, 우린 피클 파일도 제작한 이후로 그 시점부터 피클 파일의 데이터를
로드하고 있어요
하지만 구글 Colab에 있으니 H깅페이스 허브에서 데이터를
수집하는 게 가장 쉽죠 자신만의 모델을 만드는 이런 과정의 아주 전형적인 작업이에요
그럼 시작할게요
데이터셋을 로드합니다 얼굴 로드 데이터셋 메서드를 끌어안고 데이터셋 이름을 전달합니다.
그리고 그것을 기차와 테스트, 데이터셋 이름을 상수에 나눠 놓죠.
그 후에 첫 번째 훈련 데이터 포인트를 볼 수 있어요
텍스트와 가격이 있는 것 같아요
우리가 명시적으로 설정한 걸 기억하실 거예요
글이 우리의 프롬프트예요
가장 가까운 달러의 가격은 얼마일까요? 제품 설명과 가격은
달러 그다음은 가격을 가장 가까운 숫자로 반올림해 볼게요
그리고 위에도요
이건 얼마냐고 물어볼게요
최대한 많이요
이렇게 하는 이유는 비트를 좀 더 쉽게 만들기 위해서예요 80억 개의 변수가 있는
단일 모델이죠
개척 모델로 보낼 때 그걸 지정할 필요가 없었어요 센트에 대한 결정을 스스로
내릴 만큼 강력하니까요
하지만 이 경우에는 최대한 단순하게 만들고 싶어요
그리고 이건 항상 라마 3에서 토큰 하나로만 매핑되니까요 아주 쉽게 만들었어요 그냥
저기 있는 토큰 하나만 예측하면 되죠
그걸 잘 하는 방법을 배우려고 할 거예요
이 데이터 세트에는 실제 가격도 있어요
테스트 데이터를 보고 첫 번째 점을 보면 구조는 아주 비슷한데 한 가지
작은 차이가 있어요
그 차이가 뭔지 아세요?
물론 그러시겠죠
물론 이 시점에서 테스트 데이터에 제공된 가격은 없어요
텍스트는 텍스트가 될 거예요
이게 얼마 정도 해요?
이 텍스트를 전달해요
다음 토큰을 예측하는 게 우리 모델의 임무죠
다음 토큰이 나올 확률은 얼마나 될까요?
3이라는 숫자와 일치하는 토큰이 나올 확률이 높기를 바라야죠 74,000달러예요 실제
가격과 같네요
그게 이번 과제예요
이것은 하나의 토큰에 대응하기 때문에 다음 토큰을 예측하는 것이 매우 어렵습니다.
하나의 토큰이 비용을 나타내니까요. Get in get get it.
또 하나 언급할 점은 기억하실지 모르겠지만 이 텍스트가 정확히
179t less 토큰에 맞는지 확인하기 위해 우리가 좀 고생을 했었죠
그 덕분에 이제 알 수 있는 게 여기 연속적으로 최대 시퀀스 길이가 182이라고
나오네요
몇 가지 패를 더했어요
여기 있네요, 179개
하지만 저는 여분의 토큰을 몇 개 추가할 겁니다 토큰라이저는 문장 토큰의 시작 부분을
순서 시작 부분에 추가하고 문장 끝이나 패드 토큰을 추가할 수도
있기 때문이죠
실수로 가장 중요한 토큰의 가격을 오차로 처리하는 일은 없었으면 합니다
마지막에 나올 토큰이죠
약간의 여유만 있다면요 사실 훈련이 시작되기 전까진 중요하지 않아요 Get in get
데이터를 보고 있으니 지금 지적하고 싶었어요
자, 됐어요
미안해요, 너무 심했어요
방금 이 데이터를 봤어요
다음으로 할 일은 올바른 퀀타이즈 구성을 고르는 거죠
퀀트 포 비트 이상으로 상시 유지하기로 했어요
이 경우엔 true로 설정했죠
가서 확인해 보죠
됐어요
퀀트 포 비트가 트루로 설정됐어요
이제 다시 내려오면 for 비트 퀀타이즈를 선택할게요
8비트를 선택하면 어떻게 되는지 보여드릴게요
하지만 아주 작은 4비트 버전을 고를 거예요
그리고 토큰라이저와 모델을 로드하죠
이 방은 안 쓸 거예요 이미 썼으니까요
여기 메모리에 남아 있어요
두 번 실행하면 메모리가 부족할 거예요
여기서 토큰라이저를 로드할 거예요
비트 박스는 상용적인 내용으로 자주 보게 될 거예요
토큰라이저에 이렇게 알려 주는 거예요 시퀀스 끝에 패드를 넣어야 할 때는
그냥 문장 끝부분을 쓰면 된다고요
오른쪽에 이렇게 해야 해요
훈련할 때 흔히 하는 거예요
당장은 안 쓸 거예요
걱정 안 하셔도 돼요
하지만 어디서나 볼 수 있죠
아주 표준적인 셋업이죠 여기 이 라인처럼요 이것도 지금 당장 걱정하실 필요는 없어요
토큰이저를 만들어 llama 3을 로드하고 있어요 기본 모델 1개요
5를 다 쓰고 있어요 메모리가 6GB예요
저기 있네요, 55번 9개인 것 같아요 제가 아래에 추론을 했거든요
아주 날씬한 4인치 비트 모델이에요
이 함수는 여러분께 익숙할 겁니다 최근 프론티어 모델에서
가격 추출에 사용했거든요 텍스트를 추출하죠 어떤 텍스트든요 예측된 가격을 추출해요
가격을 추출하는 이런 걸 하면 가격은 $999 문자열로 이걸 넣어야겠죠
잘 안 될 것 같아요
가격은 달러 9999 어쩌고저쩌고죠
가격은 999예요
정말 싸요
됐어요
결과가 기대되네요
네
99999마리를 잡아낼 거예요
모델은 프롬프트에서 제공될 거라는 걸 알죠
9단계가 모두 포함돼야 해요
이 모델이 예측해요
이게 시험용 하네스에 사용할 함수예요
우리가 그걸 알려주는 함수죠
프롬프트를 하나 드리죠
비용은 얼마나 드는지 알고 싶어요
이건 추론 모드의 모델을 부르는 방법입니다 몇 주 전에 했던 것과 유사하죠
프롬프트를 가져다가 Tokenizer.ex코드를 이용해 암호화해요
이건 GPU 쪽으로 밀어내죠
이건 그냥... 별로 중요하지 않은 거예요
경고문을 인쇄하는 걸 막아주죠
그럼 아무 영향도 없군요
어, 그리고, 음 정확히 말하자면, 입력 토큰 영역에서 일어나는 일을 예측하지 못하게 합니다.
예측하지 않고, 이후에 일어날 일을 예측하고 싶어하죠.
어차피 그렇게 될 거예요
하지만 우리가 말하지 않았다면 경고가 나왔을 거예요
결과물을 위해 기본 모델 lemma 3을 호출하죠 1번요
그 위에 생성 메서드를 호출할 거예요
입력값을 통과시키죠
최대 새 토큰을 위한 거라고 하죠
훨씬 적은 숫자로 만들 수 있어요
토큰 하나만 있으면 돼요
4개까지 토큰을 생성하도록 할 것입니다 달러 기호를 또 출력할 수 있으니까요
방금 설치한 주의력 마스크를 통과시키면 경고가 안 뜨죠
이건 하나의 답만 원한다는 거죠
여러 가지 답이 나오면 안 돼요
그 답에 대한 답변은 그 답 하나를 취하면 다시 보내지죠
Tokenizer.Dcoode를 호출해 다시 문자열로 바꾸죠
그 문자열을 추출해요
좋아요
신나네요
우리 스스로 되새겨 보죠
0을 보면 첫 번째 테스트 항목이 여기 있네요
OEM 에어컨 압축기예요
실제 가격은 374달러예요
누가 알았겠어요
첫 번째 시도예요
Model이라고 입력하죠 예측요
0번째 테스트예요
프롬프트를 얻기 위해 get 텍스트를 호출할게요
그럼 준비되셨나요?
시작할게요
라마 3요 1번 기본 모델은 OEM AC 압축기와 수리 키트의
가격을 예측해 보려고 해요
예상 가격은 1,800달러인데 차이가 너무 커요
라마 3에 대한 나쁜 징조일 수도 있어요 기본 모델 1개면 돼요
첫 번째 예시는 운이 나빴을 뿐이지만 그건 다음 영상에서 밝혀질 거예요