CANN/hixl LLM数据分发API
LLMDataDist【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√说明针对Atlas A2 训练系列产品/Atlas A2 推理系列产品仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。针对Ascend 950PR/Ascend 950DT不支持link、unlink和query_register_mem_status。LLMDataDist构造函数函数功能构造LLMDataDist。函数原型__init__(role: LLMRole, cluster_id: int)参数说明参数名称数据类型取值说明roleLLMRole集群角色。该参数只用于标识当前角色对传输过程无影响取值如下。- LLMRole.DECODER增量集群- LLMRole.PROMPT全量集群cluster_idint集群ID。LLMDataDist标识在所有参与建链的范围内需要确保唯一。调用示例from llm_datadist import LLMDataDist, LLMRole llm_datadist LLMDataDist(LLMRole.DECODER, 0)返回值正常情况下返回LLMDataDist的实例。参数错误可能抛出TypeError或ValueError。约束说明无init函数功能初始化LLMDataDist需要在init的options中配置CacheManager模式即enable_cache_manager设置为True或者指定local_comm_res。该模式下Decode和Prompt可以双向拉取Cache。函数原型init(options: Dict[str, str])参数说明参数名称数据类型取值说明optionsDict[str, str]配置项。传入的options可以通过LLMConfig来生成。- device_id必填。- enable_cache_manager为True或者设置local_comm_res。调用示例from llm_datadist import LLMDataDist, LLMRole, LLMConfig llm_datadist LLMDataDist(LLMRole.PROMPT, 0) llm_config LLMConfig() llm_config.enable_cache_manager True llm_config.device_id 0 engine_options llm_config.generate_options() llm_datadist.init(engine_options)返回值正常情况下无返回值。异常情况会抛出LLMException。参数错误可能抛出TypeError或ValueError。约束说明初始化成功后系统退出前需要调用finalize。finalize函数功能释放LLMDataDist。函数原型finalize()参数说明无调用示例from llm_datadist import LLMDataDist, LLMRole, LLMConfig llm_datadist LLMDataDist(LLMRole.DECODER, 0) llm_config LLMConfig() llm_config.enable_cache_manager True llm_config.device_id 0 engine_options llm_config.generate_options() llm_datadist.init(engine_options) llm_datadist.finalize()返回值无约束说明初始化成功后系统退出前需要调用finalize。finalize不能和其他接口并发调用。link_clusters函数功能单边建链由Client单侧发起建链。是Client还是Server与角色prompt或者decoder无关。设置listen_ip_info标识端口监听即为Server端。函数原型link_clusters(clusters: Union[List[LLMClusterInfo], Tuple[LLMClusterInfo]], timeout3000)参数说明参数名称数据类型取值说明clustersUnion[List[LLMClusterInfo], Tuple[LLMClusterInfo]]集群列表。timeoutint超时时间单位ms默认超时时间3000ms。调用示例请参考样例运行。返回值正常情况下返回两个值的元组第一个值是接口的返回值类型是LLMStatusCode第二个是每个集群建链结果的列表类型是LLMStatusCode。参数错误可能抛出TypeError或ValueError。约束说明建链的要求如下。建链数量过多存在内存OOM及KV Cache传输的性能风险。允许创建的最大通信数量512。建议超时时间配置200ms以上。如果TLS处于开启状态建议超时时间配置为2000ms以上。查询TLS状态可以使用如下命令hccn_tool [-i %d] -tls -g [host]调用该接口前需提前注册所有内存否则建链后注册不支持远端访问。容器场景若未配置local_comm_res或配置为空需在容器内映射“/etc/hccn.conf”文件或者确保默认路径“/usr/local/Ascend/driver/tools”下存在hccn_tool如果两者都不能满足则需要用户将hccn_tool所在路径配置到PATH中。配置实例如下hccn_tool_install_path表示hccn_tool所在路径。export PATH$PATH:{hccn_tool_install_path}unlink_clusters函数功能单边断链可以由Client单侧发起通知Server进行断链也可以Client和Server均发起强制断链只清理本地链路。函数原型unlink_clusters(clusters: Union[List[LLMClusterInfo], Tuple[LLMClusterInfo]], timeout3000, forceFalse)参数说明参数名称数据类型取值说明clustersUnion[List[LLMClusterInfo], Tuple[LLMClusterInfo]]集群列表。timeoutint超时时间单位ms默认超时时间3000ms。forcebool是否强制断链默认False。True表示强制断链。- 强制断链仅强制拆除本端链接两端都要调用。- 非强制断链在Client发起。无故障时两端链路都会拆除。有故障导致断链失败时需要在Server端也发起断链操作。- 无故障时两端链路都会拆除。- 有故障导致断链失败时需要在Server端也发起断链操作。调用示例请参考样例运行。返回值正常情况下返回两个值的元组第一个值是接口的返回值类型是LLMStatusCode第二个是每个集群建链结果的列表类型是LLMStatusCode。参数错误可能抛出TypeError或ValueError。约束说明无switch_role函数功能切换当前LLMDataDist的角色同时可通过配置switch_options切换Client或者Server。函数原型switch_role(self, role: LLMRole, switch_options: Optional[Dict[str, str]] None)参数说明参数名称数据类型取值说明roleLLMRole切换的目标角色。switch_optionsoptions: Dict[str, str]切换角色配置项。可选参数默认值为None。若作为Server需通过listen_ip_info配置监听的Host IP和端口如192.168.1.1:26000若未设置则作为Client。Server切换为Client将会关闭之前监听的端口如果仅切换Server的监听端口可通过options设置监听另一个端口将关闭之前的监听端口。该配置项指定hixl传输后端时不支持通过switch_role变更侦听端口。调用示例请参考样例运行。返回值正常情况下无返回值。传入数据类型错误情况下会抛出TypeError或ValueError异常。如果switch_role时存在残留链路资源则会抛出LLMExceptionstatus_code为LLM_EXIST_LINK。约束说明无link函数功能双边建链通过建立通信域方式建链。推荐使用更易用的单边建链的link_clusters接口无需指定ranktable信息如果要在单机内且想使用RDMA网卡通信需要设置HCCL_INTRA_ROCE_ENABLE1环境变量。函数原型link(comm_name: str, cluster_rank_info: Dict[int, int], rank_table: str) - int参数说明参数名称数据类型取值说明comm_namestr通信域名称。取值范围小于128个字符。cluster_rank_infoDict[int, int]集群ID到rank ID的映射。例如{1: 0, 2: 1}。rank_tablestr开发者可以通过该参数配置参与集合通信的NPU资源信息。如上表格中ranktable具体信息请参见《HCCL集合通信库用户指南》。如上表格中rank_table的配置示例如下:{ server_count: 2, server_list: [ { device: [ { device_id: 0, device_ip: x.x.x.x, rank_id: 0 }, ], server_id: xxxx },{ device: [ { device_id: 0, device_ip: x.x.x.x, rank_id: 1 }, ], server_id: xxxx } ], status: completed, version: 1.0 }调用示例请参考样例运行。返回值正常情况下返回标识通信域的ID。参数错误可能抛出TypeError或ValueError。约束说明需要通信域内所有节点同时发起。通信域内节点数量最大支持4。通信域数量建议不超过16最大支持512。建链数量过多存在内存OOM及cache传输的性能下降风险。link底层会在通信域内部交换内存描述符对于用来传输的cache需要在link前先配置内存池或者先注册内存。不支持fork子进程方式调用。最多支持16条链路并发建链超过16条底层会排队。需保证多通信域建链不出现循环依赖。Ascend 950PR/Ascend 950DT不支持该接口。unlink函数功能双边建链对应的断链接口调用此接口进行断链。函数原型unlink(comm_id: int)参数说明参数名称数据类型取值说明comm_idintlink接口的返回值调用示例请参考样例运行。返回值正常情况下无返回值。异常场景会抛出LLMException异常。参数错误可能抛出TypeError或ValueError。Ascend 950PR/Ascend 950DT不支持该接口。约束说明无query_register_mem_status函数功能调用此接口查询注册内存状态。函数原型query_register_mem_status(comm_id: int) - RegisterMemStatus参数说明参数名称数据类型取值说明comm_idintlink接口的返回值调用示例请参考样例运行。返回值正常场景下无返回值。异常场景会抛出LLMException异常。参数错误可能抛出TypeError或ValueError。Ascend 950PR/Ascend 950DT不支持该接口。约束说明配合link使用。cache_manager函数功能获取CacheManager实例。函数原型cache_manager()参数说明无调用示例from llm_datadist import LLMDataDist, LLMRole llm_datadist LLMDataDist(LLMRole.DECODER, 0) ... llm_datadist.init(engine_options) cache_manager llm_datadist.cache_manager返回值返回CacheManager实例。约束说明无【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考