支持以tensorlist,即二级指针结构的形式而非整个tensor作为cacheK与cacheV的输入。
如何构造该场景中的variantPack:
atb Tensor定义:
1 2 3 4 5 6 7 8 9 10 | struct Tensor { //! \brief Tensor描述信息 TensorDesc desc; //! \brief TensorNPU内存地址。 void *deviceData = nullptr; //! \brief TensorCPU内存地址。 void *hostData = nullptr; //! \brief “deviceData”或“hostData”指向内容的内存大小。 uint64_t dataSize = 0; }; |
variantPack中的输入tensors,在需要使能tensor list时,将对应tensor的deviceData置为nullptr,将hostData指向构造的tensorList即可。
此功能只在开启kv-bypass功能(即参数“kvcacheCfg”置为K_BYPASS_V_BYPASS),且“calcType”为DECODER时生效。