전체 글 43

Comet: Fine-grained Computation-communication Overlapping for Mixture-of-Experts

https://arxiv.org/pdf/2502.19811 1. 제안 기법 대규모 Mixture-of-Experts (MoE) 모델은 각 입력 토큰에 대해 소수의 전문가 네트워크만을 활성화함으로써, 방대한 수의 파라미터를 활용하면서도 연산 비용을 효율적으로 관리할 수 있다는 장점을 지닌다. 그러나 이러한 모델 구조를 분산 환경에 적용할 경우, GPU 간의 통신 빈도가 급증하여 전체 실행 시간 중 상당 부분을 통신에 할애하게 되는 문제가 발생한다. 실제로 일부 연구 결과에 따르면, 주요 MoE 모델의 forward 연산 과정에서 GPU 간 통신이 전체 모델 실행 시간의 약 47%를 차지하는 것으로 보고되었다. 이러한 성능 저하 문제를 해결하기 위해, MoE 레이어 내 통신과 연산을 파이프라인 방식으로 병행..

Paper review 2025.04.13

SGLang: 구조화된 LLM 프로그램의 효율적 실행 기술 분석

https://arxiv.org/pdf/2312.07104 전체 아키텍처 구성 및 구성 요소 역할SGLang 시스템은 구조화된 생성 언어(Structured Generation Language)인 프론트엔드와 SGLang 런타임(SRT)인 백엔드 런타임으로 구성됩니다. 프론트엔드는 Python에 내장된 DSL로서, 개발자가 다수의 LLM 호출과 제어 흐름을 포함하는 구조화된 프롬프트 프로그램을 용이하게 작성할 수 있도록 지원합니다. 백엔드 런타임은 이러한 프로그램을 효율적으로 실행하는 엔진으로서, RadixAttention 및 압축 FSM 등의 최적화를 통해 성능을 향상시킵니다. 백엔드 SRT는 서버 프로세스로 작동하며 여러 구성 요소로 이루어져 있습니다. 주요 구성 요소와 그 역할은 다음과 같습니다.F..

Tech 2025.04.09

Sarathi-Serve 상세 기술 분석

전체 아키텍처 개요 및 모듈 구조Sarathi-Serve는 대규모 언어 모델(LLM)의 온라인 추론을 위한 고성능 서빙 엔진으로서, 낮은 지연 시간과 높은 처리량을 동시에 확보하기 위해 특화된 구조로 설계되었습니다. 전체 시스템은 엔진 프로세스와 워커 프로세스로 구분되어 운영되며, 주요 구성 요소로는 스케줄러, 시퀀스 관리자, 블록 메모리 관리자, 모델 실행기, 요청 처리기(API 서버) 등이 있습니다. 각 구성 요소의 역할은 다음과 같습니다.• 엔진: 중앙 제어 모듈로서, 새로운 요청을 접수하고 스케줄러를 통해 요청들의 배치 및 실행 방법을 결정합니다. 엔진은 워커들과의 통신을 담당하며, 결과를 취합하여 응답을 반환합니다.• 스케줄러: 실행 대기 중인 모든 시퀀스들을 관리하며, 각 반복 단계에서 특정 ..

Tech 2025.04.05

An Analysis of Technology to Improve LLM Inference Throughput-Latency Tradeoff Using Sarathi-Serve

https://arxiv.org/pdf/2403.02310 Summary대규모 언어 모델(LLM)의 추론 서비스에서는 높은 처리량(throughput)과 낮은 지연 시간(latency)을 동시에 달성하는 데 어려움이 따르는 상충 관계가 존재합니다. 각 요청은 프리필(prefill) 단계와 디코드(decode) 단계를 거치게 됩니다. 프리필 단계에서는 입력 프롬프트 전체를 일괄적으로 처리하여 첫 번째 출력 토큰을 생성하므로 GPU 활용도는 높으나 지연 시간이 길어지는 반면, 디코드 단계에서는 매 반복마다 하나의 토큰만을 생성하기 때문에 개별 반복 지연 시간은 짧지만 GPU 자원 활용도가 낮다. 이로 인해 디코드 단계에서는 배치(batch) 크기를 확대하여 병렬 처리를 수행하면 처리량이 크게 향상되는 반면,..

Paper review 2025.04.05

vLLM의 PagedAttention 방식이 L1/L2 캐시 히트율 저하시키는 이유

PagedAttention은 수요 페이징(Demand Paging) 방식의 KV 캐시로, KV 캐시를 여러 개의 작은 메모리 블록(페이지)으로 나누어 불연속적인 주소 공간에 배치하고, 필요할 때 요청 단위나 토큰 단위로 동적으로 할당 및 관리하는 방식입니다. 이 구조는 특히 vLLM과 같은 최신 LLM 추론 엔진에서 메모리 사용 효율을 크게 높일 수 있습니다. 그러나 이러한 이점과는 반대로 L1·L2 캐시의 활용률(hit ratio)을 떨어뜨려 성능 저하를 유발하기도 합니다. 여기서는 NVIDIA H100 GPU를 기준으로, PagedAttention 방식이 L1/L2 캐시 히트율을 저하시키는 원인을 자세히 살펴보겠습니다. 먼저 NVIDIA H100 GPU의 캐시 아키텍처를 간략히 살펴보면, H100 G..

