관심 있는 NLP 논문을 읽어보고 간단히 정리했습니다.
혹시 부족하거나 잘못된 내용이 있다면 댓글 부탁드립니다 🙇♂️
[Sakana AI]
- hypernetwork를 활용해 natural language description만으로 LoRA adapter를 single forward pass에 생성하는 Text-to-LoRA (T2L)
- T2L의 아이디어를 context distillation (CD)로 확장, 문서 정보를 즉시 LLM parameter에 internalize하는 Doc-to-LoRA (D2L)
- D2L은 base LLM의 context window를 4배 이상 초과하는 길이에서도 near-perfect retrieval accuracy를 달성
- 두 논문 모두 Sakana AI에서 나왔으며, T2L → D2L로 자연스럽게 발전한 연구 흐름
출처 : https://arxiv.org/abs/2506.06105
출처 : https://arxiv.org/abs/2602.15902
1. Introduction
LLM을 특정 task에 맞춰 adaptation하는 건 이제 거의 필수적인 과정이 되었는데요.
가장 널리 쓰이는 방법 중 하나가 Low-Rank Adaptation (LoRA)입니다.
LoRA는 pre-trained weights를 freeze한 채 low-rank matrices만 학습하는 parameter-efficient fine-tuning 기법인데요.
문제는 매번 새로운 task마다 별도의 dataset을 준비하고, hyperparameter를 조정하면서 fine-tuning을 반복해야 한다는 점입니다. 😰
한편, LLM의 또 다른 핵심 adaptation 방식으로 in-context learning (ICL)이 있는데요.
context window에 관련 정보를 넣어주면 별도 학습 없이도 task를 수행할 수 있지만, Transformer의 quadratic attention cost 때문에 긴 context를 처리할수록 latency와 memory 소모가 급격히 증가합니다.
이를 해결하기 위해 context distillation (CD)이라는 방법이 있는데, context 정보를 model parameter에 직접 internalize하는 방식입니다.
하지만 CD 역시 per-context 학습이 필요해서 실시간 활용에는 한계가 있고요.
Sakana AI에서 나온 두 편의 논문, Text-to-LoRA (T2L, ICML 2025)와 Doc-to-LoRA (D2L, 2026.02 preprint)는 이 문제들을 hypernetwork라는 공통된 프레임워크로 풀어냅니다.
T2L은 "task description만 주면 LoRA를 즉시 생성"하는 방향을, D2L은 "document를 읽고 그 정보를 LoRA에 즉시 internalize"하는 방향을 다루는데요.
같은 팀에서 나온 연속적인 연구이다 보니, D2L 논문에서 T2L을 직접 baseline으로 비교하기도 합니다.
이번 포스트에서는 두 논문을 함께 살펴보면서, hypernetwork 기반 instant LoRA generation이 어떻게 발전해왔는지 정리해보겠습니다.
2. Text-to-LoRA
2.1. Motivation and Core Idea
T2L의 핵심 질문은 두 가지입니다.
(1) 여러 pre-trained LoRA를 하나의 neural network로 end-to-end 압축할 수 있는가?
(2) 자연어 task description만으로 unseen task에 대한 LoRA adapter를 zero-shot으로 생성할 수 있는가?
저자들은 서로 다른 task의 LoRA adapter들이 underlying adaptation mechanism을 공유한다는 가설을 세우고, 이를 hypernetwork로 학습하자는 것이 T2L의 출발점입니다.
hypernetwork이란 다른 network의 parameter를 생성하는 network를 말하는데요.
T2L에서는 task description의 embedding을 입력으로 받아서, 해당 task에 맞는 LoRA의 low-rank matrices A, B를 출력하는 구조입니다.

