[20260917 통합세미나] LLM Serving and Optimization
페이지 정보

본문
[일시]
2026.09. 17
[세미나 주제]
LLM Serving and Optimization
[발표자]
오수진
[요약]
학습이 끝난 모델은 그 자체로 제품이 아니라, 사용자의 요청에 24시간 답하는 서빙 단계에 들어가야 비로소 서비스가 되며, 바로 이 지점에서 속도·처리량·비용이 결정된다. 그런데 LLM 서빙이 어려운 이유는 GPU의 연산 능력(TFLOPS)이 부족해서가 아니라 대부분의 병목이 메모리에서 생기기 때문이다. 추론은 입력을 한 번에 처리하는 연산 위주의 프리필과 토큰을 하나씩 생성하는 메모리 위주의 디코드로 나뉘는데, 긴 답변일수록 시간의 대부분은 디코드에 쓰인다. 디코드는 토큰 하나를 만들 때마다 모델 가중치 전체를 GPU 메모리에서 읽어와야 해서, 연산이 아니라 메모리 대역폭에 묶이는 memory-bound 상태가 되기 때문이다. 이를 돕기 위해 과거 토큰의 Key·Value를 저장해 재계산을 피하는 KV 캐시를 쓰지만, 이 캐시가 다시 GPU 메모리 용량을 잡아먹어 동시 사용자 수를 제한하는 다음 병목이 된다. 그래서 하드웨어를 고를 때도 TFLOPS 하나가 아니라 메모리 용량·대역폭·인터커넥트를 함께 봐야 하며, 루프라인 모델의 산술 강도로 지금 병목이 연산인지 대역폭인지 판별할 수 있다.
이러한 병목을 푸는 첫 번째 축은 스케줄링으로, 연속 배칭과 청크 프리필이 GPU가 노는 시간을 없애 처리량을 끌어올린다. 두 번째 축은 어텐션·커널 최적화로, MHA에서 MQA·GQA·MLA로 K/V 헤드를 줄여 KV 캐시를 압축하고 FlashAttention과 PagedAttention으로 느린 메모리 왕복과 메모리 낭비를 줄인다. 세 번째 축은 모델 압축으로 양자화·증류·가지치기를 통해 모델 자체를 작고 빠르게 만들며, 네 번째 축인 프리픽스 캐싱은 반복되는 프롬프트 계산을 재사용해 프리필 비용을 없앤다. 결국 서빙 최적화는 단순히 '더 빠르게'가 아니라 지연시간·처리량·메모리·정확도·운영 복잡도 사이의 트레이드오프를 병목에 맞춰 조율하고 반드시 측정으로 검증하는 일이다.
[Q&A]
Q : (8p, Cold start) 콜드 스타트가 사용자가 처음 질문하는 것을 말하는 건가요? 정확히 어떤 부분인가요?
A : 콜드 스타트는 사용자의 첫 질문이나 TTFT와는 다른 개념입니다. 새 서빙 인스턴스(레플리카·파드·서버리스 워커)를 처음 띄울 때 발생하는 준비 지연을 뜻하며, 컨테이너/파드 기동 + 모델 가중치를 디스크·네트워크에서 GPU 메모리로 로딩(대형 모델은 수 초~수십 초) + CUDA 초기화·워밍업까지 포함합니다. 오토스케일링(특히 scale-to-zero)이나 피크 트래픽 상황에서 새 인스턴스가 올라오는 동안 요청이 대기하거나 실패할 수 있어 확장성에서 중요하게 다룹니다. TTFT는 이미 떠 있는(warm) 인스턴스가 첫 토큰을 내는 시간이고, 콜드 스타트는 그 인스턴스 자체가 없어서 만들어지는 시간이라는 점이 다릅니다. 관련 연구로는 모델 로딩 지연을 줄여 콜드 스타트를 완화하는 ServerlessLLM (Fu et al., OSDI 2024)이 있습니다.
Q : (개인 연구 관련) 병리(WSI) 이미지 쪽에서도 연산 속도나 계산을 줄이기 위한 (KV 캐시 같은) 기법을 사용하나요?
A : KV 캐시 자체는 그대로 적용되지 않습니다. KV 캐시는 토큰을 하나씩 만드는 자기회귀(autoregressive) 생성에서 과거 K/V를 재사용하는 것인데, ViT 같은 이미지 인코더는 한 번의 forward로 처리(자기회귀가 아님)라 "과거 토큰 캐시" 개념이 없기 때문입니다. 다만 같은 목적(불필요한 계산·메모리·데이터 이동 줄이기)의 기법들은 이미지에서도 활발히 쓰입니다. ① FlashAttention은 그대로 적용 — 어텐션은 이미지든 텍스트든 같은 연산이라 ViT 가속에 사용됩니다 (Dao et al., 2022). ② 토큰 수 줄이기 — WSI는 기가픽셀이라 패치가 수만 개로 여기가 진짜 병목이며, Token Merging(ToMe, Bolya et al., ICLR 2023, arXiv:2210.09461)·토큰 프루닝·sparse attention으로 토큰 수를 줄입니다(제 논문의 sparse attention pooling도 "중요한 토큰만 선택"하는 같은 계열입니다). ③ 패치 임베딩 사전계산·캐싱(이미지판 캐싱) — 병리 MIL 파이프라인은 foundation model로 패치 feature를 한 번 추출해 저장해두고 학습·실험마다 재사용하며, 매번 인코더를 다시 돌리지 않습니다 (CLAM, Lu et al., Nature Biomedical Engineering 2021, arXiv:2004.09666). ④ 양자화·증류·가지치기 같은 모델 압축도 이미지 인코더에 동일하게 적용됩니다. 요약하면 이미지엔 자기회귀 KV 캐시는 없지만, FlashAttention·토큰 축소·패치 feature 캐싱·모델 압축 등 원리가 같은 최적화가 사용됩니다.
[관련 논문]
- Efficient Memory Management for Large Language Model Serving with PagedAttention
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
- GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
[녹화 영상]
https://us06web.zoom.us/rec/share/Alm-x055xK6EWq9KeZacpUZWDDIHqzHL8gamSe9Q7jagN4-N4hE-68L1Z34TvMXe.vEf8-XJlHolDBxND
2026.09. 17
[세미나 주제]
LLM Serving and Optimization
[발표자]
오수진
[요약]
학습이 끝난 모델은 그 자체로 제품이 아니라, 사용자의 요청에 24시간 답하는 서빙 단계에 들어가야 비로소 서비스가 되며, 바로 이 지점에서 속도·처리량·비용이 결정된다. 그런데 LLM 서빙이 어려운 이유는 GPU의 연산 능력(TFLOPS)이 부족해서가 아니라 대부분의 병목이 메모리에서 생기기 때문이다. 추론은 입력을 한 번에 처리하는 연산 위주의 프리필과 토큰을 하나씩 생성하는 메모리 위주의 디코드로 나뉘는데, 긴 답변일수록 시간의 대부분은 디코드에 쓰인다. 디코드는 토큰 하나를 만들 때마다 모델 가중치 전체를 GPU 메모리에서 읽어와야 해서, 연산이 아니라 메모리 대역폭에 묶이는 memory-bound 상태가 되기 때문이다. 이를 돕기 위해 과거 토큰의 Key·Value를 저장해 재계산을 피하는 KV 캐시를 쓰지만, 이 캐시가 다시 GPU 메모리 용량을 잡아먹어 동시 사용자 수를 제한하는 다음 병목이 된다. 그래서 하드웨어를 고를 때도 TFLOPS 하나가 아니라 메모리 용량·대역폭·인터커넥트를 함께 봐야 하며, 루프라인 모델의 산술 강도로 지금 병목이 연산인지 대역폭인지 판별할 수 있다.
이러한 병목을 푸는 첫 번째 축은 스케줄링으로, 연속 배칭과 청크 프리필이 GPU가 노는 시간을 없애 처리량을 끌어올린다. 두 번째 축은 어텐션·커널 최적화로, MHA에서 MQA·GQA·MLA로 K/V 헤드를 줄여 KV 캐시를 압축하고 FlashAttention과 PagedAttention으로 느린 메모리 왕복과 메모리 낭비를 줄인다. 세 번째 축은 모델 압축으로 양자화·증류·가지치기를 통해 모델 자체를 작고 빠르게 만들며, 네 번째 축인 프리픽스 캐싱은 반복되는 프롬프트 계산을 재사용해 프리필 비용을 없앤다. 결국 서빙 최적화는 단순히 '더 빠르게'가 아니라 지연시간·처리량·메모리·정확도·운영 복잡도 사이의 트레이드오프를 병목에 맞춰 조율하고 반드시 측정으로 검증하는 일이다.
[Q&A]
Q : (8p, Cold start) 콜드 스타트가 사용자가 처음 질문하는 것을 말하는 건가요? 정확히 어떤 부분인가요?
A : 콜드 스타트는 사용자의 첫 질문이나 TTFT와는 다른 개념입니다. 새 서빙 인스턴스(레플리카·파드·서버리스 워커)를 처음 띄울 때 발생하는 준비 지연을 뜻하며, 컨테이너/파드 기동 + 모델 가중치를 디스크·네트워크에서 GPU 메모리로 로딩(대형 모델은 수 초~수십 초) + CUDA 초기화·워밍업까지 포함합니다. 오토스케일링(특히 scale-to-zero)이나 피크 트래픽 상황에서 새 인스턴스가 올라오는 동안 요청이 대기하거나 실패할 수 있어 확장성에서 중요하게 다룹니다. TTFT는 이미 떠 있는(warm) 인스턴스가 첫 토큰을 내는 시간이고, 콜드 스타트는 그 인스턴스 자체가 없어서 만들어지는 시간이라는 점이 다릅니다. 관련 연구로는 모델 로딩 지연을 줄여 콜드 스타트를 완화하는 ServerlessLLM (Fu et al., OSDI 2024)이 있습니다.
Q : (개인 연구 관련) 병리(WSI) 이미지 쪽에서도 연산 속도나 계산을 줄이기 위한 (KV 캐시 같은) 기법을 사용하나요?
A : KV 캐시 자체는 그대로 적용되지 않습니다. KV 캐시는 토큰을 하나씩 만드는 자기회귀(autoregressive) 생성에서 과거 K/V를 재사용하는 것인데, ViT 같은 이미지 인코더는 한 번의 forward로 처리(자기회귀가 아님)라 "과거 토큰 캐시" 개념이 없기 때문입니다. 다만 같은 목적(불필요한 계산·메모리·데이터 이동 줄이기)의 기법들은 이미지에서도 활발히 쓰입니다. ① FlashAttention은 그대로 적용 — 어텐션은 이미지든 텍스트든 같은 연산이라 ViT 가속에 사용됩니다 (Dao et al., 2022). ② 토큰 수 줄이기 — WSI는 기가픽셀이라 패치가 수만 개로 여기가 진짜 병목이며, Token Merging(ToMe, Bolya et al., ICLR 2023, arXiv:2210.09461)·토큰 프루닝·sparse attention으로 토큰 수를 줄입니다(제 논문의 sparse attention pooling도 "중요한 토큰만 선택"하는 같은 계열입니다). ③ 패치 임베딩 사전계산·캐싱(이미지판 캐싱) — 병리 MIL 파이프라인은 foundation model로 패치 feature를 한 번 추출해 저장해두고 학습·실험마다 재사용하며, 매번 인코더를 다시 돌리지 않습니다 (CLAM, Lu et al., Nature Biomedical Engineering 2021, arXiv:2004.09666). ④ 양자화·증류·가지치기 같은 모델 압축도 이미지 인코더에 동일하게 적용됩니다. 요약하면 이미지엔 자기회귀 KV 캐시는 없지만, FlashAttention·토큰 축소·패치 feature 캐싱·모델 압축 등 원리가 같은 최적화가 사용됩니다.
[관련 논문]
- Efficient Memory Management for Large Language Model Serving with PagedAttention
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
- GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints
[녹화 영상]
https://us06web.zoom.us/rec/share/Alm-x055xK6EWq9KeZacpUZWDDIHqzHL8gamSe9Q7jagN4-N4hE-68L1Z34TvMXe.vEf8-XJlHolDBxND
첨부파일
-
20260917_LLM_Serving.pdf (834.6K)
DATE : 2026-09-22 11:56:10
댓글목록
등록된 댓글이 없습니다.