기존에 이미 학습된 모델을 병합해서 새로운 모델을 만드는 방법들이 소개되면서 연구자들은 다양한 실험을 하고 있습니다.

아무래도 비싼 장비와 오랜 학습시간 소모 없이 새로운 모델을 만들어낼 수 있다는 점이 가장 큰 매력이라고 할 수 있겠죠.


특히 llama3 모델이 발표되고 나서 다양한 실험의 무대가 되고 있기도 합니다. 8b 모델이 그동안 공개 모델의 표준처럼 사용되던 mistral 7b 보다 뛰어나기 때문이죠.


다만 공개된 모델의 크기가 8b 와 70b 라서 중간 수준의 모델을 원하는 사람들에겐 아쉬움을 남기고 있는데요. 이 부분을 frankenmerge (프랑켄슈타인을 만드는 것처럼 여러개의 모델을 기워붙여서 새로운 모델을 만든다는 점에서 유래된 용어) 를 이용해서 보충을 해보려는 시도들이 있습니다. 미스트랄 7b 의 레이어를 자기 복제해서 solar10b 모델을 만든 것처럼요.


merge 를 하는 방법들과 대상은 여러가지가 있는데, 자기 자신을 대상으로 하는 경우는 주로 크기를 늘려서 추론 능력을 향상시키는 것이 목적입니다. 자기 자신과 머지된 것이기 때문에 새로운 지식이 더 생겨나는 것은 아니지만, 레이어 카운트가 늘면서 추론의 횟수가 늘어나는 셈입니다. 추론에서 기대하는 것은 in-context learning 의 활용을 극대화하려는 것인데, llama3 의 ICL 이 상당히 좋은 것으로 나타난 만큼 이 능력을 어디까지 확장시킬 수 있을지가 포인트입니다.


트랜스포머 모델에서 어텐션을 통해 임베딩 벡터가 의미를 주입받는 원리를 잘 시각화해서 설명하는 영상으로 최근에 올라온 3blue1brown 의 영상을 추천합니다. 


[그림 : creature -> fluffy creature 로 의미가 추가되는 (fluffy vector) 모습 예제]


https://www.youtube.com/watch?v=eMlx5fFNoYc



그런데 기존에 frankenmerge 로 만들어진 모델들이 있었는데 성능이 만족스럽게 올라가진 못했다는 보고가 있었습니다. 이 부분에 대해서 연구자들이 여러가지로 실험해보고 있었는데 다음과 같은 실험 결과가 알려집니다.


https://github.com/arcee-ai/mergekit/issues/198


전제조건 -

 - 트랜스포머 모델은 임베딩이 레이어를 거칠때마다 임베딩 공간상에서 어느정도의 거리를 이동하게 됩니다. 얼마나 이동할지는 정해진 공식이 있는 것이라기보다는 학습하면서 형성된 내용으로 보입니다

 - 임베딩 공간은 안정적인 영역과 위험한 영역으로 나뉩니다. 안정적인 영역에서 벡터들이 왔다리 갔다리하면서 토큰을 찍어내면 이상현상이 없지만, 위험영역에 들어가면 똑같은 토큰이 반복 출력되거나 엉뚱한 토큰이 나오는 식으로 고장증상을 보이게 됩니다

 - 안정영역은 지속적인 학습을 통해서 만들어진 확률 분포라고 할 수 있습니다. 위험영역은 학습이 덜 된 영역이라고 할 수 있습니다. 


위의 3blue1brown 영상을 보면 fluffy creature 라는 의미가 만들어지기 위해서 creature 라는 현재의 벡터 엠베딩에 fluffy 라는 어텐션결과 (여러 어텐션 헤드중 형용 수식어를 주로 고르는 어텐션 헤드에 해당된 내용입니다) 로 계산된 fluffy vector 가 합쳐지는 내용을 볼 수 있습니다.


다만, 저 벡터를 무작정 더할 수는 없습니다. 일단 트랜스포머의 레이어가 한개가 아니라 여러개이기 때문에 다음 레이어에서도 저 벡터가 또 어텐션 대상으로 등장하게 될 것이기 때문입니다. (다음 레이어의 어텐션 헤드들중에도 형용 수식어를 고르는 어텐션 헤드가 또 등장할 가능성이 있습니다)


그래서 레이어를 2배로 늘리게 된다면, 그 레이어에서 적용하는 값들은 그대로 쓰지 말고 어느정도 스케일링을 해서 적용해 줘야 임베딩에 너무 많은 변형이 가해져서 위험지역으로 가게되는 것을 막을 수 있지 않냐는 생각을 할 수 있습니다. 


위 github 의 issue 를 보게되면 적절한 스케일값을 찾기 위해서 여러가지 검토를 하고 1/sqrt(2) 를 곱해주는 것을 제안합니다. 그리고 그 부분을 적용해서 miku 모델의 frankenmerge 를 만들어서 비교해봤는데 더 좋아졌다고 하네요. 이 부분은 좀 더 많은 실험과 검증이 필요해보이긴 합니다만, 흥미로운 통찰을 제공하는 출발점인 것 같습니다.


https://huggingface.co/kuotient/Llama-3-11B-Instruct-attenuated


위 방법을 감쇠병합 (attenuated merge) 라고 부르기로 하고, llama3 8b 모델에 감쇠병합 레이어확장을 적용한 모델이 올라왔습니다.


과연 감쇠병합이 레이어 확장에 얼마나 도움이 될지, 레이어 확장 후 추가 파인튜닝의 부담을 얼마나 줄여줄지? 실 사용 결과가 기대됩니다


끝.