当前位置: 首页 > news >正文

CANN-昇腾NPU-动态batching-怎么把多个请求合并成一个batch

静态 batching 要求所有请求长度相同、batch 大小固定。动态 batching 把多个不同长度的请求拼成一个 batchNPU 并行处理。在昇腾NPU上动态 batching 是提升吞吐的关键——batch1 的 GEMM 利用率只有 7%batch32 能到 65%。动态 Batching 的原理时刻 T1收到请求 Aprompt_len128 时刻 T2收到请求 Bprompt_len256 时刻 T3收到请求 Cprompt_len64 静态 batching等 batch 满 32 个才处理A 等了 200ms 动态 batching每 50ms 把当前所有 pending 请求拼成一个 batch 处理动态 batching 的权衡等待时间 vs batch 大小。等待越久batch 越大NPU 利用率越高但首 token 延迟越高。ATB 的动态 BatchingATB 的 LLM 接口内置动态 batchingfromatbimportLLM,DynamicBatchingConfig modelLLM(meta-llama/Llama-2-7b-hf,devicenpu:0,dynamic_batchingDynamicBatchingConfig(max_wait_ms50,# 最多等 50ms 凑 batchmax_batch_size32,# 最大 batch 大小max_seq_len4096,# 最大序列长度))# 并发发送多个请求ATB 自动做动态 batchingimportconcurrent.futureswithconcurrent.futures.ThreadPoolExecutor(max_workers32)asexecutor:futures[executor.submit(model.generate,prompt)forpromptinprompts]results[f.result()forfinfutures]Padding 策略不同长度的请求拼成 batch 需要 Padding 到相同长度。两种策略策略 1Padding 到最大长度# 请求 A: 128 tokens → padding 到 256# 请求 B: 256 tokens → 不用 padding# Batch 大小: [256, 256]缺点短请求浪费计算Padding token 也过了 Attention策略 2分桶Bucket# 预设几个桶128, 256, 512, 1024, 4096# 请求 A (128) → 放入 128 桶# 请求 B (256) → 放入 256 桶# 不同桶的请求不混批优点减少 Padding 浪费 缺点桶内请求少时 batch 大小受限ATB 默认用分桶策略。max_batch_size是每个桶的最大 batch 大小。动态 Batching 的吞吐提升Llama2-7BAtlas 800I A232 并发请求Batching 策略吞吐 (tokens/s)首 token 延迟 (ms)静态 batch115035静态 batch898035等 batch 满动态 batching (max_wait10ms)2,10045动态 batching (max_wait50ms)2,80085动态 batching (max_wait200ms)3,200235max_wait_ms是核心参数小 → 延迟低但吞吐低大 → 延迟高但吞吐高。在线服务一般取 50-100ms。离线批量推理可以取 500-1000ms不关心延迟只要吞吐。跟 KV Cache 的配合动态 batching 要求 KV Cache 能容纳不同 batch 大小的请求。Paged KV Cache 正好解决这个问题——不需要预分配固定 batch 大小的 KV Cache。modelLLM(meta-llama/Llama-2-7b-hf,devicenpu:0,kv_cache_dtypefp16,paged_kv_cacheTrue,# 必须开启dynamic_batchingDynamicBatchingConfig(max_wait_ms50),)如果不开启 Paged KV Cache动态 batching 的 KV Cache 显存浪费 30-50%因为要按最大 batch 预分配。实际部署配置在线对话服务QPS50延迟敏感configDynamicBatchingConfig(max_wait_ms50,# 平衡延迟和吞吐max_batch_size16,# 在线服务 batch 不用太大max_seq_len4096,)离线批量推理不关心延迟configDynamicBatchingConfig(max_wait_ms2000,# 等 2 秒凑大 batchmax_batch_size64,# 离线可以开大 batchmax_seq_len8192,)动态 batching 是昇腾NPU推理服务的标配——把 batch 从 1 提到 16-32吞吐提升 10-20×。关键参数max_wait_ms根据业务延迟要求调整。仓库在这里https://atomgit.com/cann/ATB
http://www.rkmt.cn/news/1363628.html

相关文章:

  • Android HTTPS抓包失败原因与Network Security Config配置指南
  • Hermes Agent 如何自定义 Provider 接入 Taotoken 聚合服务
  • MoE-GPS框架:动态专家复制的负载均衡优化策略
  • PCA-ANN-PWA框架:破解高维非线性系统优化难题的工程实践
  • 2026年知名的导热油循环反应釜/无锡橡胶反应釜/不锈钢外盘管反应釜/不锈钢反应釜优质供应商推荐 - 品牌宣传支持者
  • AI Agent Harness Engineering:大模型之后的下一个技术爆发点
  • 微信好友检测终极指南:5分钟发现谁悄悄删除了你
  • 终极游戏模组框架BepInEx:跨引擎插件注入完全指南
  • 【Claude教育内容创作黄金法则】:20年教育技术专家亲授5大不可复制的AI协同写作心法
  • [智能体-35]:智能体 + 大模型协同扩展工具调用能力 详细阐述
  • 量子机器学习提升囚禁离子量子比特读取保真度的原理与实践
  • 医疗AI评估:强基线模型的价值、构建与实战指南
  • 2026年知名的南浔geo推广/湖州geo推广服务型公司推荐 - 品牌宣传支持者
  • 机器学习可解释性实战:从糖尿病预测看XAI如何赋能医疗AI决策
  • 机器学习与认知模型融合:基于注意门理论的时间感知预测系统
  • 基于Stein引理的高斯扰动梯度与迹估计原理与实践
  • VADER、CNN、LSTM、RoBERTa:小数据集社交媒体情感分析模型实战对比
  • 基于信息论与数据压缩的AI文本检测:AIDetx原理与工程实践
  • CSS变量完全指南:打造可维护的样式系统
  • Dingo-BNS:基于神经后验估计的引力波双中子星实时贝叶斯推断
  • 【独家】26电工杯a题风光直供电氢氨耦合园区优化调度与离网自治研究
  • C#实现稳定全局鼠标钩子的完整方案
  • 量子态估计新突破:超越置乱时间,QELM稳健实现高效信息提取
  • 医疗AI可解释性:融合SHAP与反事实解释,破解阿尔茨海默病诊断黑箱
  • 电信计费系统AI Agent重构实战:7天完成规则引擎迁移,零业务中断验证报告
  • 法律AI Agent不是替代律师,而是淘汰不会用Agent的律师——2024律所人才评估新增的3项硬性指标
  • C#调用C++ DLL崩溃原因:调用约定不匹配详解
  • 2026年靠谱的工装装修/贵州门店装修/室内装修榜单优选公司 - 行业平台推荐
  • 量子时间最优控制的几何方法:从张量、李群到测地线
  • 量子计算数学基础:希尔伯特空间、张量积与密度算子核心解析