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

LMCache 用語集

確信度: [VERIFIED] 最終更新: 2026-02-16(Phase 1 セッション1)

コアコンセプト

用語説明
LMCacheEngineKVキャッシュのstore/retrieve/prefetchを統合するメインエンジン。lmcache/v1/cache_engine.py
LMCacheManagerLMCacheの内部コンポーネント(Engine, LookupClient, OffloadServer等)のライフサイクル管理。lmcache/v1/manager.py
CacheEngineKeyKVキャッシュチャンクの一意識別子。(model_name, world_size, worker_id, chunk_hash, dtype, request_configs)の6タプル。lmcache/utils.py:333
LayerCacheEngineKeyCacheEngineKey + layer_id。レイヤー単位保存時のキー。split_layers()で生成。lmcache/utils.py:392
MemoryObjKVキャッシュデータを保持する抽象メモリオブジェクト。フォーマット情報とテンソルデータを包含。lmcache/v1/memory_management.py
MemoryFormatKVキャッシュのメモリレイアウト種別。KV_2LTD, KV_T2D, KV_2TD, BINARY, KV_MLA_FMT等。
LMCacheMetadataモデル名、world_size、worker_id、kv_dtype、kv_shape等のメタ情報。サービングエンジンから抽出。
LMCacheEngineConfigYAML/環境変数ベースの設定。chunk_size, ストレージ設定, blend設定, P2P設定等。

トークン処理

用語説明
TokenDatabaseトークン列をチャンクキー列に変換する抽象基底クラス。
ChunkedTokenDatabase固定サイズ(default 256トークン)チャンクでプレフィックスハッシュを計算。標準の実装。
SegmentTokenDatabaseセパレータベースでセグメント分割。CacheBlend時に使用。
chunk_sizeチャンクのトークン数。デフォルト256。
chunk_hashチャンクのプレフィックスハッシュ値。vLLMのsha256_cborハッシュ関数を直接利用(完全互換)。
NONE_HASHプレフィックスハッシュチェーンの初期値。vLLMのkv_cache_utils.init_none_hash()で初期化。
store_maskstore時のマスク。False=already-cached prefix、True=新規トークン。False数はchunk_sizeの倍数必須。

ストレージ

用語説明
StorageManager複数のストレージバックエンドを階層管理。put/get要求を各バックエンドに振り分け。
StorageBackendInterfaceストレージバックエンドの抽象インターフェース。contains/put/get等。
LocalCPUBackendCPU メモリ上のKVキャッシュストレージ(L1)。hot_cache(OrderedDict)で管理。同期書き込み。
hot_cacheLocalCPUBackendのOrderedDict[CacheEngineKey, MemoryObj]。CachePolicyでEviction管理。
allocator_backendMemoryObj確保を担当するバックエンド。通常はLocalCPUBackend。
LocalDiskBackendディスク上のKVキャッシュストレージ(L2)。
RemoteBackendリモートストレージ(L3)。connector経由でRedis/S3/Valkey等に接続。
P2PBackendインスタンス間のP2P KVキャッシュ転送。
NIXLBackendNVIDIA NIXL経由の高速転送。
GdsBackendGPUDirect Storage経由の転送。
CachePolicyEviction方針。FIFO/LRU/LFU/MRUから選択可能。
Serdeシリアライゼーション/デシリアライゼーション。naive(無圧縮)、CacheGen(圧縮)、KIVI等。

GPU連携

用語説明
GPUConnectorInterfaceGPU KVキャッシュとCPU MemoryObj間のデータ転送抽象インターフェース。to_gpu/from_gpu。
VLLMPagedMemGPUConnectorV2vLLMのPaged KVキャッシュ向けGPUコネクタ(非レイヤーワイズ)。全レイヤー一括転送。
VLLMPagedMemLayerwiseGPUConnectorレイヤー単位でKVキャッシュを転送するコネクタ。ジェネレータパターン使用。主要パス。
lmc_ops.single_layer_kv_transferCUDAカーネル。vLLMのページドKVキャッシュからslot_mapping経由でデータを抽出/書き戻し。
slot_mappingトークン位置→vLLMページドメモリのflat slot位置へのマッピング。GPU Tensor。
store_streamGPU→CPU転送専用CUDAストリーム。メイン計算ストリームとオーバーラップ可能。
load_streamCPU→GPU転送専用CUDAストリーム。retrieve時にメイン計算とオーバーラップ。
lmc_ops.multi_layer_kv_transferCUDAカーネル。全レイヤー一括でMemoryObj→paged KVキャッシュに転送(Bulk retrieve用)。
fused_rotary_embRoPE位置補正関数。Layerwise retrieve時に保存時と現在のposition差分を補正。
VLLMBufferLayerwiseGPUConnectorCacheBlend対応のLayerwiseコネクタ。ダブルバッファ+RoPE補正+gap zeroing。

