본문 바로가기

논문 리뷰

(452)
SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot Inverse hessian matrix 재사용, 유효한 가중치만 업데이트 [Github] [arXiv](Current version v3) Abstract 매우 큰 모델 규모에서 효율적으로 작동하는 최초의 one-shot 가지치기 방법인 SparseGPT 제안 Introduction Approximate sparse regression solver를 통해 가지치기 문제를 해결한다. 50~60%의 가지치기를 시행해도 정확도가 조금밖에 떨어지지 않는다. 큰 모델일수록 희소성을 도입해도 성능이 떨어지지 않는다. 또한 본 논문에서 제안하는 기술은 양자화와 함께 사용될 수도 있다. SparseGPT의 주목할만한 속성 중 하나는 각 레이어의 입력-출력이 보존되도록 설계되어 완전히 로컬이라는 것이다. The Spa..
GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers 양자화 일괄 처리, Cholesky decomposition [Github] [arXiv](Current version v2) Abstract 효율적인 GPT 모델 가중치 양자화 방법인 GPTQ 제안 Background [Optimal Brain Compression] (OBC, OBQ) [WoodFisher] 위의 두 논문에 대한 사전 지식이 있는 것을 전제로 작성했습니다. The GPTQ Algorithm Step 1: Arbitrary Order Insight OBQ에서는 양자화 오류를 기반으로 양자화 순서를 결정한다. 하지만 연구진은 실험적으로 대규모 모델에서는 고정된 양자화 순서와 OBQ의 방법이 거의 차이가 없다는 것을 알아냈다. 모든 행에서 가중치를 순서대로 양자화하면, 각 행에서 H-1이 ..
Loss Aware Post-training Quantization (LAPQ) [Github] [arXiv](Current version v2) Abstract낮은 비트폭 양자화에서 2차 최적화를 통해 Layer-wise quantization을 가능하게 함 Loss landscape of quantized DNNsM비트, quantization step size ∆를 고려한 양자화: Step size ∆를 통해 x의 범위를 [-c, c]로 제한함:ReLU 활성화의 출력일 경우: 이 논문에서 ∆는 값으로도 쓰이고 양자하 된 인스턴스에 대한 표시라고 해야 하나 암튼 그런 개념으로도 쓰이고 미분에서 원래의 용도로도 쓰인다. 좀 헷갈림... Separable optimization 손실함수 L은 변수 세트 v(weights, activations, etc.)에 의존하며, 양자화 노이즈를..
Optimal Brain Compression: A Framework for Accurate Post-Training Quantization and Pruning (OBC) 효율적인 전역 양자화, 양자화∙가지치기 통합 [Github] [arXiv](Current version v2) Abstract 정확한 훈련 모델이 주어지고 적은 양의 교정 입력 데이터만을 기반으로 재훈련 없이 압축해야 하는 까다로운 one-shot/post-training 설정에서 DNN 압축 문제를 고려한다. 가지치기와 양자화를 통해 post-trining의 실용적 성능을 크게 개선하는 새로운 압축 프레임워크를 소개한다. Introduction 기존 가지치기/양자화 방법들은 점진적인 가지치기와 재훈련이 필요하기 때문에 post-training 환경에 적용할 수 없었다. 전역 압축의 하위 문제인 layer-wise 압축에서 시작한다. 우리의 목표는 입력 X, 가중치 W에 대해 다음과 같은 압축된 Ŵ를 ..
The Optimal BERT Surgeon: Scalable and Accurate Second-Order Pruning for Large Language Models (oBERT) 대규모 모델의 경우 블록으로 나누어 블록째로 가지치기 [arXiv](Current version v3) [BERT] Abstract 대규모 모델인 BERT를 희소화할 수 있는 Optimal BERT Surgeon(oBERT) 제안 The Optimal BERT Surgeon (oBERT) Generalized Second-Order Block Pruning WoodFisher와 다른 점은 그룹으로 진행된다는 점이다. WoodFisher의 eq는 단일 기저벡터였다면, 본 논문의 ek는 블록 내 인덱스에 해당하는 기저벡터의 집합이다. (편의성을 위해 s.t. ~ 수식의 표기 변경) 그 뒤론 똑같음. An Efficient Implementation Pruning the optimal set of weight..
WoodFisher: Efficient Second-Order Approximation for Neural Network Compression Hessian matrix를 효율적인 fisher matrix로 근사하여 가지치기에 활용 [Github] [arXiv](Current version v5) Abstract Hessian- or Inverse-Hessian-vector product 형태의 2차 미분 정보는 최적화 문제를 해결하기 위한 기본 도구이다. Inverse-Hessian matrix의 효율적인 추정치를 계산하기 위해 WoodFisher라는 방법을 제안한다. Introduction DNN을 압축하기 위한 최근 연구는 고전적인 Optimal Brain Damage/Surgeon 프레임워크에서 그 뿌리를 찾을 수 있다. 대략적으로 제거할 최적의 피라미터를 찾기 위해 테일러 전개 기반으로 로컬 2차 모델 근사를 구축하는 것이다. 핵심은 ..
Accelerated Sparse Neural Training [arXiv](Current version v2) Abstract 훈련 단계에서 GPU 가속의 이점을 얻을 수 있는 Transposable-Fine-Grained Sparsity Mask 패턴이 다른 희소 구조에 대한 적응 방법인 AdaPrune Introduction DNN(Deep Neural Network)의 압축에는 양자화, 증류, 가지치기 등의 방법이 있다. 가지치기는 두 가지로 분류할 수 있다: Nvidia는 모델 가중치를 fine-grained 2:4 희소 구조로 가중치를 마스킹한 뒤 재훈련하는 방법을 제안했다. [논문 리뷰] 하지만 이 방법은 훈련된 dense model이 필요하다는 단점이 있다. [NM-Sparsity]에서는 forward 중 실시간으로 가지치기를 하고 STE로 backw..
Ring Attention with Blockwise Transformers for Near-Infinite Context Block-wise attention의 병렬화 방식을 개선하여 무한에 가까운 context로 확장 [Github] [arXiv](Current version v3) Abstract 이전의 메모리 효율적인 transformers 보다 훨씬 긴 시퀀스를 훈련하고 추론할 수 있는 Ring Attention 제안 기존 최첨단 기술보다 500배 이상 긴 시퀀스를 훈련할 수 있다고 한다. ㄷㄷ Introduction Block-wise 방식으로 self-attention과 FFN을 수행함으로써 시퀀스 차원을 여러 장치(device)에 분산하여 계산할 수 있다. Ring Attention에서, 각 장치는 지정된 시퀀스 블록에 대한 attention, FFN을 계산한다. 각 장치는 ring을 형성하여 KV 블록을 공유..
Self-attention Does Not Need O(n^2) Memory [arXiv](Current version v3) 참고: 다른 분의 논문 리뷰 (저분의 리뷰에 중요한 부분이 빠져 있어서 요약할 겸 작성함) Abstract Self-attention의 메모리 복잡도 줄이기 Algorithm 기존 attention: 길이가 n인 스퀀스에서 단일 쿼리에 대해 모든 si를 계산하고 기억해야 하므로 시간 및 메모리 복잡도는 O(n). Self-attention은 모든 쿼리에 대해 계산되므로 O(n2). 단일 쿼리에 대한 알고리즘을 다음과 같이 변경한다. 그리고 한 번의 QKV 연산이 진행될 때마다 v*, s*를 업데이트한 후 다른 중간 계산값은 다 버린다. 모든 연산이 다 진행된 후 v*/s*를 구하기만 하면 된다. 이렇게 하면 두 개의 상수 메모리 밖에 소모되지 않는다. N..
Blockwise Parallel Transformer for Large Context Models (BPT) [Github] [arXiv](Current version v3) Abstract Self-attention의 블록별 계산과 feedforward network의 융합을 활용하여 메모리 비용을 최소화하는 독특한 접근 방식인 BPT(Blockwise Parallel Transformer)를 제안 Blockwise Parallel for Large Context Models Softmax(QKT)의 전체 행렬을 구하지 않고 입력 시퀀스를 블록으로 분할한 다음 특정 쿼리 블록에 대한 block-wise attention 결과를 스케일링하여 합산할 수 있다. (희소 마스크는 안 쓰는 걸로 보인다. 링크는 그냥 블록별 attention에 대한 예시임) 논문에 수식이 있긴 한데 좀 이상하게 돼있어서 생략함. 이 글..
Blockwise Self-Attention for Long Document Understanding (BlockBERT) [arXiv](Current version v2) [BERT] Abstract Attention matrix에 희소 블록 구조를 도입하여 장거리 종속성을 더 잘 모델링할 수 있는 가볍고 효율적인 BlockBERT 제안 Introduction Self-attention이 transformer의 큰 메모리 소비의 주요 원인이다. 하지만 레이어 수, attention head, hidden unit 등을 축소하는 일반적인 방법은 성능을 크게 감소시킨다. 본 논문에서는 희소 블록 구조를 도입하여 이를 해결한다. Model: BlockBERT Dot-product attention: 메모리 소모를 줄이기 위한 masked version: Blockwise Multi-Head Attention 입력 시퀀스 길이 N..
Online normalizer calculation for softmax [Github] [arXiv](Current version v2) Abstract 더 적은 메모리 액세스로 softmax 계산 Original softmax 일반적인 softmax: 벡터 당 총 3번의 메모리 액세스가 발생한다. (정규화 항 dV 계산, 출력값 계산, 저장) 하지만 현재 대부분의 딥러닝 작업에서는 지수함수의 오버플로우 위험 때문에 safe softmax를 사용한다. 하지만 safe softmax는 최댓값을 구하는 과정이 추가되어 총 4번의 메모리 액세스가 발생한다. Online normalizer calculation 온라인으로 최댓값과 정규화 항을 업데이트하는 방식으로 메모리 액세스를 3번으로 줄일 수 있다. (이 논문에 있는 수학은 증명이 어렵지 않으니 한 번 써 보면서 읽는 걸 추천..