PullKvCache

Applicability

Product

Supported (√/x)

Atlas 350 Accelerator Card

x

Atlas A3 training product/Atlas A3 inference product

Atlas A2 training product/Atlas A2 inference product

Atlas 200I/500 A2 inference product

x

Atlas inference product

x

Atlas training product

x

Note: For Atlas A2 training product/Atlas A2 inference product, only the Atlas 800I A2 inference server and A200I A2 Box heterogeneous subrack are supported.

Function Description

Pulls the cache from the remote node to the local cache.

Prototype

1
2
3
4
5
Status PullKvCache(const CacheIndex &src_cache_index,
                   const Cache &dst_cache,
                   uint32_t batch_index = 0U,
                   int64_t size = -1,
                   const KvCacheExtParam &ext_param = {})

Parameters

Parameter

Input/Output

Description

src_cache_index

Input

Index of the remote source cache.

dst_cache

Input

Local destination cache. Only cache_id returned by calling RegisterKvCache needs to be specified.

batch_index

Input

Index of the local destination batch.

size

Input

If this parameter is set to an integer greater than 0, it indicates the size (in bytes) of the data to be pulled.

If this parameter is set to -1, it indicates that the entire data is pulled.

The default value is -1.

ext_param

Input

The difference between second and first in src_layer_range must equal that in dst_layer_range. The default values of first and second in both src_layer_range and dst_layer_range are -1, indicating all layers. The valid range for each index is [0, maximum available layer index], and first must be less than or equal to second. The maximum available layer index is calculated as follows:

(CacheDesc::num_tensors / KvCacheExtParam::tensor_num_per_layer) - 1

tensor_num_per_layer can range from 1 to the total number of tensors in the cache, with a default value of 2. When src_layer_range or dst_layer_range uses non-default values, tensor_num_per_layer can either remain at its default value or be set to another value, which must be divisible by the total number of tensors in the cache.

Example

Click Gitee, download the sample package of the matching version based on the tag name, and obtain the sample from the cplusplus/level1_single_api/11_llm_data_dist directory.

Returns

  • LLM_SUCCESS: Success.
  • LLM_PARAM_INVALID: Incorrect parameter.
  • LLM_NOT_YET_LINK: No link is established with the remote cluster.
  • LLM_TIMEOUT: Pull timeout.
  • LLM_KV_CACHE_NOT_EXIST: The local or remote KV cache does not exist.
  • Other values: Failure.

Restrictions

Before calling this API, call the LinkLlmClusters API to complete initialization.