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

CANN/cannbot-skills Indexer Prolog多流并行案例

案例:Indexer Prolog 多流并行

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

概述

这个案例解决的是 Lightning Indexer 前处理链路串行过长的问题。做法是把 Q 路径和权重投影路径拆到不同 tagged stream 中执行,让前处理阶段出现 overlap,最适合 Attention 前处理或 Prolog 类算子链的时延优化。

背景与问题

Indexer Prolog 往往由多个前处理算子组成,例如线性投影、RoPE、量化和权重路径准备。如果全部堆在主流上,前处理会形成一个很长的串行段,后续 attention 计算即使再快,也要等前面的准备工作全部完成。

这类场景适合多流的原因在于:

  • Q 路径和部分权重路径之间可形成局部并行窗口。
  • 前处理中既有 Cube 类算子,也有 Vector / quant 路径,容易形成硬件互补。
  • 只要同步点设计得当,就不会改变后续 attention 的输入语义。

核心思路

  • 使用一条副流先跑q_b和 Q 相关预处理。
  • 再用另一条流提前跑weights_proj
  • 在进入后续 quant 或 attention 前,通过wait_tensor或 tagged event 保证依赖满足。
  • 这种写法本质上是“前处理切流”,而不是完整的双网络并行。

执行编排图

关键代码

第一段代码展示 Q 路径被放到"22"号流里:

enable_multi_streams = self.enable_multi_streams and not is_prefill with npu_stream_switch(enable_multi_streams, "22"): if enable_multi_streams: tng.scope.npu_wait_tensor(qr, query_states[0]) q_b = self.wq_b(qr, c8_input_dict.get("pertoken_scale", None)) q = q_b.view(bsz, seqlen, self.n_heads, self.head_dim) q_pe, q_nope = torch.split(q, [self.rope_head_dim, self.head_dim - self.rope_head_dim], dim=-1) q_pe = torch_npu.npu_rotary_mul(q_pe.view(-1, self.n_heads, 1, self.rope_head_dim), cos, sin) q = torch.cat([q_pe.view(bsz, -1, self.n_heads, self.rope_head_dim), q_nope], dim=-1)

第二段代码展示weights_proj提前在"33"号流里执行:

with npu_stream_switch(enable_multi_streams, "33"): if enable_multi_streams: tng.scope.npu_wait_tensor(x, q_b) weights = self.weights_proj(x.view(-1, self.dim))

如果图模式开启,常会配合 tagged stream event:

if enable_multi_streams and self.enable_aclgraph: tng.ops.npu_record_tagged_stream(qr, "22") tng.ops.npu_tagged_event_record(indexer_npu_events[0])

复用参考

  • 代表实现:DeepSeek-V3.2-Exp。
  • 相似实现:GLM-5。
  • 特化实现:和 MoE 双流不同,这类案例通常不直接并行完整模块,而是拆分前处理子链。

注意事项

  • 前处理切流后,同步点设计不清楚时最容易出现输入未准备好的问题。
  • 如果q_bweights_proj之间实际共享更多隐藏依赖,盲目切流会导致图编译失败或精度问题。
  • 图模式下要统一 stream tag 的编号和事件生命周期。

关键词

npu_stream_switchIndexer Prologweights_projq_bwait_tensortagged stream

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/787256/

相关文章:

  • Spring AI Playground:一站式Java AI应用开发与RAG实践指南
  • Hermes 多 Agent 协作:让多个 AI 同时为你写代码
  • 乘风破浪,遇见最美Windows 11之现代Windows开发运维 - Windows 11桌面搜索按钮点击后界面空白
  • 基于Centminmod框架的Claude AI插件开发实战指南
  • 电源完整性测量与示波器优化实践
  • AI代码审查助手robin-ai-reviewer:设计、部署与实战指南
  • 可解释AI技术:从模型透明到负责任AI落地的工程实践
  • 基于ChatGPT-Next-Share构建可分享的多用户AI对话平台
  • ARM CPU接口寄存器架构与中断处理机制详解
  • MAX1233/MAX1234触摸屏控制器架构与SPI通信详解
  • 2026年4月国内热门的聚氨酯喷涂供应商推荐,聚氨酯保温喷涂/聚氨酯喷涂/聚氨酯喷涂保温,聚氨酯喷涂实力厂家口碑推荐 - 品牌推荐师
  • Claude订阅用户福音:claw-cli-proxy实现OpenAI兼容API调用
  • 诚信女子大学第11届 美妆产业系大学院举办 NOVA作品展
  • Seraphine英雄联盟智能助手:三步提升排位胜率的终极指南
  • 小学1-6年级答题闯关合集源码 学生答题闯关大挑战小游戏网页源码
  • 从零构建个人操作系统:基础设施即代码打造可复现开发环境
  • 信创产品性能测试怎么做才能通过验收
  • 量子计算在分子光谱模拟中的突破与应用
  • Codex-Workflows:基于代码知识库与工作流引擎的智能开发自动化实践
  • 2026年4月比较好的316L不锈钢中厚板厂家推荐,316L不锈钢中厚板,316L不锈钢中厚板定制公司哪个好 - 品牌推荐师
  • MCP服务器集合:一站式构建AI助手外部能力扩展平台
  • OpenClaw技能生态全解析:从平台集成到AI记忆,打造高效AI助手
  • 2026年知名的仿古门窗优质公司推荐 - 行业平台推荐
  • openclaw用户指南通过taotoken配置自定义大模型提供方
  • 基于MCP协议与ReceiptConverter API的智能票据解析集成方案
  • 2026年知名的废水重金属捕捉剂优质厂家推荐榜 - 行业平台推荐
  • 神经隐式表示技术革新地球观测数据存储与查询
  • TropicClaw:Bash脚本工具集在自动化运维与开发中的实践应用
  • HLS优化技术:从原理到实践的性能提升策略
  • 基于Tauri与React构建多AI模型协作桌面应用Talkio的技术实践