CANN/hixl:LLM-DataDist支持HIXL传输后端
LLM-DataDist支持HIXL传输后端【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl需求描述背景介绍 HCCL提供单边通信库与集合通信库并列共同作为通信库对外提供的基础能力。LLM-DataDist需进行对接以支持更多芯片类型和更多的通信能力。需要做什么 LLM-DataDist V2的单向建链流程对接HCCL单边通信库支持当前接口已有能力。功能要点LLM-DataDist提供对接HCCL单边通信API能力。支持解析本地通信资源option通过Hixl提供链路管理与传输能力并兼容原生能力。 需要对建链、断链、内存注册、注销以及数据传输流程进行抽象同时支持基于Hixl和Hccl通信域实现相关能力。技术方案新增API和option# 已有option key如下用于描述本地可以使用的通信资源信息需要支持1.3版本格式 constexpr const char OPTION_LOCAL_COMM_RES[] llm.LocalCommRes; # option value为json格式字符串支持1.3版本格式如下 std::string local_comm_res R( { version: 1.3, net_instance_id: superpod1_1, endpoint_list: [ { protocol: ub_ctp, comm_id: eid0-0, placement: host, plane: plane-a, }, { protocol: ub_ctp, comm_id: eid0-1, placement: device, dst_eid: eid1-1, }, { protocol: ub_ctp, comm_id: eid0-2, placement: device, dst_eid: eid1-2, }, { protocol: ub_tp, comm_id: eid0-3, placement: device, plane: plane-a, }, { protocol: roce, comm_id: ipv4/ipv6地址, placement: host } ] } ); 新增option:tranfer_backend用于支持设置使用的传输后端由于hixl engine需要支持对接hixl cs的接口能力llm-datadist可以复用hixl能力因此对llm-datadist传输层抽象为传输后端支持使用hixl作为llm-datadist传输后端以复用hixl的基础能力。 配置方式如下 config.tranfer_backend hixl通信设备配置字段说明字段名数据类型必选/可选说明支持值/填写规则version字符串必选版本号1.3net_instance_id字符串必选当前超节点的唯一标识每个超节点唯一即可endpoint_list数组必选可以使用的通信设备列表-endpoint_list[].protocol字符串必选通信协议roce/ub_ctp/ub_tpendpoint_list[].comm_id字符串必选通信标识protocol为ub_ctp/ub_tp时填${eid}protocol为roce时填ipv4/ipv6网卡地址endpoint_list[].placement字符串必选通信设备位置host/deviceendpoint_list[].plane字符串可选通信设备平面protocol为ub_ctp/ub_tp时设备区分平面则填写每个平面唯一如plane-a/plane-bendpoint_list[].dst_eid字符串可选与当前通信设备连接的对端通信设备的${eid}protocol为ub_ctp时存在full-mesh直连对端则填写对端${eid}C调用伪码:LlmDataDist llm_datadist_p(1U, LlmRole::kPrompt); std::mapAscendString, AscendString options_p; options_p[llm_datadist::OPTION_LISTEN_IP_INFO] 127.0.0.1:26000; options_p[llm_datadist::OPTION_DEVICE_ID] 0; options_p[llm_datadist::OPTION_TRANSFER_BACKEND] hixl; options_p[llm_datadist::OPTION_LOCAL_COMM_RES] R( { net_instance_id: superpod1_1, endpoint_list: [ { protocol: roce, comm_id: 1.0.0.1, placement: host } ], version: 1.3 } ); llm_datadist_p.Initialize(options_p); LlmDataDist llm_datadist_d(2U, LlmRole::kDecoder); std::mapAscendString, AscendString options_d; options_d[llm_datadist::OPTION_LISTEN_IP_INFO] 127.0.0.1:26001; options_d[llm_datadist::OPTION_DEVICE_ID] 1; options_d[llm_datadist::OPTION_TRANSFER_BACKEND] hixl; options_d[llm_datadist::OPTION_LOCAL_COMM_RES] R( { net_instance_id: superpod2_1, endpoint_list: [ { protocol: roce, comm_id: 1.0.0.2, placement: host } ], version: 1.3 } ); llm_datadist_d.Initialize(options_d); // 内存注册 llm_datadist_p.RegisterKvCache(cache_desc1, tensor_addrs1, {}, cache_id1); llm_datadist_d.RegisterKvCache(cache_desc2, tensor_addrs2, {}, cache_id2); llm_datadist_d.LinkLlmClusters(clusters1, rets);当前LLM-DataDist类图主体关系LLMDataDistV2为主体入口对外提供建链断链内存注册注销以及数据传输能力DataCacheEngine提供内存注册、注销以及传输能力LLMLinkManager提供建链、断链能力CommMemManager提供内存注册、注销能力CommEntityManager提供链路管理能力每个CommEntity代表一条点对点传输链路HcclAdapter提供底层建链断链、内存注册注销和数据传输LLM-DataDist对接HCCL单边通信库类图主体关系对链路的建链、断链相关流程和内存注册、注销、传输相关流程进行抽象为TranferEngine提供工厂类支持根据传入的OPTION_TRANSFER_BACKEND不同创建不同的实例如果指定的格式version为1.3则创建Hixl相关实例否则生成原来版本的实例兼容之前的逻辑HixlTranferEngine提供hixl engine的建链、断链、注册注销和传输能力。HcclTranferEngine兼容原生逻辑使用hccl相关的接口提供建链、断链、注册注销和传输能力。初始化流程时序图通过传输后端option值是否为hixl确定是否走新流程否则兼容老版本逻辑新流程中通过HixlTranferEngine保存的hixl engine进行内存注册注销建链以及传输初始化需要listen ip info信息兼容流程通过HcclTranferEngine提供能力与原初始化流程基本相同不再赘述内存注册、注销流程时序图注销与注册流程基本相同不再赘述建链流程时序图HixlTransferEngine通过HixlEngine的Connect接口完成建链需创建socket获取对端cache table地址用于后续数据面通信不支持非远端cache索引模式即access_remote_cache为false场景不支持双向建链调用Link相关接口报错返回不支持强制建链client退出后重新发起建链可以建链成功该能力HCCL开源开放单边通信支持SetRole能力在hixl后端场景需要两侧均制定ip port均作为server并可以与对端发起建链并完成数据面通信因此与角色无关直接返回成功。传输流程时序图建链一条链路双侧均可进行数据收发不支持。只能由client侧即调用LinkClusters侧发起数据读写。如需双侧相互访问需要由server侧向client侧也发起LinkClusters进行建链端到端使用指导python使用参考examples/python/hixl_tranfer_backend_sample.py备注初始化需指定传输后端option为hixl初始化需指定本地监听的ip和端口与对端发起传输前需要提前建链【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考