Skip to content

Fix OOM pause recovery force-stop handling - #2

Draft
yjyang62 wants to merge 580 commits into
mainfrom
cursor/oom-skip-force-stop-72f4
Draft

Fix OOM pause recovery force-stop handling#2
yjyang62 wants to merge 580 commits into
mainfrom
cursor/oom-skip-force-stop-72f4

Conversation

@yjyang62

@yjyang62 yjyang62 commented Jun 4, 2026

Copy link
Copy Markdown
Owner

合入背景

基于 8b794ef0b0ede706e467101676383638decb882c 重新创建 clean 分支,修复 OOM 后执行快恢 PAUSE 时部分 NPU 因未观察到 FORCE STOP 通知而误判失败的问题。

修改内容

  1. 在 generator backend 中新增 skip_force_stop_wait,默认 False
  2. 仅当故障码为 ErrorCode.TEXT_GENERATOR_OUT_OF_MEMORY 时设置 skip_force_stop_wait=True
  3. CMD_PAUSE_ENGINEstop_device() 成功且无 UCE 重调度时:
    • FORCE STOP 检测到:返回成功;
    • FORCE STOP 未检测到且 skip_force_stop_wait=True:只记录 warning,返回成功;
    • FORCE STOP 未检测到且 skip_force_stop_wait=False:保持失败。
  4. REINIT_NPU / START_ENGINE 后清理 skip_force_stop_wait
  5. 兼容历史 OOM 错误码 MIE05E0000005,并修正 OOM 文案匹配大小写问题,保证 OOM 路径能稳定设置 skip 标志。

资料变更

不涉及。

接口变更

不涉及外部接口变更。

测试结果

  • python3 -m py_compile mindie_llm/text_generator/adapter/generator_backend.py mindie_llm/text_generator/generator.py mindie_llm/utils/log/error_code.py tests/pythontest/npu/text_generator/adapter/test_generator_backend.py tests/pythontest/npu/text_generator/test_generator.py tests/pythontest/cpu/utils/test_error_code.py:通过。
  • python3 -m unittest tests.pythontest.cpu.utils.test_error_code:通过,21 tests。
  • python3 -m unittest tests.pythontest.npu.text_generator.adapter.test_generator_backend tests.pythontest.npu.text_generator.test_generator:当前环境缺少 torch,导入 tests/pythontest/npu/__init__.py 失败,未执行。

CheckList

  • 代码注释完备
  • 正确记录错误日志
  • 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
  • 进行了空指针校验
  • 若存在资源申请,使用后资源被正确的释放了
  • 若涉及多线程场景,考虑了并发场景,不存在死锁问题
  • 按照代码仓中提供的格式模板,使用clang-format工具格式化代码
  • 符合Ascend社区的编码规范。C++ 语言编程指导 | C++ 语言安全编程指导
Open in Web Open in Cursor 

taojiovvo and others added 30 commits March 18, 2026 15:00
Co-authored-by: taojiovvo<jitao12@huawei.com>



# message auto-generated for no-merge-commit merge:
!608 merge revert-mr-562-1773817194796-auto into dev

【Revert】think_budget回退

Created-by: taojiovvo
Commit-by: taojiovvo
Merged-by: taojiovvo
Description: 【Revert】think_budget回退

See merge request: Ascend/MindIE-LLM!608
Co-authored-by: xqchen7<chenxueqing7@huawei.com>



# message auto-generated for no-merge-commit merge:
!613 merge dev_318 into dev

Revert "边云协同推理适配主线warmup及PrefixCache重构" (2026/03/18 18:28)

Created-by: xqchen7
Commit-by: xqchen7
Merged-by: taojiovvo
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!613
Co-authored-by: taojiovvo<jitao12@huawei.com>



# message auto-generated for no-merge-commit merge:
!615 merge revert-mr-554-1773843222518-auto into dev

【Revert】虚推功能默认开启

Created-by: taojiovvo
Commit-by: taojiovvo
Merged-by: taojiovvo
Description: 【Revert】虚推功能默认开启

See merge request: Ascend/MindIE-LLM!615
Co-authored-by: kk1994<kangkai31@huawei.com>
Co-authored-by: dhxh<lianghaoqian2@huawei.com>



# message auto-generated for no-merge-commit merge:
!616 merge dev into dev

边云协同推理适配主线warmup及PrefixCache重构

