작업 간 전이 학습의 어려움: 각 작업에 맞춘 모델은 서로의 강점을 활용할 수 없으므로, 병합을 통해 여러 모델의 능력을 결합해 다중 작업에 적용할 수 있게 합니다.
망각 문제 방지: 추가 학습 없이 기존 모델의 성능을 유지하면서, 모델 병합을 통해 재학습 없이 새 작업에 대응할 수 있도록 합니다.
효율적인 병합 방법 제공: 다양한 하드웨어에서 효율적으로 모델을 병합할 수 있는 기능을 제공합니다.
다양한 병합 기법: 동일한 구조와 초기화가 같은 모델 병합, 초기화가 다른 모델 병합, 그리고 상이한 구조의 모델 병합 등 다양한 방법을 지원합니다.
사용자 친화적인 설계: YAML 구성 파일을 통해 사용자들이 코드 작성 없이 병합을 설정할 수 있어 접근성을 높였습니다.
확장 가능성: 연구 커뮤니티가 새로운 병합 방법을 MergeKit에 쉽게 추가할 수 있도록 설계되었습니다.
MergeKit을 사용하여 의료 분야의 LLM을 병합한 예시가 제공되며, 각 병합 기법(LERP, SLERP, TIES 등)의 성능을 비교하여 특정 작업에서 성능 향상을 입증합니다.
MergeKit의 방법론은 주로 다양한 모델 병합 기법을 통해 사전 학습된 대규모 언어 모델(LLM)을 통합하여 성능을 높이는 것을 목표로 합니다. 이 방법론은 크게 다음 세 가지 범주로 나누어 설명할 수 있습니다.
이 범주는 모델이 동일한 구조와 초기화를 가질 때 사용되는 병합 기법으로, 선형 모드 연결성(Linear Mode Connectivity, LMC)에 기반한 접근 방식을 포함합니다. 주요 방법들은 다음과 같습니다:
Linear Interpolation (LERP): 두 모델의 가중치를 선형으로 보간하여 병합합니다. 동일한 초기화 및 아키텍처를 가진 모델에서 주로 사용되며, 가중치 평균화를 통해 최종 모델을 생성합니다.
SLERP(Spherical Linear Interpolation): 두 모델의 가중치를 구형 경로로 보간하는 방식으로, 단순한 선형 보간보다 손실 장벽이 낮은 경로를 찾는 것이 특징입니다. 이 방법은 모델 벡터 공간의 기하학적 특성을 활용해 병합 모델의 성능을 더 높입니다.
TIES Merging: Trim, Elect Sign & Merge(TIES) 방법론으로, 특정 작업 벡터의 희소화(sparsification)를 통해 더 많은 수의 모델을 능력 저하 없이 병합할 수 있도록 합니다.
Task Arithmetic: 작업 간 차이값을 기반으로 작업 벡터를 만들어 가중치를 더하거나 빼는 산술 연산을 통해 병합하는 방식입니다. 예를 들어, 베이스 모델과 미세 조정 모델 간의 차이점을 활용하여 새로운 작업을 위한 모델을 생성합니다.
이들 기법들은 모델의 손실 경관(loss landscape)에서 모델의 서로 다른 가중치 구성을 동일한 모드(mode)로 연결하는 데 중점을 둡니다.
이 범주는 동일한 구조를 가지고 있지만 서로 다른 초기화가 적용된 모델을 병합할 때 사용되며, 치환 대칭성(permutation symmetry)을 활용하여 모델 가중치를 조정하는 방법입니다.
Git-Rebasin: 치환 대칭성을 활용하여 각 모델의 가중치를 조정하여 서로 다른 초기화에도 불구하고 기능적으로 동등한 상태로 병합합니다. 이를 통해 독립적으로 훈련된 두 모델을 조화롭게 통합할 수 있습니다.
Optimal Transport Fusion (OTFusion): 뉴런 간 치환 대칭을 활용해 모델 간의 보간 장벽을 줄이고 최적의 가중치 조정을 통해 모델을 병합합니다.
Neuron Alignment: 뉴런 간의 대응 관계를 설정하여 가중치 공간에서 보간을 수행합니다. 이를 통해 각 뉴런 간의 상호작용을 최적화하여 병합 성능을 높입니다.
이들 방법은 각 체크포인트의 가중치가 동일한 초기화가 아니어도 서로 잘 조정되도록 하여, 서로 다른 데이터나 환경에서 훈련된 모델들을 결합할 수 있게 합니다.
이 범주는 서로 다른 아키텍처를 가진 모델을 병합하기 위해 설계되었으며, 다양한 신경망 구조를 융합하여 새로운 모델을 만드는 데 활용됩니다.
CALM(Composition to Augment Language Models): 서로 다른 모델의 표현을 결합하기 위해 교차 주의(cross-attention) 메커니즘을 활용합니다. 이를 통해 각 모델의 장점과 기능을 결합하여 통합 모델을 생성합니다.
FUSELLM(Knowledge Fusion for Large Language Models): 각 모델의 확률 분포를 정렬하고 융합하여 개별 모델의 생성 능력을 결합합니다. 이를 통해 각 모델의 고유한 지식과 특성을 최대한 유지하면서 융합된 모델의 성능을 높입니다.
이들 기법들은 추가적인 사전 학습 과정이 필요할 수 있으며, 모델 융합을 통해 서로 다른 도메인의 모델을 통합하고 최적화하여, 특정 작업에 최적화된 모델을 생성하는 데 유용합니다.
메모리 효율성: 필요할 때만 텐서를 로드하는 메모리 외부 접근 방식을 통해 대규모 모델 병합을 효율적으로 수행할 수 있습니다.
사용자 친화적인 설정: YAML 구성 파일을 통해 복잡한 병합 작업도 쉽게 설정할 수 있습니다.
호환성: Hugging Face Transformers 라이브러리와의 호환성 덕분에 다양한 오픈소스 모델을 손쉽게 병합할 수 있습니다.
이와 같은 다양한 병합 방법론을 통해 MergeKit은 모델 성능을 향상하고, 메모리 사용을 최소화하며, 사용자 맞춤형 통합을 지원합니다.
논문에서 MergeKit의 단점을 명확히 언급하지는 않지만, 모델 병합 방법론이 가지는 다음과 같은 몇 가지 한계나 도전 과제를 짚을 수 있습니다:
초기화 및 구조 일치의 제약
대부분의 병합 기법은 모델의 구조와 초기화가 동일하거나 유사할 때만 잘 작동합니다. 예를 들어, LMC(Linear Mode Connectivity)와 같은 선형 보간 방식은 동일한 초기화 값을 가진 모델 간 병합에 적합하며, 초기화가 다른 경우 성능이 떨어질 수 있습니다. 이를 해결하기 위해 Git-Rebasin과 같은 초기화 치환 대칭성(permutation symmetry)을 사용하는 방법이 있지만, 이러한 방식도 특정 유형의 모델에만 한정되어 적용될 수 있습니다 .
복잡한 모델 아키텍처와의 호환성 제한
서로 다른 아키텍처를 가진 모델을 병합하는 것은 매우 도전적인 작업입니다. 최근에 개발된 CALM이나 FUSELLM과 같은 방법들은 다중 모델의 확률 분포를 융합하려는 시도를 하지만, 여전히 추가적인 훈련이 필요하며, 복잡성이 증가할 수밖에 없습니다. 이러한 방식들은 자원 소모가 크고, 특히 CPU에서 실행될 때는 성능 저하를 겪을 수 있습니다 .
추가적인 사전 훈련의 필요성
일부 병합 기법은 성능을 최적화하기 위해 훈련 데이터에서 활성화 값을 계산해야 하며, 이는 추가적인 훈련이나 사전 학습을 요구하는 경우가 있습니다. 예를 들어, Fisher 정보 행렬을 활용한 가중치 병합 방식이나 RegMean 같은 방법은 L2 거리를 최적화하기 위해 추가적인 데이터 접근을 필요로 합니다 .
메모리 및 연산 자원 한계
MergeKit은 다양한 하드웨어에서 효율적으로 작동하도록 설계되었지만, 대규모 모델을 병합하는 데에는 여전히 높은 메모리와 연산 능력이 요구됩니다. 특히, 병합 작업 중 중간 결과를 메모리에 보관해야 하므로 메모리 제약이 큰 환경에서는 성능이 저하될 수 있습니다. MergeKit이 이를 해결하기 위해 메모리 외부 접근 방식을 사용하지만, 메모리 제한이 심한 환경에서는 병합 과정이 매우 느려질 수 있습니다 .
따라서 MergeKit은 강력한 병합 도구로서 여러 가지 이점을 제공하지만, 특정 환경이나 자원 제약에 따라 성능과 효율성 면에서 한계가 있을 수 있습니다.
오픈소스 언어 모델의 급속한 확장은 이러한 모델 체크포인트의 매개변수를 결합하여 모델의 역량을 병합할 수 있는 기회를 제공합니다. 사전 학습된 모델을 특정 작업에 맞게 미세 조정하는 전이 학습이 발전함에 따라, 개별 작업에 특화되어 다른 모델의 강점을 활용하지 못하는 수많은 작업별 모델이 개발되었습니다. 모델 병합은 추가 학습 없이 다중 작업 모델을 생성할 수 있게 하여, 모델 성능과 다재다능성을 향상할 수 있는 유망한 방안을 제공합니다. 모델 병합을 통해 기존 모델의 고유한 능력을 보존함으로써, AI에서 발생하는 망각 문제와 다중 작업 학습의 어려움을 해결합니다.
이 확장되는 연구 분야를 지원하기 위해, 우리는 모델 병합 전략을 적용할 수 있는 종합적인 오픈소스 라이브러리인 MergeKit을 소개합니다. MergeKit은 모든 하드웨어에서 효율적으로 모델을 병합할 수 있는 확장 가능한 프레임워크를 제공하여 연구자와 실무자에게 유용하게 쓰일 수 있습니다. 현재까지 오픈소스 커뮤니티에 의해 수천 개의 모델이 병합되어, Open LLM Leaderboard에서 평가된 세계에서 가장 강력한 오픈소스 모델 체크포인트 중 일부가 탄생했습니다. 이 라이브러리는 여기에서 접근할 수 있습니다.
지난해 동안 오픈소스 LLM 모델들이 급속히 발전하였으며, 이들은 주로 Hugging Face의 모델 허브에서 접근할 수 있습니다 (Wolf et al., 2019). 이러한 모델들은 수조 개의 토큰으로 구성된 코퍼스로 훈련되며, 매개변수는 보통 10억에서 700억 사이에 해당합니다 (Minaee et al., 2024; Zhang et al., 2024). 오픈소스 체크포인트는 다양성과 풍부함을 갖추고 있으며, 주로 사전 훈련된 체크포인트와 특정 지시를 따르는 작업을 위해 조정된 체크포인트로 구분됩니다 (Zhuang et al., 2020). 예를 들어 코딩 (Roziere et al., 2023), 의료 애플리케이션 (Wu et al., 2023) 등 여러 도메인에 맞춘 모델들이 있습니다.
그러나 각 작업마다 별도의 모델을 미세 조정하는 것은 두 가지 주요 과제를 초래합니다. 첫째, 새로운 작업마다 작업별 모델을 별도로 저장하고 배포해야 하며, 둘째, 독립적으로 훈련된 모델들은 관련 작업의 통찰을 활용해 성능을 개선하거나 도메인을 넘어서 일반화할 수 없습니다 (Sanh et al., 2021; Ramé et al., 2023; Yadav et al., 2024; Yu et al., 2023). 이러한 모델을 처음부터 훈련시키는 것은 막대한 비용을 필요로 하며, 예를 들어 Mistral-7B 모델은 약 200만에서 300만 달러가 소요됩니다 (Jiang et al., 2023). 또한, 추가적으로 사전 훈련된 모델을 미세 조정하면 원래 모델의 일반적인 성능이 저하되는 ‘망각 문제’가 발생할 수 있습니다 (De Lange et al., 2021). 이는 최적의 성능을 방해하는 현상으로, 특히 여러 작업에서 문제를 일으킬 수 있습니다 (Cheng et al., 2023; Wu et al., 2024). 더불어 모델이 인간의 선호도에 맞춰 반응하도록 조정하는 과정은 방대한 노력을 요구하며, 대부분의 팀이 이를 재현하기는 불가능합니다 (Wang et al., 2023; Rafailov et al., 2024).
이러한 배경에서 연구 및 산업적 활용 사례에서 기존 사전 훈련된 체크포인트를 최대한 활용하는 방법에 대한 질문이 제기됩니다. 이러한 맥락에서 모델 병합에 대한 연구가 획기적인 전략으로 등장했으며, 이는 특정 작업에 맞게 훈련된 여러 개별 모델의 매개변수를 단일 통합 모델로 결합합니다. 이는 다중 작업 학습과 지속 학습을 가능하게 하며, 재훈련의 막대한 비용 없이도 망각 문제의 위험을 줄일 수 있습니다 (Yadav et al., 2023; Yu et al., 2023).
MergeKit은 모델 병합 전략을 실행하기 위한 중앙 집중형 라이브러리로, 커뮤니티가 제안한 병합 전략을 실행할 수 있는 도구를 제공합니다. MergeKit은 다양한 최첨단 병합 기술을 통합할 수 있는 플랫폼을 제공하여 커뮤니티가 모델을 손쉽게 결합하고 새로운 벤치마크를 설정할 수 있도록 지원합니다. MergeKit의 아키텍처는 확장성과 기능성에 중점을 두어, 메모리 제약이 있는 CPU뿐만 아니라 가속화된 GPU에서도 실행할 수 있도록 지원합니다.
현재까지 MergeKit은 광범위한 병합 기술을 포함하고 있으며, 오픈소스 커뮤니티에서 수천 개의 병합 모델을 개발하는 데 중요한 역할을 해왔습니다. 이들 중 다수는 Open LLM Leaderboard에서 상위권에 평가되었습니다 (예: BioMistral (Labrak et al., 2024), OpenPipe의 Mistral 7B Fine-Tune Optimized (Corbitt, 2023) 등).
이 논문의 주요 기여는 다음과 같습니다:
모델 병합(Ainsworth et al., 2022)은 최근 연구 커뮤니티의 초점으로 떠올랐지만, 수많은 선행 연구를 바탕으로 구축되었습니다. 모델 병합은 두 개 이상의 사전 학습된 모델을 결합하여 모든 원본 모델의 강점과 능력을 유지하는 통합 모델을 만드는 과정입니다. 이러한 기법의 성공은 모드 연결성(mode connectivity) 개념에 기반합니다 (Garipov et al., 2018). 가장 간단한 경우, 공통의 사전 학습 모델에서 미세 조정된 모델들의 선형 모드 연결성(LMC, Linear Mode Connectivity)을 활용합니다 (Entezari et al., 2021). 또 다른 연구들은 가중치에 변환을 적용해 손실 랜드스케이프에서 공통 영역으로 모델을 이동시키기 위해 치환 대칭을 활용합니다 (Ainsworth et al., 2022; Stoica et al., 2023; Verma and Elbayad, 2024).
MergeKit의 개발 과정에서 현재와 미래의 모델 병합 기법을 체계적으로 분류하여 각 기법의 능력을 분석했습니다. 이 분류는 가중치 초기화와 다양한 체크포인트의 아키텍처적 구성이라는 두 가지 핵심 요소에 초점을 맞추고 있습니다.
2.2.1 동일한 아키텍처와 초기화를 가진 모델 병합
이 부분에서는 두 신경망 체크포인트 사이의 선형 모드 연결성(LMC)을 활용해 최종 병합 모델을 도출하는 다양한 모델 병합 기법을 다룹니다. 이 기법들은 본질적으로 선형 보간법을 사용하며, 병합할 모델이 동일한 아키텍처와 초기화를 가져야 한다는 요구사항이 있습니다. 그러나 동일한 초기화를 가지며 미세 조정된 모델들도 이 기법과 호환됩니다.
가장 간단한 방법은 가중치 평균화에 기반한 선형 평균화로, Model Soups (Wortsman et al., 2022)와 같은 접근 방식이 여기에 포함됩니다. Task Arithmetic(Ilharco et al., 2022)은 작업 벡터 개념을 도입하여, 미세 조정된 모델들과 공통 베이스 모델 간 차이값의 산술 연산이 유용하고 의미 있는 것으로 입증합니다.
TIES 병합(Yadav et al., 2023), Model Breadcrumbs(Davari and Belilovsky, 2023), DARE (Drop And REscale, Yu et al., 2023) 등은 작업 벡터를 결합하고 희소화하여 성능 저하 없이 더 많은 모델을 하나로 결합할 수 있는 방법을 소개합니다.
Spherical Linear intERPolation(SLERP, Shoemake, 1985)을 사용한 보간은 단순한 가중치 평균화의 확장이며, 이는 종종 선형 경로보다 낮은 손실 장벽을 가진 구형 경로가 존재함을 보여줍니다. SLERP는 모델 벡터 공간 내의 기하학적, 회전 속성을 활용하여 부모 모델의 특성을 더 정확히 반영하는 혼합을 보장합니다.
위의 방법들은 병합 작업에 학습 데이터를 요구하지 않으며, 병합 후 추가 미세 조정이 필요하지 않습니다. 다른 접근 방식들은 다양한 신경망 매개변수에 대한 가중치를 적용해 이 패러다임을 확장합니다. 이는 가중치를 결정하기 위해 학습 데이터 활성화 계산을 요구합니다. 예를 들어, Matena와 Raffel(2022)은 Fisher 정보 행렬을 사용하고, Jin et al.(2022)은 RegMean 방법을 소개하여 학습 데이터의 사적 보호를 유지하면서 모델 예측과 L2 거리에 최적인 가중치를 생산하는 병합이 가능하게 합니다.
2.2.2 동일한 아키텍처와 다른 초기화를 가진 모델 병합
이 섹션에서는 초기화가 다른 체크포인트를 병합하는 방법들을 다룹니다. 이전 연구는 서로 다른 초기화를 가진 체크포인트에서는 단순한 선형 모델 결합(LMC) 접근법이 한계가 있음을 보여주었습니다 (Ainsworth et al., 2022). 이를 극복하기 위해 이 연구 분야는 체크포인트의 치환 대칭성을 활용하여 병합 전 서로 다른 초기화를 맞춥니다 (Verma와 Elbayad, 2024; Ainsworth et al., 2022).
Git-Rebasin (Ainsworth et al., 2022)은 신경망 손실 랜드스케이프의 치환 대칭성이 모델 병합에 미치는 영향을 탐구하며, 두 개의 독립적으로 훈련된 모델의 가중치를 기능적으로 동일하게 정렬하는 알고리즘을 제안합니다. 실험 결과, 다양한 아키텍처와 데이터셋에서 이러한 정렬이 가능함을 보이며, 신경망 최적화는 종종 치환 대칭성에 기반한 단일 바신(basin)을 형성한다는 것을 시사합니다.
비슷하게, Optimizing Mode Connectivity via Neuron Alignment (Tatro et al., 2020)와 Optimal Transport Fusion (OTFusion) (Singh and Jaggi, 2020) 연구들은 신경망의 히든 유닛의 치환 대칭성을 활용하여 모델 간의 보간 장벽을 줄이는 방법을 제안합니다. 이러한 방법들은 모델 뉴런 간 대응 관계를 설정하여 가중치 공간에서 단순한 보간을 수행합니다.
Imfeld et al. (2023)과 Verma와 Elbayad (2024)는 이러한 방법들을 Transformer 기반 모델 아키텍처에 적용했고, Jordan et al. (2022)은 보간된 심층 신경망에서 발생하는 분산 붕괴 문제를 해결하기 위해 리스케일링 단계를 제안해, 치환된 모델 간 손실 장벽을 줄였습니다.
이 방법들은 모델의 아키텍처와 크기가 동일하지만, 선형 모드 연결성에 속하지 않는 모델도 병합할 수 있게 해주며, 이는 임의의 초기화, 추가적인 사전 훈련, 또는 기타 이유로 발생할 수 있는 차이를 극복합니다.
ZipIt (Stoica et al., 2023)은 더 나아가 서로 다른 작업에서 훈련된 유사한 아키텍처의 모델을 병합하는 가능성을 탐구합니다. 이 방법은 모델 내부 및 모델 간 상관된 특성의 '지퍼 결합'을 지원하여, 지정된 계층까지만 부분적으로 병합하여 멀티헤드 모델을 생성할 수 있게 합니다. 이는 추가 학습 없이도 다양한 도메인의 지식을 유지하고 통합할 수 있는 유연성과 적용 가능성을 크게 확장하는 중요한 발전을 나타냅니다.
2.2.3 서로 다른 아키텍처를 가진 모델 병합
엄밀히 말하면 모델 병합은 아니지만, CALM(Composition to Augment Language Models) (Bansal et al., 2024)과 FUSELLM(Wan et al., 2024)과 같은 최근 접근법은 다양한 아키텍처의 모델 융합을 향한 중요한 단계로 간주됩니다. CALM은 교차 주의 메커니즘을 사용하여 다양한 모델의 표현을 혼합함으로써, 각각의 장점과 기능을 활용하여 다양한 신경망 구조를 통합합니다.
FUSELLM(Wan et al., 2024)도 유사하게 소스 LLM의 생성 능력을 활용하여 그들의 확률 분포를 정렬하고 융합하는 데 중점을 둡니다. 이 전략은 개별 모델의 고유한 장점과 집합적 지식을 외부화하고 강화하여, 융합된 LLM의 전반적인 능력을 향상합니다. 이전에 언급된 접근법들과는 달리, 이 섹션의 방법들은 모델의 추가적인 지속적 사전 훈련이 필요합니다.
모델 병합은 다양한 실용적 애플리케이션에서 활용되며, HuggingFace 모델 허브와 같은 플랫폼의 머신러닝 모델에 중요한 영향을 미칩니다 (Wolf et al., 2019). 병합된 모델들은 여러 작업에서 경쟁력 있는 성능을 보여주었으며, 대표적인 사례로는 BioMistral (Labrak et al., 2024)이 있습니다. 이 프로젝트는 기존 Mistral 채팅 모델과 도메인 적응 체크포인트를 병합하여 특정 도메인에서의 성능 향상을 입증했습니다. OpenPipe의 Mistral 7B Fine-Tune Optimized (Corbitt, 2023)도 미세 조정된 모델 병합을 통해 추가 튜닝이 가능한 고품질 베이스를 만드는 가능성을 보여줍니다 (Choshen et al., 2022). 또한 Wei et al. (2024)은 MergeKit 도구를 활용한 모델 병합이 환각 탐지 성능을 높이는 데 성공적임을 설명합니다.
병합된 모델들의 성공 사례는 지속 학습과 다중 작업 학습 시나리오에서의 병합 기법의 가치를 강조합니다. 오픈소스 LLM의 광범위한 스펙트럼을 활용하여 모델 병합은 여러 작업에서 동시에 우수한 성과를 발휘하거나 새로운 도메인에 맞게 적응할 수 있는 다재다능하고 강력한 모델을 생성할 수 있게 합니다. 이러한 접근 방식은 기존 자원의 활용을 극대화할 뿐만 아니라 사전 학습된 모델을 활용해 복잡한 실제 문제에 대한 혁신적인 솔루션을 제공하는 길을 열어줍니다.
MergeKit은 현재와 앞으로의 모델 병합 기법을 간편하게 적용할 수 있도록 신중하게 설계되었습니다. 저장소에는 MergeKit을 효과적으로 활용할 수 있도록 돕는 튜토리얼과 IPython 노트북이 포함되어 있습니다. 이 섹션은 오픈소스 커뮤니티가 MergeKit 도구를 채택하고 새로운 기법을 통합하는 데 도움을 주기 위한 기본 설계 원칙을 설명합니다.
MergeKit의 주요 인터페이스는 YAML 구성 파일을 통해 이루어지며, 이를 통해 모든 수준의 사용자들이 복잡한 병합 작업을 코딩 없이 정의할 수 있습니다. 이 접근 방식은 MergeKit의 사용을 민주화하고, 병합 레시피를 손쉽게 반복, 공유, 및 재구성할 수 있어 커뮤니티 참여를 촉진합니다.
YAML 구성 파일은 병합 방법, 입력 모델, 선택된 병합 알고리즘에 필요한 모든 매개변수를 정의합니다. 매개변수는 전역적으로 설정하거나 특정 모델 구성 요소에 맞출 수 있으며, 상수 스칼라 값 또는 계층별로 변하는 보간된 그라디언트로 지정할 수 있습니다. 이러한 다양한 수준의 세분화는 간단한 병합을 쉽게 소개하는 동시에, 숙련된 사용자가 매우 복잡한 작업을 정의할 수 있게 합니다.
MergeKit은 조합 가능성과 재사용성을 원칙으로 설계되었습니다. 병합 메서드는 상호 교환 가능하고 추가가 용이하게 설계되어 있으며, 각 구성 요소는 추가, 제거 또는 교환이 가능하여 사용자 맞춤화와 실험을 허용합니다. 가능할 경우 구성 요소는 독립적으로도 유용하게 사용할 수 있도록 설계되었습니다. 예를 들어, MergeKit의 지연 텐서 로딩 기능은 도구의 핵심 구성 요소지만, 별도의 스크립트에서 간단하게 사용될 수 있습니다.
HuggingFace Transformers 라이브러리(Wolf et al., 2019)와 모델 허브와의 원활한 통합을 위해 설계된 MergeKit은 다양한 오픈소스 체크포인트를 손쉽게 결합할 수 있게 하여 커뮤니티에서 사용 가능한 다양한 모델 병합을 촉진합니다.
MergeKit은 대규모 사전 학습된 언어 모델의 병합 문제를 해결하기 위해 특별히 설계되었으며, 다양한 컴퓨팅 리소스에서 호환성과 효율성을 보장합니다. 효율성의 핵심은 메모리 외부 접근 방식(out-of-core approach)입니다. 각 개별 작업에 필요한 텐서만 작업 메모리에 로드하여, MergeKit은 고급 연구 클러스터에서부터 GPU가 없고 제한된 RAM을 가진 개인용 노트북까지 확장할 수 있습니다.
3.4.1 계산 그래프 스케줄링
MergeKit은 내부적으로 병합 작업을 작업 인스턴스(Task instances)로 구성된 방향 비순환 그래프(DAG)로 나타냅니다. 이 표현 방식은 작업에 필요한 작업 세트를 최소화할 수 있도록 작업 실행을 스케줄링하는 데 사용됩니다. 그래프 실행은 또한 더 이상 필요하지 않은 중간 값을 자동으로 제거하여 메모리를 효율적으로 관리합니다. 이러한 인프라는 개발자가 메모리 효율성과 하드웨어 확장성의 이점을 유지하면서 새로운 병합 방법을 쉽게 구축할 수 있게 합니다.
MergeKit은 사용자 및 기여자 간의 논의와 피드백, 협업을 촉진하며, 최신 모델 병합 기술과 머신러닝 발전 사항에 맞춰 지속적으로 업데이트되고 유지되도록 합니다.
모델 병합 기술의 빠른 성공과 혁신적인 방법들의 지속적인 발전을 고려할 때, 우리는 커뮤니티가 MergeKit의 성장과 발전에 기여할 수 있도록 새로운 병합 전략과 개선 사항을 제안하고 있습니다. 이 섹션에서는 기존 기능을 활용하여 새로운 병합 방법을 MergeKit에 통합하는 간소화된 가이드를 제공합니다.
새로운 병합 방법을 MergeKit에 통합하려면 다음 핵심 Python 모듈을 익히는 것이 필요합니다:
각 모듈은 병합 파이프라인에서 고유한 역할을 수행하며, MergeKit 기능을 확장할 때 고려해야 합니다. Figure 2는 이러한 모듈 위치를 나타내는 저장소 구조의 그래픽 표현을 보여줍니다.
머신러닝 커뮤니티에서 LLM 개발과 개선을 위해 모델 병합 기술이 큰 관심을 받고 있으며, 이는 Open LLM Leaderboard (Beeching et al., 2023) 데이터로도 확인할 수 있습니다. 2024년 3월 15일 기준, 성능이 뛰어난 상위 LLM 모델 중 20%가 병합 모델이며, 상위 100개 모델 중 34%가 병합 모델로, 현재 LLM 발전에서 그 중요성을 나타냅니다. 특히 상위 3B, 7B, 13B 오픈소스 모델들이 MergeKit을 통해 병합된 모델입니다. MergeKit 저장소의 인기 상승은 GitHub의 별 수로도 확인할 수 있으며, 이는 개발자 커뮤니티에서의 영향력과 사용자 지지를 의미합니다.
Figure 4는 Open LLM Leaderboard의 상위 50개 오픈소스 모델 성능을 '평균' 점수로 비교한 시각적 차트를 제공합니다 (Park, 2023). '평균' 점수는 ‘ARC’(Clark et al., 2018), ‘HellaSwag’(Zellers et al., 2019), ‘MMLU’(Hendrycks et al., 2021), ‘TruthfulQA’(Lin et al., 2022), ‘Winogrande’(Sakaguchi et al., 2019), ‘GSM8K’(Cobbe et al., 2021) 등의 벤치마크 평가 점수의 평균값입니다. 각 모델의 매개변수 수는 검은색 점선으로 표시되며, 병합 모델은 루비색 막대로, 나머지 모델은 분홍색으로 표시됩니다. 상위 병합 모델들은 주로 7억~13억 매개변수를 가지며, 이 중 RubielLabarta/LogoS-7Bx2-MoE-13B-v0.2가 상위 17위에 올랐습니다. MoE(Mixture of Experts) 구조를 활용한 모델을 제외하면, 병합되지 않은 상위 모델들은 대부분 35억에서 70억 이상의 매개변수를 포함하고 있습니다. Open LLM Leaderboard에서 보여지듯, 병합 모델, 특히 MoE 아키텍처를 포함한 모델들은 계산 자원을 최적화하면서도 뛰어난 성능을 제공하며 자연어 처리의 최전선에서 모델 병합의 변혁적 가능성을 입증합니다.
Table 1에 나와 있듯이, Meditron-7B (Chen et al., 2023) 체크포인트와 Llama2-7B 채팅 모델 (Touvron et al., 2023)을 병합하기 위해 MergeKit의 다양한 병합 기법을 실험했습니다. 사용된 기법에는 Linear intERPolation (LERP), SLERP, TIES, DARE-TIES가 포함됩니다. 두 모델 모두 Llama2-7B 기반 모델로, 실험 결과는 Table 1에 나와 있습니다. 결과에 따르면, 모든 병합 모델이 USMLE (Jin et al., 2021), MedMCQA (Pal et al., 2022), PubMedQA (Jin et al., 2019) 등 다양한 의료 벤치마크에서 Meditron-7B 모델을 능가했습니다. 또한, LERP와 SLERP 기법을 사용한 모델들은 일반 벤치마크에서도 Llama2-7B 채팅 모델보다 우수한 성능을 보였습니다. 실험 결과는 병합된 모델의 다양한 성능을 강조하며, 병합 모델이 비교적 일반화된 능력으로 다양한 응용 분야에 걸쳐 성능을 향상시킬 수 있음을 보여줍니다. 특히 의료 분야에서는 SLERP 방법이 다른 방법들보다 우수한 성능을 보였습니다. 이 실험은 모델 병합이 어떻게 더 일반화된 모델을 만들어 다양한 응용에서 뛰어난 성능을 발휘할 수 있는지를 입증합니다.
본 논문에서는 대규모 언어 모델의 통합을 지원하는 혁신적인 오픈소스 도구인 MergeKit을 소개했습니다. 라이브러리의 기능을 자세히 설명하는 것 외에도, 모델 병합에 관한 최신 문헌을 엔지니어링 관점에서 종합했으며, 동일한 아키텍처 및 초기화를 가진 모델 병합과 동일한 아키텍처지만 초기화가 다른 모델 병합이라는 두 가지 주요 카테고리에 중점을 두었습니다. 또한, 새로운 병합 기술의 통합 방법에 대한 통찰을 제공하여 오픈소스 커뮤니티의 연구자들이 새로운 방법을 기여할 수 있도록 장려했습니다.
MergeKit은 역동적인 프로젝트로, 오픈소스 커뮤니티와의 협력을 통해 지속적으로 새로운 방법론을 통합할 계획입니다. 현재 지원되는 방법 목록을 최신 상태로 확인하려면 저장소의 ReadMe 섹션을 참조하시기 바랍니다.