Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

アーキテクチャ概要

深度: [SHALLOW] 確信度: [VERIFIED] 最終更新: 2026-02-09

概要

vLLMはUC Berkeley Sky Computing Lab発のLLM推論・サービングライブラリである。PagedAttentionによるKVキャッシュの効率的メモリ管理、Continuous Batchingによる動的バッチスケジューリングを中核技術とし、高スループット・低レイテンシのLLM推論を実現する。OpenAI互換APIサーバー、マルチモーダル対応、分散推論(Tensor/Pipeline/Data/Expert並列)を備える。

全体構造

graph TD
    subgraph エントリポイント層
        CLI["CLI<br>vllm.entrypoints.cli"]
        LLM["LLM<br>vllm.entrypoints.llm:101"]
        OpenAI["OpenAI互換API<br>vllm.entrypoints.openai"]
    end

    subgraph エンジン層
        AsyncLLM["AsyncLLM<br>vllm.v1.engine.async_llm:71"]
        LLMEngine["LLMEngine<br>vllm.v1.engine.llm_engine"]
        EngineCore["EngineCore<br>vllm.v1.engine.core:79"]
        InputProc["InputProcessor"]
        OutputProc["OutputProcessor"]
    end

    subgraph コア層
        Scheduler["Scheduler<br>vllm.v1.core.sched.scheduler:63"]
        KVCacheMgr["KVCacheManager<br>vllm.v1.core.kv_cache_manager:94"]
        BlockPool["BlockPool<br>vllm.v1.core.block_pool"]
    end

    subgraph 実行層
        Executor["Executor<br>vllm.v1.executor"]
        Worker["Worker<br>vllm.v1.worker.gpu_worker:70"]
        ModelRunner["GPUModelRunner<br>vllm.v1.worker.gpu_model_runner:329"]
    end

    subgraph モデル層
        Models["Models<br>vllm.model_executor.models<br>241ファイル"]
        Attention["Attention<br>2層構造"]
        Layers["Layers<br>vllm.model_executor.layers"]
    end

    CLI --> AsyncLLM
    LLM --> LLMEngine
    OpenAI --> AsyncLLM

    AsyncLLM -->|"ZMQ IPC"| EngineCore
    LLMEngine --> EngineCore
    EngineCore --> InputProc
    EngineCore --> OutputProc

    EngineCore --> Scheduler
    EngineCore --> KVCacheMgr
    KVCacheMgr --> BlockPool

    EngineCore --> Executor
    Executor --> Worker
    Worker --> ModelRunner

    ModelRunner --> Models
    ModelRunner --> Attention
    Models --> Layers

アーキテクチャの世代

vllm/engine/vllm/v1/ への薄いラッパーである。

参照: target/vllm/vllm/engine/llm_engine.py:4LLMEngine = V1LLMEngine の1行エイリアス

v1が現行アーキテクチャの本体であり、コードリーディングでは vllm/v1/ を中心に読む。ただし vllm/model_executor/vllm/distributed/vllm/multimodal/ 等はv1からも直接利用されるため調査対象に含む。

主要コンポーネント

コンポーネントクラスパス役割
AsyncLLMAsyncLLM(EngineClient)target/vllm/vllm/v1/engine/async_llm.py:71非同期APIトップレベル
EngineCoreEngineCoretarget/vllm/vllm/v1/engine/core.py:79推論ループ内側。ZMQで外側と通信
SchedulerScheduler(SchedulerInterface)target/vllm/vllm/v1/core/sched/scheduler.py:63Continuous Batchingスケジューラ
KVCacheManagerKVCacheManagertarget/vllm/vllm/v1/core/kv_cache_manager.py:94KVキャッシュブロック管理
ExecutorExecutor(ABC)target/vllm/vllm/v1/executor/abstract.pyWorker群を束ねる実行層
WorkerWorker(WorkerBase)target/vllm/vllm/v1/worker/gpu_worker.py:701 GPUデバイスを担当
GPUModelRunnerGPUModelRunnertarget/vllm/vllm/v1/worker/gpu_model_runner.py:329GPU上のフォワードパス実行
VllmConfigVllmConfigtarget/vllm/vllm/config/vllm.py全設定の集約クラス

設計原則

PagedAttention

KVキャッシュをOSの仮想メモリページングに着想を得てブロック単位で管理する。連続したGPUメモリ確保が不要になり、メモリ断片化を大幅に抑制する。

Continuous Batching

リクエストの到着・完了に応じてバッチを動的に更新する。固定バッチサイズと異なり、GPU稼働率を最大化できる。

ZMQ IPC によるプロセス分離

EngineCoreは別プロセス(EngineCoreProc)として動作し、ZeroMQソケットで上位エンジン層と通信する。これによりスケジューリングと推論処理を並行実行できる。

プラグインシステム

vllm/plugins/ によるプラグイン機構を備え、起動時に load_general_plugins() で拡張を読み込む。

C++/CUDA 拡張

target/vllm/csrc/ にパフォーマンスクリティカルなネイティブコードが配置されている。PagedAttentionカーネル、LayerNorm、量子化カーネル、カスタムAllReduce等が含まれる。Pythonからは vllm._custom_ops 等のバインディング経由で呼び出される。

参照ファイル

ファイル主要クラス/関数
target/vllm/vllm/engine/llm_engine.pyLLMEngine(v1への薄いラッパー)
target/vllm/vllm/v1/engine/async_llm.pyAsyncLLM
target/vllm/vllm/v1/engine/core.pyEngineCore, EngineCoreProc
target/vllm/vllm/v1/core/sched/scheduler.pyScheduler
target/vllm/vllm/v1/core/kv_cache_manager.pyKVCacheManager
target/vllm/vllm/v1/executor/abstract.pyExecutor(ABC)
target/vllm/vllm/v1/worker/gpu_worker.pyWorker
target/vllm/vllm/v1/worker/gpu_model_runner.pyGPUModelRunner
target/vllm/vllm/config/vllm.pyVllmConfig
target/vllm/vllm/entrypoints/llm.pyLLM