CANN/hixl待废弃Python接口文档 待废弃【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl产品支持情况产品是否支持Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√说明针对Atlas A2 训练系列产品/Atlas A2 推理系列产品仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。CacheManagerallocate_cache函数功能分配CacheCache分配成功后会同时被cache_id与cache_keys引用只有当这些引用都解除后cache所占用的资源才会实际释放。cache_id的引用需通过deallocate_cache解除cache_keys的引用则可以通过以下2种方式解除。Decode调用pull_cache或push_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]]Cache的索引。调用示例from llm_datadist import * ... cache_desc CacheDesc(1, [2, 1024 * 1024], DataType.DT_FLOAT16) cache_keys [CacheKey(1, req_id1), CacheKey(1, req_id2)] cache cache_manager.allocate_cache(cache_desc, cache_keys)返回值正常情况下返回Cache。传入数据类型错误情况下会抛出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存在重复则最后一个生效。调用该接口接口前需要先配置内存池。deallocate_cache函数功能释放Cache。如果该Cache在被分配时关联了CacheKey则实际的释放会延后到所有的CacheKey被拉取或执行了remove_cache_key。函数原型deallocate_cache(cache: Cache)参数说明参数名称数据类型取值说明cacheCache要释放的Cache。调用示例from llm_datadist import * ... cache_manager.deallocate_cache(cache)返回值正常情况下无返回值。传入数据类型错误情况下会抛出TypeError或ValueError异常。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明如果Cache不存在或已释放该操作为空操作。remove_cache_key函数功能移除CacheKey。移除CacheKey后该Cache将无法再被pull_cache拉取。函数原型remove_cache_key(cache_key: CacheKey)参数说明参数名称数据类型取值说明cache_keyCacheKey需要被移除的CacheKey。调用示例from llm_datadist import * ... cache_keys [CacheKey(1, req_id1), CacheKey(1, req_id2)] cache_manager.remove_cache_key(cache_keys[0]) cache_manager.remove_cache_key(cache_keys[1])返回值正常情况下无返回值。参数错误可能抛出TypeError或ValueError。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明如果CacheKey不存在或已移除该操作为空操作。copy_cache函数功能拷贝Cache。函数原型copy_cache(dst: Cache, src: Cache, dst_batch_index: int 0, src_batch_index: int 0, offset: int 0, size: int -1, req_id: Optional[int] None)参数说明参数名称数据类型取值说明dstCache目标Cache。srcCache源Cache。dst_batch_indexint目标Cache的batch_index默认为0。src_batch_indexint源Cache的batch_index默认为0。offsetint每个tensor的偏移默认为0。sizeint设置为0的整数表示要拷贝的大小。或设置为-1表示完整拷贝。默认为-1。req_idOptional[int]本次调用关联的req_id如果设置了该参数则本地调用相关的维测日志中会打印该req_id默认为None调用示例from llm_datadist import * ... cache_manager.copy_cache(dst_cache, src_cache, 0, 1, 0, 128)返回值正常情况下无返回值。传入数据类型错误情况下会抛出TypeError或ValueError异常。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明源Cache和目的Cahce的CacheDesc需要匹配。allocate_blocks_cache函数功能PagedAttention场景下分配多个blocks的CacheCache分配成功后可通过deallocate_blocks_cache释放内存。函数原型allocate_blocks_cache(cache_desc: CacheDesc, blocks_cache_key: Optional[BlocksCacheKey] None)参数说明参数名称数据类型取值说明cache_descCacheDescCache的描述。blocks_cache_keyOptional[BlocksCacheKey]索引一个blocks cache。调用示例from llm_datadist import * ... blocks_cache_key BlocksCacheKey(1, 0) blocks_cache cache_manager.allocate_blocks_cache(cache_desc, blocks_cache_key)返回值正常情况下返回Cache。传入数据类型错误情况下会抛出TypeError或ValueError异常。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明需要先配置内存池才能使用。deallocate_blocks_cache函数功能分配CacheCache分配成功后会同时被cache_id与cache_keys引用只有当这些引用都解除后cache所占用的资源才会实际释放。cache_id的引用需通过deallocate_cache解除cache_keys的引用则可以通过以下2种方式解除。Decode调用pull_cache或push_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]]Cache的索引。调用示例from llm_datadist import * ... cache_desc CacheDesc(1, [2, 1024 * 1024], DataType.DT_FLOAT16) cache_keys [CacheKey(1, req_id1), CacheKey(1, req_id2)] cache cache_manager.allocate_cache(cache_desc, cache_keys)返回值正常情况下返回Cache。传入数据类型错误情况下会抛出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存在重复则最后一个生效。调用该接口接口前需要先配置内存池。copy_blocks函数功能PagedAttention场景下拷贝block。函数原型copy_blocks(cache: Cache, copy_block_info: Dict[int, List[int]])参数说明参数名称数据类型取值说明cacheCache目标Cache。copy_block_infoDict[int, List[int]]dict里面内容代表原始block index目标block index列表。调用示例cache_manager.copy_blocks(cache, {1: [2,3]})返回值正常情况下无返回值。传入数据类型错误情况下会抛出TypeError或ValueError异常。执行时间超过sync_kv_timeout配置会抛出LLMException异常。约束说明无swap_blocks函数功能对cpu_cache和npu_cache进行换入换出。对于swap out功能该接口启用了4个线程执行并行任务对于swap in功能该接口启用了1个d2d线程。为了性能稳定建议进行进程绑核。swap in功能分为H2D和D2D两个阶段为了保障性能该接口申请了4个block大小的buffer用作流水拷贝所以建议预留出对应的Device内存防止出现OOM。函数原型swap_blocks(src_cache: Cache, dst_cache: Cache, src_to_dst: Dict[int, int])参数说明参数名称数据类型取值说明src_cacheCache源Cache。dst_cacheCache目标Cache。src_to_dstDict[int, int]dict里面内容代表原始block index目标block index调用示例from llm_datadist import Cache npu_cache cache_manager.allocate_blocks_cache(npu_cache_desc, npu_cache_key) cpu_cache Cache.create_cpu_cache(cpu_cache_desc, cpu_addrs) # cpu_addrs来自创建的cpu tensors # swap in cache_manager.swap_blocks(cpu_cache, npu_cache, {1:2, 3:4}) # swap out cache_manager.swap_blocks(npu_cache, cpu_cache, {1:2, 3:4})返回值正常情况下无返回值。传入数据类型错误src和dst不匹配情况下会抛出TypeError或ValueError异常。传入参数为None会抛出AttributeError异常。约束说明仅支持PagedAttention场景使用。LLMConfigmem_pool_cfg函数功能配置内存池相关配置项。函数原型mem_pool_cfg(mem_pool_cfg)参数说明参数名称数据类型取值说明mem_pool_cfgstringjson数组格式字符串包含memory_sizepage_shift。配置项可选/必选描述memory_size必选当前内存池的大小类型为int大于0单位为Byte。page_shift可选page_size的位移量用于计算page_size。分配内存时会对齐到page_size的倍数需要根据实际场景设置为合适的大小。类型为int取值范围为[10, 31)。例如page_shift 16时page_size为11665536。默认值为16。调用示例from llm_datadist import LLMConfig llm_config LLMConfig() llm_config.mem_pool_cfg {\memory_size\: 18737418240, \page_shift\: 16}返回值正常情况下无返回值。参数错误可能抛出TypeError或ValueError。约束说明无host_mem_pool_cfg函数功能配置Host内存池相关配置项。函数原型host_mem_pool_cfg(host_mem_pool_cfg)参数说明参数名称数据类型取值说明host_mem_pool_cfgstringjson数组格式字符串包含memory_sizepage_shift。配置项可选/必选描述memory_size必选当前内存池的大小类型为int大于0单位为Byte。page_shift可选page_size的位移量用于计算page_size。分配内存时会对齐到page_size的倍数需要根据实际场景设置为合适的大小。类型为int取值范围为[10, 31)。例如page_shift 16时page_size为11665536。默认值为16。调用示例from llm_datadist import LLMConfig llm_config LLMConfig() llm_config.host_mem_pool_cfg {\memory_size\: 18737418240, \page_shift\: 16}返回值正常情况下无返回值。参数错误可能抛出TypeError或ValueError。约束说明Host内存池最大不超过20G。【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考