구체적으로, 각 target module $m$과 layer index $l$에 대해 hypernetwork $h_\theta$가 다음과 같이 LoRA를 생성합니다.
$$\Delta W^i_{m,l} = h_\theta(\phi^i_{m,l})$$
여기서 $\phi^i_{m,l} = \text{concat}[f(z^i), E[m], E[l]]$인데요.
$f(z^i)$는 task description $z^i$의 vector representation이고, $E[m]$과 $E[l]$은 각각 module type과 layer index에 대한 learnable embedding입니다.
중요한 건 $m$과 $l$의 값들을 batching할 수 있어서, 모든 module과 layer의 LoRA를 single forward pass로 생성할 수 있다는 점입니다.
2.2. Architectures: L, M, S
hypernetwork의 대부분의 parameter가 output layer에 집중되는 문제가 있어서, T2L은 output space의 크기를 달리한 세 가지 variant를 제안합니다.

L architecture는 가장 큰 모델로, 한 번에 A와 B matrix를 동시에 출력합니다. output head의 크기가 $d_{out} \times 2 \times r \times d$가 되고요.
M architecture는 A/B embedding을 추가로 도입해서, 한 번에 A 또는 B 하나만 출력합니다. 즉 output head 크기가 절반으로 줄어듭니다.
S architecture는 가장 compact한 모델로, 한 번에 low-rank matrix의 한 rank만 출력합니다. rank embedding까지 추가되어 output head가 $d_{emb} \times d$로 훨씬 작아지고요.
Mistral-7B-Instruct 기준으로 L이 55M, M이 34M, S가 5M trainable parameters를 가집니다.
참고로 LoRA adapter 자체가 3.4M parameters인 걸 감안하면, S는 거의 1~2개 LoRA 수준의 크기로 수백 개의 LoRA를 압축하는 셈입니다.
2.3. Training: Reconstruction vs SFT
T2L의 학습 방식은 크게 두 가지입니다.
첫째, LoRA Reconstruction training입니다.
이미 학습된 task-specific LoRA들의 library가 있을 때, T2L이 이 LoRA들의 weight를 재구성하도록 학습하는 방식인데요.
loss는 단순히 target LoRA와 생성된 LoRA 사이의 L1 distance입니다.
$$\mathcal{L}(\Omega, \theta) = \mathbb{E}_{\Delta W^i \sim \Omega} |\Delta W^i - h_\theta(\phi^i)|$$
이 방식은 기존 LoRA library를 활용할 수 있다는 장점이 있지만, 한 가지 근본적인 문제가 있습니다.
비슷한 task의 LoRA들이 weight space에서 반드시 가까이 있지 않다는 것인데요.
즉, 비슷한 기능을 하는 LoRA라도 서로 다른 local minima에 빠져있을 수 있어서, reconstruction으로 학습한 T2L은 unseen task로의 generalization이 어렵습니다.

실제로 저자들이 분석한 결과를 보면, task description embedding의 similarity와 LoRA weight의 cosine similarity 사이에 거의 상관관계가 없었습니다 (Pearson correlation이 거의 0).
반면 description similarity와 benchmark performance 사이에는 양의 상관관계가 있었고요.
기능적으로 비슷한 LoRA들이 parameter space에서는 흩어져 있다는 사실이, reconstruction 학습의 근본적 한계를 잘 보여주는 것 같습니다.
둘째, Supervised Fine-Tuning (SFT)입니다.
T2L이 생성한 LoRA를 base model에 적용하고, downstream task의 loss를 직접 backpropagate하는 end-to-end 학습 방식입니다.
이 경우 intermediate target LoRA가 필요 없고, T2L이 implicitly 비슷한 task들을 cluster하는 법을 배울 수 있어서 generalization에 훨씬 유리합니다.

실제로 Table 6의 비교 결과에서도 SFT가 reconstruction 대비 평균 4.5점 높은 benchmark performance를 보였습니다.
2.4. Experiments
LoRA Compression 실험에서는 9개 benchmark-specific LoRA를 reconstruction training으로 압축하는 실험인데요.

T2L이 거의 모든 benchmark에서 original task-specific LoRA의 성능을 완벽하게 복원했고, 일부 benchmark (PIQA, WG)에서는 오히려 oracle LoRA를 능가했습니다.
저자들은 이를 lossy compression이 일종의 regularization 역할을 한다고 해석하는데, 납득이 가는 설명입니다.
실제로 PIQA와 WG에서는 original LoRA가 overfitting되어 base model보다 오히려 성능이 낮았거든요.
Zero-Shot LoRA Generation에서는 SFT로 학습한 T2L을 unseen benchmark task에 적용하는 실험입니다.

T2L (SFT) L이 평균 67.7로, multi-task LoRA baseline (66.3)과 Arrow Routing을 일관되게 능가했습니다.
특히 일부 task에서는 task-specific LoRA보다 더 높은 성능을 달성했고요.
Llama-3.1-8B-Instruct와 Gemma-2-2B-Instruct에서도 비슷한 경향이 확인되어, 특정 base model에 종속된 결과가 아닌 것으로 보입니다.

scaling 실험 결과도 흥미로운데요.
training task 수를 늘릴수록 (compute budget도 함께 scaling) zero-shot benchmark performance가 꾸준히 올라갔습니다.
다만 S architecture는 479 task까지 갔을 때 오히려 성능이 살짝 떨어지는데, model capacity의 한계로 보입니다.

t-SNE visualization (Figure 5)에서는 SFT T2L이 서로 다른 task에 대해 실제로 서로 다른 LoRA를 생성하고 있음을 확인할 수 있습니다.
의미적으로 유사한 task (예: MBPP와 HumanEval)끼리 cluster되는 것도 인상적이고요.

개인적으로 T2L에서 가장 흥미로웠던 건 Figure 4의 steerability 예시인데요.
같은 수학 문제에 대해 description의 뉘앙스를 바꾸면 (예: "mathematical reasoning" vs "programming skill") 서로 다른 reasoning path를 거쳐 답을 내는 것을 확인할 수 있습니다.
단순히 성능을 높이는 것 뿐 아니라, user가 description을 통해 LLM의 행동을 제어할 수 있다는 점이 T2L의 독특한 강점이라고 생각합니다.
3. Doc-to-LoRA
3.1. From T2L to D2L: What Changed?
T2L이 "task description → LoRA"였다면, D2L은 "document/context → LoRA"로 문제를 확장합니다.
T2L은 짧은 task description embedding을 입력으로 받았지만, D2L은 수천~수만 token 길이의 실제 document를 처리해야 하고요.
목표도 다릅니다. T2L은 task-specific capability를 부여하는 것이었다면, D2L은 specific knowledge를 LLM parameter에 internalize하는 것이 목표입니다.
핵심적인 차이를 정리하면 이렇습니다.
T2L은 external text encoder (gte-large-en-v1.5 등)로 task description을 embedding한 후 MLP-based hypernetwork에 넣었는데, D2L은 target LLM 자체의 intermediate layer activations를 입력으로 사용합니다.
아키텍처도 MLP에서 Perceiver-based cross-attention으로 바뀌었고요.
학습 objective 역시 SFT/reconstruction에서 context distillation (KL divergence) 기반으로 변경되었습니다.
이런 변화들이 왜 필요했는지는 D2L의 구조를 보면 자연스럽게 이해가 됩니다.
3.2. Architecture
D2L의 hypernetwork은 target LLM의 per-layer token activations를 입력으로 받습니다.
context $c$를 frozen target LLM에 통과시키면 $Z \in \mathbb{R}^{L \times N \times D}$를 얻을 수 있는데요.
여기서 $L$은 Transformer layer 수, $N$은 token 수, $D$는 hidden size입니다.
각 layer $l$에 대해, shared hypernetwork $h_\phi$가 이전 layer의 activations $Z_{l-1}$을 받아 해당 layer의 LoRA를 생성합니다.
$$h_\phi(Z_{l-1}) = \Delta W_l = B_l A_l$$
T2L과 달리 입력 길이가 가변적이기 때문에, Perceiver-style cross-attention을 사용하는 것이 핵심인데요.
$r$개의 learnable latent queries $Q_m \in \mathbb{R}^{r \times d_q}$가 $Z_{l-1}$에 cross-attend하여, variable-length input을 fixed-size output으로 mapping합니다.
$$U_l = \text{XAttn}(Q_m, K(Z_{l-1}), V(Z_{l-1})) \in \mathbb{R}^{r \times d_u}$$
이렇게 나온 latent vectors를 per-layer output head가 LoRA의 A, B matrix로 변환합니다.

Long-Context Composition via Chunking 메커니즘이 D2L의 또 다른 핵심인데요.
긴 context를 $K$개의 chunk로 나누어 각각 독립적으로 hypernetwork를 통과시킨 후, rank dimension을 따라 concatenate합니다.
$$A_l = \begin{bmatrix} A_l^{(1)} \\ \vdots \\ A_l^{(K)} \end{bmatrix}, \quad B_l = [B_l^{(1)} \cdots B_l^{(K)}]$$
결과적으로 총 rank는 $r \cdot K$가 됩니다.
이 방식의 장점은 hypernetwork의 output shape을 바꾸지 않으면서도, 긴 context에 대해 자연스럽게 higher-rank LoRA를 만들 수 있다는 것입니다.
이 덕분에 training 때 최대 256 token만 봤는데도, inference 때 32K+ token의 document를 처리할 수 있게 됩니다.
3.3. Meta-Training Objective
D2L의 학습 objective는 context distillation을 meta-learning하는 것입니다.
"teacher" (context가 있는 LLM)와 "student" (context 없이 D2L이 생성한 LoRA만 가진 LLM) 사이의 KL divergence를 최소화합니다.
$$\min_\phi \mathbb{E}_{(c, D_c) \sim D} \mathbb{E}_{(x,y) \sim D_c} \text{KL}\big(p_\theta(y|x,c) \| p_{\theta + H_\phi(c)}(y|x)\big)$$
여기서 $c$는 context, $x$는 query, $y$는 teacher가 생성한 response입니다.
이 objective가 T2L의 SFT loss와 다른 점은, ground-truth token을 직접 맞추는 게 아니라 teacher distribution 전체를 matching한다는 것인데요.
Appendix의 ablation에서도 KL loss가 next-token prediction (NTP) loss보다 더 나은 generalization을 보여줬습니다.
저자들은 KL distillation이 teacher의 uncertainty와 alternative modes까지 전달해주기 때문이라고 해석하고 있고, 저도 이 설명이 타당하다고 봅니다.
training data는 FineWeb-Edu에서 추출한 약 900M token 분량의 context에 대해, gemma-3-12b-it로 context-grounded query를 생성하고, gemma-2-2b-it (base model)로 self-response를 만드는 파이프라인을 사용했습니다.
총 약 1억 개의 unique context-query-response triplet이 만들어졌고요.
D2L의 hypernetwork은 309M trainable parameters로, 8개의 cross-attention block (self-attention 없음)으로 구성되어 있습니다.
생성되는 LoRA는 rank-8이고, MLP block의 "down projection" layer에만 적용됩니다.
T2L이 attention의 Q, V projection에 적용한 것과는 target module이 다른데, 이 선택의 이유가 논문에서 명시적으로 설명되지 않은 건 약간 아쉬운 부분입니다.
3.4. Experiments
3.4.1. Needle-in-a-Haystack (NIAH)
D2L의 internalization 능력을 가장 직관적으로 보여주는 실험인데요.
haystack 안에 숨겨진 4자리 숫자 (needle)를 찾는 task에서, D2L은 context를 LoRA로 internalize한 후, context 없이 query만으로 needle을 정확히 retrieval해야 합니다.

