루나에게 말 걸기: 같은 시작 문장에 왜 매번 다른 이야기가 나올까

혼동하기 쉬운 점과 요약

토론 1. 되풀이가 적을수록 다양하고 좋은 글인가

샘플 20개로 잰 4-토큰 되풀이 비율은 τ = 0.7 이 0.065, τ = 1.5 가 0.001 이었다. 되풀이가 65분의 1로 줄었으니 τ = 1.5 의 글이 더 다양하고 좋은 글이라고 말해도 되는가?

김민준 M01
김민준

숫자로만 보면 1.5 가 제일 다양해요. 같은 네 토큰 묶음이 거의 다시 안 나오니까요.

선생님 T01
선생님

같은 표의 평균 놀람 열도 볼까요?

김민준 M06
김민준

5.851 이요. 0.7 은 0.971 이고… 모델 자신이 「여기에 이게 올 리 없다」고 본 토큰을 여섯 배 넘게 자주 골랐다는 거네요. 샘플도 「Min foc math laughed only few hours」였고요.

이서연 S01
이서연

그럼 되풀이가 없는 이유가 다양해서가 아니라 말이 안 되는 조합이라서일 수도 있겠다. 엉터리 네 토큰 묶음은 두 번 나오기가 더 어려우니까. 되풀이 비율 하나로는 다양한 글과 엉망인 글을 구별 못 해.

선생님 T13
선생님

그래서 숫자 둘을 같이 봐요. 되풀이가 적으면서 평균 놀람이 크게 오르지 않는 설정을 찾는 거죠. top-p = 0.9 는 0.041 과 1.268 이었어요.

김민준 M04
김민준

그래도 1.268 이 적당한지는 숫자만으로 못 정하겠어요. 그 설정에서 탑 쌓는 아이한테 양파를 줬잖아요.

선생님 T01
선생님

맞아요. 두 숫자는 나쁜 설정을 걸러 내는 데까지 쓰고, 마지막은 샘플을 읽어서 정해요.

혼동하기 쉬운 점

혼동하기 쉬운 생각 나온 문제 바로잡는 법
그리디 선택이 확률이 가장 큰 글을 낸다고 봄 1 스텝마다 1등을 이어 붙인 글(0.24)보다 첫 토큰에서 버린 글(0.36)이 더 그럴듯할 수 있다. 그리디 선택은 한 스텝 앞만 본다
시작 문장을 바꾸면 그리디 선택의 글도 끝까지 달라진다고 봄 2 500 토큰에서는 다섯 시작 문장 모두 이야기가 끝난 뒤 「Lily 와 다친 새」로 모였다. 같은 문맥이면 그리디 선택은 같은 토큰을 고른다
온도는 1등의 확률만 바꾼다고 봄 3, 4 온도는 확률을 1/τ 제곱해 다시 나눈다. 순서는 그대로이고, τ = 1.5 에서 girl 이 0.15 로 준 것은 꼬리가 분모에 더해졌기 때문이다
top-k 는 어느 자리에서나 비슷한 양을 남긴다고 봄 5 top-k = 10 이 남기는 확률 합은 「Once upon a」 뒤 1.0000, 「Lily found a」 뒤 0.5306 이다. top-p = 0.9 는 1개에서 166개까지 자리마다 바뀐다
top-p 를 걸면 높은 온도도 안전하다고 봄 6 우리 코드는 온도를 먼저 걸어 표를 편 뒤 top-p 로 자른다. τ = 1.5 + top-p = 0.9 의 평균 놀람은 4.630 이었다
KV 캐시는 공짜라고 봄 7 우리 GPT 의 캐시는 토큰 하나당 32,768 바이트, 500 토큰 배치 64 면 1 GB 를 넘는다
KV 캐시를 쓰면 늘 크게 빨라진다고 봄 8 GPU 배치 1 에서는 1.2배였다. 스텝마다 드는 시간의 대부분이 토큰 수와 상관없는 고정 비용이었다
되풀이가 적을수록 좋은 글이라고 봄 토론 1 τ = 1.5 는 되풀이 0.001 이지만 평균 놀람 5.851 로 문장이 무너졌다. 되풀이 비율과 평균 놀람을 같이 보고 샘플을 읽는다