Created-by: dhxh
Commit-by: dhxh;kk1994
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes [#298](https://gitcode.com/Ascend/MindIE-LLM/issues/298) 

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

边云协同推理适配主线warmup及PrefixCache重构

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

修改后可正常拉起,正常执行需要走PrefixCache流程的请求
![image.png](https://raw.gitcode.com/user-images/assets/8772840/fcb5ad17-df82-4a72-bad6-4bbe6585a7fb/image.png 'image.png')

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!616
Co-authored-by: weixin_47478097<litianle8@huawei.com>



# message auto-generated for no-merge-commit merge:
!612 merge merge-slo-ltl into dev

基于batch size的SLO调度优化算法

Created-by: weixin_47478097
Commit-by: weixin_47478097
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
  本PR实现了MindIE LLM在多种切分策略下,基于设定的SLO约束自动调整推理服务配置的能力,主要解决以下问题:
  1. 多DP场景下动态BatchSize调整不一致问题:原有动态BatchSize调整算法在多DP(数据并行)场景下,各DP独立计算batch size,导致不同DP的计算结果不一致,可能造成某些DP上的请求被阻塞。
  2. LatencyPredictor多DP场景访问问题:原实现在多DP场景下,ModelExecOutputHandler和LlmEngine直接访问latencypredictor,在DP聚合场景下存在时序问题。
  3. 工行需求需要支持多DP场景
  
#[253]https://gitcode.com/Ascend/MindIE-LLM/issues/253

# 修改内容
  1. 新增DynamicBatchRecorder类(核心改动)
  - 文件:src/scheduler/policy/dynamic_batch_recorder.h/cpp
  - 采用单例模式,每个DP rank拥有独立的recorder实例
  - 提供跨DP数据聚合接口AggregateAllFromAllDPs(),用于收集所有DP的延迟、batch size和decode请求数,并取最大值作为全局决策依据
  - 管理每个DP rank的LatencyPredictor和DecodeBatchSizeTracker
  2. 改进DynamicBatchSize算法
  - 文件:src/scheduler/policy/dynamic_batch_size.cpp/h
  - 新增localDPRank参数,支持多DP场景
  - 使用DynamicBatchRecorder::AggregateAllFromAllDPs()聚合所有DP的数据
  - 使用聚合后的最大值(而非各DP独立值)进行batch size决策,保证各DP计算结果一致
  - 新增ApplyUpdatedBatchSize()方法统一处理batch size更新
  3. LlmEngine和ModelExecOutputHandler适配
  - 文件:src/engine/llm_engine.cpp/h、src/engine/model_exec_output_handler.cpp
  - 新增SetupLatencyPredictor()方法,通过DynamicBatchRecorder获取predictor
  - 在引擎初始化时注册LatencyPredictor到DynamicBatchRecorder

# 资料变更
不涉及

# 接口变更
不涉及

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!612
Co-authored-by: czy6<cuizhengyao@huawei.com>



# message auto-generated for no-merge-commit merge:
!614 merge thinkbudget into dev

thinkingbudget

Created-by: czy6
Commit-by: czy6
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.
Fixes [#306](https://gitcode.com/Ascend/MindIE-LLM/issues/306) 

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!614
Co-authored-by: LinWei100<linwei100@huawei.com>



# message auto-generated for no-merge-commit merge:
!563 merge dev/skipspecialtokens into dev

[fix-bug] 修复skip_speical_tokens默认值从false改为ture

Created-by: LinWei100
Commit-by: LinWei100
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #288


# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

修改了涉及skip_special_tokens的默认值,修改为默认为True

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

不涉及,修改后和资料一致

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

修改后,content末尾不出现<|im_end|>符号
~~~bash
curl http://localhost:1025/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "qwen",
    "messages": [
      {"role": "user", "content": "生成一个用户信息"}
    ],
    "stream": false,
    "max_tokens": 200
  }'
  
  
{"id":"endpoint_common_0","object":"chat.completion","created":1773390635,"model":"qwen","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n好的,用户让我生成一个用户信息。首先,我需要确认用户的具体需求是什么。用户可能想要一个示例,或者用于测试、开发、注册等场景。用户没有提供太多细节,所以可能需要我做一些假设。\n\n接下来,我应该考虑用户信息通常包含哪些字段。常见的有姓名、年龄、性别、联系方式、地址、电子邮件、用户名、密码等。是否需要生成更详细的信息,比如职业、兴趣爱好、注册日期等?可能用户希望信息看起来真实,所以需要随机但合理的数据。\n\n然后,我需要决定使用哪种格式。用户可能希望以结构化的方式呈现,比如JSON或者表格。但用户没有指定,所以可能需要选择一种通用的格式,比如JSON,因为它在开发中常用。\n\n另外,用户可能希望数据是虚构的,避免使用真实个人信息。所以需要生成随机的名字、姓氏、邮箱等。例如,使用常见的英文名和姓氏组合,或者根据用户","tool_calls":[]},"logprobs":null,"finish_reason":"length"}],"usage":{"prompt_tokens":12,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens":200,"completion_tokens_details":{"reasoning_tokens":0},"total_tokens":212}}
~~~

## 性能测试结果
测试相关设置
模型:DeepSeek-V3.1_w8a8mix_mtp
数据集:GPQA-Diamond
服务化配置
 - maxSeqLen: 36864
 - maxInputTokenLen: 4096
 - maxPrefillTokens: 4096
 - maxIterTimes: 32768
 
 ais_bench配置
 - max_out_len: 32768


带上当前PR测试结果
~~~bash
The markdown format results is as below:

| dataset | version | metric | mode | vllm-api-stream-chat |
|----- | ----- | ----- | ----- | -----|
| GPQA_diamond | 53064e | accuracy | gen | 77.78 |
~~~

不带当前PR测试结果
~~~bash
The markdown format results is as below:

| dataset | version | metric | mode | vllm-api-stream-chat |
|----- | ----- | ----- | ----- | -----|
| GPQA_diamond | 53064e | accuracy | gen | 78.28 |
~~~

# 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!563
Co-authored-by: Katrina-CXY<chenxinyi20@huawei.com>



# message auto-generated for no-merge-commit merge:
!551 merge aclgraph into dev

fix mergedcolumnlinear with diff quant type

Created-by: Katrina-CXY
Commit-by: cxy-katrina;Katrina-CXY
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

# 修改内容
- Aclgraph场景 `MergeColumnLinear`模块支持gate和up量化方式不一样
- Atbgraph场景 `MergeColumnLinearAdapter`模块支持gate和up量化方式不一样

# 资料变更
不涉及

# 接口变更
- 不涉及对外接口
- 仅涉及框架侧修改,模型迁移适配接口不涉及修改

# 测试结果
- 环境配置
```
source /usr/local/lib/python3.11/site-packages/mindie_llm/set_env.sh
export MASTER_IP="127.0.0.1"
export MASTER_PORT=7897  # 同一台环境不能重复
export MINDIE_LOG_TO_STDOUT=1   # 可选:日志输出到屏幕
source /usr/local/Ascend/ascend-toolkit/set_env.sh
```
- Aclgraph场景,gate up linear量化方式相同
	- 配置方式
        服务化配置 `backendType`设置为`torch`
    - 结果
        ```
        curl 127.0.0.1:10255/generate -d '
        > {
        >     "prompt": "My name is Olivier and I",
        >     "max_tokens": 30,
        >     "temperature": 0
        > }'
        {"text":["My name is Olivier and I  am a 32-year-old man from France. I am currently living in the UK. I am a software developer by trade, but I am"]}
        ```
- Aclgraph场景,gate up linear量化方式不同
    - 配置方式
        服务化配置 `backendType`设置为`torch`
    - 结果
        ```
        curl 127.0.0.1:10255/generate -d '
        > {
        >     "prompt": "My name is Olivier and I",
        >     "max_tokens": 30,
        >     "temperature": 0
        > }'
        {"text":["My name is Olivier and I  am a French citizen. I am currently working in the UK and I have a UK bank account. I would like to open a French bank account to"]}
        ```
- Atbgraph场景,gate up linear量化方式相同
    - 配置方式
        服务化配置 `backendType`设置为`atb`
    - 结果
        ```
        curl 127.0.0.1:10255/generate -d '
        > {
        >     "prompt": "My name is Olivier and I",
        >     "max_tokens": 30,
        >     "temperature": 0
        > }'
        {"text":["My name is Olivier and I  am a 30-year-old man from France. I am currently living in the UK. I am a software developer by profession, but I am"]}
        ```
- Atbgraph场景,gate up linear量化方式不同
    - 配置方式
        服务化配置 `backendType`设置为`atb`
    - 结果
        ```
        curl 127.0.0.1:10255/generate -d '
        > {
        >     "prompt": "My name is Olivier and I",
        >     "max_tokens": 30,
        >     "temperature": 0
        > }'
        {"text":["My name is Olivier and I  am a French citizen. I am currently in the UK on a Tier 1 (General) visa. I have been here for 3 years and"]}
        ```

# 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!551
Co-authored-by: LostFox11<wangziyue17@huawei.com>
Co-authored-by: Dawn952<zhaojunbo13@huawei.com>



# message auto-generated for no-merge-commit merge:
!540 merge T0004-0310 into dev

dsv32适配MoE大融合算子

Created-by: Dawn952
Commit-by: Dawn952;LostFox11
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 
> 当前 MoE 流程由 dispatch、ffn 和 combine 三个独立 Kernel 组成。若通过算子融合将其合并为单一 Kernel,可减少启动开销并提升整体性能。
> `Fixes #300`

# 修改内容
> 使能了大融合算子torch.ops.mie_ops.npu_dispatch_ffn_combine
> 基于策略模式重构 select_moe_comm_method,消除冗余分支,提升代码可扩展性。
> 新增FUSED_MC2通信类型,以及FUSED_MC2分支。目前只使能A3

# 资料变更
> 不涉及

# 接口变更
> 不涉及

# 测试结果
> 输入3k/输出0.5k,batch_size=16,dp2tp8ep16场景下测试
> 使能融合算子
![image.png](https://raw.gitcode.com/user-images/assets/8772840/67a14963-ea76-4ce6-8a82-520d61471e03/image.png 'image.png')![image.png](https://raw.gitcode.com/user-images/assets/8772840/e5c1f44b-3587-46d1-a985-0d7a99e6b59d/image.png 'image.png')
> 不使能融合算子
![image.png](https://raw.gitcode.com/user-images/assets/8772840/f4ae2231-b92a-48af-8880-8f487d8fef97/image.png 'image.png')![image.png](https://raw.gitcode.com/user-images/assets/8772840/df0a8381-bc15-4ff9-ac94-5233dbc960db/image.png 'image.png')

# 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!540
Co-authored-by: Katrina-CXY<chenxinyi20@huawei.com>



# message auto-generated for no-merge-commit merge:
!560 merge aclgraph2 into dev

支持numhead不能被tp整除的情况

Created-by: Katrina-CXY
Commit-by: Katrina-CXY;cxy-katrina
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

- `QKVParallel`支持num_head无法被tp数整除的场景
- `RowParallel`支持传入`multiple_of`,将权重按照`multiple_of`的倍数进行切分,如果不能被整除,则进行padding

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

不涉及

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

- 不涉及外部接口
- 模型侧适配接口`RowParallelLinear`新增`multiple_of`可选参数
- 框架测接口中`Parameter`类的`load_row_parallel_weight`和`load_qkv_weight`有变更

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

- 环境配置
```
source /usr/local/lib/python3.11/site-packages/mindie_llm/set_env.sh
export MASTER_IP="127.0.0.1"
export MASTER_PORT=7897  # 同一台环境不能重复
export MINDIE_LOG_TO_STDOUT=1   # 可选:日志输出到屏幕
source /usr/local/Ascend/ascend-toolkit/set_env.sh
设置PYTHONPATH
```

- ATB Graph Qwen2.5 7B TP8(num head不能被TP整除的场景)
```
torchrun --nproc_per_node 8 --master_port 20037 -m examples.run_pa --model_path /home/LargeModelInference/weight/float/qwen2.5_7b_instruct

[2026-03-12 23:39:06,346] [102443] [281473200209952] [llmmodels] [INFO] [run_pa.py-434] : ---------------end inference---------------
[2026-03-12 23:39:06,346] [102443] [281473200209952] [llmmodels] [INFO] [run_pa.py-611] : Answer[0]:  Deep learning is a subset of machine learning that involves training artificial neural networks to perform complex tasks, such
[2026-03-12 23:39:06,346] [102443] [281473200209952] [llmmodels] [INFO] [run_pa.py-612] : Generate[0] token num: (0, 20)
```
- ATB Graph Qwen2.5 7B TP4(num head可以被TP整除的场景)
```
torchrun --nproc_per_node 4 --master_port 20037 -m examples.run_pa --model_path /home/LargeModelInference/weight/float/qwen2.5_7b_instruct

[2026-03-12 23:40:05,503] [104351] [281472946188320] [llmmodels] [INFO] [run_pa.py-434] : ---------------end inference---------------
[2026-03-12 23:40:05,503] [104351] [281472946188320] [llmmodels] [INFO] [run_pa.py-611] : Answer[0]:  Deep learning is a subset of machine learning that involves training artificial neural networks with multiple layers to perform complex
[2026-03-12 23:40:05,503] [104351] [281472946188320] [llmmodels] [INFO] [run_pa.py-612] : Generate[0] token num: (0, 20)
```

# 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!560
Co-authored-by: zch777<zhuangchenghao@huawei.com>



# message auto-generated for no-merge-commit merge:
!564 merge dev_local into dev

multi lora 获取base weight shape新增transpose判断

Created-by: zch777
Commit-by: zch777
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

A2/A3机器,因未判断transpose,导致lora权重加载报错
Fixes #287
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

lora layer获取base layer权重shape时,增加transpose type判断逻辑,判断权重是否转置。
# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

不涉及
# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

不涉及
# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

A2 qwen2.5 + multilora 精度测试
当前dev分支代码+PR修改
![image.png](https://raw.gitcode.com/user-images/assets/8772840/c50fd4b4-29c8-4603-be74-023d0ea32e87/image.png 'image.png')
2.2.rc1商发版本
![image.png](https://raw.gitcode.com/user-images/assets/8772840/16e29660-5f2f-4b94-b36f-ca7bbb68a994/image.png 'image.png')
300Iduo qwen2.5 + multilora 精度测试
当前dev分支代码+PR修改
![image.png](https://raw.gitcode.com/user-images/assets/8772840/732086b1-8283-430b-9619-24891d400c62/image.png 'image.png')
# 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!564
Co-authored-by: Dawn952<zhaojunbo13@huawei.com>



# message auto-generated for no-merge-commit merge:
!611 merge bugfix_prefetcher into dev

[bugfix]回退代码依赖

Created-by: Dawn952
Commit-by: Dawn952
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> pr#542 在等待评审期间,有代码合入修改了pr依赖。\
> `Fixes #307`

# 修改内容
>  修复预取代码异常。

# 资料变更
> 不涉及

# 接口变更
> 不涉及

# 测试结果
采profiling看到预取流与CMO事件出现,预取功能恢复正常
![image.png](https://raw.gitcode.com/user-images/assets/8772840/bf73169c-c63a-4e35-8700-b93db49141aa/image.png 'image.png')

# 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!611
Co-authored-by: 周天扬<zhoutianyang@huawei.com>



# message auto-generated for no-merge-commit merge:
!570 merge zty_T0004 into dev

[Feature]: Deepseek V3.2支持ascend c自定义算子接入

Created-by: hw-zhoutianyang
Commit-by: 周天扬
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes [#303](https://gitcode.com/Ascend/MindIE-LLM/issues/303) 

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

更新Ascend C自定义算子编译框架,新增moe融合算子dispatch_ffn_combine

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

不涉及

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

不涉及

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

dispatch_ffn_combine单算子UT测试通过:
![image.png](https://raw.gitcode.com/user-images/assets/8772840/f0480098-adbb-4ff5-aab2-6a1420836b22/image.png 'image.png')

gsm8k lite精度OK:
![image.png](https://raw.gitcode.com/user-images/assets/8772840/8d299627-cc26-4f90-9116-fda6fdc0b85d/image.png 'image.png')

不开moe融合算子输入2k输出1k并发8性能:
![image.png](https://raw.gitcode.com/user-images/assets/8772840/28d2a218-ef37-4233-b1e7-6362a7948c16/image.png 'image.png')

开启moe融合算子输入2k输出1k并发8性能:
![image.png](https://raw.gitcode.com/user-images/assets/8772840/8669edfb-e93d-4194-90a8-61311a784248/image.png 'image.png')

# 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!570
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!630 merge A00172 into dev

[DOC] aclgraph 模型迁移文档

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

 Fix part of [#318](https://gitcode.com/Ascend/MindIE-LLM/issues/318) 

# 修改内容

本 PR 新增 **MindIE-LLM AclGraph 模型迁移指南** 文档,为开发者提供将新模型通过 aclgraph 后端接入 MindIE 并完成服务化运行的完整流程指导。
 
 主要修改内容如下:
 
 1. **文档结构设计**:创建完整的模型迁移指南框架,包含核心交付件(Router、Config、Model)和扩展实现(InputBuilder、ToolCallsProcessor)的说明。
 
 2. **Router 实现指南**:详细说明 BaseRouter 的功能、工作流程及实现步骤,包括自动加载机制和可扩展接口。
 
 3. **Config 实现指南**:说明 Config 的作用、基类能力及实现步骤,包括 RoPE 缩放配置等可选接口。
 
 4. **Model 实现指南**:提供模型层次结构说明和标准实现范式,涵盖 Attention、MoE、Layer、Model 等组件的实现方式。
 
 5. **可选功能实现**:包括 InputBuilder(处理用户输入格式)和 ToolCallsProcessor(支持 Function Calling)的实现指南。
 
 6. **FAQ 章节**:解答常见问题,包括分布式推理、量化支持、RoPE 配置、模型加载调试、MoE 专家并行等。
 
 7. **参考资料**:提供代码参考链接和相关文档链接。

# 资料变更

涉及。新增 `docs/zh/developer_guide/migration_and_adaptation_guide/aclgraph_migration_and_adaptation_guide.md` 文档,为开发者提供 AclGraph 模型迁移的完整指南。

# 接口变更

不涉及。

# 测试结果

本 PR 为文档变更,测试验证如下:
 
 1. **文档格式验证**:Markdown 格式正确,链接可正常跳转。
 2. **内容完整性验证**:文档涵盖模型迁移的完整流程,包括必需组件和可选组件的实现说明。
 3. **代码示例验证**:文档中的代码示例语法正确,符合 MindIE-LLM 框架规范。

# CheckList

- [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!630
Co-authored-by: earthmanylf<yulinfeng2@huawei.com>



# message auto-generated for no-merge-commit merge:
!592 merge mtpp into dev

dsv32支持mtp叠加异步

Created-by: earthmanylf
Commit-by: earthmanylf
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 [#103](https://gitcode.com/Ascend/MindIE-LLM/issues/103) 

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

支持dsv32的mtp叠加异步,并适配主线的warmup重构,主要添加适配异步的SpecWorkerExp类,并对mtp插件进行了aclgraph的异步适配,使用ENV.model_runner_exp进行了代码隔离

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在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!592
Co-authored-by: xsxhw<xiaoshixiang2@huawei.com>



# message auto-generated for no-merge-commit merge:
!598 merge w4a16bugfix into dev

修复旧版权重中quantization_config被覆盖问题

Created-by: xsxhw1
Commit-by: xsxhw
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
fix [#305](https://gitcode.com/Ascend/MindIE-LLM/issues/305) 

# 修改内容
将直接赋值改为update

# 资料变更
NA

# 接口变更
NA

# 测试结果
修改后旧版权重正常拉起

# 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!598
Co-authored-by: KaiMa<KaiMa_SDU@outlook.com>



# message auto-generated for no-merge-commit merge:
!621 merge del_log into dev

[Performance]: 冗余日志删除

Created-by: KaiMa
Commit-by: KaiMa
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #[308](https://gitcode.com/Ascend/MindIE-LLM/issues/308)

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。
![image.png](https://raw.gitcode.com/user-images/assets/8772840/7254be76-7caf-4551-a66b-2a2c13af34e3/image.png 'image.png')

# 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!621
Co-authored-by: LinWei100<linwei100@huawei.com>



# message auto-generated for no-merge-commit merge:
!631 merge fix/warn-log into dev

[fix] 修改警告日志刷屏

Created-by: LinWei100
Commit-by: LinWei100
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #317

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!631
Co-authored-by: KaiMa<KaiMa_SDU@outlook.com>



# message auto-generated for no-merge-commit merge:
!624 merge off_system_log into dev

[RFC]: 暂时关闭系统日志,Q2完成日志替换

Created-by: KaiMa
Commit-by: KaiMa
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #[311](https://gitcode.com/Ascend/MindIE-LLM/issues/311)

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。


# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。
![image.png](https://raw.gitcode.com/user-images/assets/8772840/c1a78e91-1265-4e55-bae4-4709b6761dc4/image.png 'image.png')

# 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!624
Co-authored-by: KaiMa<KaiMa_SDU@outlook.com>



# message auto-generated for no-merge-commit merge:
!645 merge modify_docs into dev

[Doc]: 文档刷新,prefillPolicyType只能配置0

Created-by: KaiMa
Commit-by: KaiMa
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #[323](https://gitcode.com/Ascend/MindIE-LLM/issues/323)

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

仅修改资料,PD调度策略都为0,先入先出

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!645
Co-authored-by: xsxhw<xiaoshixiang2@huawei.com>



# message auto-generated for no-merge-commit merge:
!644 merge w4a16bugfix into dev

fix smoke test issue

Created-by: xsxhw1
Commit-by: xsxhw
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
fix [#324](https://gitcode.com/Ascend/MindIE-LLM/issues/324) 

# 修改内容
针对config->quantization_config不存在的条件做处理

# 资料变更
NA

# 接口变更
NA

# 测试结果
相关用例拉起成功。

# CheckList


- [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!644
Co-authored-by: lijiaqi139<lijiaqi139@huawei.com>



# message auto-generated for no-merge-commit merge:
!595 merge bugfix_chunk into dev

修复大EP场景下chunkedprefill长序列推理卡死问题

Created-by: lijiaqi139
Commit-by: lijiaqi139
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
Fixes [#309](https://gitcode.com/Ascend/MindIE-LLM/issues/309) 

# 修改内容
> 放开ChunkedPrefill时在ApplyToWaitingQueue中对于请求长度校验的上限值

# 资料变更
> 不涉及

# 接口变更
> 不涉及

# 测试结果
> 测试通过

# 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!595
Co-authored-by: zouzy<zouzongyu@huawei.com>



# message auto-generated for no-merge-commit merge:
!584 merge warmup into dev

fix bug when maxbs lt maxprefilltokens

Created-by: zouzy5137
Commit-by: zouzy5137;zouzy
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 [#15](https://gitcode.com/Ascend/MindIE-LLM/issues/15) 
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!584
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!481 merge A00147_0304 into dev

快恢 OOM 需求,atbmodels 异常处理兼容 HCCL、LCCL、PTA、ATB

Created-by: martinXuc
Commit-by: xuchi;taojiovvo;Katrina-CXY
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20260316
-->

# 合入背景

本 PR 主要针对 OOM(Out of Memory)场景进行错误码适配和错误信息优化,提升问题定位效率。

**背景问题**:
1. 之前 OOM 错误信息较为杂乱,难以清晰定位问题
2. 没有一个统一的处理逻辑
3. 没有定义规范的错误码

Fix part of [#248](https://gitcode.com/Ascend/MindIE-LLM/issues/248) 
关联 PR [#470](https://gitcode.com/Ascend/MindIE-LLM/pull/470)

# 修改内容

**涉及组件**:atb_framework(C++层)、model_runner(Python层)、日志组件

**具体实现**:

 1. **C++ 层 OOM 错误处理优化**(model.cpp / model.h)
    - 新增 `CheckPreviousStepError()` 函数:检查异步执行步骤中的 OOM 错误状态
    - 新增 `CheckSetupError()` 函数:检查 Setup 阶段的 OOM 错误
    - 区分 `PreExecute`、`Execute`、`Setup` 三个阶段的 OOM 错误,提供更精确的错误定位
    - 在 `ExecutePlanSync()` 和 `PreExecutePlanSync()` 中捕获 OOM 错误并设置全局状态

 2. **Python 层 OOM 异常处理**(model_runner.py)
    - 新增 `exception_handler` 类装饰器,自动为 `forward*`、`dap_forward*`、`generate`、`load_weights` 等方法添加异常处理
    - 捕获 PyTorch 原生 `OutOfMemoryError` 异常(Torch 2.6+),提供统一错误码
    - 使用裸 `raise` 保留原始异常调用栈,便于问题定位

 3. **错误码扩展**(error_code.py / log.h)
    - 新增 `ATB_MODELS_OUT_OF_MEMORY` 错误码(MIE05E000005)
    - C++ 和 Python 两层错误码保持一致

# 资料变更

不涉及。

# 接口变更

不涉及。本次修改仅涉及内部错误处理逻辑优化,不影响对外接口。

# 测试结果

以下结果基于 PTA 26.0+,CANN 9.0+,预计 Q2 MindIE 镜像会直接支持,Q1 期间需要手动安装配套

## 测试用例 01:使用 A2 机器正常拉起用例

**正常拉起用例**:

```sh
vim /usr/local/lib/python3.11/site-packages/mindie_llm/conf/config.json

source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/lib/python3.11/site-packages/mindie_llm/set_env.sh

export MINDIE_LOG_TO_STDOUT=1
export MASTER_IP="xxx"
export MASTER_PORT="xxx"  

mindie_llm_server
```

**测试结果**:

```sh
[2026-03-18 19:26:43.904638] [505556] [507113] [server] [INFO] [health_checker.cpp:184] [health_checker] HealthChecker: Init finished, update status to normal
[2026-03-18 19:26:43.904654] [505556] [507113] [server] [INFO] [health_checker.cpp:510] [health_checker] HealthChecker: Status changed from SERVICE_INIT to SERVICE_NORMAL
[2026-03-18 19:26:43.904658] [505556] [507113] [server] [INFO] [health_checker.cpp:281] [health_checker] HealthChecker: Simulate infer health task is not enabled
[2026-03-18 19:26:43.911956] [505556] [node-33-74] [system] [server] [Start mindie server] [success]
Daemon start success![2026-03-18 19:26:43.911967] [505556] [505569] [server] [INFO] [endpoint.cpp:135] [endpoint] Start endpoint success

[2026-03-18 19:26:43.911990] [505556] [node-33-74] [system] [server] [start endpoint] [success]
[2026-03-18 19:26:43.912083] [505556] [505569] [server] [INFO] [llm_daemon.cpp:334] [daemon] Daemon start success!
```

**结果解释**:

证明代码合入不影响库上功能。

## 测试用例 02:PTA 申请 workspace 失败,发生预期 OOM,直接报在外层

**设置一个超大的 BS 和很大的上下文长度**:

```sh
vim /usr/local/lib/python3.11/site-packages/mindie_llm/conf/config.json

# *****************
"maxPrefillTokens" : 8192 -> 32768,
"maxBatchSize" : 200 -> 6000,
# *****************
```

**测试结果**:

```sh
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/text_generator/samplers/logits_handlers/pta_handlers.py", line 45, in __call__
    sequence_tokens_mask = sequence_tokens_counts[:, :vocab_size] > 0
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
torch.OutOfMemoryError: NPU out of memory. Tried to allocate 10.20 GiB (NPU 0; 29.49 GiB total capacity; 23.87 GiB already allocated; 23.87 GiB current active; 3.69 GiB free; 24.88 GiB reserved in total by PyTorch).If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.
[2026-03-18 21:02:43,259] [512248] [281464574833056] [llm] [ERROR] [generator.py-525] : Device out of memory (OOM) reported by PyTorch, but it can possibly triggered by HCCL. Enable logs: export ASCEND_SLOG_PRINT_TO_STDOUT=1, export ASCEND_GLOBAL_LOG_LEVEL=3 to check if there's HCCL error messages
[2026-03-18 21:02:43,259] [512248] [281464574833056] [llm] [ERROR] [generator.py-532] : TEXT_GENERATOR_OUT_OF_MEMORY fault happened in generate_token, error code: MIE05E01000A.
```

**结果解释**:

框架侧错误码 `MIE05E01000A` 正确打出。

## 测试用例 03:PTA 申请 workspace 失败,发生预期 OOM,由 atbmodels 捕获上报

**修改代码**:

```cpp
// examples/atb_models/atb_framework/pytorch/adapter/utils/utils.py
...
options = options.layout(torch::kStrided).requires_grad(false).device(torch_npu::utils::get_npu_device_type());

// ========== DEBUG: Trigger OOM for testing ==========
    // 申请一个超大 tensor (~100GB for float16) 来触发 OOM
    at::TensorOptions oomOptions = at::TensorOptions()
        .dtype(at::ScalarType::Half)
        .layout(torch::kStrided)
        .requires_grad(false)
        .device(torch_npu::utils::get_npu_device_type());
#ifdef TORCH_HIGHER_THAN_PTA6
    at::Tensor oomTensor = at_npu::native::empty_with_format(
        at::IntArrayRef({1024, 1024, 1024, 100}), oomOptions, ACL_FORMAT_ND);
#else
    at::Tensor oomTensor = at_npu::native::NPUNativeFunctions::tensor_with_format(
        at::IntArrayRef({1024, 1024, 1024, 100}), oomOptions, ACL_FORMAT_ND);
#endif
    (void)oomTensor;  // suppress unused warning
    // ========== END DEBUG ==========
```

**测试结果**:

```sh
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/modeling/model_wrapper/atb/atb_model_wrapper.py", line 251, in forward_from_model_inputs
    result = self.forward_tensor(
             ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/modeling/model_wrapper/atb/atb_model_wrapper.py", line 326, in forward_tensor
    raise e
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/modeling/model_wrapper/atb/atb_model_wrapper.py", line 311, in forward_tensor
    result = self.model_runner.forward(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/atb_llm/runner/model_runner.py", line 107, in wrapper
    raise RuntimeError(f"{error_msg}. Error_code: {error_code}") from e
RuntimeError: Device out of memory (OOM) reported by PyTorch, but it can possibly triggered by HCCL. Enable logs: export ASCEND_SLOG_PRINT_TO_STDOUT=1, export ASCEND_GLOBAL_LOG_LEVEL=3 to check if there's HCCL error messages. Error_code: MIE05E000005
```

**结果解释**:

atbmodels 错误码 `MIE05E000005` 正确打出。

## 测试用例 04:HCCL 申请通信域失败,由 PTA 上报 OOM

**设置环境变量**:

```sh
# 开启 hccl
export HCCL_OP_EXPANSION_MODE="AIV"
export ATB_LLM_HCCL_ENABLE=1
# 设置通信域大小
export HCCL_BUFFSIZE=20000
```

**测试结果**:

```sh
  File "/usr/local/lib/python3.11/site-packages/atb_llm/models/base/graph_manager/graph_wrapper.py", line 43, in execute
    model_out = self.atb_graph.execute(inputs, runtime_params)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Device out of memory during a previous asynchronous step (Execute). Error code: MIE05E000005. Enable log: export ASCEND_GLOBAL_LOG_LEVEL=3, export ASCEND_SLOG_PRINT_TO_STDOUT=1 to find the first error. For more details, see the MindIE official document.
```

**结果解释**:

atbmodels 错误码 `MIE05E000005` 正确打出。

## 测试用例 05:LCCL 申请通信域失败,由 ATB 上报 OOM

**修改代码**:

```cpp
// examples/atb_models/atb_framework/operations/fusion/linear/linear_parallel.cpp

int64_t AddAllReduceOp(const LinearParallelParam &param, atb::GraphParam &opGraph,
    std::map<std::string, uint32_t> &tensorMap)
{
    atb::Node allReduceNode;
    atb::infer::AllReduceParam allReduceParam;
    allReduceParam.rank = param.tensorParallelInfo.rank;
    allReduceParam.rankSize = param.tensorParallelInfo.worldSize;
    allReduceParam.backend = param.tensorParallelInfo.backend;
    allReduceParam.rankTableFile = param.tensorParallelInfo.rankTableFile;
    allReduceParam.quantType = param.tensorParallelInfo.quantType;
    allReduceParam.outDataType = param.tensorParallelInfo.outDataType;
    allReduceParam.commDomain = "66:80000"; // 修改这里
    allReduceParam.hcclComm = param.tensorParallelInfo.hcommInfo;
    CHECK_OPERATION_STATUS_RETURN(atb::CreateOperation(allReduceParam, &allReduceNode.operation));
    if (param.tensorParallelInfo.quantType == atb::infer::AllReduceParam::QuantType::QUANT_TYPE_PER_CHANNEL) {
        bool isQuant = param.fusionLinearParam.quantType == atb_speed::common::LinearQuantType::NO_QUANT;
        std::vector<std::string> allReduceInTensors = {
            isQuant ? "intermediate_quant_out" : "intermediate_linear_out", \
            "in_reduce_quant_scale", "in_gather_quant_offset"
        };
```

**测试结果**:

```sh
  File "/usr/local/lib/python3.11/site-packages/atb_llm/models/base/graph_manager/graph_manager.py", line 143, in select_and_execute
    return graph.execute(inputs, runtime_param, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/atb_llm/models/base/graph_manager/graph_wrapper.py", line 43, in execute
    model_out = self.atb_graph.execute(inputs, runtime_params)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Device out of memory during Setup for operation Decoder_layer at node index 2. Error code: MIE05E000005. Enable log: export ASCEND_GLOBAL_LOG_LEVEL=3, export ASCEND_SLOG_PRINT_TO_STDOUT=1 to find the first error. For more details, see the MindIE official document.
```

**结果解释**:

atbmodels 错误码 `MIE05E000005` 正确打出。

# 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!481
Co-authored-by: xsxhw<xiaoshixiang2@huawei.com>



# message auto-generated for no-merge-commit merge:
!597 merge file_utils into dev

修复file_utils易用性问题

Created-by: xsxhw1
Commit-by: xsxhw
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
fix [#301](https://gitcode.com/Ascend/MindIE-LLM/issues/301) 
当前 check_file_safety 函数在触发文件校验异常(如 FileExistsError 或 FileNotFoundError)时,错误信息仅包含静态提示("Please check the input path."),未输出具体的触发路径,导致线上问题排查困难。
本 PR 旨在将文件路径补充到异常输出中,以提升系统的可观测性。同时,为避免直接输出原始 file_path 引入的安全隐患(如 CRLF 日志注入、绝对路径导致的基础设施信息泄露、以及高危后缀名暴露),同步引入了路径清洗安全机制。

# 修改内容
异常信息增强:修改 check_file_safety 的异常抛出逻辑,将经过清洗的安全路径(safe_log_path)注入到错误提示字符串中。

新增路径清洗模块:实现 sanitize_for_logging 函数,在输出前对路径执行四重防御性处理:

路径相对化:通过 os.path.isabs 和 os.path.relpath 转换相对路径,隐藏物理绝对目录。捕获 Windows 环境下跨盘符操作引发的 ValueError,降级保留原始路径。

特殊字符清洗:将 \n 与 \r 强制替换为下划线 _,阻断日志注入。

敏感后缀脱敏:建立包含 19 种高危后缀(脚本、密钥、证书、密码库)的静态元组黑名单。对输入路径提取小写副本进行比对(规避大小写绕过),命中后保留主文件名,后缀替换为 .*MASKED*。

长度收敛(左截断):设定 256 字符上限。对超长路径执行左截断策略,头部替换为 ... 并保留尾部 253 个字符,确保最高信息密度的文件名和近端父目录不被丢弃。

新增单元测试:基于 unittest 及 mock 编写配套测试用例,涵盖空值处理、相对路径旁路、绝对路径转换/降级、CRLF 阻断、后缀脱敏防误杀以及左截断边界测试,实现行与分支的全覆盖。

# 资料变更
不涉及。

# 接口变更
不涉及。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# 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!597
Co-authored-by: s00837289<shiqiang15@huawei.com>



# message auto-generated for no-merge-commit merge:
!604 merge dev into dev

trunctaion资料修改

Created-by: shiqiangA
Commit-by: s00837289
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.
#[252]https://gitcode.com/Ascend/MindIE-LLM/issues/252

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!604
Co-authored-by: xqchen7<chenxueqing7@huawei.com>



# message auto-generated for no-merge-commit merge:
!650 merge dev_323 into dev

pre-commit更换: 更新文件 .pre-commit-config.yaml

Created-by: xqchen7
Commit-by: xqchen7
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> codecheck更换为pre-commit,部分pre-commit.yaml存在从github上下载代理不可用,改为使用gitcode下载。\
Fixes [#333]

# 修改内容
> pre-commit.yaml存在从github上下载代理不可用,改为使用gitcode下载。

# 资料变更
> “不涉及”。

# 接口变更
> "不涉及”。

# 测试结果
>  "不涉及”。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ x] 代码注释完备
- [ x] 正确记录错误日志
- [ x] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ 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!650
Co-authored-by: dljzx<juzhaoxun@huawei.com>



# message auto-generated for no-merge-commit merge:
!664 merge revert into dev

revert precommit

Created-by: dljzx
Commit-by: dljzx
Merged-by: Katrina-CXY
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!664
Co-authored-by: xsxhw<xiaoshixiang2@huawei.com>



# message auto-generated for no-merge-commit merge:
!620 merge dsv32fc into dev

[FEATURE](DeepSeekV3.2): 实现DeepSeek流式/非流式toolcall解析

Created-by: xsxhw1
Commit-by: xsxhw
Merged-by: Katrina-CXY
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
[#329](https://gitcode.com/Ascend/MindIE-LLM/issues/329) 

# 修改内容
可见issue.

# 资料变更
需要同步增加对dsv32 fc能力的支持描述

# 接口变更
不涉及

# 测试结果
st单例:
请求:curl --request POST \
  --url http://127.0.0.1:1025/v1/chat/completions \
  --header 'Content-Type: application/json' \
  --header 'User-Agent: insomnia/11.2.0' \
  --data '{
        "model": "ds",
        "messages": [
                {
                        "role": "user",
                        "content": "Hi, can you tell me the delivery date for my order?  my order number is 998877"
                }
        ],
        "tools": [
                {
                        "type": "function",
                        "function": {
                                "name": "get_delivery_date",
                                "description": "Get the delivery date based on an order object containing the order ID.",
                                "parameters": {
                                        "type": "object",
                                        "properties": {
                                                "order_id": {
                                                        "type": "str",
                                                        "description": "An string indicating the order ID."
                                                }
                                        },
                                        "required": [
                                                "order_id"
                                        ],
                                        "additionalProperties": false
                                }
                        }
                }
        ],
        "tool_choice": "auto",
                                "skip_special_tokens": true,
        "stream": false
}'
非流式输出:
{"id":"endpoint_common_0","object":"chat.completion","created":1774251667,"model":"ds","choices":[{"index":0,"message":{"role":"assistant","content":"I can help you find the delivery date for your order with ID 998877. Let me invoke the function to retrieve that information.\n","tool_calls":[{"function":{"arguments":"{\"order_id\": \"998877\"}","name":"get_delivery_date"},"id":"call_t3QLymlX","type":"function"}]},"logprobs":null,"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":380,"prompt_tokens_details":{"cached_tokens":0},"completion_tokens":135,"completion_tokens_details":{"reasoning_tokens":113},"total_tokens":515}}
流式拼接后输出:
{'id': 'endpoint_common_1', 'object': 'chat.completion', 'created': 1774251691, 'model': 'ds', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': 'I can help you find the delivery date for your order with ID 998877. Let me invoke the function to retrieve that information.\n', 'tool_calls': [{'id': 'call_VWFQ48s6', 'type': 'function', 'function': {'name': 'get_delivery_date', 'arguments': '{"order_id": "998877"}'}}]}, 'finish_reason': 'tool_calls'}]}
可见tool call字段一致
bfcl simple流式结果:BFCL-v3-simple  c1b9d1     accuracy  bfcl_v3  0.85 (339.0/400.0)


# 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!620
Co-authored-by: coding-lz<liuzhe62@huawei.com>



# message auto-generated for no-merge-commit merge:
!643 merge dev_cp_2 into dev

[BugFix]: 修复集中式单DP下跨机机器数量超过2时,服务拉起失败

Created-by: coding-lz
Commit-by: coding-lz
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes [#321](https://gitcode.com/Ascend/MindIE-LLM/issues/321) 

源POC分支修改:https://gitcode.com/Ascend/MindIE-LLM/pull/397
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在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!643
hw-zhoutianyang and others added 30 commits May 15, 2026 10:38
Co-authored-by: 周天扬<zhoutianyang@huawei.com>



# message auto-generated for no-merge-commit merge:
!694 merge dev_triton_rope into dev

dsv32 use triton rope

Created-by: hw-zhoutianyang
Commit-by: 周天扬
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes [#576](https://gitcode.com/Ascend/MindIE-LLM/issues/576) 

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

Deepseek V3.2性能优化
使用triton rope融合算子替换torch_npu的rope、slice、cat算子

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

不涉及

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

不涉及

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

GPQA精度OK:
![image.png](https://raw.gitcode.com/user-images/assets/8772840/7f759640-9133-4adb-a65a-ed61443116e7/image.png 'image.png')

# 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!694
Co-authored-by: Dawn952<zhaojunbo13@huawei.com>



# message auto-generated for no-merge-commit merge:
!977 merge T0009 into dev

dsv32性能优化:使能muls_add_triton算子

Created-by: Dawn952
Commit-by: Dawn952
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> Fixes #570

# 修改内容
> 新增triton算子
> 将deepseekv3中的乘加运算替换为tirton算子,优化性能

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果

A3精度测试
![image.png](https://raw.gitcode.com/user-images/assets/8772840/799054b7-29c6-44f6-bbf5-d46d3b03c3ff/image.png 'image.png')
A3性能测试
![image.png](https://raw.gitcode.com/user-images/assets/8772840/a79da9b5-d58a-4a5f-ad72-7b64ecc2238a/image.png 'image.png')
A2精度测试
![image.png](https://raw.gitcode.com/user-images/assets/8772840/5de815f5-f1da-45ab-af4c-0163d2b29010/image.png 'image.png')
A2性能测试
![image.png](https://raw.gitcode.com/user-images/assets/8772840/25cca6e0-ab3b-4c06-9129-27533467d214/image.png 'image.png')

# 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!977
Co-authored-by: Katrina-CXY<chenxinyi20@huawei.com>



# message auto-generated for no-merge-commit merge:
!1020 merge revert-mr-977-1779251753927-auto into dev

回退:使能muls_add_triton算子

Created-by: Katrina-CXY
Commit-by: Katrina-CXY
Merged-by: Katrina-CXY
Description: 由于muls_add_triton算子在数据集测试场景存在挂死问题,先回退。

See merge request: Ascend/MindIE-LLM!1020
Co-authored-by: shenzhao<shenzhao9@huawei.com>



# message auto-generated for no-merge-commit merge:
!1009 merge samper-0518 into dev

修复自定义topktopp算子导致的TPOT劣化问题

Created-by: shenzhao
Commit-by: shenzhao
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 [#557](https://gitcode.com/Ascend/MindIE-LLM/issues/557) 
导入自定义topktopp算子后,TPOT出现10ms的劣化,通过将自定义算子的输出out改为入参进行引用修改可以解决该问题
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。
修改python调用自定义算子的输出格式,out不再通过返回值返回,而是通过入参进行引用传递填写
# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。
不涉及
# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。
不涉及
# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。
性能测试
out放到入参后,性能正常,A3大EP2PED,2K输入输出,32并发测试
不开采样:TPOT 24.9 ITL 71.6 (不带算子PR基线:24.8,72.8);
![image.png](https://raw.gitcode.com/user-images/assets/8772840/9a4195c0-2c4a-470a-a4db-5071481807fd/image.png 'image.png')
![image.png](https://raw.gitcode.com/user-images/assets/8772840/45b03c0a-f2ee-49bd-8f7d-b6b4df4554af/image.png 'image.png')
开启采样:TPOT 28.5 ITL 70.8(不带算子PR基线:43.6, 108.5)。
![image.png](https://raw.gitcode.com/user-images/assets/8772840/6d8d258d-7779-4780-b517-e13c06e3c07b/image.png 'image.png')
![image.png](https://raw.gitcode.com/user-images/assets/8772840/5525edd4-249e-4700-80fd-49334ee18442/image.png 'image.png')
精度测试:
GPQA精度86.87
![image.png](https://raw.gitcode.com/user-images/assets/8772840/5af13106-5699-4c2e-bf9d-a3c95cc86a44/image.png 'image.png')
# 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!1009
Co-authored-by: chenzhinan1212<chenzhinan1@h-partners.com>



# message auto-generated for no-merge-commit merge:
!1011 merge dev into dev

200I Pro加速模块新增硬件系统配套支持资料

Created-by: chenzhinan1212
Commit-by: chenzhinan1212
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

fix #583
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

新增200I Pro加速模块新增硬件系统配套支持资料
# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

涉及
# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

不涉及
# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!1011
Co-authored-by: xiechangxiu<xiechangxiu3@h-partners.com>



# message auto-generated for no-merge-commit merge:
!1026 merge dev into dev

[Doc]:统一安装方式描述(v3.0.0修改返合dev)

Created-by: ella07
Commit-by: x60087760;ella07;xiechangxiu
Merged-by: ascend-robot
Description: [#580](https://gitcode.com/Ascend/MindIE-LLM/issues/580) 
支持的安装方式:镜像安装,离线安装(原物理机安装),源码安装(新增)

See merge request: Ascend/MindIE-LLM!1026
Co-authored-by: zxf_00617641<zhangxiaofeng44@huawei.com>



# message auto-generated for no-merge-commit merge:
!889 merge dev into dev

layerwise_disaggregated边云协同重构切chunk策略,解决非标长度获取出来policy不相等的bug

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`替代.
Fixes [#518](https://gitcode.com/Ascend/MindIE-LLM/issues/518) 
边云协同特性在长序列中,需要切分chunk,由于边和云切分时限制了其比例(如云的一段等于边的3段),并且限制了边和云的最小单位,边云切分chunk时的最小单位可以不一致,因而边云切分出来的chunk长度可能无法对应上,进而导致运行时概率报错。

# 修改内容
本次PR系列的核心目标是重构边云协同推理场景下的长序列预填充分块策略,以支持更精细和灵活的分块控制。主要解决了原有简单均分策略无法满足边侧与云侧分块长度需保持整数倍关系的复杂约束问题,确保了在分布式异构计算环境下的数据切分正确性。同时,通过引入统一的数据结构封装分块策略,重构了请求路由器、元数据管理模块及相关单元测试,解决了原有代码中逻辑分散、耦合度高、并发处理能力不足的问题,提升了系统的可维护性、调度效率和代码健壮性。

引入 RatioInfo 数据类统一管理分块比例和最小对齐单位,并重构了核心分块算法 split_long_seq_by_ratio,使其能综合考虑边云两侧的约束,确保云侧分块长度是边侧对应分块长度之和的整数倍。在架构层面,引入了 ChunkPolicyData 数据结构,在请求处理早期统一计算并封装边侧策略、云侧策略及其映射关系,替代了原有分散、重复的计算逻辑,简化了请求路由器(RequestRouterCloud 和 RequestRouterEdge)中的数据流。此外,将输入元数据管理从基于队列的方式重构为基于 request_key 的映射管理,支持并发请求的精准隔离。最后,全面重构并增强了相关单元测试,以适配新接口并验证复杂的长序列处理场景。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。
分布式边云协同 长/短 序列qwen、deepseek。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!889
Co-authored-by: Jechin<yuzechen1@huawei.com>



# message auto-generated for no-merge-commit merge:
!991 merge bugfix/hbm-recovery into dev

Fix hbm recovery with postprocess_done

Created-by: Jechin
Commit-by: Jechin
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes [#565](https://gitcode.com/Ascend/MindIE-LLM/issues/565) 
# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

异步推理时postprocess过程中报错,主动set postprocess_done
# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在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!991
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1024 merge A00256 into dev

aclgraph 新增OOM异常拦截并转错误码

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fix part of #588

仿照 atb-models 捕获 OOM 异常转故障码的方式,在 aclgraph 代码路径上新增 OOM 异常拦截,使 OOM 场景下能够打出正确的错误码(`MIE05E000006`),便于定位和诊断。

# 修改内容

1. **新增 `utils/decorators/exception_handler.py`**:封装 `@exception_handler` 类装饰器,自动 wrap 目标方法并捕获 `torch.OutOfMemoryError`,打错误码日志后重抛为 `RuntimeError`
2. **`model_runner_exp.py`**:对 `ModelRunnerExp` 应用 `@exception_handler` 装饰器,拦截 `forward()` / `compile()` / `load_weights()` 中的 OOM
3. **`error_code.py`**:新增 `ACL_GRAPH_OUT_OF_MEMORY = “MIE05E000006”`;按编码前缀对 ErrorCode 枚举重新排序,提升可维护性

# 资料变更

不涉及。

# 接口变更

不涉及。

# 测试结果

## 测试用例 01:HCCL OOM 异常

### 触发方式

```shell
export HCCL_BUFFSIZE=200000
```

### 关键异常打屏

```shell
File "/usr/local/lib/python3.11/site-packages/mindie_llm/utils/decorators/exception_handler.py", line 38, in wrapper
    raise RuntimeError(f"{error_msg}. Error_code: {error_code}") from e
RuntimeError: Device out of memory (OOM) reported by PyTorch, but it can possibly triggered by HCCL. Enable logs: export ASCEND_SLOG_PRINT_TO_STDOUT=1, export ASCEND_GLOBAL_LOG_LEVEL=3 to check if there's HCCL error messages. Error_code: MIE05E000006
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/utils/decorators/exception_handler.py", line 26, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
...
torch.OutOfMemoryError: The Inner error is reported as above. The process exits for this inner error, and the current working operator name is aclnnDispatchFFNCombine.
Since the operator is called asynchronously, the stacktrace may be inaccurate. If you want to get the accurate stacktrace, please set the environment variable ASCEND_LAUNCH_BLOCKING=1.
Note: ASCEND_LAUNCH_BLOCKING=1 will force ops to run in synchronous mode, resulting in performance degradation. Please unset ASCEND_LAUNCH_BLOCKING in time after debugging.
[ERROR] 2026-05-24-15:45:50 (PID:297309, Device:14, RankID:-1) ERR00100 PTA call acl api failed.
[PID: 297309] 2026-05-24-15:45:50.987.747 Memory_Allocation_Failure(EL0004): Failed to allocate memory requested by HCCL module.
        Possible Cause: Available memory is insufficient.
        Solution: Close applications not in use.
        TraceBack (most recent call last):
        alloc memory failed, runtime result = 207001[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:148]
        Failed to allocate [size:419431448576] bytes of NPU memory.
        Nnopbase fails to invoke the HcclAllocComResourceByTiling function of the hccl module. ret = 24, comm = 0xfff01a18be90.
        Check nnopbase::IndvHcclWrapper::GetInstance().HcclAllocComResourceByTiling(commHandle, stream, (op::internal::PtrCastTo<NnopbaseTilingData>(executor->args->tilingInfo.tilingData))->GetData(), &contextAddr) failed
        Check NnopbaseGetHcomResource(executor, stream) failed
        Check NnopbaseExecutorGetMc2Num(executor, stream, &argsAddr, &mc2Num) failed
        Check NnopbaseExecutorPrepareParamsExt(executor, stream) failed
        Check NnopbaseRunWithWorkspace(executor, stream, workspace, workspaceSize) failed
```

## 测试用例 02:PTA OOM 异常

### 触发方式

```shell
vim /usr/local/lib/python3.11/site-packages/mindie_llm/runtime/model_runner/model_runner_exp.py
```

```python
Returns:
    Logits tensor, or tuple of (logits, hidden_states) if speculative tokens enabled.
"""

# temp trigger OOM
torch.zeros(1024 * 1024 * 1024 * 4, dtype=torch.float32, device=self.device)

if self._kv_cache_info.check_diff(kv_caches):
    self._bind_kv_cache(kv_caches)
```

### 关键异常日志

```shell
[2026-05-24 16:41:28,672] [334601] [281462080598432] [llm] [ERROR] [plugin_manager.py-299] : Error encountered in generate_token (trace_ids=[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]). trigger recovery or terminate inference thread. Error: Device out of memory (OOM) reported by PyTorch, but it can possibly triggered by HCCL. Enable logs: export ASCEND_SLOG_PRINT_TO_STDOUT=1, export ASCEND_GLOBAL_LOG_LEVEL=3 to check if there's HCCL error messages. Error_code: MIE05E000006
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/utils/decorators/exception_handler.py", line 26, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/mindie_llm/runtime/model_runner/model_runner_exp.py", line 298, in forward
    torch.zeros(1024 * 1024 * 1024 * 4, dtype=torch.float32, device=self.device)
torch.OutOfMemoryError: NPU out of memory. Tried to allocate 16.00 GiB (NPU 1; 61.28 GiB total capacity; 48.03 GiB already allocated; 48.03 GiB current active; 12.99 GiB free; 48.12 GiB reserved in total by PyTorch).If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.

The above exception was the direct cause of the following exception:

...

RuntimeError: Device out of memory (OOM) reported by PyTorch, but it can possibly triggered by HCCL. Enable logs: export ASCEND_SLOG_PRINT_TO_STDOUT=1, export ASCEND_GLOBAL_LOG_LEVEL=3 to check if there's HCCL error messages. Error_code: MIE05E000006
Traceback (most recent call last):
...
```

# 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!1024
Co-authored-by: forcekeng<gengli8@huawei.com>



# message auto-generated for no-merge-commit merge:
!1034 merge dev_op_vllmB113 into dev

[op] Update DispatchFFNCombine

Created-by: forcekeng
Commit-by: forcekeng
Merged-by: Katrina-CXY
Description: 根据[vllm v1.13.0](https://github.com/vllm-project/vllm-ascend/tree/releases/v0.13.0),更新DispatchFFNCombine算子

See merge request: Ascend/MindIE-LLM!1034
Co-authored-by: zhaokerui<zhaokerui@huawei.com>



# message auto-generated for no-merge-commit merge:
!1035 merge dev into dev

[feature] support tune qwen blocksize

Created-by: zhaokerui
Commit-by: zhaokerui
Merged-by: Katrina-CXY
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
Fixes #622

# 修改内容
支持config文件传入的参数blockSize传入至算子的参数

# 资料变更
不涉及

# 接口变更
不涉及

# 测试结果
打点得到已经传入到算子param,curl回复正常。

# 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!1035
Co-authored-by: chenzeyu<2978509328@qq.com>



# message auto-generated for no-merge-commit merge:
!995 merge dev into dev

提交DT运行和编译分离

Created-by: qq54010497
Commit-by: chenzeyu
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 将UT的编译的和运行分离出来,以期能够在CI/CD中能够获得灵活性提高效率。\
> 不涉及。\
> 不涉及。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.
[#351](https://gitcode.com/Ascend/MindIE-LLM/issues/351) 
# 修改内容
> 将原本的utils.cmake命令中的add_custom_target去掉,换成ctest运行时候设置环境。\
> 将去掉的ctest移动到run_all_tests.sh中,并调整相应的接口,提供给ci使用。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
>不涉及。

# 测试结果
> 主要与CI进行联调,CI联调通过

# 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!995
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1017 merge A00254_1 into dev

[Doc]Fix markdown indentation and trailing whitespace issues (part 1)

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

全量扫描仓库200个Markdown文件,修复缩进格式问题,消除git diff噪音。

Fixes #585

# 修改内容

1. 扫描全部 Markdown 文件的缩进格式——heading、blockquote、list 缩进均合规,无需修改
2. 清理48个Markdown文件的尾随空格(trailing whitespace),共217行
3. 新增 `scripts/fix_markdown_trailing_whitespace.py` 脚本,支持 --check 模式用于后续CI检查

# 资料变更

涉及。清理了 docs/ 和 examples/ 下共48个Markdown文件的尾随空格,纯格式清理,无内容变更。

# 接口变更

不涉及

# 测试结果

纯文档格式清理,不涉及功能/性能/精度变更。
验证方式:全量扫描确认尾随空格清零,git diff 确认仅空格变更,无内容改动。

# 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!1017
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1018 merge A00254_2 into dev

[Doc]Fix markdown indentation and trailing whitespace issues (part 2)

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

全量扫描仓库200个Markdown文件,修复缩进格式问题,消除git diff噪音。

Fixes #585

# 修改内容

1. 扫描全部 Markdown 文件的缩进格式——heading、blockquote、list 缩进均合规,无需修改
2. 清理48个Markdown文件的尾随空格(trailing whitespace),共217行
3. 新增 `scripts/fix_markdown_trailing_whitespace.py` 脚本,支持 --check 模式用于后续CI检查

# 资料变更

涉及。清理了 docs/ 和 examples/ 下共48个Markdown文件的尾随空格,纯格式清理,无内容变更。

# 接口变更

不涉及

# 测试结果

纯文档格式清理,不涉及功能/性能/精度变更。
验证方式:全量扫描确认尾随空格清零,git diff 确认仅空格变更,无内容改动。

# 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!1018
…t01]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1028 merge A00251_01 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part01]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes [#617](https://gitcode.com/Ascend/MindIE-LLM/issues/617) 

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1028
…t02]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1029 merge A00251_02 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part02]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes #617

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1029
Co-authored-by: xsxhw<xiaoshixiang2@huawei.com>



# message auto-generated for no-merge-commit merge:
!1036 merge dsv32 into dev

修复runtime中的toolCallsProcessor未init的问题

Created-by: xsxhw1
Commit-by: xsxhw
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
#fix [#625](https://gitcode.com/Ascend/MindIE-LLM/issues/625)  回退pre-commit导致的tool calls processors未注册问题

# 修改内容
回退pre-commit导致的tool calls processors未注册问题

# 资料变更
NA

# 接口变更
NA

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# 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!1036
Co-authored-by: forcekeng<gengli8@huawei.com>



# message auto-generated for no-merge-commit merge:
!1037 merge dev_fix into dev

[doc] update deepseek_v3.2.md

Created-by: forcekeng
Commit-by: forcekeng
Merged-by: ascend-robot
Description: [doc] update deepseek_v3.2.md

See merge request: Ascend/MindIE-LLM!1037
…t03]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1030 merge A00251_03 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part03]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes #617

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1030
…t04]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1031 merge A00251_04 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part04]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes #617

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1031
…t05]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1032 merge A00251_05 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part05]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes #617

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1032
…t06]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1033 merge A00251_06 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Part06]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes #617

为 atb_models 文档做一次集中清理与规范统一,具体包括:

1. DeepSeek-R1-Distill 系列补齐 Qwen-1.5B 和 Qwen-7B 两个小模型的配套文档
2. 清理已废弃的 bge 模型目录(功能已迁移至 `embedding/`)
3. 统一全量 README 的排版格式与内容正确性,解决中英文混排、符号标准不一致、链接过期、说明冗余等问题

## 修改内容

### 1. DeepSeek-R1-Distill 系列文档完善

- **新增** `DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `DeepSeek-R1-Distill-Qwen-7B.md`,补齐该系列缺失的 Qwen 小模型变体配套资料,内容涵盖特性矩阵、权重下载、路径变量说明、权重量化流程(W8A8 及稀疏量化)、服务化推理部署配置、AISBench 精度/性能测试方法
- **删除** 旧的 `README_DeepSeek-R1-Distill-Qwen-1.5B.md` 和 `README_DeepSeek-R1-Distill-Qwen-7B.md`(文件名格式不统一且内容已过时),替换为以上新文档
- **同步更新** 已有 4 个 Distill 文档(Llama-70B、Llama-8B、Qwen-14B、Qwen‑32B)的格式:中英文空格规范、量化名称标准化、`✓/✕` → `✅/❌`、标题层级从 `#` 统一为 `##`、权重下载链接表格化、路径变量说明精简

### 2. BGE 模型目录清理

- 删除 `bge/large-zh-v1.5/` 和 `bge/reranker-large/` 目录下的所有文件(README、bin2onnx.py、convert.sh)。这些模型的功能已迁移到 `examples/models/embedding/`,旧目录不再维护

### 3. 全量 README 文档规范统一与内容修正

涉及以下 30+ 个模型的 README 文件:
`baichuan`、`bloom`、`chatglm(v2/v3/v4)`、`deepseek-r1`、`deepseek-v3`、`deepseek(deeplseek_moe)`、`deepseekv2`、`embedding`、`ernie_moe`、`glm41v`、`glm4v`、`internlm`、`internvl`、`kimi_k2`、`llama3`、`mixtral`、`mllama`、`phi3`、`qwen`、`qwen2_audio`、`qwen2_audio/precision`、`qwen2_vl`、`telechat`、`vita`、`yivl`、`yizhao`

主要改动点:

- **中英文空格规范**:所有中英文混排处增加空格(如 "world size" → 保持与中文间的空格,"W8A8量化" → "W8A8 量化")
- **标题层级统一**:部分文档的一级标题 `#` 改为二级 `##`,统一从 `##` 开始的结构
- **符号统一**:`✓/✕` → `✅/❌`,提升表格可读性
- **表格格式标准化**:表头对齐、列间距规范化
- **权重下载方式精简**:DeepSeek-R1 等大模型的权重下载从多步骤脚本说明简化为表格化的多来源链接汇总
- **链接修复与去重**:统一引用文档地址(如 msmodelslim 指向正确的新路径),删除重复内容
- **路径变量定义精简**:根据镜像部署和源码下载两种场景,精简路径变量含义说明
- **删除冗余说明**:移除 DeepSeek-V2/V3/R1 共享代码模块的复杂指引(已被模块化重构替代)

## 资料变更

涉及。本次 PR 全部为文档资料变更:

- 新增 2 个模型配套文档(DeepSeek-R1-Distill-Qwen-1.5B/7B)
- 删除 bge 旧目录(已迁移至 embedding)
- 30+ 个模型的 README 排版规范统一

## 接口变更

不涉及。本次为纯文档变更,无代码接口改动。

## 测试结果

不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

## CheckList

> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)


See merge request: Ascend/MindIE-LLM!1033
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1019 merge A00252 into dev

fix(doc): 修复 quick_start.md 文档及 mkdocs 渲染问题

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

Fixes https://gitcode.com/Ascend/MindIE-LLM/issues/591

根据 issue #591 的用户反馈,修复 quick_start.md 在 mkdocs 渲染、命令可用性、格式规范性等方面的问题,同时补充 whl 包安装方式的差异化说明,提升文档的可用性和准确性。

本次 PR 还同步了 upstream/dev 的最新代码,并解决了 merge 冲突。

# 修改内容

本次 PR 涉及对 quick_start.md 文档、mkdocs 渲染 hook 以及 mkdocs 配置的修改:

### 1. 修复 quick_start.md 格式、命令及 mkdocs 渲染问题

**命令修复:**
- `--shm-size` 从 `1g` 改为 `500g`,避免大模型推理时共享内存不足
- 镜像名称从硬编码的 `mindie:3.0.0-800I-A2-py311-openeuler24.03-lts` 替换为 `{IMAGE_ID}` 占位符,用户根据实际下载的镜像替换
- 数据集名称 `demo_gsm8k_*` → `gsm8k_*`,修正为正确的数据集名
- 精度测试命令 `--models vllm_api_general_chat` → `vllm_api_stream_chat`,与配置文件一致
- 精度测试回显中 `demo_gsm8k` → `gsm8k`,`vllm_api_general_chat` → `vllm_api_stream_chat`
- 环境变量步骤锚点 ID 从 `step3` 改为 `setup_env`,语义更清晰

**内容增补:**
- 表 2(容器内各组件安装路径)后新增 NOTE 说明,补充 whl 包 vs run 包安装方式的路径差异
- CAUTION 后新增 NOTE 说明,补充 whl 包安装时使用 `mindie-llm-server` 命令拉起服务
- AISBench 路径说明整合:新增 `{ais_bench_path}` 占位符,统一说明镜像集成版和 git 安装版的路径差异
- 步骤 3.d:编辑 config.json 后设置权限为 640(`chmod 640 config.json`)
- 性能测试"准备数据集"路径统一使用 `{ais_bench_path}`
- 性能测试"安装 AISBench 工具"增加跳转链接至精度测试章节
- 图片补 alt text(MD045)

**内容删除:**
- 删除文件权限检查步骤(chmod 命令集),因默认路径权限已正确,且 whl 包安装方式不需要
- 删除重复的 "Daemon start success!" 回显提示
- 删除 docker exec 后的 NOTE(外部链接,信息量少)

**格式修复:**
- 列表内代码块缩进从 5 空格修正为 4 空格,修复 mkdocs 渲染时列表断裂问题
- 表格添加列对齐标记空格,确保在 GitHub 和 mkdocs 上均正确渲染
- json 代码块格式修正(删除多余缩进)
- NOTE/CAUTION 标记规范化:`> [!NOTE]说明` → `> [!NOTE] 说明`
- 参数名、路径等使用反引号包裹,增加可读性

**排版规范化:**
- 全篇应用"盘古之白"规范:中英文之间、中文与数字之间加空格

### 2. 修复 pre-commit 检测问题

- 修复 github_admonition.py 中的 trailing whitespace 和 unused import

### 3. 新增 mkdocs hook 修复列表内 admonition 渲染

- `github_admonition.py`:修复正则表达式,排除嵌套 `[!` 模式的误匹配;当 admonition 在列表项内时,在其后插入 `<!-- -->` 注释强制列表闭合
- 新增 `list_break.py` hook:检测被 `<!-- -->` 标记的列表内 admonition,在其后的 `##` 标题前再插入一列 `<!-- -->`,解决 Python-Markdown 在列表项内 admonition 后遇到标题时不闭合 `<li>` 的渲染问题

### 4. 注册新 hook

- `mkdocs.yml`:注册 `list_break.py` hook

### 5. 同步 upstream/dev 并解决 merge 冲突

- Merge branch `dev` of gitcode.com:Ascend/MindIE-LLM 到 A00252,同步上游最新代码
- 解决 4 个冲突:产品表格、参数表格、chmod 步骤删除、发送请求链接

# 资料变更

涉及。修改 docs/zh/user_guide/quick_start/quick_start.md 文档。

# 接口变更

不涉及。

# 测试结果

本次为文档和 mkdocs 渲染工具修复,已在本地验证:
- 修改后的 hook 对现有其他 admonition 无影响,渲染正确
- 修复的代码块缩进和表格格式在 mkdocs serve 预览下渲染正常
- 命令修改基于实际使用场景验证(--shm-size、数据集名、模型配置名)
- 确认 `vllm_api_stream_chat` 配置可用于精度测试(AISBench 查询验证)
- markdownlint 全线通过,零报错

# CheckList

- [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!1019
Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1041 merge A00272 into dev

[feat] add pre-validation for DSV3.2 incompatible feature combinations

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景

DeepSeek-V3.2 部署文档(`deepseek_v3.2.md` 表4)定义了特性叠加矩阵,明确标注了多个不兼容的特性组合。但当前模型拉起时没有任何前置校验,用户配置了不兼容组合后只能在运行时暴露错误(如 `npu_kv_rmsnorm_rope_cache` 算子报 `Index's shape size must equal with B*S`),排障成本高。

Fixes #626

# 修改内容

在 `ModelRunnerExp.__init__()` 中模型路由完成之后、`load_weights()` 之前,针对 DeepSeek-V3.2 模型新增 `_validate_deepseekv32_feature_combinations()` 静态方法,对以下 5 个不兼容组合进行前置校验:

1. CP + DP —— 两者同时 > 1 时不兼容,抛出 `CP(cp=N) + DP(dp=N)`
2. CP + 异步调度 —— 抛出 `CP(cp=N) + Async Scheduling`
3. CP + Chunked Prefill(splitfuse)—— 抛出 `CP(cp=N) + Chunked Prefill(splitfuse)`
4. CP + Prefix Cache —— 抛出 `CP(cp=N) + Prefix Cache`
5. MTP + Chunked Prefill(PD-mixed 混部模式)—— 抛出 `MTP + Chunked Prefill(PD-mixed)`

模型识别方式:通过 `router_ins._model_type == "deepseek_v32"` 精确识别,该字段来自 HuggingFace `config.json` 的 `model_type`,不依赖用户自定义的 `modelName`。

校验前置性:校验在 `load_weights()` 之前执行,仅读取配置参数(cp/dp/plugin_params/ENV),不依赖 NPU 设备、不加载权重,拉起即报错。错误信息通过 `logger.error` 和 `raise ValueError` 双重输出。

涉及文件:

| 文件 | 改动 |
|------|------|
| `mindie_llm/runtime/model_runner/model_runner_exp.py` | +47 行。新增 `json` 导入、路由后校验调用、`_validate_deepseekv32_feature_combinations` 方法 |
| `mindie_llm/modeling/model_wrapper/aclgraph/aclgraph_model_wrapper_exp.py` | +1 行。`ModelRunnerExp` 构造时透传 `plugin_params` 参数 |

# 资料变更

不涉及。

# 接口变更

不涉及。`aclgraph_model_wrapper_exp.py` 仅新增 `plugin_params` 参数透传(从 `kwargs` 取值传入 `ModelRunnerExp`,两端均为 `**kwargs` 承接),不修改任何现有接口签名。

# 测试结果

## 测试用例 1:DP + CP

### 测试方法

开启 DP2 CP8 A3 单机,修改模型层数为 10 层,加速拉起且防止 OOM。

### 关键打屏

```shell
[2026-05-30 16:44:31,854] [65794] [281461909156256] [llm] [ERROR] [model_runner_exp.py-285] : [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + DP(dp=2). Please check the feature compatibility matrix in the deployment guide.
Traceback (most recent call last):
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/utils/status.py", line 23, in run
    super().run()
......
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/spec_worker.py", line 697, in factory
    return original_class(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 176, in __init__
    self._validate_deepseekv32_feature_combinations(**kwargs)
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 286, in _validate_deepseekv32_feature_combinations
    raise ValueError(msg)
ValueError: [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + DP(dp=2). Please check the feature compatibility matrix in the deployment guide.
```
## 测试用例 2:CP + 异步

### 测试方法

A3 单机,层数改为 10,开启 cp8 tp2,开启异步

### 关键打屏

```shell
[2026-05-30 17:04:40,369] [174234] [281461665624480] [llm] [ERROR] [status.py-34] : Core thread encountered an exception: tid=281461665624480, tname=inference, exception_type=ValueError, exception_message=[DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Async Scheduling. Please check the feature compatibility matrix in the deployment guide.
Traceback (most recent call last):
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/utils/status.py", line 23, in run
    super().run()
...
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 176, in __init__
    self._validate_deepseekv32_feature_combinations(**kwargs)
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 286, in _validate_deepseekv32_feature_combinations
    raise ValueError(msg)
ValueError: [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Async Scheduling. Please check the feature compatibility matrix in the deployment guide.
```

## 测试用例 3:CP + chunkedprefill + MTP(混部)(进一步测试多个不兼容配置叠加打屏行为)

### 测试方式

A3 单机,10 层,配置设置 cp 8 tp 2,plugin_params 开启 splitfuse

```json
"plugin_params": "{\"plugin_type\":\"mtp, splitfuse\",\"num_speculative_tokens\": 3}"
```

### 关键打屏

```shell
[2026-05-30 17:08:53,659] [179957] [281461377462688] [llm] [ERROR] [model_runner_exp.py-285] : [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Chunked Prefill(splitfuse); MTP + Chunked Prefill(PD-mixed). Please check the feature compatibility matrix in the deployment guide.
Traceback (most recent call last):
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/utils/status.py", line 23, in run
    super().run()
......
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 176, in __init__
    self._validate_deepseekv32_feature_combinations(**kwargs)
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 286, in _validate_deepseekv32_feature_combinations
    raise ValueError(msg)
ValueError: [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Chunked Prefill(splitfuse); MTP + Chunked Prefill(PD-mixed). Please check the feature compatibility matrix in the deployment guide.
```

## 测试用例 4:CP + PrefixCache

### 测试方式

A3 单机,模型层数改为 10,开启 mtp prefix_cache

```json
"plugin_params": "{\"plugin_type\":\"mtp, prefix_cache\",\"num_speculative_tokens\": 3}"
```

### 关键打屏

```shell
[2026-05-30 17:11:21,228] [185590] [281461541695904] [llm] [ERROR] [model_runner_exp.py-285] : [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Prefix Cache. Please check the feature compatibility matrix in the deployment guide.
Traceback (most recent call last):
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/utils/status.py", line 23, in run
    super().run()
......
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 176, in __init__
    self._validate_deepseekv32_feature_combinations(**kwargs)
  File "/mnt/share/xuchi/Tasks/A00272/MindIE-LLM/mindie_llm/runtime/model_runner/model_runner_exp.py", line 286, in _validate_deepseekv32_feature_combinations
    raise ValueError(msg)
ValueError: [DeepSeek-V3.2] Incompatible feature combinations: CP(cp=8) + Prefix Cache. Please check the feature compatibility matrix in the deployment guide.
```

# CheckList

- [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!1041
…plement 01]

Co-authored-by: xuchi<xuchicolson@163.com>



# message auto-generated for no-merge-commit merge:
!1043 merge A00251_07 into dev

[Doc]全量README文档规范统一与内容修正,补齐DeepSeek-R1-Distill-Qwen配套资料并清理bge旧目录 [Supplement 01]

Created-by: martinXuc
Commit-by: xuchi
Merged-by: ascend-robot
Description: # 合入背景

Fixes [#617](https://gitcode.com/Ascend/MindIE-LLM/issues/617) 

针对首次合入中遗漏的部分文档以及后续新发现的格式问题,做补充修复:
1. DeepSeek-V3 文档在首次合入中遗漏,纯模型推理章节未删除、服务化测试仍使用旧 benchmark 命令、量化链接仍指向已废弃的 msit 路径
3. LLaVA 系列文档此前未纳入修改范围,存在路径反斜杠、路径变量表未按镜像范式修复、量化链接未更新等共性问题
4. MiniCPM 系列文档此前未纳入修改范围,存在旧 benchmark 残留(相关代码已从仓库删除,完全不可用)、标题层级错误、路径变量表未更新等问题
5. 全量盘古之白修复:中文与英文/数字间空格规范化,提升文档可读性

# 修改内容

## 1. DeepSeek-V3 README 文档修正
- **删除纯模型推理章节**(含精度测试和性能测试。后续纯模型性能验证已统一通过 AISBench 服务化测试覆盖)
- **服务化测试替换为 AISBench**:移除旧 `benchmark` 命令,改用 `ais_bench` + `vllm_api_general_chat` 配置
- **量化链接修复**:`gitee.com/ascend/msit/...` → `gitcode.com/Ascend/msmodelslim`
- **重复内容清理**:删除 "修改模型文件夹属组" 重复段落
- **大小写修正**:`Deepseek-R1` → `DeepSeek-R1`
- **盘古之白**:59 处

## 2. GLM4v README 文档修正
- **模型名称大小写统一**:`GLM-4v-9b` → `GLM-4v-9B`

## 3. LLaVA 系列文档修正

**llava/README.md**:
- **路径变量表修复**:编译包路径改为镜像路径范式(`/usr/local/Ascend/atb-models`)
- **量化链接修复**:`msit` → `msmodelslim`
- **表格 emoji 统一**:`√` → `✅`
- **拼写修复**:`bacth` → `batch`
- **盘古之白**:44 处

**llava/llava_videobench/README.md**:
- **反斜杠路径修复**:2 处 `\` 改为 `/`
- **路径描述修正**:对齐实际命令的执行目录
- **标题层级修复**:`# 使用说明` → `## 使用说明`
- **盘古之白**:31 处

## 4. MiniCPM 系列文档修正

**minicpm_qwen2_v2/README.md**:
- **路径变量表修复**:镜像路径范式统一
- **标题层级与反斜杠修复**
- **旧 benchmark 章节删除**:移除 `benchmark精度测试方案` 和 `性能测试方案`(旧 benchmark 已从仓库删除,不可用)
- **新增 AISBench 性能测试章节**:使用 `vllm_api_stream_chat` + `textvqa_gen` 数据集 + `--mode perf`
- **名称规范**:`Aisbench` → `AISBench`
- **表格 emoji 统一**:`√` → `✅`
- **盘古之白**:8 处

**minicpm/README.md**:
- **标题层级级联修复**:`#` → `##/###/####`
- **路径变量表修复**:镜像路径范式统一
- **反斜杠修复**
- **拼写修复**:`矩此阵` → `此矩阵`
- **大小写统一**:`MiniCpm`(6 处)→ `MiniCPM`
- **表格 emoji 统一**:`√/×` → `✅/❌`,同步修复多余的无效列
- **链接修复**:移除 `master/` 错误路径(6 处),改为正确的相对路径
- **删除 8x22B 错误引用**:该模型不存在,系 Mixtral 命名混淆笔误
- **盘古之白**:11 处

# 资料变更
涉及。本次为全部文档资料变更:
- 修改 6 个 README 文件
- 无新增/删除文档

# 接口变更
不涉及。本次为纯文档变更,无代码接口改动。

# 测试结果
不涉及。本次为纯文档资料变更,无功能/性能/精度相关代码改动。

# CheckList
> PR 提交人对以下 CheckList 自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [x] 代码注释完备(不涉及代码,文档内容已核对)
- [x] 正确记录错误日志(不涉及)
- [x] 进行了返回值校验(不涉及)
- [x] 进行了空指针校验(不涉及)
- [x] 若存在资源申请,使用后资源被正确的释放了(不涉及)
- [x] 若涉及多线程场景,考虑了并发场景,不存在死锁问题(不涉及)
- [x] 按照代码仓中提供的格式模板,使用 clang-format 工具格式化代码(不涉及)
- [x] 符合 Ascend 社区的编码规范(不涉及)

See merge request: Ascend/MindIE-LLM!1043
Co-authored-by: KaiMa<KaiMa1840@outlook.com>



# message auto-generated for no-merge-commit merge:
!1044 merge dockerfile into dev

[CI][feature] add docker build framework

Created-by: KaiMa
Commit-by: KaiMa
Merged-by: ascend-robot
Description: <!--
PR描述模板更新日期:20251225
-->

# 合入背景
> 请描述为什么要做这个PR内的改动。\
> 如涉及,请关联前序PR或同特性/需求下的其他PR。\
> 如果是修复之前PR引入的问题,请关联引入问题的PR。\
> 注意:`Fixes #ISSUE ID`会自动关闭issue,如问题部分解决请不要使用`Fixes`,可以用`Fix part of #ISSUE ID`替代.

Fixes #ISSUE ID [627](https://gitcode.com/Ascend/MindIE-LLM/issues/627)

# 修改内容
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列。\
> 如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)。

# 资料变更
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”。

# 接口变更
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”。

# 测试结果
> 请说明测试场景,测试方法以及测试结果。\
> 测试用例设计时需考虑硬件、部署方式、功能、性能、精度、显存等维度。

# CheckList
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]。

- [ ] 代码注释完备
- [ ] 正确记录错误日志
- [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验)
- [ ] 进行了空指针校验
- [ ] 若存在资源申请,使用后资源被正确的释放了
- [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题
- [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码
- [ ] 符合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!1044
Co-authored-by: yjyang62 <yjyang62@users.noreply.github.com>
Co-authored-by: yjyang62 <yjyang62@users.noreply.github.com>
Co-authored-by: yjyang62 <yjyang62@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.