결과가 꽤 인상적입니다.
D2L은 training 때 최대 256 token (8 chunks)만 봤음에도, 8K token까지 base model with context와 동일한 perfect accuracy를 달성했습니다.
더 놀라운 건, base model의 context window (8K)를 넘어선 32K+ token에서도 near-perfect accuracy를 유지했다는 점인데요.
base model은 8K를 넘어가면 성능이 급격히 떨어지는 반면, D2L은 약 40K token (40 chunks)까지 높은 성능을 보여줬습니다.
memory 측면에서도 이점이 큰데요.
128K token haystack 기준으로 base model은 12GB 이상의 추가 memory가 필요한 반면, D2L은 50MB 미만으로 일정하게 유지됩니다.
물론 이건 synthetic task이고, needle이 하나인 비교적 단순한 설정이라는 점은 감안해야 합니다.
하지만 256 token으로 학습한 모델이 32K+ token에서 작동한다는 사실 자체가, chunking 메커니즘의 compositionality가 실제로 동작한다는 강력한 evidence라고 생각합니다.
3.4.2. Reading Comprehension QA
SQuAD, DROP, ROPES 세 가지 reading comprehension benchmark에서의 결과입니다.

D2L은 모든 in-parameter knowledge baseline을 능가했는데요.
SQuAD에서 ICL upper bound 대비 82.5%의 relative performance를 달성했습니다.
이건 LLMLingua-2로 context를 40%로 압축한 것과 비슷한 수준인데, D2L은 context를 아예 제거한다는 점에서 더 의미가 있습니다.
하지만 D2L의 진짜 강점은 efficiency에 있습니다.
CD (oracle)이 약 40초, CD (generated queries)가 100초 이상 걸리는 반면, D2L은 batched mode에서 0.2초, iterative mode에서 0.5초 정도면 internalization이 완료됩니다.
memory도 D2L이 2GB 미만인 반면, CD (generated queries)는 40GB 이상을 사용하고요.
T2L도 instant update가 가능하긴 하지만, task description 기반 SFT 데이터로 학습된 특성상 knowledge internalization에는 효과적이지 못했습니다.
D2L 논문에서 T2L을 직접 baseline으로 비교하고 있는데, T2L의 성능이 base model without context와 크게 다르지 않은 걸 보면, 같은 hypernetwork 기반이라도 training objective와 architecture design이 얼마나 중요한지 알 수 있습니다.
3.4.3. Long-Context QA
2WikiMultihopQA, MultiFieldQA, QASPER 세 가지 long-document QA benchmark에서의 결과입니다.
test sample의 길이가 최대 32K token까지 가는데, D2L의 training data는 최대 2,344 token이었다는 점이 중요합니다.


D2L은 training 때 한 번도 보지 못한 긴 문서에 대해서도 효과적으로 internalize했습니다.
2WikiMultihopQA에서 CD (oracle) 대비 거의 비슷한 수준의 성능을 보여줬고요 (0.857 vs 0.901).
CD (5 generated queries)가 79GB의 VRAM을 사용하는 반면, D2L (iterative)은 3.8GB만 사용하면서도 더 높은 성능을 달성했습니다.
재밌는 발견 중 하나는, D2L로 internalize한 후에 truncated context를 다시 제공하면 성능이 오히려 약간 올라가는 현상인데요.
저자들은 이를 lost-in-the-middle 현상과 attention noise와 연결지어 해석합니다.
D2L이 핵심 정보를 parameter에 넣어놓으면, context에서의 attention noise가 줄어들어 오히려 도움이 된다는 거죠.
이 해석이 완전히 검증된 건 아니지만, 흥미로운 관찰이라고 생각합니다.
3.4.4. Zero-Shot Visual Information Transfer
D2L의 context encoder를 VLM (gemma-3-4b-it)으로 바꿔서, 이미지 정보를 text-only LLM (gemma-2-2b-it)의 LoRA로 변환하는 실험입니다.
D2L은 training 때 이미지를 한 번도 본 적이 없음에도 불구하고, Imagenette (10-class subset of ImageNet)에서 75.03%의 accuracy를 달성했습니다.
random guess가 10%인 걸 감안하면, 시각 정보가 실제로 LoRA parameter를 통해 전달되고 있다는 뜻입니다.

