공개된 GPT-2 가중치
남이 훈련한 숫자를 내 모델에 넣을 수 있을까요?
왜 필요한가
우리 모델이 읽은 글은 소설 한 편입니다
말을 제대로 배우려면 훨씬 많은 글과 큰 비용이 필요합니다. 오픈AI는 GPT-2를 그렇게 훈련한 숫자를 공개해 두었습니다.
모델 안의 숫자를 가중치라고 부릅니다. 이런 모델을 처음부터 훈련하려면 수만에서 수십만 달러가 듭니다. 네모의 개수는 예시입니다.
조건
설계가 같아야 숫자가 들어맞습니다
우리는 6강부터 GPT-2와 같은 설계로 만들었습니다. 두 군데만 고칩니다. 가볍게 훈련하려고 줄였던 문맥 길이를 1,024로 되돌리고, 오픈AI의 모델에 들어 있는 편향을 켭니다.
내려받으면
숫자 묶음 다섯 가지가 들어 있습니다
토큰 임베딩 표는 토큰 50,257개마다 숫자 768개를 적어 둔 표입니다. 우리 모델의 어휘 크기, 임베딩 차원과 똑같습니다.
트랜스포머 블록과 층 정규화는 6~7강에서 만든 모델의 부품 이름입니다. g는 층 정규화가 곱하는 수, b는 더하는 수입니다.
옮겨 넣기
이름표가 달라서 짝을 맞춰 넣습니다
오픈AI와 우리는 같은 부품에 다른 이름을 붙였습니다. 어느 것이 어느 것인지 하나씩 짝지어 숫자를 옮깁니다.
출력 층에 넣을 숫자는 파일에 따로 없습니다. 원래 GPT-2는 표 하나를 입구와 출구에 같이 쓰므로(7강 5편), 토큰 임베딩 표(wte)를 출력 층에도 똑같이 넣습니다.
attn은 어텐션, mlp는 피드 포워드, ln은 층 정규화를 줄인 이름입니다. 이 세 가지는 트랜스포머 블록 12개에 하나씩 들어 있습니다.
안전장치
표의 크기가 다르면 멈춥니다
넣기 전에 줄 수와 칸 수를 견줍니다. 문맥 길이를 256인 채로 두었다면 위치 임베딩 표가 맞지 않아 여기서 멈춥니다.
짝을 잘못 지었을 때 조용히 틀린 숫자가 들어가는 일을 막아 줍니다.
손질 한 가지
한 덩어리로 온 표는 셋으로 잘라 넣습니다
오픈AI는 쿼리, 키, 값을 만드는 표 세 장을 옆으로 이어 붙여 저장했습니다. 768칸씩 셋으로 잘라 제자리에 넣습니다.
쿼리, 키, 값은 4강에서 본 어텐션의 세 가지 역할입니다. 2,304는 768의 세 배입니다.
다음 편