統合

用語説明
LMCacheConnectorV1DynamicvLLMのKVConnectorBase_V1実装。LMCacheConnectorV1Implに委譲。
LMCacheConnectorV1ImplvLLM統合の実装本体(vllm_v1_adapter.py)。LoadSpec/SaveSpecでロード・保存を管理。
LoadSpecロード仕様。vLLMキャッシュ済みトークン数、LMCacheキャッシュ済みトークン数、ロード可否。
SaveSpec保存仕様。skip_leading_tokens(キャッシュ済みプレフィックス長)、can_save(保存可否)。
ConnectorMetadataScheduler→Worker間で渡されるメタデータ。各リクエストのtoken_ids, slot_mapping, LoadSpec, SaveSpecを含む。
kv_role"kv_both"(default)/"kv_producer"/"kv_consumer"。producer時はskip_leading_tokens=0。
LookupClientScheduler側でキャッシュ存在確認を行うZMQベースクライアント。lmcache_lookup_client.py
LookupServerWorker側でLookupClientからのZMQ REQ/REPを受け付け、StorageManager.async_lookup_and_prefetchを実行。
EventManager非同期イベント(LOADING等)のFutureを管理。lookup_idでprefetch結果とretrieve消費を紐付け。
token_maskretrieve時のマスク。False=vLLMがキャッシュ済み(chunk_sizeの倍数に切り下げ)、True=LMCacheからロード対象。
ret_maskretrieve結果のマスク。True=LMCacheから実際に取得成功、False=未取得。Engine内部で構築。
write-backStorageManager.batched_get()がリモートバックエンドから取得した場合、自動的にLocalCPUBackendにコピーする動作。
get_block_mappingチャンクの所在バックエンドをprefix match方式で特定するStorageManagerメソッド。

CacheBlend

用語説明
CacheBlend非プレフィックス部分のKVキャッシュも再利用する技術。重要トークンを再計算して品質保持。
BlenderCacheBlendのblending計算を実行するコンポーネント。lmcache/v1/compute/blend/
blend_recompute_ratios再計算するトークンの割合。
blend_special_strセグメント分割用セパレータ文字列。デフォルト" # # "

分散・マルチプロセス

用語説明
CacheController複数LMCacheインスタンス間のキャッシュ状態を中央管理するコントローラ。
LMCacheWorkerCacheControllerと通信するワーカー。Heartbeat/Register/P2P Lookup。
MultiProcess ServerZMQ IPCベースの別プロセスLMCacheサーバー。SessionManager, GPUCacheContext管理。
BlendServerCacheBlend用MPサーバー。MPCacheEngine継承。
OffloadServerKVキャッシュオフロード用ZMQサーバー。
Disaggregated Prefill (PD)Prefill/Decode分離アーキテクチャ。NIXL経由でPD間転送。

設定キー(主要)

設定名デフォルト説明
chunk_size256チャンクのトークン数
local_cputrueCPU バックエンド有効化
max_local_cpu_size5.0 (GB)CPUストレージ上限
local_diskNoneディスクパス(Noneで無効)
remote_urlNoneリモートストレージURL
remote_serde“naive”リモート用Serde
use_layerwisefalseレイヤー単位転送
enable_blendingfalseCacheBlend有効化
enable_p2pfalseP2P転送有効化
enable_pdfalseDisaggregated Prefill
enable_controllerfalseCacheController有効化
save_decode_cachefalseDecodeフェーズのキャッシュも保存