들여다보기 1: 칠판과 헤드

혼동하기 쉬운 점과 요약

토론 1. 유도 점수가 높은 헤드가 베끼는 일을 다 맡는가

동화를 쓰는 8층 GPT 에서 유도 점수가 가장 높은 층 6 헤드 8(0.12)을 지우면 무작위 반복 글의 두 번째 절반 손실이 0.710 오른다. 그런데 유도 점수가 0.01 인 층 3 헤드 2 를 지워도 0.668 오른다. 유도 점수가 높은 헤드를 찾으면 베끼는 일을 하는 헤드를 다 찾은 것인가?

이서연 S01
이서연

유도 점수가 높으면 유도 헤드고, 유도 헤드가 베끼는 거니까… 층 6 헤드 8 을 찾았으면 된 거 아니에요?

선생님 T01
선생님

층 3 헤드 2 의 두 숫자를 나란히 놓아 볼까요?

이서연 S06
이서연

유도 점수 0.01 인데 지우면 0.668. 층 6 헤드 8 이랑 거의 같아요. 유도 점수로는 안 보이는데 빠지면 베끼기가 망가지는 헤드가 있다는 거네요.

김민준 M01
김민준

웹 글 모델에도 있었어. 층 1 헤드 1 은 유도 점수가 0.000 인데, 지우면 손실이 7.15 나 올라서 열여섯 개 중에 제일 컸잖아. 앞 토큰 헤드라서.

이서연 S07
이서연

유도 점수는 「두 번째 절반에서 49 칸 앞을 보는가」만 재니까, 베낄 위치를 직접 보는 헤드만 찾는구나. 그 헤드가 읽을 것을 미리 적어 주는 헤드는 다른 데를 보니까 점수가 0 이고.

선생님 T01
선생님

그래요. 어텐션 패턴은 헤드가 어디를 보는지를 보여 주고, 지우기 실험은 그 헤드가 빠지면 무엇이 망가지는지를 보여 줘요. 둘은 다른 증거예요. 층 3 헤드 2 가 실제로 무엇을 하는지는 우리가 재 보지 않았으니, 「베끼기에 필요하지만 유도 점수로는 안 보이는 헤드」라는 데까지만 말할 수 있어요.

혼동하기 쉬운 점

혼동하기 쉬운 생각 나온 문제 바로잡는 법
층이 없는 모델도 아무 바이그램이나 배운다고 봄 1 입출력 임베딩을 공유하면 「a 다음 b」와 「b 다음 a」의 로짓이 같아진다. 「Once upon」과 「upon Once」를 구별하지 못한다
뒤 층이 앞 층의 결과를 덮어쓴다고 봄 2 층은 잔차 스트림에 더할 뿐이다. 어텐션 가중치를 고정하면 2층 모델의 출력은 81개 항의 합으로 나뉜다
앞 토큰을 베끼면 유도 헤드가 있다고 봄 3 1층 모델도 「␣S 다음 e」를 0.1517 로 베낀다(건너뛴 세 토큰). 「e 다음 oy」(0.0001)처럼 앞 위치의 앞 토큰을 알아야 하는 베끼기는 못 한다
헤드 하나가 잔차 스트림 전체를 본다고 봄 4 W_Qᵀ W_K 는 256 × 256 이지만 랭크가 32 를 넘지 않는다
무작위 토큰의 손실은 ln V 보다 클 수 없다고 봄 5 학습한 모델은 동화에 흔한 토큰에 큰 확률을 주므로, 무작위 토큰의 처음 절반 손실이 13.075 로 ln 4096 = 8.318 보다 크다
층이 둘이면 유도 헤드가 저절로 생긴다고 봄 3, 6 타이니스토리즈 2층 모델은 4억 9,150만 토큰 뒤에도 최고 유도 점수 0.049 였다. 같은 모델이 웹 글에서는 3,360만~5,570만 토큰 사이에 0.5 를 넘었다
하나씩 지운 손해를 더하면 함께 지운 손해라고 봄 7 남은 헤드가 일부를 메워 줄 수 있다. 짝지어 지운 실험이 따로 필요하다
손실 곡선에 혹이 없으면 상전이도 없다고 봄 8 우리 곡선은 꺾이기만 했지만 유도 점수와 반복 글 손실은 같은 구간에서 함께 뛰었다
유도 점수가 높은 헤드가 베끼는 일을 다 맡는다고 봄 토론 1 유도 점수 0.01 인 헤드도 지우면 0.668 나빠졌다. 어텐션 패턴과 지우기 실험은 다른 증거다

요약

트랜스포머의 층들은 위치마다 폭 d 의 벡터 한 줄을 읽고, 계산한 것을 지우지 않고 더해 쓴다. 엘하지와 동료들(2021)은 이 벡터 줄을 모든 층이 함께 쓰는 통로, 잔차 스트림으로 보고, 마지막 출력을 임베딩과 헤드 출력들의 합으로 나눠 읽었다. 어텐션 헤드 하나는 어느 위치를 볼지 정하는 QK 회로(W_Qᵀ W_K)와 본 위치에서 무엇을 옮길지 정하는 OV 회로(W_O W_V)로 나뉜다. 층이 하나뿐이면 헤드는 지금 토큰과 앞 토큰만으로 「A … B 다음에는 C」를 배울 수 있어서, 우리 1층 모델은 「Seoyeon」의 「e」는 베꼈지만 「oy」는 베끼지 못했다.

앞 위치마다 「내 앞 토큰」을 적어 두는 앞 토큰 헤드와, 그것을 읽어 지금 토큰 다음에 왔던 토큰을 베끼는 유도 헤드가 합성되면 앞에 나온 것을 이어 쓸 수 있다(올슨 팀, 2022). 타이니스토리즈로 학습한 어텐션 전용 2층 모델에는 4억 9,150만 토큰 뒤에도 유도 헤드가 생기지 않았고, 동화를 쓰는 8층 GPT 에는 이름 하나를 베낄 만큼만 약하게 있었다. 같은 2층 모델에 웹 글(ClimbMix)을 읽히자 3,360만~5,570만 토큰 사이에 유도 헤드가 갑자기 생겼고(유도 점수 0.546), 지우기 실험이 앞 토큰 헤드(+7.15)와 유도 헤드(+4.37)의 합성을 확인했다. 손실 곡선은 원 논문처럼 솟지 않고 꺾였다.

막힌 곳

유도 헤드를 찾은 것은 헤드 열여섯 개짜리 실험용 모델이고, 동화를 쓰는 루나는 이름 하나를 겨우 베낀다. 동화에 베낄 일이 적어서라는 가설은 아직 시험하지 않았고, 웹 글을 읽은 루나 자신에게 유도 헤드가 언제, 어느 크기의 모델에서 생길지도 모른다. 루나 자신의 유도 헤드를 보려면 루나가 직접 웹 글을 읽어야 하는데, 오늘 쓴 웹 글은 원본의 0.06% 정도였다.

루나 설정서 점검

선생님 T01
선생님

오늘 찾은 걸 설정서에 대 볼까요?

이서연 S01
이서연

「앞에서 한 말을 기억한다」. 웹 글을 읽힌 2층 모델에는 앞을 베끼는 헤드가 생겼어요. 그런데 그건 루나가 아니라 헤드 열여섯 개짜리 실험용 모델이고, 동화를 쓰는 루나는 이름 하나를 겨우 베끼는 정도예요.

김민준 M01
김민준

루나를 웹 글로 학습시키면 되잖아. 유도 헤드도 생기고, 별 얘기도 배우고.

선생님 T01
선생님

오늘 쓴 웹 글이 ClimbMix 원본의 0.06% 정도가었어요. nanochat 이 GPT-2 급 모델을 학습한 공개 기록은 H100 여덟 장으로 1.65시간이었고요. 게이밍 GPU 한 장으로 그 규모를 하려면 얼마나 걸릴지, 민준 학생이 짐작해 볼래요?

김민준 M04
김민준

한 장이면… 여덟 장이 하던 일을 혼자 해야 하고, H100 보다 느리고… 노트북은 아예 말이 안 되고요.

설정서의 줄 1부에서 남은 것
1. 말이 된다 동화 수준으로는 된다(바이트당 비트 0.4253, 온도 0.7 과 top-p 로 매번 다른 이야기) 동화 밖의 말을 모른다
2. 앞에서 한 말을 기억한다 웹 글 2층 모델에서 유도 헤드를 찾았다(유도 점수 0.546, 지우기 실험으로 확인). 동화만 읽은 루나에게는 약하게만 있다 루나 자신이 웹 글을 읽어야 한다
3. 별과 우주를 안다 아직 웹 글
4~6 아직

서연이 표를 다 적고 고개를 들었을 때, 민준은 노트북 화면이 아니라 창밖을 보고 있었다. 한참 뒤에 민준이 입을 열었다.

김민준 M16
김민준

…우리 집에 GPU 좀 있는데.

이서연 S06
이서연

너희 집 「좀」은 단위가 다르잖아.

김민준 M01
김민준

제대로 연구해 보려고 사 두기만 한 거야. 아직 한 번도 안 켜 봤어.

이서연 S04
이서연

…그걸 왜 이제 말해.

선생님은 아무 말 없이 출석부를 덮었고, 서연은 설정서 둘째 줄 옆에 작게 「민준네 집」이라고 적었다.