CANN/GE LLM缓存分配API
# allocate_cache【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge产品支持情况Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 推理系列产品支持Atlas A2 训练系列产品不支持函数功能分配Cache分配成功后会同时被cache_id与cache_keys引用只有当这些引用都解除后cache所占用的资源才会实际释放。cache_id的引用需通过deallocate_cache解除cache_keys的引用则可以通过以下2种方式解除。Decoder调用pull_cache接口成功后解除。Prompt调用remove_cache_key接口时解除。函数原型allocate_cache(cache_desc: CacheDesc, cache_keys: Union[Tuple[CacheKey], List[CacheKey]] ())参数说明参数名称数据类型取值说明cache_descCacheDescCache的描述。cache_keysUnion[Tuple[CacheKey], List[CacheKey]]仅当LLMRole为PROMPT时可设置用于在Decode拉取KV。调用示例from llm_datadist import * ... kv_cache_manager data_dist.kv_cache_manager cache_desc CacheDesc(80, [2, 2 * 1024 * 1024], DataType.DT_FLOAT16) cache_keys [CacheKey(prompt_cluster_id0, req_id1)] kv_cache kv_cache_manager.allocate_cache(cache_desc, cache_keys)返回值正常情况下返回KvCache。参数错误可能抛出TypeError或ValueError。如果cache_keys中包含了分配内存时绑定的CacheKey则抛出LLMException异常。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明传入cache_keys时如果Cache的batch size1则需要提供相同数量的CacheKey分别引用一组kv tensor。如果当次推理的batch未占用满即存在无效batch_index则需要插入特殊的CacheKey将req_id设置为UINT64_MAX占位如果空闲的batch_index在末尾则可以省略。如果cache_keys存在重复则最后一个生效。本接口不支持并发调用。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考