| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
边云协同支持spcp Co-authored-by: aolin123<zhangaolin5@huawei.com> Co-authored-by: Kisella<yezhujun1@h-partners.com> # message auto-generated for no-merge-commit merge: !398 merge dev into dev 边云协同支持spcp Created-by: aolin123 Commit-by: aolin123;Kisella Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251225 --> # 合入背景 > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fix part of [#150](https://gitcode.com/Ascend/MindIE-LLM/issues/150) # 修改内容 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。 边云协同ds双机场景新增支持cpsp功能。在开启spcp后,block管理的最小单位为sp_rank,每个npu上使用的block不再相同。边云场景下边侧和云侧npu卡数不同,block使用情况不同,sp数不同,无法使用原方案统一在边侧管理。因此在边侧新增cloudblockmanager,在边侧对边云block分别管理,边侧流程不变,云侧读取cloudblockmanager分配的block。 # 资料变更 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。 不涉及 # 接口变更 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。 不涉及 # 测试结果 > 请说明测试场景,测试方法以及测试结果。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 已验证QWEN3、DS、QWEN2.5模型的短序列、长序列,以上在集中式、分布式推理场景均通过。 # CheckList > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。 - [x] 代码注释完备 - [x] 正确记录错误日志 - [x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验) - [x] 进行了空指针校验 - [x] 若存在资源申请,使用后资源被正确的释放了 - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 - [x] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码 - [x] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md) See merge request: Ascend/MindIE-LLM!398 | 7 个月前 | |
[ci]Support llm generate .whl package Co-authored-by: forcekeng<gengli8@huawei.com> # message auto-generated for no-merge-commit merge: !45 merge cicd_whl into dev [ci]支持创建LLM .whl包 Created-by: forcekeng Commit-by: forcekeng;gengli8 Merged-by: ascend-robot Description: [CI]Support create wheel package Build llm whl 根据 [issue 96: MindIE构建发布方案评审](https://gitcode.com/Ascend/MindIE-LLM/issues/96)评审,本PR修改点: - 支持mindie-llm创建whl包,调整部分必须修改的shell和CMakeLists.txt脚本 - 将tokenizer从server的安装目录移动到 mindie_llm 目录 - server提供名称为 mindie_llm_server 的可执行文件(mindie_llm/server/main.py),直接运行能启动 server - 将acl_graph并入mindie_llm whl包 - 补充Python目录打包需要的 __init__.py 文件 - 按照评审,不再提供version.conf获取版本,直接通过pip show 获取版本 - 增加 mindie_llm/server/main.py 对应的DT - 适配tokenizer目录移动后C++ tokenizer DT变更 See merge request: Ascend/MindIE-LLM!45 | 8 个月前 | |
[dev]Synchronize code Co-authored-by: forcekeng<gengli8@huawei.com> | 9 个月前 | |
[Feature]:使能LayerwiseDisaggregated边云协同推理特性前提下, 支持配置使能多机推理特性和2p下发的TG、异步调度 Co-authored-by: zxf_00617641<zhangxiaofeng44@huawei.com> # message auto-generated for no-merge-commit merge: !370 merge dev into dev [Feature]:使能LayerwiseDisaggregated边云协同推理特性前提下, 支持配置使能多机推理特性和2p下发的TG、异步调度 Created-by: zxf_boluochuishui Commit-by: zxf_00617641 Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251225 --> # 合入背景 > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fix part of [#150](https://gitcode.com/Ascend/MindIE-LLM/issues/150) Fix part of [#140](https://gitcode.com/Ascend/MindIE-LLM/issues/140) # 修改内容 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。 **1、DS双机** 1、计算hidden shape适配多dp和陪跑 当前方案由边侧分别通过hccl和tcp发送hidden和hidden shape。当前边云方案为了优化性能,云侧在接收hidden时需要提前计算出接收tensor大小以预先分配内存。虽然使用tcp发送了hidden大小,但实际并未使用,而是根据请求长度和batchsize分别计算了prefill和decode的hidden大小。 边侧向云侧发,云侧需计算shape: 对于dp=1的情况,8卡与16卡均执行同一batch,不需要特殊适配。 对于dp=2的情况,边侧的rank0和云侧master的rank0~7对应dp0,边侧rank1和云侧slave的rank0~7对应dp1,云侧master和云侧slave在执行前两层时,处理的是同一batch中的不同请求,不能直接通过队列长度和batchsize计算hidden大小,而是应该挑出每个dp域执行的请求,对应计算各自的hidden大小。 对于多dp请求都非空的情况,每个请求中都带了对应的执行dp_rank_id,根据此可以挑选出每个dp对应的请求,再使用现在的方法计算hidden shape。 对于只有一个dp域有请求,另一个dp域没有请求的情况,没有请求的dp域会进行陪跑来配合同步。陪跑的长度为1个token,因此hidden shape设置为1。 2、云侧master根据请求进行计算决策,slave跟随 无论dp为1或2,云侧双机之间执行的均为同一个batch,即使双机均进行决策,也会做出相同决策,因此为了避免不必要的同步,拟采取云侧双机之间通过TCP广播调度决策(执行P/D),再由各自0号卡分别通过共享内存广播的方案。本方案需要区分云侧master和云侧slave,边侧通过grpc将请求分别发给cloud master和cloud slave,cloud master收到请求后进行调度决策,由rank0发送tcp信号给cloud slave的rank0,随后将调度决策通过共享内存广播给cloud master的rank1~7。cloud slave的rank0在收到cloud master发送的tcp后,发送tcp响应信号给cloud master的rank0,随后将决策通过共享内存广播给cloud slave的rank1~7。 cloud master的rank0在给cloud slave发送tcp信号后,如果未收到响应信号,不能继续给cloud slave发送下一次的调度决策,必须cloud slave确认收到后才能发送下一轮。 cloud slave的rank0不再担任调度决策功能,只负责将cloud master发来的调度决策写入共享内存并发送响应tcp信号。 cloud slave的处理与其他rank略有不同,如果当前没有收到cloud master的广播决策,要死等cloud master的广播,而其他rank在共享内存拿不到决策时会默认do_nothing。 3、prefill在不同dp域内长短序列不一致: 由于计算调度在request_router处实现,如果dp=2时。由于此时有两个调度器,因此可能会出现一个dp域内的序列是长序列,一个dp域内的序列是短序列;又因为两个dp域需要调度相同的次数,因此每个dp域都需要使用整个请求中最长的dp域请求作为长序列的判断,且不管是长序列还是短序列,都需要切成与长序列一样的chunk数。如果出现短序列的长度比要切的chunk数要小,则执行完短序列之后,执行dummy_batch补足执行次数。 4、云广播侧master设备的决策 云侧目前存在两个节点,需要新增一条链路,用于同步计算调度决策信息。 | 序号 | 客户端 | 服务端 | 通信内容 | 监听端口信息 | |--|--|--|--|--| | 1 | 云1 | 云0 | 计算调度决策 | layerwiseDisaggregatMultiNodesCtrlPort | 新增的接口: | 接口名 | 参数 | 用途 | |--|--|--| | broadcast_multi_nodes_decision | decision: str | 广播决策信息,如果上一次的决策还未收到 | | broadcast_multi_nodes_decision | 无 | 获取决策信息,阻塞式接口 | 另外,通信侧需要修改 communication.py 中,对配置的相关校验逻辑等。 **2、支持2P下发** 1、计算调度:整体流程与1P保持一致,相较于1P场景,2P边侧会存在连续执行2次P首的情况,从而提高整体执行效率,减少Prefill请求等待时间。 1.任务缓存与状态维护: 当prefill首层执行完成后,缓存当前prefill请求,待后续收到通信,获取对应的prefill请求继续执行尾层 1、调度模块: 调度模块根据任务持有情况和通信完成情况,决策当前迭代执行的任务。与1P相比,边侧存在连续执行prefill的可能,云侧则与1P保持一致 调度模块中最多有2个P请求和1个D请求 同时存在prefill请求和decode请求,优先下发prefill请求 上述流程新增代码功能函数,具体阐述如下: 计算调度边云基类为RequestRouterLwd,边云分别继承基类,基类实现如下功能 基类: 扩展recv_prefill,TCP信号支持连续接收多个 边侧: 扩展do_prefill_first、do_prefill_last 、calc_prefill_priority_decision_type 、set_pd_curr_request 、decision_do_clean_up_type 接口,支持prefill首层执行后将请求缓存到队列中,执行P尾时获取对应的P首请求。 云侧: 将提前收从accept_prefill_prepare迁移到set_pd_curr_request(如果在请求调度接收到request时就触发提前收,会导致长序列2P连续触发提前收,从而导致RDMA通信卡死 ) # 资料变更 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。 # 接口变更 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。 # 测试结果 > 请说明测试场景,测试方法以及测试结果。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。 已验证QWEN3、DS、QWEN2.5模型的短序列、长序列,以上在集中式、分布式推理场景均通过。 # CheckList > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。 - [x] 代码注释完备 - [x] 正确记录错误日志 - [x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验) - [x] 进行了空指针校验 - [x] 若存在资源申请,使用后资源被正确的释放了 - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 - [x] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码 - [x] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md) See merge request: Ascend/MindIE-LLM!370 | 7 个月前 | |
mtp bugfix & 断流修复 Signed-off-by: earthmanylf <yulinfeng2@huawei.com> | 6 个月前 | |
Fix mtp precision Signed-off-by: forcekeng <gengli8@huawei.com> | 6 个月前 | |
Update server/main.py Co-authored-by: forcekeng<gengli8@huawei.com> # message auto-generated for no-merge-commit merge: !307 merge code_fix into dev [bug] 修复启动时搜索 LD_LIBRARY_PATH 的顺序 Created-by: forcekeng Commit-by: forcekeng Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251225 --> # 合入背景 > 修复启动时搜索 LD_LIBRARY_PATH 的顺序,优先搜索wheel包中提供的动态库,而不是系统中可能已经安装的其他旧版本的动态库。 # 修改内容 > 修改 mindie_llm/server/main.py 中搜索路径。 # 资料变更 > 不涉及 # 接口变更 > 不涉及 # CheckList > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。 - [x] 代码注释完备 - [x] 正确记录错误日志 - [x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验) - [x] 进行了空指针校验 - [x] 若存在资源申请,使用后资源被正确的释放了 - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 - [x] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码 - [x] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md) See merge request: Ascend/MindIE-LLM!307 | 7 个月前 | |
Fix mtp precision Signed-off-by: forcekeng <gengli8@huawei.com> | 6 个月前 | |
【Bug-Report】删除多模态请求中的的无效日志 Co-authored-by: pu-zhe<zpuaa@outlook.com> # message auto-generated for no-merge-commit merge: !338 merge vl_tokenizer into dev 【Bug-Report】删除多模态请求中的的无效日志 Created-by: pu-zhe Commit-by: pu-zhe Merged-by: ascend-robot Description: <!-- PR描述模板更新日期:20251225 --> # 合入背景 > 请描述为什么要做这个PR内的改动。\ > 如涉及,请关联前序PR或同特性/需求下的其他PR。\ > 如果是修复之前PR引入的问题,请关联引入问题的PR。\ > 注意: Fixes #ISSUE ID会自动关闭issue,如问题部分解决请不要使用Fixes,可以用Fix part of #ISSUE ID替代. Fixes part of #185 # 修改内容 > 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\ > 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。 io_utils中如检测到不是http URL的时候,删除提示非URL结构的日志 # 资料变更 > 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。 不涉及 # 接口变更 > 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。 不涉及 # 测试结果 > 请说明测试场景,测试方法以及测试结果。\ > 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。  # CheckList > PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。 - [x] 代码注释完备 - [x] 正确记录错误日志 - [x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验) - [x] 进行了空指针校验 - [x] 若存在资源申请,使用后资源被正确的释放了 - [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 - [x] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码 - [x] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md) See merge request: Ascend/MindIE-LLM!338 | 7 个月前 | |
Fix bug | 7 个月前 | |
[dev]Synchronize code Co-authored-by: forcekeng<gengli8@huawei.com> | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 7 个月前 | ||
| 6 个月前 | ||
| 6 个月前 | ||
| 7 个月前 | ||
| 6 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 9 个月前 |