캐시를 자르면 맨 앞을 남겨야 한다
2편은 캐시가 가중치보다 커진 채로 끝났다. n=1024 에서 캐시 3.00 MB 대
가중치 2.43 MB, 실제 규모로는 4.0 GB 였다. 문맥이 길어질수록 이 값은 계속
자란다.
가장 단순한 해법은 버리는 것이다. 최근 W 개만 남기고 나머지를 지운다.
문제는 얼마나 망가지느냐다.
창만 남기면
13편 모델로, 자리 t 가 [t-W+1, t] 만 볼 수 있게 막고 검증 손실을 잰다.
창 W 검증 손실
4 2.7566
8 2.4575
16 2.2905
32 2.1989
64 2.0770
전체 2.0272
W=16 이면 2.2905 다. 1편의 바이그램이 2.6501 이었으니 그보다는 낫지만,
전체 캐시의 2.0272 에서 많이 밀렸다.
맨 앞 몇 개를 같이 남기면
여기서 한 가지를 더 해 본다. 창에 더해 맨 앞 몇 자리를 항상 남긴다.
창 W=16 에 더해 검증 손실
안 남김 2.2905
앞 1개 2.2068
앞 2개 2.1631
앞 4개 2.1111
앞 8개 2.0905
앞 16개 2.1446
앞 8개를 남기면 2.0905 다. 전체 캐시가 2.0272 이니 차이가 0.063 이고,
저장하는 항목은 24 개로 128 개의 19% 다.
전체 항목 128 0.38 MB
창16+앞8 항목 24 0.07 MB
앞 16개를 남기면 오히려 2.1446 으로 나빠지는 것도 적어 둔다. 더 남긴다고
계속 좋아지지 않는다.
맨 앞이라서 좋은가, 그냥 네 개가 더 있어서 좋은가
이 질문을 안 하면 안 된다. 네 자리를 남긴 것이 좋았던 게 위치 때문인지 개수 때문인지 갈라야 한다.
창 W=16 에 더해 검증 손실
아무것도 안 남김 2.2905
맨 앞 4개 (0~3) 2.1111
중간 4개 (30~33) 2.2049
중간 4개 (60~63) 2.2759
창을 그냥 20으로 2.2655
맨 앞이라서 좋다. 같은 개수를 중간에서 남기면 2.2759 로 거의 효과가 없고,
창을 4 늘려 준 것도 2.2655 로 마찬가지다. 위치를 훑으면 이렇게 나온다.
남긴 블록 시작 검증 손실
0 2.1111
1 2.1203
4 2.1258
16 2.1493
32 2.2100
60 2.2759
96 2.2971
이른 자리일수록 좋고, 충분히 늦으면 아무것도 안 남기는 것보다 나쁘다
(2.2971 대 2.2905).
어텐션 질량으로는 설명이 안 된다
여기서 흔히 나오는 설명이 “어텐션 싱크” 다. 맨 앞 자리가 어텐션 질량을 크게 빨아들이니 그것을 버리면 안 된다는 이야기다. 재 보면 이 모델에는 그런 게 없다.
정상 동작에서 뒤쪽 자리들이 자리 0에 준 평균 질량은
블록 0 0.0035 같은 자리에서 균등이면 0.0108 비 0.3배
블록 1 0.0000 0.0배
블록 2 0.0000 0.0배
균등보다 적게 받는다. 자리 0은 이 모델에서 특별히 주목받는 자리가 아니다.
창을 씌운 상태에서 재도 마찬가지다.
뒤쪽 자리에서 그 네 개에 준 질량
맨 앞 (0~3) 0.0155
중간 (60~63) 0.0336
질량은 중간 쪽이 두 배 넘게 많은데 손실은 맨 앞 쪽이 훨씬 낫다. 즉 “많이 받는 자리를 남겨야 한다” 는 설명은 이 측정과 맞지 않는다.
그럼 왜 맨 앞이 좋은가. 모른다. 위치라는 것까지는 갈랐고 질량이 아니라는 것까지는 갈랐지만, 그 자리들이 무엇을 나르는지는 이 실험이 답하지 않는다. 그럴듯한 이야기를 붙일 수는 있지만 재지 않은 것을 적지는 않겠다.
이 모델에 싱크가 없다는 것도 큰 모델 이야기를 부정하지는 않는다. 어휘 100에 블록 3개, 6만 자로 5000걸음 돌린 모델이다. 큰 모델에서 보고되는 현상이 여기서 안 보이는 게 자연스럽고, 그래서 이 편의 결론은 이 모델에서 맨 앞이 값을 한다는 데까지다.
그래서
- 캐시를 창으로 자르면 손실이 오른다.
W=16에서2.2905, 전체는2.0272 - 창에 더해 맨 앞 여덟 자리를 남기면
2.0905다. 항목24개로128개의19%, 손실 차이는0.063 - 더 남긴다고 계속 좋아지지 않는다. 앞 16개는
2.1446으로 뒤로 간다 - 위치 때문이지 개수 때문이 아니다. 같은 네 개를 중간에서 남기면
2.2759, 창을 4 늘리면2.2655 - 어텐션 질량으로는 설명이 안 된다. 이 모델에는 싱크가 없고, 맨 앞 네 개가 받는 질량은 중간 네 개의 절반이다
- 왜 그런지는 재지 않았다. 위치라는 것과 질량이 아니라는 것까지만 쟀다
다음 편에서는 아직 안 잰 시간 하나를 잰다. 지금까지 글자를 뽑는 값만 봤는데, 그 앞에 프롬프트를 읽는 단계가 있다.
Comments