23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
1부에서는 Position Embedding에 대한 전반적인 내용에 대해서 한번 훑어보았습니다.
(참고 : https://devocean.sk.com/blog/techBoardDetail.do?ID=166264)
1부 마지막 쯔음에 요즘 open source LLM들은 대부분 Rotary Position Embedding(RoPE)을 사용하고 있다고 말씀드렸습니다.
이번 포스트에서는 RoPE layer쪽을 살짝 바꿔줌으로써 원래 수용가능한 context size보다 훨씬 더 많은 양이 수용가능한 방식에 대해 말씀드리도록 하겠습니다.
Position Interpolation에 대해 말씀드리기 전에 일단 2d case에서의 RoPE를 recall해보도록 하겠습니다.
RoPE를 적용할 때 query function과 key function은 다음과 같이 정의할 수 있습니다.
위의 식을 잘 보면 사실 position에 대한 정보(m)는 rotary matrix(cosine, sine부분의 matrix)부분에만 영향을 미칩니다.
그래서 제한된 context length가 존재하는 pretrained LLM의 경우 rotary matrix의 값들은 position에 따라서 아래 그림처럼 미리 학습된 영역의 점의 y값을 가지게 됩니다.
만약 제한된 context length가 2048일 때 그 이상의 token이 나올 경우에는 rotary matrix의 값은 아래 그림처럼 unseen Range의 y값을 가지게 됩니다.
사실 제한된 context length가 아닌 그 이상이더라도 어차피 rotary matrix이기 때문에 -1~1사이의 값을 가지고 이 값 자체는 이미 관측된 값이기 때문에 전혀 문제가 안되는 것처럼 보입니다.
그러나 attention score를 찍어보면 아래 그림과 같이 제한된 context length내에서는 -3~3사이에서 값을 형성하는 반면 그 이상 넘어가면 attension score가 폭발하는 경우가 발생을 하게 됩니다.
이러한 이유때문에 제한된 context length이상 generate를 하면 이상한 token들이 generate되게 됩니다.
그래서 attention score가 폭발이 안되도록 하기위해 아래그림처럼 늘리고자 하는 context length까지 이미 알고있는 영역으로 땡겨주면 별 문제가 없을까요?
즉 interpolation을 하게되면 문제가 없을까요?
Position Interpolation의 저자는 늘리고자 하는 context length까지 linear scale로 interpolation이 되도록 하면 attention score도 bound됨을 보였고
실험에서는 늘리고자 하는 context length에 대해서 fully finetunning을 하는 것보다 Position Interpolation을 하고 1/10수준만 finetunning하더라도 perplexity관점에서는 오히려 성능이 좋음을 보였습니다.
원래는 NTK interpolation관련 3개의 interpolation에 대해서도 추가로 작성하려고 했습니다만,
다음 blog에서 NTK aware interpolation, NTK by part interpolation, Yarn 에 대해 소개드리도록 하겠습니다.
조만간 다시 찾아 뵙겠습니다! 감사합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.