DenseFormer: Enhancing Information Flow in Transformers via Depth Weighted Averaging

https://arxiv.org/abs/2402.02622


트랜스포머 기반 LLM들의 성능을 뻥튀기 하는 편법(?) 중 하나가 모델의 레이어를 복제해서 늘려붙이는 것인데요, 70B 모델의 중간 층들을 복붙해서 120B로 더 깊게 만드니까 모델의 추론성능이 높아지더라는 현상을 발견해서 mergekit 같은 툴들로 여러가지 병합 모델들이 매주 쏟아져나오고 있습니다.

특히나 서로 다른 모델을 겹쳐서 쌓아올리는게 아니라 그냥 자기 자신을 쌓아올리는 것만으로도 성능이 올라가는 것을 보면서, 뭔가 저 원리를 이용해서 트랜스포머의 디코딩 방식을 바꾸면 모델을 억지로 무겁게 만들지 않고도 성능을 높일 수는 없을까 하는 생각이 들지요.


아래에 DenseFormer 라는 이름으로 소개된 기법은, 48겹의 트랜스포머로 더 큰 72겹짜리 모델의 성능을 능가할 수가 있다고 합니다. 용량도 적고 속도도 더 빠르다니 굉장히 흥미롭네요.


적용한 방법을 간단히 설명하면 Depth Weight Average 라는 방법인데, 트랜스포머의 n 번째 블럭을 처리할 때, 그 입력은 n-1 번째 블럭의 출력값이 되는데 (원래방식), 그걸 좀 바꿔서 n-1 번째에 더해서 n-2 번째, n-3 번째, ... 등등 복수개의 출력값을 가중평균내서 n 번째 블럭의 입력값으로 쓰는 것입니다. 가중평균이니까 가까운 n-1 번째의 가중치는 높게주고, 먼 블럭의 가중치는 멀어질수록 점점 작아져서 영향력이 줄어들게 하는 것이지요. 이렇게 하면 개념적으로 같은 트랜스포머의 레이어를 여러겹으로 복사해서 추론능력을 올리는 방법과 비슷한 효과가 나는 것 같습니다.

https://twitter.com/MatPagliardini/status/1771168258856501564


https://github.com/epfml/DenseFormer