Tech 2025.03.16

Mind the Memory Gap: Unveiling GPU Bottlenecks in Large-Batch LLM Inference

https://arxiv.org/pdf/2503.08311 이번에 리뷰한 논문의 제목은 이렇습니다. Mind the Memory Gap: Unveiling GPU Bottlenecks in Large-Batch LLM Inference. LLM모델들이 autoregressive 방식으로 decode 토큰을 생성 하기 때문에, GPU 자원을 효율적으로 사용하지 못하고 병목 현상이 발생하는 문제가 있는데, 특히 배치 크기를 크게 늘릴 때 일정한 지점 이상에서는 성능 향상이 멈추고 정체되는 현상이 나타납니다.성능 정체의 주요 원인: 메모리 대역폭 병목 현상기존 연구에서는 성능 정체의 원인을 GPU 연산 자원(Compute-bound)의 한계로 보았으나, 최근 심층적인 GPU 분석을 통해 진짜 원인은 메모리 대..

Paper review 2025.03.16

vAttention: Dynamic Memory Management for Serving LLMs without PagedAttention

https://arxiv.org/abs/2405.04437 vAttention: Dynamic Memory Management for Serving LLMs without PagedAttentionPagedAttention is a popular approach for dynamic memory allocation in LLM serving systems. It enables on-demand allocation of GPU memory to mitigate KV cache fragmentation -- a phenomenon that crippled the batch size (and consequently throughput) in priorarxiv.org 서론대규모 언어 모델(LLM)을 서비스할 ..

Paper review 2025.03.11

PagedAttention. 정말 최적인가? 진짜?

추론 과정에서 GPU 메모리의 대부분을 차지하는 KV 캐시를 어떻게 관리하느냐가 서비스 성능에 큰 영향을 미치게 되는데, 이전 시스템들은 모델이 지원하는 최대 컨텍스트 길이를 기준으로 각 리퀘스트별로 메모리를 할당하는 "naive"한 방법을 사용했습니다. 하지만 이렇게 하면 모든 리퀘스트가 항상 모델의 최대 컨텍스트 길이만큼 디코드를 하는 것은 아니므로 메모리 낭비가 심하고, 낭비되는 메모리만큼 서비스를 더 할 수 없게 됩니다.Inference Engine의 (거의) 표준이 되가고 있는 vLLM은 OS 기반 가상 메모리 시스템의 demand-paging 방식에서 영감을 받아, 할당된 블록이 모두 사용되었으면, 필요에 따라 작은 GPU 메모리 블록을 할당하는 PagedAttention 방식을 제안했습니다...

Think 2025.03.10

PyTorch CUDA 메모리 관리

PyTorch CUDA 메모리 관리 이해하기딥러닝 모델을 GPU로 학습하다 보면 “CUDA out of memory” 오류를 접하는 일이 많습니다. 한정된 GPU 메모리를 효율적으로 사용하지 못하면 학습 중간에 메모리가 부족해지기 때문입니다. 이번 글에서는 PyTorch의 CUDA 메모리 관리 개념을 살펴보겠습니다. CUDA 메모리의 기본 개념부터 PyTorch의 메모리 관리 전략, 멀티 GPU 환경에서의 메모리 관리, 그리고 메모리 최적화 기법과 디버깅 방법 등을 알아봅니다. 1. CUDA 메모리 개요CUDA (에서 사용하는) 메모리란 NVIDIA GPU에서 사용하는 전용 메모리(VRAM)를 말합니다. CPU 메모리와 분리되어 있으므로, GPU에서 연산하려면 데이터를 명시적으로 GPU 메모리로 복사해..

Tech 2025.03.08

[AI 상식] LLM은 어떻게 동작할까 - MLP

MLP는 "Multi-Layer Perceptron(다층 퍼셉트론)"의 약자입니다. 쉽게 말해 여러 개의 층(Layer)으로 구성된 신경망의 일종입니다. 하나의 층이 입력을 받아 계산한 결과를 다음 층으로 넘겨주는 형태로 작동하며, 마치 여러 명이 릴레이 경주를 하듯 서로 연결되어 최종 결과를 만들어 냅니다. 위 그림에서 보면 MLP가.. 없죠? 😄 이전 글에서 attention까지 했으니까... 그다음 블록에 MLP가 있어야 할 것 같은데 Feed Forward가 있네요. 흔히 MLP를 "Feed-forward Network(전방향 신경망)"라고 부르기도 합니다. 그 이유는 데이터가 항상 한 방향으로만 흐르기 때문입니다. 즉, 입력층에서 시작하여 은닉층을 거쳐 출력층까지 앞으로만 흐르고 다시 이전 층..

Tech 2025.03.03