2025.09.02 - [인공지능/논문 리뷰 or 진행] - Language Model 파라미터 감소(Pruning) 논문 2
Language Model 파라미터 감소(Pruning) 논문 2
2025.08.08 - [인공지능/논문 리뷰 or 진행] - Language Model (LM) Pruning 논문 1 Language Model (LM) Pruning 논문 1https://arxiv.org/abs/1803.03635 The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural NetworksNeural network pruning t
yoonschallenge.tistory.com
여기서 계속 이어지네요 ㅎㅎ
https://arxiv.org/abs/2501.00339
GRASP: Replace Redundant Layers with Adaptive Singular Parameters for Efficient Model Compression
Recent studies have demonstrated that many layers are functionally redundant in large language models (LLMs), enabling model compression by removing these layers to reduce inference cost. While such approaches can improve efficiency, indiscriminate layer p
arxiv.org
단순 Activation이 크다고 중요한 것이 아니다! 라고 말하며 중요한 것을 찾아낸 논문입니다.

| 문제 상황 | LLM에는 기능적으로 중복된 레이어가 있어 레이어 프루닝으로 효율을 올릴 수 있지만, 무분별한 제거는 표현 흐름을 깨 성능 하락과 PPL 증가를 유발함. 경량 모듈로 대체해도 무작위 초기화 때문에 추가 학습 비용↑. GRASP는 이 문제를 겨냥. |
| 핵심 아이디어/프레임워크 | 레이어를 없애지 않고, 중복 레이어의 가중치를 SVD로 분해한 뒤 그라디언트 기반 중요도로 핵심 특이 성분(랭크-1 그룹)만 남겨 저랭크 치환. 훈련 없이도 성능을 유지하고, 필요 시 소량 보상학습으로 빠르게 회복. |
| 방법론(요약) | ① 중복 레이어 선택: 인접 은닉상태 H_i,H_{i+1} 코사인 유사도가 높은 레이어는 변환량이 작아 중복으로 간주. ② 치환: 각 중복 레이어의 W에 대해 SVD 후, Φk={u_k,σ_k,v_k^⊤} 단위로 중요도 I(Φ_k) 계산(손실의 테일러 1차·그라디언트 투영). ③ 상위 r% Φ_k만 남겨 W~ 재구성. |
| Pruning 절차(순서) | Algorithm 1 (실무 체크리스트) 1) 모든 레이어에 대해 cos(Hi,Hi+1) 계산 → 2) 유사도 상위 L개 레이어를 중복으로 선정 → 3) 역순으로 레이어 처리 시작 → 4) 각 중복 레이어에서 W ∈ {attention, MLP} 순회 → 5) SVD: W=UΣV^⊤ → 6) 각 특이 그룹 Φ_k에 대해 I(Φ_k) 계산(식 6) → 7) 상위 r% Φ_k만 유지, W~ 재구성 → 8) 모든 중복 레이어 완료 후 압축 모델 M~ 반환. (실무 팁: one-shot이 iterative와 성능 유사하지만 더 빠름). |
| 실험 설정(요지) | 모델: LLaMA 2-7B/13B, LLaMA 3.1-8B-Instruct, Mistral-7B 등. 비교군: 레이어/저랭크 프루닝 계열(FWSVD, ASVD, SVD-LLM 등). 칼리브레이션 데이터: 주로 WikiText-2(또는 C4), 샘플 수 64~512. 보상학습(옵션): Alpaca 1 epoch, batch=32, AdamW 3e-4, LoRA q/k/v/o + up/down/gate. |
| 주요 결과 | Zero-shot(훈련 없이): LLaMA-3.1-8B-Instruct 20% 압축에서 평균 최고 정확도, SliceGPT 대비 +34%p, LaCo 대비 +12%p. 다양 비율: 20%에서 원성능 91%+, 30%에서 87%, 50%에서도 경량 보상학습으로 70% 수준 회복. LongBench에서도 20% 압축으로 경쟁력 유지. |
| 효율(시간/속도) | 추론 처리량↑: 25% 압축에서 시퀀스 길이·배치 전반에 걸쳐 토큰/초 증가, 직접 레이어 삭제와 유사한 가속. 압축 시간(LLaMA2-7B, 25%): GRASP 0.16h, 보상학습 불필요(필요 시 0.66h). |
| Ablation(민감도) | 캘리브레이션 데이터 종류/크기에 강건: WikiText-2↔C4 교체 및 64~512 샘플 변화에 최종 성능 변동 ~4% 이내. One-shot vs Iterative: 성능 비슷, One-shot이 더 빠름(0.16h vs 0.22h). |
| 기여(논문 자가정리) | ① 훈련 없이도 동작하는 중복 레이어 저랭크 치환 프레임워크 제안. ② 그라디언트 기반 특이값 선택으로 크기 기반 휴리스틱의 한계 보완. ③ 두 LLM 패밀리·다양 데이터셋에서 일관된 성능/효율 입증. |
| 한계(저자 명시) | ① 코사인 유사도로 중복을 잡는 휴리스틱이 과제/분산 표현의 미묘한 중복을 놓칠 수 있음. ② 그라디언트·소량 데이터 접근 필요 → 블랙박스/프라이버시 제약 환경에 부적합. ③ 13B·영어 중심 실험으로, 초대형·다국어 일반화는 추가 검증 필요. |
한 문장 요약
GRASP는 인접 은닉상태의 변화가 거의 없는 ‘중복(redundant)’ 레이어를 골라 그 레이어 전체를 없애지 않고, SVD의 일부(랭크-1 성분)만 중요도 순으로 남기는 방식으로 치환하여, 훈련 없이도 성능을 보존하고 필요하면 소량 데이터의 짧은 보상 학습으로 빠르게 복구하는 LLM 압축 기법입니다.
1) 문제 상황 (왜 이 방법이 필요한가)
- 레이어 프루닝은 속도/메모리 효율을 주지만, 표현 흐름의 교란으로 성능 저하가 잦습니다(중간 표현 불일치·perplexity 상승).
- 기존 대안(경량 모듈 삽입·LoRA 보정 등)은 추가 학습 비용이 큽니다.
- GRASP는 중복 레이어의 저랭크 구조를 이용해, 레이어를 통째로 제거하지 않고 그 레이어의 핵심 특이 성분만 유지하여 정확도와 효율을 동시에 잡는 접근을 제시합니다.
2) 방법론: 단계별(Algorithm 1) 정리
단계 A. 중복 레이어 선택 (Redundant Layer Selection)
- 각 레이어 i의 입력·출력 은닉상태 Hi,Hi+1H_i, H_{i+1} 사이 코사인 유사도를 계산하여(cos(Hi, Hi+1)) 변환량이 작은(유사도↑) 레이어를 상위 L개 중복 레이어로 지정.
- 이 절차는 선행연구를 따르며, 레이어 변환이 미미한 곳 = 기능적 중복이라는 가정입니다.
→ 근거: Algorithm 1의 2~3행.
단계 B. 중복 레이어의 저랭크 치환 (Layer Replacement with Adaptive Singular Parameters)
- 중복 레이어의 각 가중치 행렬 WW (attention/MLP)을 SVD 분해: W=UΣV⊤=∑kukσkvk⊤W = U\Sigma V^\top = \sum_k u_k \sigma_k v_k^\top. 여기서 Φk={uk,σk,vk⊤}\Phi_k=\{u_k,\sigma_k,v_k^\top\}를 특이 성분 그룹이라 정의.
- 중요도 점수 I(Φk)I(\Phi_k): 작은 칼리브레이션 데이터(예: WikiText-2)를 사용해 언어모델링 손실의 1차 테일러 근사로 각 Φk\Phi_k가 제거될 때의 손실 변화를 추정(그라디언트 기반 기여도).
- 각 WW에서 상위 r%의 특이 성분 그룹만 유지해 W~\tilde{W} 재구성(나머지는 버림).
- 레이어들을 역순으로 처리하여 상호작용을 고려(One-shot 또는 Iterative 모두 유사 성능, One-shot이 더 효율).
핵심: “큰 특이값 = 중요”가 아님. 작은 특이값도 과제 성능에 중요할 수 있음 → 단순 top-k(크기순) 대신 그라디언트 기반 기여도로 선별.
선택적 단계 C. 소량 보상 학습(Post-training Compensation)
- 필요 시, Alpaca 1epoch 등 소량 데이터·짧은 시간으로 성능을 빠르게 복구(실험에선 각 중복 레이어에서 10% 파라미터만 학습 허용으로 공정 비교).
3) 왜 타당한가 (설계 근거)
- 저랭크 가정: 중복 레이어는 본질적으로 저랭크 구조를 띠므로 소수의 특이 방향만으로 기능을 근사 가능.
- 크기 대신 기여도: 특이값의 대소가 다운스트림 성능 기여도와 일치하지 않음(민감도 분석) → 그라디언트 기반 중요도로 선별해야 안정적.
- 훈련비용 최소화: 무작위 경량모듈 삽입 대비, 원래 스펙트럼의 핵심 성분을 보존하므로 보상학습 수렴이 빠르고 샘플 효율↑.
4) 실험 설정(요지)
- 모델: LLaMA(7B, 2-7B, 2-13B, 3.1-8B-Instruct), Mistral-7B.
- 비교 기법: ShortGPT, LaCo, LLM-Streamline(레이어/모듈 프루닝), LLM-Pruner, SliceGPT, 저랭크류(FWSVD, ASVD, SVD-LLM).
- 칼리브레이션 데이터: 기본 512 샘플(WikiText-2).
- 압축비: 주로 20
25%(또한 3050% 구간 실험). - 평가: 7개 상식추론(OBQA, WinoG., HellaSwag, PIQA, ARC-e/c, MathQA) 중심, 추가로 광범위 NLU/QA·LongBench·GSM8K 등.
5) 주요 결과
- Zero-shot(보상학습 없이): LLaMA-3.1-8B-Instruct 20% 압축에서 GRASP가 평균 최고 정확도(SliceGPT 대비 +34%p, LaCo 대비 +12%p).
- 보상학습 적용 시(Alpaca 1epoch, 각 레이어 유지 10% 학습 허용): 원모델의 94.9% 성능(25% 압축)로, LLM-Streamline 계열보다 평균 우수.
- 다양 모델·압축비: 20~30%에서도 91%~87% 성능 유지, 50%에서도 가벼운 보상학습으로 70% 수준 복구 가능.
- LongBench: 20% 압축 + 보상학습에서 복잡 생성·롱폼 과제 성능 유지 보고.
6) 데이터 민감도·전략(Ablation)
- 칼리브레이션 데이터 종류·크기 민감도 낮음: C4/WikiText-2 등 교체, 64 샘플만으로도 강건(최종 성능 변동폭 ~4% 이내).
- One-shot vs Iterative: 성능 유사, One-shot이 더 빠름(예: 20% 압축에서 0.16h vs 0.22h).
7) 비용·효율
- 압축 시간: A100 단일 GPU, 25% 비율에서 아주 짧음(표 4).
- 추론 처리량: 25% 압축 모델은 시퀀스·배치 전반에서 높은 처리량(Throughput) 달성.
- 훈련 없는 운용 가능(필요 시 소량 보상학습만).
8) 한계(논문 명시)
- 코사인 유사도 기반 중복 판단은 과제/분산 표현의 미묘한 중복을 놓칠 수 있음.
- 그라디언트·내부표현 접근과 소량 데이터의 필요 → 완전 블랙박스/프라이버시 제약 환경에 제약.
- 13B까지·영어 중심 평가: 멀티링구얼·초대형 모델 확장 검증 필요.
9) 독해 포인트 & 오해 바로잡기
- “하위 n% 버리고 원본 로그릿을 맞추도록 재학습?”
→ GRASP는 로그릿 증류/지식증류가 핵심이 아닙니다. 핵심은 그라디언트 기반 중요도로 특이 성분 그룹을 상위 r%만 유지하여 레이어를 저랭크로 치환하는 것입니다. 보상학습은 선택적이며 Alpaca 1epoch 정도의 가벼운 파인튜닝으로 빠른 회복을 보입니다.
10) 재현 체크리스트 (실무용 요약)
- 입력: (모델) LLaMA/Mistral 계열, (데이터) 칼리브레이션 64~512 샘플이면 충분.
- A단계: 인접 은닉상태 코사인 유사도 상위 L개 레이어 선택.
- B단계: 각 중복 레이어의 attention/MLP 가중치에 SVD → Φk\Phi_k별 1차 그라디언트 기반 중요도 → 상위 r%만 유지하여 W~\tilde{W} 재구성.
- 순서: 역순 처리, 가능하면 One-shot으로 빠르게 진행.
- 선택: 성능↑ 필요 시 Alpaca 1epoch 보상학습(레이어당 유지 10% 파라미터만 학습 허용으로 공정 비교 가능).
11 한 표로 끝내는 핵심 정리
구분 내용| 문제 상황 | 레이어 프루닝은 효율↑지만 표현 교란으로 성능 저하·보상학습 비용↑ |
| 핵심 아이디어 | 중복 레이어를 통째 제거하지 않고, SVD 특이 성분 그룹 중 **그라디언트 기반 중요도 상위 r%**만 남겨 저랭크 치환 |
| 중복 레이어 판별 | 인접 은닉상태 코사인 유사도 상위 L개 선택 |
| 중요도 산출 | 손실의 1차 테일러 근사(언어모델링 목적)로 특이 성분 그룹 기여도 I(Φk)I(\Phi_k) 계산 |
| 치환 절차 | (역순) 각 W에 SVD → Φk\Phi_k별 중요도 → 상위 r%만 유지해 W~\tilde{W} 재구성 |
| 데이터 요구 | 칼리브레이션 64~512 샘플로 충분, 데이터 종류 바꿔도 강건(변동 ~4%) |
| 학습 비용 | 훈련 없이도 운용 가능, 필요 시 Alpaca 1epoch로 빠른 회복 |
| 성능(대표) | 20~25% 압축: 94.9% 원성능(보상학습 포함), zero-shot에서도 SOTA 대비 우수 |
| 효율 | A100 단일에서 압축 시간 짧음, 추론 처리량↑ |
| 한계 | 코사인 기반 중복 판단의 한계, 그라디언트·내부 접근 필요(블랙박스 제약), 13B/영어 중심 평가 |
마지막 코멘트
- GRASP는 “레이어 삭제”가 아니라 “레이어를 저랭크 핵심 성분으로 치환”하는 방식입니다.
- 질문 주신 대로 “하위 n% 제거 + 원본 로그릿 따라 재학습”이 핵심이 아니며, 그라디언트 기반 중요도 선별과 선택적 소량 보상학습이 포인트입니다.
- 실험적으로 64 샘플만으로도 충분히 동작한다는 점이 압축 파이프라인 실사용 관점에서 매우 매력적입니다.
필요하시면, **당장 쓰실 수 있는 스크립트 뼈대(SVD 분해·그라디언트 중요도 산출·역순 One-shot 치환 루프)**를 여러분의 LLaMA/Mistral 파이프라인에 맞춰 만들어드릴게요.
아래 내용은 업로드하신 GRASP: Replace Redundant Layers with Adaptive Singular Parameters 논문을 “방법론 중심”으로 재구성한 것입니다. 핵심 수식·절차·실험 조건은 논문 본문에 근거를 달았습니다.
무엇을 하려는가 (문제 정의 → 핵심 아이디어)
- 문제: 레이어 프루닝은 효율은 좋아지지만, 중간 표현 흐름을 깨뜨려 성능 하락이 잦습니다. 기존 대안(새 모듈 삽입·LoRA 보상)은 학습비용이 큽니다. GRASP는 “레이어를 없애지 않고” 저랭크 핵심 성분만 남겨 치환합니다. 즉, **중복 레이어(redundant layer)**를 찾아 그 안의 가중치 행렬을 SVD로 쪼갠 뒤, 작은 칼리브레이션 데이터에서의 그라디언트 기반 중요도로 상위 r%의 특이 성분 그룹만 유지합니다. 훈련 없이도 동작하고, 필요하면 소량 보상학습으로 빠르게 회복합니다(Alpaca 1 epoch 예시).
방법론: 단계별로 (논문 Algorithm 1 기반)
1) 중복 레이어 선별 (Redundant Layer Selection)
- 아이디어: 인접 은닉 상태 Hi,Hi+1H_i, H_{i+1} 사이의 코사인 유사도가 높을수록 “변환이 적다 = 기능상 중복”으로 판단해 상위 L개 레이어를 후보로 고릅니다.
cos(Hi,Hi+1)=Hi⊤Hi+1∥Hi∥2∥Hi+1∥2\mathrm{cos}(H_i,H_{i+1})=\frac{H_i^\top H_{i+1}}{\|H_i\|_2\|H_{i+1}\|_2}
근거: GRASP는 선행 연구를 따라 인접 은닉 유사도로 레이어 중요도를 측정하고, 이 값이 가장 높은 레이어 L개를 “중복 레이어”로 지정합니다(Algorithm 1, 1–4행).
2) 저랭크 치환 (Layer Replacement with Adaptive Singular Parameters)
- 각 중복 레이어의 **attention/MLP 가중치 행렬 WW**에 대해 SVD:
W=UΣV⊤=∑kukσkvk⊤W = U\Sigma V^\top = \sum_k u_k \sigma_k v_k^\top.
여기서 특이 성분 그룹 Φk={uk,σk,vk⊤}\Phi_k=\{u_k,\sigma_k,v_k^\top\} 단위로 중요도를 평가합니다. - 왜 단순 top-σ가 아닌가? 특이값 크기 순서와 다운스트림 성능 기여도는 일치하지 않을 수 있습니다(작은 특이값이 더 중요할 때 있음). 그래서 크기 기반이 아니라 그라디언트 기반 기여도로 선별합니다.
- 중요도 점수 I(Φk)I(\Phi_k): 소량 칼리브레이션 데이터(예: WikiText-2)에서 손실의 테일러 전개(2차식에서 1차만 사용)로 “Φk\Phi_k를 0으로 만들 때 손실 변화”를 근사합니다. 실용상 1차항(그라디언트)만 써서
I(Φk)=∣σk∂L∂σk∣+∑i∣uk,i∂L∂uk,i∣+∑i∣vk,i∂L∂vk,i∣\displaystyle I(\Phi_k)=\big|\sigma_k\frac{\partial L}{\partial \sigma_k}\big|+\sum_i\big|u_{k,i}\frac{\partial L}{\partial u_{k,i}}\big|+\sum_i\big|v_{k,i}\frac{\partial L}{\partial v_{k,i}}\big|
로 계산합니다.- 이때 ∂L/∂σi=ui⊤(∂L/∂W) vi\partial L/\partial \sigma_i = u_i^\top(\partial L/\partial W)\,v_i, 즉 가중치 그래디언트가 해당 특이 방향으로 얼마나 투영되는지를 뜻합니다(부록 A.1 유도).
- 보존·치환: Φk\Phi_k들 중 I(Φk)I(\Phi_k) 상위 r%만 유지하여 W~\tilde W를 재구성합니다. 모든 중복 레이어를 “뒤에서 앞으로(역순)” 처리합니다(One-shot 권장).
실행 순서 요약(Algorithm 1): (i) 모든 레이어에 대해 cos 유사도 → 상위 L개 중복 레이어 선정 → (ii) 각 중복 레이어의 attention/MLP 가중치에 SVD → Φk\Phi_k별 I(\Phi_k) 계산 → **상위 r%**만 남겨 WW 치환 → 레이어를 역순으로 진행.
3) (선택) 소량 보상학습
- 훈련 없이도 잘 작동하지만, 필요 시 Alpaca 1 epoch·AdamW·LR 3e-4·LoRA 타깃 q/k/v/o & up/down/gate 구성으로 짧게 보상학습하여 성능을 재빨리 회복합니다(실험 A.2 설정).
직관 예시 (작은 장난감 행렬로)
- 어떤 중복 레이어의 FFN 가중치가 W∈R2×2W\in\mathbb{R}^{2\times 2}라고 합시다.
W=UΣV⊤=u1σ1v1⊤+u2σ2v2⊤W = U\Sigma V^\top = u_1\sigma_1 v_1^\top + u_2\sigma_2 v_2^\top.
일반 SVD 압축이라면 σ1>σ2\sigma_1 > \sigma_2면 무조건 σ1\sigma_1만 남기겠죠. - GRASP는 **칼리브레이션 샘플(예: 64–512개)**로 ∂L/∂W\partial L/\partial W를 구해 특이 방향 투영 gi=ui⊤(∂L/∂W)vig_i=u_i^\top(\partial L/\partial W)v_i을 계산합니다. 만약 ∣σ2⋅g2∣>∣σ1⋅g1∣|\sigma_2\cdot g_2| > |\sigma_1\cdot g_1|라면, **작아 보이는 σ2\sigma_2**가 더 성능에 중요하다고 판단되어 Φ2\Phi_2를 먼저 보존합니다. 이렇게 크기 대신 기여도로 고르기 때문에, 작은 특이값이지만 다운스트림 성능 핵심을 놓치지 않습니다.
왜 타당한가 (이론/실증 근거)
- 중복 레이어의 저랭크성: 중복 레이어는 소수의 특이 방향이 성능을 “지배”하는 경향이 있음 → 저랭크 치환으로 본질 기능 보존 가능(민감도 분석 Fig.2 관찰).
- 크기≠기여도: 특이값 크기 순서가 성능 기여도와 일치하지 않음 → 그라디언트 기반 중요도 필요.
- 훈련 비용 최소화 & 빠른 회복: 핵심 저랭크 성분을 보존하므로, 무작위 경량모듈 대비 보상학습 수렴이 빠르고 샘플 효율↑. 훈련 없이도 우수, 보상 시 더 빠름.
실증: LLaMA/Mistral 등 다수 모델·과제에서 훈련 없이도 강한 성능, 20% 압축에서 원성능 ~90%(요약) 및 보상 시 추가 회복을 확인. 또한 칼리브레이션 64–512 샘플 및 데이터 종류(C4 vs WikiText-2) 변화에도 강건. One-shot이 Iterative와 성능 유사하면서 빠름(0.16h vs 0.22h).
구현·응용 팁 (실무 관점)
- 대상 가중치: 중복 레이어의 attention과 MLP 블록 모두 적용(Algorithm 1).
- 처리 순서: 뒤에서 앞으로(역순) 처리하면 상호작용을 줄이며 안정적(one-shot 추천).
- 데이터 요구: WikiText-2 512 샘플이 기본이지만, 64 샘플로도 유의미. C4 등 대체해도 강건.
- 보상학습(옵션): Alpaca 1 epoch + AdamW 3e-4, 단일 A100로 재현 가능(부록 설정 표 참고).
한계와 주의점
- 중복 판별의 한계: 인접 은닉의 코사인 유사도만으로 모든 과제·도메인에서의 “실질적 중복”을 완벽히 포착하긴 어렵습니다(과제 특이 표현 변환은 놓칠 수 있음).
- 화이트박스 요구: ∂L/∂W\partial L/\partial W 계산과 소량 칼리브레이션 데이터가 필요합니다. 완전 블랙박스·민감 데이터 환경에서는 제약.
- 스케일/언어 일반화: LLaMA·Mistral 중심 실험. 초대형·멀티링구얼 전범위로의 일반화는 추가 검증 필요.
요약 표 (방법 핵심만 한눈에)
항목 핵심| 중복 레이어 선별 | 인접 은닉 Hi,Hi+1H_i,H_{i+1} 코사인 유사도 상위 L개를 중복 레이어로 지정 |
| 치환 대상 | 해당 레이어의 attention/MLP 가중치 각각에 SVD 적용 |
| 중요도 | Φk={uk,σk,vk⊤}\Phi_k=\{u_k,\sigma_k,v_k^\top\}별 그라디언트 기반 테일러 1차 근사로 I(Φk)I(\Phi_k) 계산 |
| 보존 규칙 | **I(Φk)I(\Phi_k) 상위 r%**만 남겨 W~\tilde W 재구성(크기순 아님) |
| 실행 순서 | 뒤에서 앞으로(역순), One-shot 권장(빠르며 성능 유사) |
| 데이터 | WikiText-2 512 기본, 64 샘플로도 강건, C4로 바꿔도 안정 |
| 옵션 | Alpaca 1 epoch 보상학습 구성 제공(부록) |
좋은 질문이에요! 결론부터 말하면, GRASP에서 말하는 “Alpaca 1 epoch”는 모델 이름이 아니라 _데이터셋(알파카 인스트럭션 데이터)_으로 1에폭 짧게 미세튜닝해서(‘post-training compensation’) 성능을 살짝 복구하는 절차를 뜻합니다. 논문은 HuggingFace의 **yahma/alpaca-cleaned**를 써서 1 epoch만 돌리고(배치32, LR=3e-4), LoRA를 q/k/v/o와 FFN(up/down/gate)에 걸어 빠르게 보정합니다.
왜 “1 epoch만”으로도 회복되나?
- GRASP는 레이어를 삭제하지 않고 중복 레이어를 저랭크 성분으로 치환해서 핵심 표현은 그대로 보존합니다. 그래서 압축 후 작은 보정만으로도 성능이 많이 돌아옵니다. 논문은 공정 비교를 위해 각 중복 레이어에서 ‘학습 가능 파라미터’를 10%만 열어 둔 상태에서, Alpaca 1 epoch로 보상 학습을 수행합니다.
- 이 보상 학습 설정(데이터=Alpaca, Epoch=1, Batch=32, LR=3e-4, A100 1장)은 부록의 하이퍼파라미터 표에 명시돼 있습니다.
Alpaca는 모델이야? 데이터셋이야?
- “Stanford Alpaca”라는 지시 따르기(Instruction-following) 모델이 있고, 그 모델을 학습시키는 데 쓰인 **Alpaca 인스트럭션 데이터(약 5만~5.2만 샘플)**가 있습니다. GRASP가 말하는 건 그 데이터셋으로 1 epoch 보상 학습을 했다는 뜻입니다. (원문 인용과 데이터셋 경로/크기 표기 참고)
그대로 재현하려면 (요약)
- 데이터: yahma/alpaca-cleaned (Alpaca instruction)
- 훈련: 1 epoch, batch 32, LR 3e-4, AdamW
- LoRA 타깃: q_proj, k_proj, v_proj, o_proj, up_proj, down_proj, gate_proj
- 목적: 압축으로 생긴 작은 불일치를 짧게 보정해 원성능을 최대한 회복
타당성과 한계(이 맥락에서)
- 타당성: 핵심 특이 성분을 남겨 표현을 보존했기 때문에, 범용 지시 데이터 1 epoch만으로도 회복 효과가 큼(실험 본문 및 표에서 “Alpaca 1 epoch”을 명시).
- 한계/주의: Alpaca는 영어 일반 지시 데이터라서 **도메인·언어가 다른 과제(예: 한국어, 전문 도메인)**에는 회복 폭이 제한될 수 있습니다. 그 경우 **해당 도메인의 SFT 데이터로 같은 절차(짧은 epoch)**를 돌리는 게 더 낫습니다. (논문은 Alpaca 1 epoch 설정만 보고합니다.)
요약하면, 논문에서의 “Alpaca 1 epoch”는 _Alpaca 인스트럭션 데이터셋_으로 1회전 SFT를 해주는 “보상 학습” 스텝입니다. 모델 이름이 아니라 데이터셋을 의미하고, GRASP 압축이 표현을 잘 보존하기 때문에 이 정도로도 성능 회복이 유의미하게 나옵니다.
https://arxiv.org/abs/2402.16880
BESA: Pruning Large Language Models with Blockwise Parameter-Efficient Sparsity Allocation
Large language models (LLMs) have demonstrated outstanding performance in various tasks, such as text summarization, text question-answering, and etc. While their performance is impressive, the computational footprint due to their vast number of parameters
arxiv.org
| 문제 상황 | (1) 기존 SparseGPT/Wanda는 레이어 단위 복원이라 블록을 지날수록 오차가 누적됨 (Fig.1a). (2) 균일 스파스율은 레이어별 기여 차이를 무시해 중요 가중치 과삭제 위험 (Fig.1b). |
| 방법론 개요 | 블록 단위 재구성 손실로 각 블록에서 ‘프루닝 전/후 출력’을 맞추며( L_recon ) + 목표 스파스 패널티( L_sparse )를 함께 최소화. 동시에 레이어 스파스율 α를 미분 가능(α=∑β_dp_d)하게 두고 β를 학습하여 최적 스파스를 자동 탐색. |
| 파라미터 효율 | 원 가중치는 동결, 학습 변수는 β(소수)뿐. Row-wise는 더 정밀(오버헤드↑)이나 커스텀 CUDA로 가속, Layer-wise는 초경량. D=100 기본. |
| 프루닝 절차 (Algorithm 1) | ① Xp←X 초기화 → ② 블록 순회(l=1..L) : ③ 원출력 F(X_fp,W^l) → ④ 중요도 정렬(블록당 1회) →⑤ 내부루프: β로 원소별 마스크 M^l 생성 → 프루닝 출력 → 블록 손실 L_block 계산 → β 역전파로 업데이트(STE) → ⑥ 마스크 고정·전파(Xp=F(Xp,W^l⊙M^l)) → ⑦ 다음 블록 → ⑧ 모든 블록 완료 시 {W^l⊙M^l} 반환 |
| 실험 세팅 | 단일 A100-80GB, PyTorch. 캘리브 128×2048(C4 shard) 사용. LM-Eval로 제로샷. |
| 결과—언어모델(PPL) | 50% 비정형 스파스에서 BESA가 전반적으로 SparseGPT/Wanda보다 낮은 PPL. 예: LLaMA-2-70B @WikiText2 4.09(BESA) < 4.22(Wanda) < 4.25(SparseGPT); C4/PTB도 유사 패턴. |
| 결과—제로샷 | 6개 과제 평균에서 BESA가 기존법 대비 일관 우세. 모델이 클수록 Dense와 격차 축소, LLaMA-65B는 Dense 평균보다 높게 나오기도 함. |
| 결과—공동 압축 | OmniQuant 4-bit와 동시 최적화 지원. W→Q(W) 치환으로 β(프루닝)·γ(클리핑) 함께 학습. |
| 기여 | (1) LLM용 최초의 미분 가능 프루닝으로 레이어별 최적 스파스 자동 탐색 (2) 파라미터 효율적이고 대형 LLM(7B~180B)을 단일 A100에서 블록 순차로 프루닝 (3) 프루닝+양자화 일체화 및 SOTA 성능 보고 |
| 한계·주의 | (a) 실가속은 하드웨어 시뮬레이터(ViTCoD)로 제시 → 일반 GPU 실측 가속은 본문에서 직접 제시되지 않음 (b) 정렬 1회는 “중요도 불변” 가정에 의존 (c) 캘리브 의존성: 64 미만에서 데이터 늘리면 개선 크고, 이후 효과 포화 (d) 비정형 스파스는 병렬 구현 난이도로 row-wise 마스크 생성 가속을 위한 커스텀 CUDA 필요 |
BESA: Blockwise Parameter-Efficient Sparsity Allocation 논문 요약 (한글)
한 줄 핵심: BESA는 레이어별이 아니라 **블록 단위(block-wise)**로 출력을 재구성(reconstruction)하며, 각 레이어의 스파스 비율 자체를 미분 가능하게 학습해 최적의 가중치 마스크를 찾는 LLM 프루닝 프레임워크입니다. 50% 비정형(unaligned) 스파스 설정에서 LLaMA/LLama-2 전 범위(7B–70B)에서 Wanda·SparseGPT 대비 일관된 PPL/제로샷 개선을 보이고, 양자화(OmniQuant)와 동시 최적화까지 지원합니다.
1) 문제 설정과 동기
- 레이어 단위 프루닝의 누적 오차: 기존 SparseGPT, Wanda는 레이어 출력 복원을 따로 최적화해 블록을 통과하며 프루닝 오차가 누적되는 한계가 있습니다(그림 1(a)).
- 균일 스파스 비율의 비효율: 레이어마다 성능 공헌도가 다르므로 일괄 프루닝율은 중요 레이어 과도 삭제 위험을 키웁니다(그림 1(b)).
해결 아이디어: 블록 출력 복원 오차를 직접 최소화하고(블록 단위), 레이어별 스파스 비율을 미분 가능 형태로 학습해 사람이 일일이 비율을 튜닝하지 않도록 합니다.
2) 방법론(핵심 아이디어를 단계별로)
2.1 블록-와이즈(block-wise) 재구성 손실
- 한 번에 트랜스포머 블록 하나만 다루며, 원본 블록 출력과 마스크 적용 블록 출력의 차이를 줄이는 재구성 손실을 최소화합니다.
- 동시에 해당 블록이 달성해야 할 **목표 스파스(α̂)**를 맞추도록 스파스 패널티를 더합니다. 이렇게 하면 블록별로 목표 스파스를 채우면서도 출력 왜곡을 최소화한 마스크를 얻게 됩니다.
2.2 파라미터-효율적 스파스 학습(마스크를 “학습”하는 방법)
- 직접적인 0/1 마스크를 모두 학습하는 대신, 각 레이어(혹은 행)마다 스파스 후보 집합 {p₁,…,p_D}를 두고, 심플렉스 제약의 계수 β = [β₁,…,β_D](합=1)을 학습합니다.
- 결과적으로 레이어 스파스 α = Σ β_d p_d가 되어 스파스율 자체가 미분 가능해집니다(직접 마스크는 STE로 그라디언트 전달).
- 가중치 중요도 정렬 → 확률적 마스크 생성
- 각 레이어의 가중치를 중요도 점수 δ = |w| × ‖x‖(Wanda의 정의)로 행(row)별 정렬합니다. 이 정렬은 한 번만 수행합니다.
- 정렬 순위가 낮은(=덜 중요한) 항목일수록 **프루닝 확률 P(w)**가 커지도록 **{β_d}와 {p_d}로 P(w)**를 구성합니다.
- P(w)와 임계치로 이진 마스크 M을 만들고(보존=1, 삭제=0), STE로 역전파해 β를 업데이트합니다.
- 학습 단위(그래뉼러리티): 행(row)-와이즈(매우 세밀, CUDA 연산자 제공)와 레이어-와이즈(아주 적은 추가 파라미터) 모두 지원. 기본 D=100 후보. LLaMA-65B 기준 블록당 추가 파라미터 2.10% (row-wise) 또는 0.0003% (layer-wise) 수준으로 매우 작습니다.
2.3 양자화와의 동시 최적화
- OmniQuant(최소-최대 클리핑 γ₀, γ₁ 학습) 기반 N-bit weight-only 양자화와 프루닝을 같은 블록 재구성 루프에서 동시 학습합니다. 즉, β(프루닝)와 γ(양자화)가 함께 업데이트됩니다.
3) 실행 절차(Pruning 과정을 순서대로)
- 캘리브레이션 세트(예: C4에서 128개 × 2048 토큰) 준비.
- 블록 순회: 블록 l을 선택. 원본 출력 F(X, Wˡ) 계산. 가중치 중요도 정렬(한 번만).
- 스파스 학습 루프(해당 블록이 목표 스파스에 수렴할 때까지):
- 현재 β로 확률적 마스크 Mˡ 생성 → 프루닝된 출력 F(X, Wˡ ⊙ Mˡ) 계산.
- L_block = 재구성 오차 + 스파스 패널티를 최소화하도록 β를 역전파로 업데이트(STE 사용).
- 마스크 고정 & 전달: Mˡ을 저장하고, **Xp ← F(Xp, Wˡ ⊙ Mˡ)**로 다음 블록에 넘깁니다(오차 누적 억제).
- (옵션) 양자화 동시 학습: W 대신 Q(W; γ₀,γ₁)로 대체해 β·γ를 함께 최적화.
- 모든 블록을 마치면 프루닝 완료 모델 {Wˡ ⊙ Mˡ} 반환. (논문 Algorithm 1)
직관적 예시: p 후보가 [0.3, 0.5, 0.7], β가 [0.2, 0.8, 0.0]이면 레이어 스파스 α=0.54. 중요도 정렬 하위 54%가 더 높은 P(w)로 선택되어 마스킹됩니다. 이렇게 스파스율(α)이 그라디언트를 받아 과소/과대 프루닝을 스스로 조정합니다.
4) 실험 설정
- 모델: LLaMA-1 (7/13/30/65B), LLaMA-2 (7/13/70B). 50% 비정형 스파스 기본.
- 데이터/지표: PPL—WikiText-2, C4, PTB. 제로샷—PIQA, BoolQ, HellaSwag, WinoGrande, ARC-Easy/Challenge (LM-Eval).
- 환경: A100-80GB 단일 GPU, 캘리브레이션 128×2048.
- 어블레이션: 캘리브 크기(64 이상 이득 포화), 학습 epoch(1 기본), sparsity step(0.01 기본), 학습 그래뉼러리티(블록 단위 권장), 중요도(metric) 비교(결국 Wanda 점수 채택).
5) 주요 결과
- PPL(50% 스파스): 전 범위에서 BESA < Wanda/SparseGPT(낮을수록 좋음). 예) LLaMA-2-70B @ WikiText-2: 4.09(BESA) vs 4.22(Wanda)/4.25(SparseGPT). C4/PTB도 유사 패턴.
- 제로샷: 6개 과제 평균에서 대체로 BESA가 기존 프루닝법 대비 우수, 대형 모델일수록 Dense와 격차 축소, LLaMA-65B에선 평균이 Dense와 동률 수준까지 회복.
- 공동 압축(프루닝+4bit 양자화): 모든 크기에서 BESA-Joint가 Wanda-Joint보다 낮은 PPL(더 좋음).
- 가속 시뮬레이션(ViTCoD): 레이어별 1.5×~1.98× 사이 사이클 이득(평균 스파스 ~46–54%). 불균일 스파스에도 전용 가속기에서 유의미한 속도 향상 가능성 제시.
6) 타당성(왜 잘 동작하나)
- 오차 누적 차단: 블록 출력 재구성으로 상류에서 생긴 손실을 즉시 보정하며 다음 블록에 전달 → 전체 누적 왜곡 감소.
- 스파스율의 미분 가능화: α를 연속 변수로 두고 학습하므로, 사람 손의 레이어별 비율 튜닝 없이 데이터/오차 기준으로 자동 탐색.
- 중요도-정렬 기반 확률 모델링: “덜 중요한 가중치일수록 더 잘 사라진다”라는 편향을 구조에 내장해 탐색 공간과 학습 난이도를 줄임.
- 어블레이션 지지: 캘리브 크기, step 크기, 그래뉼러리티, 중요도 metric 등 설계 선택이 경험적으로 정당화됩니다.
7) 한계 및 주의점
- GPU 실가속 미달: 본 방법은 비정형 스파스라서 일반 GPU에서 곧바로 속도 이득이 크지 않을 수 있음(논문은 ViTCoD 시뮬레이터로 가속을 보임). 실가속엔 n:m 등 구조화가 유리.
- 중요도 정렬의 불변 가정: 정렬을 1회만 수행(효율)하지만, 입력 분포가 다르면 중요도 순서가 변할 여지가 있습니다.
- 캘리브 의존: C4 일부 샘플(128×2048)로 맞춘 마스크가 다른 도메인에서 최적이라는 보장은 제한적.
- 평가 범위: 주로 LLaMA 계열·제로샷에 집중. RAG/생성 품질·엔지니어링 지연시간 등은 추가 검증 여지.
8) 실험 재현 팁(논문 근거 기반)
- 캘리브: 128×2048로 시작, 64에서 효익 포화 경향. epoch=1, sparsity step=0.01 기본.
- 그래뉼러리티: 블록 단위가 PPL·오차·메모리 절충에 가장 안정적.
- 중요도: **Wanda 점수(|w|×‖x‖)**가 가장 견고.
- 양자화 동시 적용: OmniQuant의 γ 학습을 같은 루프에서 함께 최적화.
9) 논문 핵심 요약 표(재독 없이도 적용 가능)
항목 핵심 내용 근거/세부| 문제 상황 | 레이어-와이즈 프루닝은 오차 누적·균일 스파스의 비효율 | 그림 1(a,b); 서론 문제 제기 |
| 핵심 아이디어 | 블록-와이즈 출력 재구성 + 미분 가능한 스파스율 학습(β, p 후보) | 방법 3.1–3.2 요약 |
| 마스크 생성 | 중요도 정렬( | w |
| 그래뉼러리티 | 행-와이즈(정교, 추가 파라미터↑, CUDA 커스텀) / 레이어-와이즈(경량) / 블록 단위 권장 | Ablation: Block 우수 |
| 학습 루프 | 블록별: F(X,W) vs F(X,W⊙M) L_block 최소화하며 β 갱신 → 마스크 확정 → 다음 블록 | Algorithm 1 |
| 공동 압축 | **OmniQuant(γ₀,γ₁)**와 동시에 블록 재구성으로 최적화 | 3.3, Table 3 |
| 실험 설정 | LLaMA-1/2(7–70B), 50% 스파스, 캘리브 128×2048, A100-80GB, LM-Eval | 4.1 |
| 주요 결과 | PPL: BESA < Wanda/SparseGPT 전반. 제로샷은 대형일수록 Dense와 격차 축소/동률 | Table 1, 2 |
| 속도 | ViTCoD 시뮬레이터에서 ~1.5–1.98× 레이어별 속도 향상 | Table 4 |
| 기여 | (1) LLM 최초의 미분 가능한 프루닝 (2) 파라미터-효율적 (3) SOTA 프루닝+양자화 | 결론·공헌 |
| 한계 | 비정형 스파스의 실가속 한계, 캘리브 도메인 의존, 정렬 불변 가정 | 4.5·한계 분석 |
모든 내용은 업로드된 원문을 근거로 정리했습니다. 필요하시면 코드 레벨 의사코드/실험 스크립트 체크리스트도 바로 만들어 드릴게요.
아래는 업로드해주신 BESA (Blockwise Parameter-Efficient Sparsity Allocation) 논문의 방법론만 뽑아 AI 연구자 관점에서 단계별로 정리한 설명입니다. 핵심 식과 절차, 설계 선택의 이유, 그리고 작동 예시를 포함했습니다.
1) 핵심 아이디어 한눈에
- 블록 단위 재구성(block-wise reconstruction): 트랜스포머를 블록별로 순회하면서, “프루닝된 블록 출력”이 “원래 블록 출력”과 최대한 같아지도록 블록 재구성 손실을 최소화합니다. 동시에 그 블록이 달성해야 하는 목표 스파스(α̂)를 맞추는 패널티를 둡니다.
- 스파스율 자체를 미분 가능하게 학습: 레이어별 프루닝 비율을 고정하지 않고, **후보 스파스율 집합 {p₁…p_D}**의 가중합 α=∑β_dp_d로 두어 β를 학습합니다. 이렇게 하면 스파스율이 연속 변수처럼 그라디언트를 받아 최적화됩니다(마스크는 STE로 역전파).
- 중요도 정렬 기반 마스크 생성: 각 레이어(혹은 행)에서 **Wanda 점수 δ=|w|·‖x‖**로 가중치를 정렬하고, 중요도가 낮을수록 프루닝 확률이 높아지도록 확률적 마스크를 생성합니다.
2) 목적함수(블록 재구성 손실)
블록 l(표기는 단순화를 위해 l 생략)의 모든 선형층 가중치 집합 W와 이진 마스크 집합 M에 대해,
- 재구성 항 L_recon: 프루닝 전후 블록 출력의 차이(프로즌-노름)
- 스파스 패널티 L_sparse: 해당 블록의 실제 스파스가 목표 α̂에 맞도록 유도(ℓ2)
최적화 문제
L_block = ‖F(W,X) − F(W⊙M, X)‖²_F + λ·( (1/T_b)∑_{M∈𝓜} k(M) − α̂ )².
여기서 F는 블록 맵핑, k(M)는 마스크의 0(=프루닝된 항목) 개수, T_b는 블록 파라미터 수입니다. 이 블록 단위 정식화 덕분에 오차 누적을 줄이고 전역 스파스를 만족시키도록 순차 프루닝이 가능합니다.
3) 스파스율을 “학습”으로 바꾸는 설계
3.1 가중치 중요도 정렬(한 번만)
- 레이어 가중치 W∈ℝ^{C_in×C_out}, 입력 x∈ℝ^{S×C_in}에 대해 행(row)별로
δ_{i,j}=|W_{i,j}|·‖x_{:,j}‖₂ 로 점수화하고 정렬합니다(오른쪽이 더 중요).
정렬은 블록당 1회만 수행—프루닝 중에도 중요도 순서가 바뀌지 않는다고 가정.
3.2 스파스율 파라미터화(β, p 후보)
- 후보 스파스율 집합 {p_d}_{d=1..D} (예: 0.0, 0.01, …, 1.0)과 학습 가능한 계수 β_d(합=1)를 두고,
레이어 스파스 α = ∑_d β_d·p_d 로 정의합니다.
3.3 확률적 프루닝 마스크
- 정렬된 인덱스 j^\hat{j}가 낮을수록(=덜 중요) 프루닝 확률 P(W_{i,\hat{j}}) 이 커지도록 계단형으로 정의:
P(Wi,j^)=∑d=k+1Dβdif Cout⋅pk≤j^<Cout⋅pk+1\displaystyle P(W_{i,\hat{j}})=\sum_{d=k+1}^{D}\beta_d \quad \text{if } C_{out}\cdot p_k \le \hat{j} < C_{out}\cdot p_{k+1}.
경계조건 p0=0,βD=0p_0=0, \beta_D=0으로 가장 중요한 가중치 구간은 항상 보존되도록 합니다. - 이진 마스크 M 생성은 간단한 임계 비교: Mi,j=0M_{i,j}=0 if P(Mi,j)≥αP(M_{i,j})\ge \alpha else 1.
3.4 미분 가능화(STE)
- 마스크의 비미분성을 STE로 우회: ∂M/∂P\partial M/\partial P 를 STE로 근사해,
∂Lblock/∂α=∑dpd (∂Lblock/∂βd)\partial L_{block}/\partial \alpha = \sum_d p_d\,(\partial L_{block}/\partial \beta_d) 로 α(=스파스율)까지 그라디언트 전달.
따라서 레이어별 α를 경사하강으로 직접 최적화할 수 있습니다.
3.5 파라미터 효율성
- 기본 D=100. Row-wise(행별 β)면 학습 파라미터는 D⋅CinD·C_{in}개, Layer-wise(레이어 공유 β)면 레이어당 D개. LLaMA-65B 기준 블록당 추가 파라미터: row-wise 2.10%, layer-wise 0.0003%.
4) 전체 알고리즘(현장 재현용 절차)
입력: 캘리브레이션 데이터 X, 사전학습 LLM 가중치 {W^l}, 목표 스파스 α̂
출력: 프루닝된 모델 {W^l⊙M^l}
- 초기화: Xp←XX_p \leftarrow X (프루닝 경로 입력)
- 블록 순회: l=1..L에 대해
2-1) 기준 출력 F(Xfp,Wl)F(X_{fp},W^l) 계산
2-2) 중요도 정렬: Eq.(2)로 블록 내 모든 선형층의 가중치 정렬(블록당 1회)
2-3) 내부 루프(α*_l 수렴까지):
— 마스크 생성: β로부터 확률적 원소별 마스크 M^l 생성(Eq.3–5)
— 프루닝 출력 F(Xp,Wl⊙Ml)F(X_p,W^l⊙M^l) 계산
— 블록 손실 L_block(Eq.1) 계산
— β 업데이트(역전파/STE)
2-4) 마스크 고정 후 전파: Xp←F(Xp,Wl⊙Ml)X_p \leftarrow F(X_p,W^l⊙M^l), M^l 저장 - 반환: 모든 블록 마스크를 적용한 모델 {W^l⊙M^l}
위 절차가 Algorithm 1에 그대로 제시되어 있습니다.
캘리브 설정 예시: C4에서 128×2048 토큰(기본).
5) 양자화와의 동시 최적화(Joint)
- OmniQuant의 Min-Max 양자화를 채택, 하한/상한 클리핑 강도 γ₀, γ₁를 학습.
- 구현은 간단히 W→Q(W) 치환으로 이뤄지며, **β(프루닝)와 γ(양자화)**를 동시에 업데이트합니다.Q(W)=clamp(⌊W/h⌉+z),h=γ1maxW−γ0minW2N−1, z=−⌊γ0minWh⌉Q(W)=\mathrm{clamp}\big(\lfloor W/h \rceil + z\big),\quad h=\frac{\gamma_1\max W - \gamma_0\min W}{2^N-1},\ z=-\Big\lfloor \frac{\gamma_0\min W}{h}\Big\rceil(N비트 정수 범위 [0,2^N−1]).
6) 설계 선택의 타당성(요약)
- 오차 누적 억제: 블록 기준으로 “원출력 ↔ 프루닝출력”을 직접 맞추므로 레이어별 오차 누적을 줄입니다.
- 스파스율 자동 탐색: α를 연속 변수화(β·p) 하고 STE로 미분 가능하게 만들어, 사람이 레이어별 비율을 손으로 맞출 필요가 없습니다.
- 파라미터 효율적: 소수의 β만 학습(원 가중치는 동결). 레이어 전체가 아니라 블록 내부에서 순차 최적화하여 메모리 오버헤드도 적음.
7) 작동 예시(간단 수치)
가령 어떤 레이어의 한 “행”을 생각해봅시다.
- 후보 스파스율: p = [0.3, 0.5, 0.7], 학습 변수 β = [0.2, 0.8, 0.0].
- 이때 레이어 스파스 α = 0.2·0.3 + 0.8·0.5 + 0·0.7 = 0.46(46%).
- 정렬된 인덱스 j^\hat{j}가 하위 30% 구간이면 P=β>0.3=0.8+0.0=0.8P=\beta_{>0.3}=0.8+0.0=0.8, 30~50% 구간이면 P=β>0.5=0.0P=\beta_{>0.5}=0.0, … 처럼 구간별 P(W_{i,\hat{j}}) 가 계단식으로 배정됩니다.
- 마스크: P(Mi,j)≥α(=0.46)P(M_{i,j}) \ge \alpha(=0.46) 이면 0(제거), 아니면 1(보존).
- 역전파 중에는 STE로 ∂M/∂P\partial M/\partial P를 흘려 β를 업데이트 → α도 함께 갱신되어 정해진 목표 스파스와 재구성 손실을 동시에 만족하도록 수렴합니다.
8) 실전 하이퍼파라미터 팁(논문 근거)
- 캘리브: C4 샘플 128×2048(기본). 캘리브가 64를 넘으면 효익이 빨리 포화.
- 학습 epoch: 1 epoch 기본(과도 증가 시 타 데이터 PPL 이점 제한).
- sparsity step: 0.01을 기본으로 채택(더 미세해도 이득 제한).
- 그래뉼러리티: row-wise가 가장 세밀하지만 커스텀 CUDA로 가속, layer-wise는 초경량(β만 D개).
9) 단계별 요약(체크리스트)
- 캘리브 준비(예: C4 128×2048) → 2) 블록 선택 → 3) 원 출력 계산 → 4) Wanda 중요도 정렬(1회) → 5) β로 확률적 마스크 생성(α=∑βp, P 계단함수, 임계 α로 이진화, STE 적용) → 6) 블록 손실 최소화(재구성+스파스) → 7) 마스크 고정·전달 → 8) 다음 블록 반복 → (옵션) 동시에 양자화(γ₀,γ₁) 최적화.
한 줄 요약
BESA는 블록 단위 재구성 손실로 오차 누적을 줄이면서, 레이어 스파스율을 β·p로 미분 가능하게 학습(STE)해 데이터가 “알아서” 최적 프루닝 비율과 마스크를 찾게 하는 LLM 프루닝 프레임워크입니다.
'인공지능 > 논문 리뷰 or 진행' 카테고리의 다른 글
| Language Model 파라미터 감소(Pruning) 논문 5 (1) | 2025.09.03 |
|---|---|
| Language Model 파라미터 감소(Pruning) 논문 4 (0) | 2025.09.02 |
| Language Model 파라미터 감소(Pruning) 논문 2 (0) | 2025.09.02 |
| ULLME: A Unified Framework for Large Language Model Embeddings with Generation-Augmented Learning (4) | 2025.08.27 |
| Multi-Modal Generative Embedding Model (4) | 2025.08.27 |