<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>PagedAttention - 태그 - lee's blog</title><link>https://ken-0913.github.io/myblog/tags/pagedattention/</link><description>PagedAttention - 태그 - lee's blog</description><generator>Hugo -- gohugo.io</generator><language>ko-kr</language><managingEditor>hyeonjae0913@gmail.com (ken-0913)</managingEditor><webMaster>hyeonjae0913@gmail.com (ken-0913)</webMaster><lastBuildDate>Sat, 22 Aug 2026 02:49:06 +0900</lastBuildDate><atom:link href="https://ken-0913.github.io/myblog/tags/pagedattention/" rel="self" type="application/rss+xml"/><item><title>LLM 스터디 3주차 - PagedAttention 직접 증명하기 — vLLM 블록 테이블 꺼내 보기</title><link>https://ken-0913.github.io/myblog/posts/llm/llm-paged-attention-verify/</link><pubDate>Sat, 22 Aug 2026 02:49:06 +0900</pubDate><author><name>ken-0913</name></author><guid>https://ken-0913.github.io/myblog/posts/llm/llm-paged-attention-verify/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/llm-paged-attention-verify-746cfbd1.png" referrerpolicy="no-referrer">
            </div><h2 id="1-pagedattention-을-이해해-보자" class="headerLink">
    <a href="#1-pagedattention-%ec%9d%84-%ec%9d%b4%ed%95%b4%ed%95%b4-%eb%b3%b4%ec%9e%90" class="header-mark"></a>1. PagedAttention 을 이해해 보자</h2><p>LLM은 도중에 계산 결과를 어딘가 보관해야한다. GPU 메모리에 보관하며 토큰이 커질 수록 역시 커진다. </p>
<h3 id="기존-방식의-문제" class="headerLink">
    <a href="#%ea%b8%b0%ec%a1%b4-%eb%b0%a9%ec%8b%9d%ec%9d%98-%eb%ac%b8%ec%a0%9c" class="header-mark"></a>기존 방식의 문제</h3><ul>
<li>일반적인 최대치를 상정하여 대비한다. 최대 512토큰이 들어 올 수 있으니 32칸을 비워두세요. (하나의 KV블락당 16이라 가정)</li>
<li>실제로 6 토큰만 들어오면 나머지 31블락은 쓸모가 없어지는 경우가 생긴다</li>
<li>이 쓸모없어진 블락은 사용할 수 없다.</li>
</ul>
<p>그림으로 보면 이렇다.</p>
<p><img class="tw:inline" loading="lazy" src='/myblog/posts/llm/llm-paged-attention-verify/contiguous-allocation-waste.svg'   alt="연속 할당의 낭비 — 최대치를 미리 잡아 둔다"  ></p>
<p><strong>512칸을 예약해 놓고 6칸만 쓴다.</strong> 나머지 506칸(98.8%)은 비어 있는데도 다른 요청이 가져다 쓸 수 없다.</p>]]></description></item><item><title>LLM 스터디 3주차 - LLM 서빙 최적화 기법 — 배칭·어텐션·양자화·prefix 캐싱</title><link>https://ken-0913.github.io/myblog/posts/llm/llm-essential-llm-optimization-techniques/</link><pubDate>Fri, 21 Aug 2026 21:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>https://ken-0913.github.io/myblog/posts/llm/llm-essential-llm-optimization-techniques/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/llm-essential-llm-optimization-techniques-d756afc2.png" referrerpolicy="no-referrer">
            </div><p><a href="../llm-challenges-when-serving-llm/" rel="">앞 글</a>에서 병목이 어디에 있는지를 봤다. 이번에는  <strong>병목을 실제로 풀어보자.</strong> </p>
<h2 id="1-요청-배칭과-스케줄링" class="headerLink">
    <a href="#1-%ec%9a%94%ec%b2%ad-%eb%b0%b0%ec%b9%ad%ea%b3%bc-%ec%8a%a4%ec%bc%80%ec%a4%84%eb%a7%81" class="header-mark"></a>1. 요청 배칭과 스케줄링</h2><h3 id="왜-배칭이-필요한가" class="headerLink">
    <a href="#%ec%99%9c-%eb%b0%b0%ec%b9%ad%ec%9d%b4-%ed%95%84%ec%9a%94%ed%95%9c%ea%b0%80" class="header-mark"></a>왜 배칭이 필요한가</h3><p>prefill은 프롬프트 토큰을 한꺼번에 처리해 연산 강도가 높다. (앞서 말했듯이 연산강도가 높다는 것은 같은 가중치를 한 번 읽고 그것으로 훨씬 많은 토큰을 처리한다)</p>
<p><strong>문제는 decode다.</strong> 토큰 하나를 만들려고 수십억 개 파라미터를 전부 읽어야 하니 대역폭만 축내고 연산 유닛은 유휴상태이다. </p>
<p>여기서 배칭이 들어간다. 요청 세 개를 묶으면 <strong>가중치는 여전히 한 번만 읽으면서 토큰은 세 개를 만든다.</strong> 연산 강도를 인위적으로 끌어올린다.</p>]]></description></item><item><title>LLM 스터디 3주차 - vLLM은 왜 빠른가 — PagedAttention과 연속 배칭 직접 재현하기</title><link>https://ken-0913.github.io/myblog/posts/llm/llm-vllm-lab/</link><pubDate>Tue, 18 Aug 2026 20:00:00 +0900</pubDate><author><name>ken-0913</name></author><guid>https://ken-0913.github.io/myblog/posts/llm/llm-vllm-lab/</guid><description><![CDATA[<div class="featured-image">
                <img src="images/banners/llm-vllm-lab-1a4d0866.png" referrerpolicy="no-referrer">
            </div><p><a href="../llm-serving-single-model-lab/" rel="">2주차 실습들</a>은 서빙 시스템을 <strong>어떻게 구성하는지</strong>를 다뤘다. 이번에는 질문이 안쪽으로 향한다. <strong>vLLM은 정확히 무엇 때문에 빠른가.</strong></p>
<p>CPU만 있는 4GB VM에서 SmolLM-135M을 8단계로 굴린다. HuggingFace 베이스라인을 재고, vLLM과 비교하고, KV 캐시가 낭비되는 과정을 숫자로 본 뒤 PagedAttention이 그것을 어떻게 되돌리는지 확인한다.</p>
<p><strong>결론부터 말하면 단일 요청에서 vLLM은 1.1배밖에 빠르지 않다.</strong> 진짜 차이는 동시 사용자가 붙을 때 나온다. 이 글의 8단계는 그 격차가 어디서 오는지를 따라가는 순서다.</p>
<h2 id="1-실습-환경" class="headerLink">
    <a href="#1-%ec%8b%a4%ec%8a%b5-%ed%99%98%ea%b2%bd" class="header-mark"></a>1. 실습 환경</h2><p>GPU가 없다. vLLM의 CPU 빌드를 쓰고, 4GB 메모리 제한 때문에 엔진을 in-process로 띄운다.</p>]]></description></item></channel></rss>