요약

모델은 다음 토큰의 확률표를 내놓을 뿐이고, 표에서 토큰 하나를 고르는 규칙은 생성할 때 우리가 정한다. 늘 1등을 고르는 그리디 선택은 같은 시작 문장에서 늘 같은 글을 쓰고, 우리 모델에서는 이야기가 끝난 뒤 어느 시작 문장에서든 「Lily 와 다친 새」 이야기로 빠졌다. 표대로 뽑되 온도 τ 로 확률을 1/τ 제곱해 다시 나누면 표가 오므라들거나 펴진다. 온도 0.7 은 매끄럽지만 같은 말을 자주 다시 살펴봤고, 1.0 은 다양했지만 이름이 흔들렸으며, 1.5 는 꼬리의 토큰이 뽑혀 문장이 무너졌다(평균 놀람 5.851).

꼬리를 자르는 방법으로 확률이 큰 k 개만 남기는 top-k(팬 팀, 2018)와 확률 합이 p 에 이를 때까지만 남기는 top-p(홀츠먼 팀, 2019)가 있다. top-p 는 표의 형태에 따라 후보 수를 1개에서 166개까지 바꾸었고, top-p = 0.9 의 평균 놀람은 1.268 이었다. 이어 쓰기마다 앞 토큰의 키와 값을 다시 계산하지 않도록 적어 두는 KV 캐시는 RTX 4090 배치 64 에서 8.0배, CPU 에서 3.6배 빨랐지만 GPU 배치 1 에서는 1.2배에 그쳤다.

막힌 곳

루나는 이제 같은 시작 문장에서도 매번 다른 동화를 쓰지만, 이야기 첫 문장에서 들은 이름조차 몇 문장 뒤에는 Minjune, Minjret 으로 바꿔 쓴다. 그런데 그리디 선택으로 쓰게 하면 「Seoyeon」을 끝까지 맞게 쓸 때도 있다. 모델 안의 무엇이 앞에 나온 토큰을 찾아 다시 쓰는 걸까? 그 계산은 확률표를 어떻게 뽑느냐와는 상관없이 표를 만드는 모델 안에서 일어나므로, 답을 찾으려면 이번에는 모델을 열어 봐야 한다.

루나 설정서 점검

온도 0.7 과 top-p 를 쓰자 루나는 같은 시작 문장에서도 매번 다른 동화를 썼다. 서연이 장난삼아 시작 문장 하나를 더 넣었다.

### Luna was a robot who lived on a star station.  (온도 0.8, top-p 0.95, 씨앗 2026)
[3] Luna was a robot who lived on a star station. He was very fast and strong. He liked to race with his friends and play with them. … "Hi, I am Luna. I am a robot. I can race. Watch me!" the robot said. …
김민준 M11
김민준

「Hi, I am Luna.」 자기소개를 했어. 밝고, 빠르고. 다섯째 줄은 이걸로 채운 거 아냐? KV 캐시로 말도 여덟 배 빨라졌고.

이서연 S06
이서연

말이 빠르다는 게 토큰을 빨리 뽑는다는 뜻이었어? 그리고 여기서 루나는 「He」야. 달리기 시합하는 남자 로봇.

김민준 M04
김민준

…그건 동화를 너무 많이 읽어서 그래.

설정서의 줄 이번에 남은 것
1. 말이 된다 온도 0.7~1.0 과 top-p 0.9 로 매번 다른 동화를 쓴다 이야기의 앞뒤가 맞지 않는다(탑을 쌓는데 양파)
2. 앞에서 한 말을 기억한다 아직 앞에 나온 이름을 Minjune, Minjret, Serelon 으로 바꿔 쓴다
5. 밝고 말이 빠르다 토큰을 쓰는 속도는 배치 64 에서 8.0배 「말이 빠르다」는 그런 뜻이 아니라는 서연의 반대

서연은 둘째 줄에 밑줄을 그었다.