昇腾社区首页
EN
注册

Micro Batch

Micro Batch即在批处理过程中,将数据切分为更小粒度的多个batch运行。当前实现中,通过额外创建一条数据流,将一批数据分成两个batch在两条数据流上执行。数据流1在执行计算时,数据流2可进行通信,计算和通信耗时掩盖,使得硬件资源得以充分利用,以提高推理吞吐。

图1 Micro Batch双流示意图

数据流间通过Event机制进行同步,计算和通信任务间都相互不冲突,防止硬件资源抢占。此特性通常应用在Prefill阶段,因为Prefill阶段通信类算子耗时较长,且通信类算子与计算类算子耗时占比更为均衡。在此实现下,计算和通信类算子掩盖率达70%+。

限制与约束

  • 此特性不能与通信计算融合算子特性同时开启。
  • 此特性不能与Python组图同时开启。
  • 此特性仅支持和量化特性同时开启。
  • 仅Qwen2-14B、Qwen3-14B和Deepseek-R1模型支持此特性。
  • 开启此特性后会带来额外的显存占用。服务化场景下,KV Cache数量下降会影响调度导致吞吐降低,在显存受限的场景下,不建议开启。

    开启Micro Batch特性,需要配置的参数如所示。

    表1 Micro Batch特性补充参数:ModelConfig中的models参数

    配置项

    取值类型

    取值范围

    配置说明

    micro_batch

    bool

    • true
    • false

    开启通信计算双流掩盖特性。

    默认值:false(关闭)

使用样例

下面以Qwen3模型为例,示意如何在服务化场景下,关闭通算融合算子,开启Micro Batch特性。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"ModelDeployConfig" :
{
   "maxSeqLen" : 2560,
   "maxInputTokenLen" : 2048,
   "truncation" : false,
   "ModelConfig" : [
     {
         "modelInstanceType" : "Standard",
         "modelName" : "Qwen3-14B",
         "modelWeightPath" : "/data/weights/Qwen3-14B",
         "worldSize" : 8,
         "cpuMemSize" : 5,
         "npuMemSize" : -1,
         "backendType" : "atb",
         "trustRemoteCode" : false,
         "models": {
            "qwen3": {
                "ccl": {
                    "enable_mc2": false,
                },
                "stream_options": {
                    "micro_batch": true,
                }
            }
         }
      }
   ]
},

执行推理

  1. 配置服务化参数。该特性需配合MindIE Motor使用,按照表1在服务化的config.json文件中添加相应参数,config.json文件路径的详细说明请参考《MindIE安装指南》中的“配置MindIE > 配置MindIE Server > 单机推理”章节中的软件包文件清单。
  2. 启动服务。启动服务方法具体请参考《MindIE Motor开发指南》中的“快速开始 > 启动服务”章节