<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Python - 태그 - lee's blog</title><link>https://ken-0913.github.io/myblog/tags/python/</link><description>Python - 태그 - 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/python/" 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주차 - 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>