구글 콜랩에 왔습니다 모델들과 즐길 준비가 됐죠
먼저 Pip 설치와 수입 작업을 할 거예요
이건 좀 더 오래 걸릴 거예요 이걸 녹음하기 전에 이미 비트를 써서
실행했거든요 좀 더 빠르게요
피프를 설치하는 데 30-1분이 걸릴 거예요
피프 설치가 끝나면 얼굴 포옹으로 로그인해요
이제 익숙해진 것 같네요
왼쪽에 비밀이 담긴 토큰이 있으면 좋겠네요
이제 상수를 설정하겠습니다 포옹 페이스 허브에서 함께 플레이할 모델들의 이름에
대해서요
늘 그렇듯 모델명 또는 모델 회수 회사명이죠
3번과 피 2번과 라마와 놀 거예요
연습 문제를 낼 테니 콴토와 함께 반복하세요 알리바바 클라우드의 위대한 LLM이죠
미스트랄도 여기 있어요
이건 너무 큰 모델이 될 수도 있어요 큰 GPU에 돈을 쏟아붓지
않는다면요
그럴 경우 H깅페이스 허브에 가서 80억 매개 변수가 넘는 모델을 찾아서
그걸 대신 사용하세요
마음에 드는 걸 고르거나 아니면 지금 인기가 있거나 잘 팔리는 걸 골라서 어떻게 해석할지
보세요
하지만 적어도 5개는 완성해야 해요
이제 상수를 설정하고 메시지 목록을 만들게요 이 시점에서 우리가 잘 아는 형식으로요
시스템 메시지와 사용자 메시지죠 목록의 2개 독점으로요
더 설명할 필요 없어요
지난번에 라마 3에 동의해야 했던 거 기억하죠? 한 가지 서비스 조건은 모델 페이지에서
동의를 얻는 거예요
아직 안 하셨다면 llama 3에 액세스할 수 있도록 하세요 모델은 하나예요
이런 건 처음 봐요
제가 언급했던 퀀타이즈라는 것에 대해 잠깐 얘기할게요 비트
퀀타이즈는 놀라운 개념이에요
이 모델의 경우 메모리에 로드하고 싶은데 그렇게 할 때
모델을 구성하는 무게의 정밀도를 줄이는 거죠
이 무게추들은 보통 32비트 플로트예요
32 비트 부양점 숫자는 이 심층 신경망의 무게예요
덜 채워서 가져오면 어떨까요?
32비트는 4바이트로 계산할 수 있고요
그리고 숫자를 더 적어 넣는 게 좋을 것 같아요 less 메모리에요
정밀도를 줄이는 이 과정을 퀀타이즈라고 합니다 모델에 거친 숫자가 더 많이
보이게 하는 거죠
그게 우리가 할 일이죠
이 이야기를 처음 들었을 때 정말 놀랐던 기억이 납니다 처음에는
32 비트 숫자를 8 비트 숫자로 대체하면 정확도가 훨씬 떨어진다고들 했거든요
그 비트는 놀랍게도 정확도는 조금 떨어지지만 생각만큼 떨어지진
않아요
줄어들지도 않고 4배로 악화되지도 않아요
좀 더 나빠지지만 견딜 만해요 메모리가 더 많다면 비트를 걸 만하죠
그 말을 듣고 놀랐지만 그보다 더 많은 걸 할 수 있다는 걸 알고 더 놀랐어요
8비트가 아니라 4비트로 졸일 수 있어요
0.5 바이트예요 세어본다면요
32비트 숫자를 4비트로 줄일 수 있어요
다시 말하지만 정확도는 손상됐지만 기대만큼 크진 않아요
완전히 다를 줄은 몰랐어요
견딜 만해요
훨씬 더 큰 모델이 메모리에 맞아 더 빨리 로드되고 더 빨리 달리게 해주죠
사람들이 많이 하는 거죠
강력한 도구예요 특히 훈련을 받거나 이런 모델로 많은 작업을 해야 할 때는요 get
it get it
퀀타이즈는 구세주예요
기억하실지 모르겠지만 몇 주 후에 큐 로라라는 기술을 배울
거예요 효율적으로 미세 조정하는 방법이죠
Q의 로라, Q의 로라는 퀀타이즈를 뜻하죠
그래서 이따금 다시 보게 될 거예요
그동안 비트 앤 바이트라는 라이브러리를 사용합니다 포옹하는 트랜스포머 라이브러리와 밀접한
관련이 있죠
훌륭한 라이브러리예요 새 bits와 바이트 구성 객체를 만들 수 있죠 우리가 원하는
수량화가 뭔지 곧 설명드릴게요
로드 인 for 비트 = true라고 하죠
50센트까지 쭉 내릴 거예요
로드 인 8 비트 = true도 할 수 있어요
대신 8bit를 하고 싶다면 둘 다 해서 차이를 확인할
수 있죠
이것도 정말 놀랍죠
근데 4비트 퀀트 = True도 할 수 있어요
한 번도 아니고 두 번씩 모든 무게를 수량화한다는 뜻이죠
메모리를 좀 더 저장하려고요 비트
이걸 다시 한다고 해서 결과의 정확성에 큰 영향을 주진 않아요
좋은 거래고 사람들이 그렇게 해요
이 데이터 형식 A와 B 16을 이용해 계산을 한다는 뜻입니다
그러면 성능이 향상되죠
이것도 꽤 흔한 일이에요
여기서 중요한 건 숫자를 4비트로 줄였을 때 4비트 숫자를 어떻게
처리하고 압축하는지에 관한 거죠
이 NF4는 4비트로 숫자를 나타내요
평범화됐다는 뜻이죠
이런 숫자들을 고려하는 것과 관련 있다는 걸 압니다 일반적인
분포를 따르려면 4비트로 압축할 때 더 정확할 수 있죠
이 둘은 less로 보여요
큰 변화를 기대하진 않아요
둘은 운명이에요
운명인 거죠
설정이 좋네요
이건 좀 달라요
이건 메모리 면에서 큰 차이를 만들어요
결과물 면에서는 나쁘지 않아요
이 모든 대화로 우린 이제 퀀트 구성, 비트 및 바이트 구성을 만들었어요
이건 우리에게 익숙한 거예요
라마에게 토큰을 만들어 주려고요
이 대사는 처음 언급하는 거예요
패드 토큰이라는 것도 있는데요 신경망에 추가할 것이 있을 때 프롬프트를
채우는 데 쓰이는 토큰이죠
일반적인 관행으로 패드 토큰을 문장 끝, 프롬프트 토큰의 마지막과
동일하게 설정하는 것이죠
Get을 안 하면 경고를 받아요
Get you 경고는 중요하지 않아요
효과가 없는 것 같아요
경고를 받고 싶지 않다면 get을 선택하세요.
많은 코드에서 사람들이 표준으로 사용하는 것을 볼 수 있어요.
네
이제 토큰라이저를 사용할 거예요
채팅 템플릿 적용 함수라고 부를게요
그건 우리 메시지를 사전 목록으로 받아들여 토큰으로 변환하는 거죠
그걸 GPU 위에 적용했어요
get을 실행하면 토큰izer가 작동할 거예요
다음으로 할 일은 모델을 로드하는 거예요
이 선은 뭐죠?
우선 이 대사와 아주 유사해요
여기서 토큰라이저를 만들었는데 오토 토큰라이저. FROMpretrep이라고 입력했어요
미리 배운 자동 LLM을 위한 모델을 생성하죠
LLM을 생성하는 일반 클래스죠
인과적 LLM은 자가적 공격 LLM과 같아요
LLM은 과거의 토큰을 가지고 미래의 토큰을 예측하는 것이죠
기본적으로 우리가 얘기한 모든 llm은 그런 종류의 LLM이었죠
과정 후반부에 다른 종류의 LLM을 살펴보겠습니다 때때로 사용되는 거죠
하지만 우리가 말하는 이런 생성적인 인공지능 사용 사례에선 인과적 llms 즉
자동적 위반 llms를 연구할 거예요
미리 훈련된 걸 이용해서 만드는 거죠
토큰이처럼 모델 이름을 전달하는 거죠
GPU가 있다면 그걸 사용하고 싶다고 하죠
그게 Device Map 오토의 역할이죠
그런 다음 퀀트화 구성에서 넘깁니다 방금 설정한 퀀트 구성요 그게 모델을 구축하는 방법이죠
모델은 실제 코드입니다 즉, 소프트웨어로서의 큰 언어 모델로서 파이썬 코드로서 우리가
실행할 것이죠
그 아래는 피토치예요
파이토치 층으로 구성돼 있어요 신경망 층으로 구성되어 있어서 입력값에 입력하면 출력이
나오죠
진짜 물건이네요
이걸 실행하면 시간이 더 걸릴 거예요 방금 실행했으니까요 완전히 새로운
상자처럼 많은 작업을 할 필요가 없었죠
이걸 실행하면 실제로 발생하는 일은 다운로드예요
얼굴을 안는 것과 연결되죠
Hub에서 모델 무게를 다운로드해 Google Colab 인스턴스의
디스크에 로컬로 놓습니다 이 박스의 데스크에 있는 임시 파일 캐시에요 나중에 이 박스와 연결을
끊으면 삭제됩니다 이 모델은 이제 일시적으로 디스크의 박스에 저장됩니다 메모리에
로드되기도 해서 우리가 사용할 수 있게 되죠
모델에게 물어볼 수 있어요 get 메모리풋프린트를 호출해 메모리를 얼마나 사용하는지요
뭐라고 하는지 보죠
이 모델의 메모리 공간은 약 5개라고 나오네요 5기가바요
이 박스에 대한 리소스를 보면 약 5개를 사용하는 걸 보실 수 있어요 상자는 5GB로 하고요
이미 실행하고 있었기 때문에 과거에도 흔들리고 있어요
하지만 자세히 보면 이 아래부터 시작해서 5.5cm까지
올라갈 거예요
디스크에서 많은 공간을 사용하고 있습니다 디스크 캐시에 로드되어 있기 때문이죠
네
황금 시간대 준비가 거의 다 됐어요
먼저 모델 자체를 살펴보죠
모델을 프린트함으로써 그렇게 하죠
모델을 프린트하면 이 모델 객체에 의해 표현되는 실제 심층 신경망에 대한 설명이
나와요
여기 보이는 게 그거예요
딥 신경망 층을 나타내는 코드 층이에요
이건 전부 PyTorch 클래스를 보여줍니다 모델에 의해 참조되는
설정이죠
다시 말씀드리지만 실습 시간이라 가끔 이론만 살짝 다룰 거예요
하지만 깊은 신경망과 그 층의 내장에 대한 지식 수준에 따라 살펴볼
가치가 있어요
익숙한 내용도 있을 거예요
토큰을 심는 레이어에서 시작한다는 게 익숙하실 겁니다 토큰을 신경망에
심는 방법이죠
이걸 상상해 보세요 단어의 입체성을 나타내는
거예요
그리고 모듈이 여러 개 있는 게 보이시죠 신경망의 각 레이어예요
예상했던 대로 주의 깊게 보는 층이 있어요 특히 주의 깊게 보는 게 가장 중요하잖아요
종이에 쓰여 있듯이 주의만 기울이면 돼요 이런 주의 층이 트랜스포머를
트랜스포머로 만드는 핵심이죠
그리고 다중 페르셉트론 층이 여기 있어요
활성화 함수가 있어요
이 이론에 더 익숙한 사람들은 이걸 보길 기대하겠죠
이 llama 3이 사용하는 활성화 함수죠 1번 모델은 리루 활성화 함수로
구형 아니 선형 유닛으로 여기 문서화에 나와 있죠
스위시 함수라고도 알려져 있죠
기본적으로 물적 X의 X 곱하기 X죠
활성화 함수는 이렇게 생겼어요
심층 신경망 이론에 관심이 있다면 이게 뭔지 정확히 알 거예요
아니라면 걱정하지 마세요
여기서 무슨 일이 일어나는지 전반적으로 파악하세요 이 모델이나 나중에 다른 걸 연구할
때 더 자세히 살펴볼 수 있는 거죠 Get it
그 끝에는 표준 층이 있고 그 끝에는 직선
층이 있어요
이건 특별히 살펴볼 가치가 있어요 피터치 신경망에 대한 지식이
있다면요
나중에 다른 모델도 똑같이 할 수 있어요
모델 출력을 보세요
모델을 보고 인쇄해서 어떻게 생겼는지 보고 라마3와 비교해요
다음 비디오에선 쉬도록 하죠 다음 비디오에선 이걸 실행하고 다른 모델도
실행할 거예요
그러니 어디 가지 마세요
이따 봐요