개발자 장한별입니다.

ORCA: continuous batching은 어디서 왔는가 (1) — iteration-level scheduling과 selective batching

vLLM을 써보셨다면 “continuous batching” 혹은 “in-flight batching”이라는 말을 한 번쯤 들어보셨을 겁니다. 요청이 도중에 들어와도 배치에 끼워 넣고, 먼저 끝난 요청은 바로 반환하는 그 기능입니다. LLM 서빙의 처리량을 끌어올린 핵심 기법이지만, 이 아이디어의 원형은 vLLM이 아니라 2022년 OSDI에 발표된 ...

인덱스를 만들었는데 왜 안 빨라질까 — MySQL 인덱스 스캔 4가지

들어가며 인덱스를 걸면 쿼리가 빨라진다는 건 다들 압니다. 그런데 실제로 인덱스를 만들어놓고도 기대만큼 빨라지지 않는 경우를 종종 만납니다. 그 이유는 “인덱스를 탄다”는 말이 사실 한 가지가 아니기 때문입니다. MySQL이 인덱스를 읽는 방식은 여러 가지이고, 어떤 방식으로 읽느냐에 따라 성능 차이가 크게 납니다. 이 글에서는 인덱스 스캔 방식...

OS의 페이징을 KV Cache에 가져온 PagedAttention

들어가며 GPU 한 장(A6000)에 모델을 여러 개 올려 서빙해본 적이 있습니다. 그때 계속 부딪힌 벽은 메모리였습니다. 동시 요청을 조금만 늘려도 GPU 메모리가 모자랐고, “분명 여유가 있는 것 같은데 왜 배치를 못 키우지?”라는 생각이 들었습니다. vLLM을 쓰면 같은 GPU에서 처리량이 크게 올라간다는 점은 경험으로 알고 있었습니다. 그런데...