여러 LoRA 스킬을 하나의 모델로 접는 읽기 전용 결합 연산자 READ
New LoRA Skills Should Read but Never Write
무엇인가
LoRA는 태스크 하나를 싸게 파인튜닝하는 표준 도구라 실무 시스템에는 독립적으로 학습된 어댑터가 계속 쌓인다. 문제는 이들을 하나의 모델로 합치는 일이다. 가중치 공간에서 업데이트를 더하면 간섭이 생기고, 모든 태스크 데이터로 다시 학습하면 비싸며 기존 스킬이 상할 수 있고, 어댑터를 라우팅하면 애초에 단일 결합 모델이라는 목표를 포기하게 된다. TIES, DARE, LoRA-LEGO, KnOTS 같은 기존 방법은 병합 산술을 고치거나 병합 자체를 피하는 쪽이고, LoRAHub나 PHATGOOSE, LoRA-Mixer, GraftLLM은 계수·전문가·라우터·그래프트로 모듈을 분리해 유지한다. 저자들은 이들이 모두 어댑터를 내부 형태가 중요하지 않은 완성품으로 취급한다고 본다. LoRA 업데이트 ΔW=BA는 임의의 가역행렬 R에 대해 (BR)(R⁻¹A)로도 쓸 수 있는데, 혼자 서빙될 때는 보이지 않는 이 게이지 자유도가 결합 단계에서는 학습된 상호작용이 스킬 관계 대신 초기화·데이터 순서·시드 같은 최적화의 우연을 인코딩하게 만든다. 두 번째 숨은 선택은 옛 스킬과 새 스킬을 잇는 링크의 방향이다.
어떻게 동작하나
READ는 두 선택을 모두 고정한다. 결합된 업데이트는 ΔW = B_stack G A_stack 형태로, G는 kr×kr 행렬이고 r×r 블록 G_ij로 나뉜다. 대각 블록 G_ii는 자기 스킬의 방향을 스케일·혼합하고, 비대각 G_ij는 스킬 j의 입력 방향을 스킬 i의 출력 방향으로 매핑한다. G가 항등행렬이면 단순 합이고, 합에서 벗어나는 모든 부분이 G 안에서 학습된다. 먼저 좌표를 고정하기 위해 각 어댑터를 정준화한다. B_i = Q_B R_B와 A_i^T = Q_A R_A의 thin QR 분해를 구하고 R_B R_A^T = UΣV^T로 SVD한 뒤, B_i^c = Q_B U Σ^{1/2}, A_i^c = Σ^{1/2} V^T Q_A^T로 다시 쓴다. 곱 B_i^c A_i^c = B_i A_i가 정확히 보존되면서 (B_i^c)^T B_i^c = A_i^c (A_i^c)^T = Σ가 성립해 양쪽 인수가 같은 메트릭을 갖는다. 어느 스킬의 기저도 상호작용에서 특권을 갖지 않게 되는 것이다.
무엇과 다른가
좌표가 고정되면 남는 것은 링크의 방향이다. G_{i,k+1}은 새 스킬의 입력 방향을 옛 출력 기저에 쓰는 항이고, G_{k+1,i}는 새 스킬이 옛 입력 방향을 자기 출력 기저로 읽는 항이다. 전자는 모든 옛 스킬이 모든 입력에 대해 계산하는 값에 항을 더하므로 옛 행동이 최적화가 얼마나 움직이느냐에만 의존해 보호되고, 후자는 옛 출력에 아무것도 더하지 않으므로 보존이 구성적으로 보장된다. 그래디언트도 비대칭이다. 쓰기 블록은 옛 태스크 예시에서 그래디언트를 받지만 읽기 블록은 새 스킬의 출력을 통해서만 최적화된다. 그래서 READ는 G_{≤k,k+1}=0으로 고정하고 새 스킬의 행과 대각만 학습한다. 추가 절차는 다섯 단계다. 학습된 솔로 인수를 추출하고, 모든 인수를 정준형으로 다시 쓰고, G를 (kr)²에서 ((k+1)r)²로 키우면서 옛 G를 좌상단 블록에 그대로 설치해 동결하고, 스테이지 태스크 합집합을 한 번 통과하며 새 행과 대각만 최적화하고, 마지막으로 B_stack G A_stack을 미리 계산해 베이스 가중치 W0에 더한다. 정준화 비용은 모듈당 thin QR 두 번과 r×r SVD 한 번으로 O(dr²+r³)이고, 6개 스킬을 붙이는 시점에 학습되는 것은 모듈당 384개, 전체 21,504개 float뿐이다. 결합 저장량은 k=6에서 Llama의 56개 q/v 프로젝션에 걸쳐 129k float으로 어댑터 하나의 약 4.7%다.
어떻게 쓰나
실험은 Llama-3.2-3B-Instruct와 Qwen3-4B에서 GLUE-6, SuperGLUE-4, BBH-6, Domain-3 네 스위트로 수행했다. 각 태스크는 r=8, α=16, q/v 프로젝션, 공유 causal-LM 헤드로 독립 학습한 생성형 분류 LoRA이고, READ의 각 append는 동일한 옵티마이저·스케줄·배치·길이로 스테이지 태스크 합집합을 한 번 학습한다. 조작 변수는 인수 좌표계와 G의 학습 마스크뿐이라 데이터 노출이나 튜닝 차이가 아니다. 헤드라인 캠페인은 32개 READ 리니지(2모델 × 4스위트 × 2시드 × 2태스크 순서)와 120개 인접 append로 구성되며, 최종 뱅크를 같은 소스 어댑터로 만든 14개 foldable 대안(텐서 병합 7종, 직접 연산자 3종, 최근 발표 시스템 4종)의 리니지별 최강과 비교한다. READ는 32개 리니지 중 24개에서 그 리니지별 최댓값을 넘어 평균 +0.073(95% CI +0.047~+0.101)을 기록했고, 8개 패배는 전부 BBH에 몰려 있으며 폭도 Llama −0.014, Qwen −0.023으로 좁다. Llama-3.2-3B에서 SuperGLUE는 0.783 대 0.605, Domain은 0.887 대 0.846이고, Qwen3-4B에서는 GLUE가 0.838 대 0.775다. 스위트별 이득은 Llama가 GLUE +0.192, SuperGLUE +0.178, Qwen이 +0.063, +0.088, +0.058이다. 눈에 띄는 대목은 최강 경쟁자가 최신 시스템이 아니라 2022년의 데이터 없는 병합 기법 RegMean인 경우가 18개 리니지로 가장 많다는 점이다. 전체 평균도 RegMean 0.684에 대해 OSRM 0.152, Compress-then-Merge 0.387이고, Llama의 GLUE에서는 14개 대안 중 7개가 0 이하, 즉 병합하지 않는 것보다 나쁜 점수를 냈다.
전제와 한계
중간 단계 안정성도 따로 측정했다. 사전 등록한 규칙(들어온 새 스킬의 Soup-to-refit 격차를 절반 이상 닫고, 옛 태스크 평균 하락이 2점 이내, 최악 하락이 5점 이내)에 대해 READ는 적격 전이 92개 중 72개를 통과했다. GLUE, SuperGLUE, Domain에서는 두 모델 모두 75% 이상이 통과하지만 BBH는 Llama 28.6%, Qwen 40.0%에 그친다. 다만 BBH의 평균 incoming closure는 57.8%와 60.0%로 양수이고 옛 뱅크 손상도 경계 안에 있으므로, 이는 망각 실패가 아니라 획득 실패다. 게이지 검증에서는 같은 어댑터를 동등한 다른 인수분해로 다시 쓰면 하류 점수가 평균 2.8점 흔들리는데, 정준화를 적용하면 그 폭이 0.7점으로 줄어든다. 정규화가 맞춰진 랜덤 인수는 측정된 27개 셀 중 26개에서 학습된 인수보다 나빠, 결합이 일반적인 여유 용량이 아니라 학습된 업데이트의 구조를 활용한다는 것을 보인다. 서빙 쪽에서는 폴딩이 128개 모델-구성 검사 전부에서 비폴딩 연산자를 재현했고 최대 로짓 편차는 4.25×10⁻⁴였다. 폴딩 전 뱅크는 측정한 네 가지 배치-길이 설정에서 평균 10~28% 지연을 더했지만 폴딩 후에는 기본 모델 대비 약 1% 이내로 돌아온다. 배포되는 체크포인트는 6.4~12.9GB의 평범한 모델이고 라우터도 태스크 식별자도 추가 추론 분기도 없다. 같은 어댑터로 학습한 오라클 라우터 상한과 비교하면 폴딩된 모델이 순서 평균 뱅크 크기에서 평균 +0.064 앞선다.
저자들이 명시한 한계는 분명하다. 8개 터미널 패배가 전부 BBH에 집중되어 있고, 그 원인은 뱅크 보존이 아니라 획득이다. 스테이지 합집합을 한 번 통과하는 것으로는 이 태스크들에서 새 스킬의 신호를 충분히 주지 못하며, 읽기 전용 제약은 뱅크를 지킬 뿐 그 부족한 신호를 공급하지는 못한다. 새 스킬의 행에 한 번 이상의 패스를 주거나 동결된 인수보다 풍부한 상태를 주는 것이 가장 추진할 만한 방향으로 제시된다. 평가 범위 밖의 경계도 두 가지 밝힌다. 주 지표가 분류 정확도가 아닌 개방형 생성 구성, 그리고 6개를 넘는 스킬 뱅크인데 후자에서는 학습되는 슬라이스는 선형으로 늘어도 결합 저장이 k에 대해 이차로 증가한다.
실무 관점에서 READ는 태스크별 LoRA를 여러 개 쌓아 두고도 서빙은 하나의 모델로 하고 싶은 상황을 겨냥한다. 라우터나 태스크별 헤드를 유지할 필요가 없고 폴딩 후 지연이 기본 모델과 사실상 같다는 점이 핵심 이득이다. 다만 도입 전에 확인할 것이 있다. 어댑터가 q/v 프로젝션에 r=8로 학습된 생성형 분류 설정을 전제로 하며, BBH처럼 어려운 추론 태스크에서는 새 스킬이 제대로 붙지 않을 수 있고, 검증된 뱅크 크기는 6개까지다. 또 각 솔로 어댑터를 태스크별로 그대로 유지해야 하는 요구가 있다면 라우팅이 여전히 맞는 선택이라고 저자들도 인정한다.