Daily-Trend-Review

24/03/10: AGI의 정의

hellcat 2024. 3. 10. 21:13

 

 

LLM inference serives 5 disecting model performance

네 가지 종류의 성능 병목 현상

  • compute-bound
  • memory bandwidth bound
  • communications bound
  • overhead bound : software-induced limitations
    • 대부문의 처리 시간이 작업 일정을 계획하고 이를 HW에 제출하는데 소요
    • 런타임에 필요한 모든 정보(텐서 데이터 유형, 장치, 호출할 커널)를 명시적으로 지정할 필요가 없는 유연한 언어(python)이나 프레임워크(pytorch)를 사용할 때 오버헤드 바인딩이 발생할 가능성이 높아짐

 

병목 현상 유형에 따라 지연 시간을 단축하도록 최적화

  • compute-bound
    • 높은 peak FLOPS의 칩으로 업그레이드
    • CUDA 코어 대신 Tensor 코어 사용
    • 필요한 작업 수를 줄임 (더 적은 매개변수. pruning, knowledge distillation 등)
    • 더 낮은 precision 사용 (FP16 -> FP8). 이를 위해 모든 입력(weight와 activation을 양자화하고 전용 저정밀도 커널 사용
  • memory bandwidth bound
    • 더 높은 메모리 BW를 갖춘 칩으로 업그레이드
    • 데이터 이동을 줄이기 위해 quantization, pruning, knowledge distillation 사용
    • weight 전용 양자화 기술 (GTPQ, AWQ)
    • KV cache 양자화 기술
    • 메모리 작업 수를 줄임 (kernel fusion)
  • communications bound
    • 더 높은 네트워크 BW을 갖춘 더 강력하고  더 비싼 칩으로 업그레이드
    • 효율적인 분할 및 collective communication 전략을 선택하여 통신량을 줄임
  • overhead bound : software-induced limitations
    • 더 적은 오버헤드를 가진 C++같은 언어를 사용
    • 커널을 그룹으로 제출함
    • 모델 컴파일러를 사용하여 그래프를 더욱 최적화

Arithmetic Intensity (산술 강도)

  • operator fusion & data quantization (weight, KV cache)를 통해 데이터 전송 횟수와 크기를 모두 줄이면 A.I가 대부분 향상됨

Throughput을 향상시키는 방법

  • 연산 강도를 높이는 것
  • 하드웨어 리소스를 더 잘 사용하도록 알고리즘을 구현
    • FlashAttention: KV cache 시퀀스 길이 차원에 걸쳐 데이터 로드를 병렬화
    • FlashDecoding : 디코딩 단계를 최적화

 

'Daily-Trend-Review' 카테고리의 다른 글

24/04/13: LLM cost vs. Performance  (0) 2024.04.13
24/03/31: Transformer math 101  (0) 2024.03.31
24/03/10: It is fake AGI, stupid!  (0) 2024.03.10
24/03/09: Transformer Alternatives  (0) 2024.03.10
24/02/25: OLMo  (0) 2024.02.25