728x90

LLM 20

집에서도 LLM을 돌릴 수 있다? prima.cpp

https://arxiv.org/pdf/2504.08791 집에서 큰 인공지능 모델을 돌리는 게 왜 어려울까요? 우리가 사용하는 chatGPT나 Gemini 같은 인공지능 모델, 즉 LLM을 직접 돌려보고 싶다는 생각 해보신 적 있나요? 그렇다면 매달 구독료를 내지 않아도 될텐데 말이죠? 그런데 생각보다 쉽지 않습니다. 기존의 LLM 시스템들은 엄청나게 좋은 컴퓨터가 필요하기 때문이죠. GPU 클러스터나 아주 많은 RAM, VRAM 같은 하드웨어가 있어야만 돌아갈 수 있는 구조로 되어 있고, 이런 장비들은 일반 가정집에는 잘 없잖아요? 특히 10B가 넘는 큰 모델들은 일반 컴퓨터에서 돌리기 정말 힘들답니다. 예를 들어, 8GB RAM을 가진 맥 M1에서 14B 모델을 돌리면 토큰 하나 만드는데 10초 이..

Paper review 2025.05.17

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

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 방식을 제안했습니다...

Paper review 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

GEMM (General Matrix to Matrix Multiplication)과 GPU 아키텍처의 이해

1. GEMM이란?GEMM(General Matrix to Matrix Multiplication)은 일반적인 행렬 곱셈을 의미합니다.특히 딥 러닝 연산에서 핵심적인 연산으로, 아래처럼 표현됩니다.  여기에서 A, B는 곱셈의 대상이 되는 행렬이며, C는 결과 행렬, ɑ, β는 스칼라 값입니다.  즉 A X B  행렬 곱 결과에 스칼라를 곱하고, 기존 C 행렬에 스칼라를 곱한 값을 더하는 연산입니다. 신경망의 대부분 레이어는 사실상 큰 규모의 행렬 곱 연산을 수행합니다. GEMM 최적화는 곧 딥러닝 성능 향상과 직결되는 것이죠. 그래서 딥러닝 프레임워크 (PyTorch, Tensor Flow)와 GPU (CUDA, cuBLAS)는 GEMM 연산을 최대한 빠르게 실행하려고 최적화를 계속해 나가는 것이고요...

Tech 2025.03.01
728x90