물론 text QA 성능은 LLM encoder 대비 떨어지긴 합니다 (SQuAD: 0.814 → 0.705).
하지만 modality가 다른 encoder에서 text-only model로 정보를 전달할 수 있다는 가능성 자체가 의미 있다고 봅니다.
향후 더 정교한 architecture나 cross-modal training이 추가되면 어떤 결과가 나올지 궁금합니다.
3.5. Analyses

Knowledge Interference 실험에서는 D2L의 한계도 확인됩니다.
internalize한 내용과 무관한 query를 던졌을 때, D2L이 적용된 모델의 성능이 base model보다 오히려 떨어지는데요.
저자들은 D2L이 "이후 query가 항상 internalized knowledge와 관련될 것"이라는 strong prior를 학습했을 수 있다고 분석합니다.
training data가 항상 context-related query만 포함하다 보니 생긴 bias인 것 같은데, 실제 배포 환경에서는 irrelevant query도 섞여 들어올 수 있으니 해결이 필요한 부분입니다.

Query Internalization 실험도 흥미로운데요.
document 대신 query를 internalize하는, 즉 training 때와 완전히 반대되는 extreme generalization test입니다.
성능이 떨어지긴 하지만 no-context baseline (0.185)보다 훨씬 높은 recall (0.587)을 보여서, D2L이 단순히 "document를 외우는" 것이 아니라 어느 정도 generic한 information mapping을 학습했다는 것을 시사합니다.
4. Conclusion and Discussion
두 논문을 함께 읽어보니, hypernetwork 기반 instant LoRA generation이라는 아이디어가 어떻게 발전해왔는지 흐름이 잘 보입니다.
T2L은 "task description → LoRA"라는 간결하면서도 강력한 프레임워크를 제시했고, 세 가지 architecture variant (L/M/S)와 두 가지 training scheme (reconstruction/SFT)에 대한 체계적인 ablation이 인상적이었습니다.
특히 reconstruction training이 왜 generalization에 실패하는지를 LoRA weight space 분석으로 설명한 부분이 논문의 설득력을 높여주는 좋은 분석이었다고 생각합니다.
D2L은 T2L의 프레임워크를 context internalization으로 자연스럽게 확장하면서, 몇 가지 핵심적인 개선을 도입했습니다.
Perceiver-based architecture로 variable-length input을 처리하고, chunking으로 long context를 composable하게 만들고, KL-based CD objective로 더 robust한 학습을 가능하게 한 것인데요.
결과적으로 256 token으로 학습해서 32K+ token에서 동작하는 놀라운 generalization을 보여줬습니다.
두 논문 모두 practical efficiency를 강조하는데, 이 점이 단순히 academic contribution을 넘어서 실제 deployment 가능성을 열어준다고 봅니다.
T2L의 4x FLOPs 절감이나, D2L의 sub-second internalization + minimal memory usage는 실제 서비스 환경에서 큰 차이를 만들 수 있는 수치고요.
아쉬운 점도 있습니다.
T2L은 아직 task-specific LoRA의 성능을 zero-shot으로 완전히 따라잡지는 못했고, task description의 quality에 민감하다는 한계가 있습니다.
D2L은 knowledge interference 문제가 있고, meta-training 자체가 여전히 비싼 과정 (8 H200 GPU에서 5일)이라는 점이 걸립니다.
또한 D2L이 새로운 target LLM마다 hypernetwork를 재학습해야 한다는 것도 scalability 측면에서 고려할 부분이고요.
그래도 전체적으로, "자연어만으로 LLM을 즉시 adaptation"한다는 방향 자체는 매우 매력적입니다.
특히 D2L의 VLM → LLM transfer 실험 같은 건, hypernetwork가 단순히 text information만 전달하는 게 아니라 cross-modal knowledge transfer의 도구가 될 수 있음을 보여주는 것 같아서 향후 발전이 기대됩니다.
inference-time training이나 continual learning, personalization 쪽으로 확장될 가능성이 충분해 보이고, 이 방향의 후속 연구가 어떻게 전개될지 지켜보면 좋을 것 같습니다.