https://www.semianalysis.com/p/gpt-4-architecture-infrastructure
- 인간은 평균적으로 250 words/sec 속도로 단어를 읽음
- 일부는 최대 1000 words/sec 속도로 단어를 읽음
Extending Context Length in Large Language Models
- Long sequence의 모델을 어떻게 학습시킬 수 있을까?
- 컨텍스트 길이를 늘리면 모델이 정확하게 예측하기 위해 학습해야 하는 가능한 토큰 조합의 수가 늘어남
- 이렇게 하면 더 견고한 광범위 모델링이 가능해지지만 더 많은 메모리와 프로세싱 파워가 필요함.
- 최적화가 없으면 계산은 context length의 2차적으로 확장됨 (512 --> 4096으로 증가하면 2^8 배의 연산이 더 필요함)
- Long context LLM은 세 가지 주요 challenges가 있음
- long context를 모델에 맞추는 것
- 추론/학습을 가속하는 것
- 전체 컨텍스트에 대한 인식을 유지하면서 고품질의 추론을 보장하는 것
- Attention의 Complexity
- 입력 토큰의 모든 가능한 쌍을 위한 어텐션 weight를 계산하기 때문에 O(n^2)의 복잡도를 가짐
- 어텐션 효율성을 개선하기 위한 방법
- Approximating attention : 계산 비용을 줄이지만 복잡한 작업에서 정확도가 저하될 수 있음
- Sparse attention
- attention의 non-zero 값을 제한함
- 가능한 모든 쌍 대신 입력 토큰의 하위 집합에 대한 attention weight만 계산하여 attention을 approximiation
- 고정 또는 정적 패턴을 사용하거나 입력 시퀀스에 따라 달라지는 동적 또는 적응형 패턴을 사용
- 특히 long sequences의 경우, transformer의 효율성과 확장성을 향상시킬 수 있으나 일부 표현력과 정확성을 희생해야만 함
- Local attention
- sliding window에 대한 상호 작용을 제한
- Sparse attention
- Exact attention using HW-aware optimizations: GPU 아키텍처를 활용하여 주의를 최적화하는데 중점을 둠
- FlashAttention
- Tiling: 입력을 블록으로 분할하여 GPU의 on-chip SRAM에 로드함. Attention은 전체 매트릭스가 머티어라징되는 것을 피하기 위해 block-by-block으로 연산됨
- Recomputation: 큰 중간 결과물을 저장하는 것을 피하기 위해 backpropagation 동안 attention 매트릭스를 재건하기 위해 충분한 정보만을 저장함
- FlashAttention을 사용하면 IO complexity가 기존 attention의 O(n^2)에서 O(n^2/M)으로 낮아짐 (M: SRAM size)
- FlashAttention은 recomputation으로 인한 FLOPS가 증가함에도 불구하고 IO-awareness를 사용하기 때문에 더 빠름
- FlashAttention-2
- 개선 사항: 시퀀스 블록 전체의 병렬성을 강화. GPU의 스레드 블록과 워프간의 작업 분할을 최적화하는데 중점을 둠
- Key Techniques
- non-matrix multiply operations 줄이기
- attention 연산을 스레드로 분할하여 occupancy를 증가시킴
- 워프 간에 작업을 분사하여 공유 메모리 트래픽을 줄임
- 성능 개선
- FlashAttention 대비 FlashAttention-2는 2배 성능을 달성
- A100 GPUs에서 이론적 peak FLOPS의 73%까지 도달
- training throughput이 225 TFLOPS per A100을 달성
- 하지만 여전히 높은 출력 품질을 유지하면서 모델에 텍스트를 맞추는 것은 여전히 과제로 남아 있음
- FlashAttention
- Approximating attention : 계산 비용을 줄이지만 복잡한 작업에서 정확도가 저하될 수 있음
- 모델은 고정 길이 시퀀스에 대해 pre-training됨
- 컨텍스트 길이 확장에는 두가지 주요 패러다임이 있음
- Fine-tuned extrapolation
- 더 긴 context에서 weight를 추가로 업데이트하는 것
- Zero-shot extrapolation
- 짧은 컨텍스트 학습에서 weight를 변경하지 않고 긴 컨텍스트에서 모델을 평가
- 컨텍스트를 확장하기 위해 대부분의 접근 방식은 입력 시퀀스에서 토큰의 위치를 나타내기 위해 positional encoding 시스템을 수정하는데 중점을 둠
- Positional encoding에서 더 긴 입력 시퀀스를 표현하는 것은 LLM이 더 긴 시퀀스에 attention을 기울일 수 있다는 아이디어임
- Fine-tuned extrapolation
- Positional encoding: 모델이 문장의 순서를 이해하도록 함
- Positional encoding은 모델에 공급하기 전에 입력 토큰 입베딩에 추가되어 모델이 시퀀스 순서를 사용 가능
- transformer는 위치 임베딩 벡터의 각 차원이 정현파 패턴을 따르는 삼각함수를 사용함
- LLaMA는 회전식 임베딩을 사용하여 위치 임베딩을 즉석으로 계산하는 Rotary Position Embeddings (RoPE)이 사용됨.
- positional embedding이 생성되는 방식에 관계없이 모델은 pre-training 중에 보았던 것보다 더 긴 sequence로 일반화하는데 어려움을 겪음
- 이러한 한계를 해결하기 위해 선형 스케일링 및 위치 보간과 같은 새로운 접근 방식이 도입됨
- Linear scaling
- 선형 스케일링을 사용하면 위치 임베딩의 크기가 재조정되어 모델을 다양한 시퀀스 길이에 맞게 조정 가능함
- Pre-training된 모델에 최대 길이 L까지의 임베딩이 있는 경우, 길이 N의 시퀀스에 대한 추론의 경우 각 위치 임베딩 벡터에 N/L을 곱함
- 이렇게 하면 사전 학습된 임베딩 속성을 유지하면서 새로운 길이에 대한 임베딩을 저렴하게 근사화 가능
- 선형 스케일링은 긴 시퀀스에서 성능을 크게 향상시킴. 그러나 이 모델은 pre-training된 길이보다 훨씬 긴 시퀀스에서는 여전히 성능이 떨어짐.
- 선형 스케일링 프로세스는 여러 위치 임베딩을 함께 축소하여 정보를 파괴함
- Linear scaling/interpolation
- Yarn
- Attention with Linear Biases
- ALiBi: postional embedding을 제거하는 더 간단한 접근 방식을 도입. 대신 거리에 비례하여 패널티를 쿼리와 키 사이의 attention score를 부정적으로 편향함
- MosaicML의 MPT-7B 모델은 ALiBi 아키텍처를 활용하여 최대 65000 개의 입력 토큰을 처리 가능함
- 컨텍스트 길이 확장에는 두가지 주요 패러다임이 있음
How did OpenAI increase context length of the GPT-4 iterations?
What Causes LLM Performance To Degrade When Exceeding Training Context Length
Efficient Large Language Models: A Survey
A Survey on Large Language Model based Autonomous Agents
why speculative decoding's output distribution is guaranteed to stay the same? speculative sample
Why do MOE have only 8 experts and none have tried to go for 16 for ex?
'Daily-Trend-Review' 카테고리의 다른 글
2024/01/27: Harmonizing Multi-GPUs (0) | 2024.01.27 |
---|---|
2024/01/26: Leading with open Models, frameworks, and systems (0) | 2024.01.26 |
2024/01/20: LLM Agents, DPO (0) | 2024.01.20 |
2024/01/05: Decoding Strategies in Large Language Models (1) | 2024.01.05 |
2024/01/02: Transformer inference tricks (0) | 2024.01.02 |