For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).
Python class
MultiKVCacheParams
MultiKVCacheParams
class max.nn.kv_cache.MultiKVCacheParams(children, page_size, data_parallel_degree, devices, kv_connector_config, enable_prefix_caching=False, enable_dp_cross_replica_prefix_copy=True, kv_hash_algo='ahash64', kv_hash_seed=None, speculative_method=None, num_draft_tokens=0)
Bases: KVCacheParamInterface
Aggregates multiple cache parameter sets into a recursive tree.
Children may be leaf KVCacheParams instances or nested
MultiKVCacheParams subtrees, so arbitrarily deep hierarchies
are supported (such as {target: {sliding, mla}, draft: mha}). The
whole tree is consumed through the KVCacheParamInterface —
callers never need to know how many blocks that is.
A RecurrentStateParams is a child like any other, but answers
fewer questions, so attention-only aggregates run over
_attention_children.
-
Parameters:
-
- children (dict[str, CacheLeafParamInterface])
- page_size (int)
- data_parallel_degree (int)
- devices (Sequence[DeviceRef])
- kv_connector_config (KVConnectorConfigInterface)
- enable_prefix_caching (bool)
- enable_dp_cross_replica_prefix_copy (bool)
- kv_hash_algo (Literal['ahash64', 'sha256'])
- kv_hash_seed (bytes | None)
- speculative_method (Literal['eagle', 'mtp', 'dflash', 'dflash2', 'dspark'] | None)
- num_draft_tokens (int)
allocate_buffers()
allocate_buffers(total_num_pages, _prefix='')
Allocates per-replica buffers for every cache in the tree.
Returns one MultiKVCacheBuffer per data-parallel replica,
each holding that replica’s KVCacheBuffer for every child
that allocates one.
-
Parameters:
-
Return type:
build_runtime_inputs()
build_runtime_inputs(assignments, buffers, _prefix='', *, staging=None)
Builds the runtime KV-cache tree spanning all replicas.
Each child builds itself from every replica’s assignment plus that replica’s child buffer, if it allocated one; the per-replica assignment (cache lengths / lookup table / dispatch shape / state rows) is shared across child caches since they all map the same sequence. The tree comes out in the order the graph declared its inputs.
-
Parameters:
-
- assignments (Sequence[KVCacheAssignments])
- buffers (Sequence[KVCacheBufferInterface])
- _prefix (str)
- staging (GraphInputStagingInterface | None)
-
Return type:
bytes_per_block
property bytes_per_block: int
Total bytes per block across all KV caches.
Since all caches allocate memory for the same sequence, the total memory cost per block is the sum across all param sets.
child()
child(key, kind)
Returns the child at key as the kind it must be.
children
children: dict[str, CacheLeafParamInterface]
Cache parameter sets to aggregate. Values may be leaf
KVCacheParams or RecurrentStateParams instances, or
nested MultiKVCacheParams trees.
data_parallel_degree
data_parallel_degree: int
Degree of data parallelism, a value every child cache must share.
devices
Devices to use for the KV caches.
enable_dp_cross_replica_prefix_copy
enable_dp_cross_replica_prefix_copy: bool = True
Whether a DP cross-replica prefix copy may serve a hit.
enable_prefix_caching
enable_prefix_caching: bool = False
Whether prefix caching is enabled, a value every child must share.
from_params()
classmethod from_params(params)
Creates a MultiKVCacheParams from one or more param sets.
Children may be leaf KVCacheParams instances, one
RecurrentStateParams, or nested
MultiKVCacheParams trees, enabling arbitrarily deep KV
cache hierarchies (such as {target: {sliding, mla}, draft: mha}).
All children must share the same page_size,
data_parallel_degree, n_devices, and
kv_connector_config values.
-
Parameters:
-
params (Mapping[str, CacheLeafParamInterface]) – Named mapping of
CacheLeafParamInterfaceinstances to aggregate. At least one must be a cache an attention op reads, since the pool’s configuration is read off one. -
Returns:
-
A new
MultiKVCacheParamsaggregating all provided params. -
Raises:
-
ValueError – If no params are provided, or if none of them is a cache an attention op reads.
-
Return type:
get_symbolic_inputs()
get_symbolic_inputs(namespace='')
Returns the symbolic inputs for the KV cache tree.
Each child inherits a distinct namespace so sibling groups’ page-pool dims stay independent; nested subtrees compose the prefix.
-
Parameters:
-
namespace (str)
-
Return type:
graph_capture_probe_cache_lengths()
graph_capture_probe_cache_lengths(max_cache_length, q_max_seq_len=1)
Returns the union of probe cache lengths across all child caches.
kv_connector_config
kv_connector_config: KVConnectorConfigInterface
The KV connector’s type and settings, a value every child must share.
kv_hash_algo
kv_hash_algo: Literal['ahash64', 'sha256'] = 'ahash64'
Hash algorithm used for block identity.
kv_hash_seed
Resolved cluster seed for sha256.
leaf_kind
property leaf_kind: CacheLeafKind
Attention where the subtree holds any, else recurrent.
leaves()
leaves(_prefix='')
Returns the leaves of every child, prefixed by the child’s name.
-
Parameters:
-
_prefix (str)
-
Return type:
n_devices
property n_devices: int
Returns the number of devices.
num_draft_tokens
num_draft_tokens: int = 0
Total draft tokens generated per speculative iteration.
page_size
page_size: int
Number of tokens per page, a value every child cache must share.
replicates_kv_across_tp
property replicates_kv_across_tp: bool
Whether every device holds identical KV state.
A leaf’s own answer, not the tree’s: an MHA leaf shards its heads where an MLA one replicates its latent, so siblings can differ.
resolve_attn_key()
resolve_attn_key(batch_size, max_prompt_length, max_cache_valid_length)
Resolves the dispatch shape tree mirroring the attention caches.
-
Parameters:
-
Return type:
slab_to_bound_views()
slab_to_bound_views(slabs)
Returns whatever the children bind, in one mapping.
Keys come from the leaves, which are unique across the tree.
slab_to_buffer_views()
slab_to_buffer_views(buffers, padded_page_bytes=None, _prefix='')
Converts a slab of memory into every child’s view of it.
speculative_method
speculative_method: Literal['eagle', 'mtp', 'dflash', 'dflash2', 'dspark'] | None = None
Speculative decoding method propagated from SpeculativeConfig.
staged_dispatch_metadata()
staged_dispatch_metadata(_prefix='')
The metadata every child stages, under the child’s own prefix.
tensor_parallel_degree
property tensor_parallel_degree: int
Returns the tensor parallel degree.
unflatten_basic_kv_tree()
unflatten_basic_kv_tree(it)
Unflattens a basic KV tree from a graph-input iterator.
Requires that the model is a basic height-1 tree. This method does not work on nested trees.
Returns one entry per attention child, in declaration order.
-
Parameters:
-
Return type:
-
tuple[list[KVCacheInputsPerDevice[TensorValue, BufferValue]], …]
unflatten_kv_inputs()
unflatten_kv_inputs(it)
Unflattens the KV cache inputs from a graph-input iterator.
-
Parameters:
-
Return type: