Token导航 LogoToken导航TokenDH.com
待分类只读github未标认证来源可访问许可证需确认审计通过

vector-triton-ascend-ops-optimizer矢量 Triton 上升操作优化器

Agent Skill

用于搭建或维护带检索增强的 RAG 工作流,适合让 Agent 处理知识库问答、向量检索、来源引用和事实核查。它可以辅助整理数据接入、Embedding、向量库、召回参数和回答生成流程。使用时需要确认数据来源、更新频率、召回阈值和引用展示方式,避免把未命中的资料或过期内容包装成确定事实。

总安装

885

周安装

38

GitHub Stars

12

下载量

310
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:vector-triton-ascend-ops-optimizer(矢量 Triton 上升操作优化器)
来源仓库:https://github.com/ascend/agent-skills
仓库路径:skills/vector-triton-ascend-ops-optimizer
安装命令:
npx skills add https://github.com/ascend/agent-skills --skill vector-triton-ascend-ops-optimizer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ascend/agent-skills --skill vector-triton-ascend-ops-optimizer

简介

用于搭建或维护带检索增强的 RAG 工作流,适合处理知识库问答、向量检索和来源引用。

  • 适用于需要接入数据源、配置 Embedding 模型、管理向量库及调整召回参数的场景。
  • 通过整理数据接入、向量化和检索流程,辅助生成准确回答并展示引用来源。
  • 使用时需确认数据来源、更新频率和召回阈值,避免将未命中内容包装成确定事实。
  • 安装前建议检查仓库权限和维护状态,确保不会触发不必要的网络或文件操作。

SKILL.md

Vector 类 Triton 算子性能优化

目标与概述

昇腾(Ascend)NPU 上 Vector 类 Triton 算子的深度性能优化专家。

核心目标:将指定的 Triton 算子性能提升至少 x 倍(用户要求的性能提升),在满足要求的基础上,性能越高越好,追求极致性能。

工作模式:单算子优化模式。禁止使用入图方式来提升性能(模型侧会通过整网入图或 Piecewise 方式进行图优化,这里只关注单算子的独立优化)。

工作原则

  • 正确性优先:每次修改后都必须进行正确性验证和性能测量
  • 目标导向:性能提升未达到目标前,持续优化,不停止迭代
  • 迭代优化:可以反复修改、测试、迭代,直至达成目标。修改 Triton 算子源代码前,务必备份,以便需要时恢复。
  • 精准修改:追求“手术级”的精准修改,避免引入新问题。

工作流程

  1. 在昇腾 NPU 环境中,执行以下命令完成环境配置export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64/driver:/usr/local/Ascend/driver/lib64/common:/usr/local/Ascend/driver/lib64:$LD_LIBRARY_PATH && source /usr/local/Ascend/ascend-toolkit/set_env.sh
  2. 基线性能验证:首先,深入分析算子的输入参数、数据类型、Shape 范围、功能逻辑、计算流程及输出结果;然后,运行功能测试文件 python -m pytest test_<op_name>.py,验证算子的正确性和精度;最后,执行以下性能测试命令:msprof op --output=<用户指定的路径> --kernel-name="<op_name>_kernel" --warm-up=20 --launch-count=20 python test_<op_name>_perf.py,输出中的 Task Duration(us) 即为当前算子的耗时,将其记录为基线性能数据。
  3. 深度性能优化:根据基线分析结果,对 <op_name>.py 算子进行针对性优化,确保性能提升至少 x 倍(用户要求的性能提升),在满足要求的基础上,性能越高越好,追求极致性能。需运行以下测试:

- 性能测试(与基线对比):msprof op --output=<用户指定的路径> --kernel-name="<op_name>_kernel" --warm-up=20 --launch-count=20 python test_<op_name>_perf.py - 正确性验证:python -m pytest test_<op_name>.py

  1. 迭代调优过程中按需参考的文档references/hardware_constraints.mdreferences/troubleshooting.md

性能优化参考

1 - Ascend NPU 在架构上访存能力相对较弱,而计算能力较强,因此在设计时需要尽可能减少频繁的内存访问。首要的关键优化点是批量处理多个 Tokens,必须优先思考和调试,从而避免因逐个加载而产生的大量访存开销;由于受限于硬件内存容量,无法一次性处理完整的序列,仍需采用分批次计算。

一次循环里能处理的最大 Token 数 N,由 Kernel 内 UB 可用容量决定。设:

  • 单 Kernel 内 UB 总容量为 192 KB
  • 为留安全余量,仅使用 170 KB 的 50%(为确保启用 Double Buffering),即 85 KB
  • 单个 Token 在 Kernel 内同时占用的 UB 空间峰值为 $S_{\text{token}}$(包含所有 load、中间变量的内存占用)

则需满足:$N \times S_{\text{token}} \le 85 \times 1024$;因此:$N \le \frac{85 \times 1024}{S_{\text{token}}}$ 示例: 若 Kernel 只做一次 load 和一次 store,加载形状为 (batch_size, hidden_size)BF16 Tensor(每元素 2 Bytes),且不引入其他中间变量,则单个 Token 的 UB 占用峰值为: $$ S_{\text{token}} = \text{hidden_size} \times 2 $$

代入约束: $$ N \times \text{hidden_size} \times 2 \le 85 \times 1024 $$ 据此计算优化后的循环次数 reduced_loops 以及单次循环可处理的最大 Token 数 N。单次循环应尽可能占满 UB,但需控制在 UB 大小的约一半以内,以利用 Double Buffering 机制实现流水并行。计算最大处理量时应使用整数除法(//)而非 tl.cdiv,否则易引发 UB 溢出问题。

2 - 掩码(mask)与尾块处理:每次核函数加载和存储 tensor 时都需使用 mask 来处理不需要计算的尾块。经过 mask 处理后,每个核上的 tensor 形状保持一致。

3 - 减少 kernel 内 Scalar 运算:将与 pid 或循环变量无关的计算移至辅助函数或循环外部;能合并的计算尽量合并,减少冗余操作。

4 - 对于 index_select 这类涉及非连续地址访问的操作,只能通过循环逐行读取数据;否则会引入大量标量(Scalar)计算(计算二维 mask),严重影响性能。

5 - 加载与计算交织:当需要多次从同一全局内存地址加载数据并进行计算(如加法)时,需采用 “加载一次、计算一次” 的方式,而不是全部加载完再统一计算。后者会导致计算流水线等待所有 tensor 加载完成,效率较低;前者可有效隐藏访存延迟。

6 - 若存在多个写入流,建议边计算边写入数据。写入流通常不会相互冲突,计算完提前写入可以增大并行的可能,提升整体性能。

7 - 使用 tl.arange 可以高效地生成二维 tensor 的索引,避免直接从全局内存(Global Memory,GM)中读取离散行数据进行二维数组运算所带来的大量 Scalar 计算,从而显著提升性能。

8 - 尽量避免使用 tl.where,因其主要适用于离散数据处理,性能较差。

9 - 避免对同一 tensor 多次调用 insert_slice,以提升执行效率。

10 - 执行规约操作时,优先选择最大的维度进行规约,有助于提升性能。

11 - kernel 入参:对于同一模型调用期间保持不变的参数,推荐声明为 tl.constexpr 编译期常量,以便编译器进行更好的优化;对于可能变化的参数(如 batch_sizeseq_len 等),则应使用普通动态参数传入,避免过多编译期常量导致编译时间过长。

需遵循的规则和约束

单算子模式

单个算子只关注单算子模式下的基础功能和性能,禁止使用入图方式提升性能,因为模型侧会以整网入图或分段(Piecewise)方式对多算子进行图优化。

tl.load 与 mask 使用要求

  • 尽量合并相同 load、计算和 store 操作。例如,利用 tl.load 与 mask 参数,可一次性加载多个 Tokens 的数据,避免多次独立的 load。减少此类冗余操作有助于提升性能。
  • 避免在 tl.load 中使用 other 参数,因为其内部会触发 tl.where,导致 load 后无法与其他 load 并行。
  • 推荐的替代方案:先执行无掩码的 tl.load,再通过 tl.where 与 mask 组合实现掩码逻辑;当访问内存规则连续时,用 tl.insert_slice 代替。

分支与编译约束

在 kernel 内部的 if-else 分支中,同名变量的 Shape 必须一致,否则会导致编译错误。

数据搬运注意事项

  • 保证 tl.load 加载的是连续的多行数据;若数据分布离散,需逐行加载。
  • 传递给 Triton 算子的 tensor 必须是内存连续的,必要时可通过 .contiguous() 方法确保。
  • 避免复用 tl.loadtl.store 的变量名,使用不同变量名可提高代码可读性,并减少数据流错误的风险。

执行要求

在 Ascend NPU 算子优化中,需自主完成从代码修改(追求 “手术级” 精准)、测试验证到性能对比的全流程闭环,确保性能提升达到用户要求的 x 倍 以上。通过迭代优化,在不引入错误的前提下,持续改进直至达标。

结果报告

性能优化目标真正达成后,需准确输出标准化报告:

## 优化结果报告

### 算子信息

- 算子名称:<op_name>
- 源文件:<file_path>

### 性能对比

| 基线耗时 (us) | 优化后耗时 (us) | 加速比 |
|-------------|---------------|-------|
| ... | ... | ...x |

### 优化技术清单

1. [已应用] 多个 Token 并行处理:N = ...
2. [已应用] 消除带 other 的 tl.load
3. ...

### 关键修改说明

- 修改点 1:...
- 修改点 2:...

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude

34.28%
按下载量换算106

Codex

33.61%
按下载量换算104

Cursor

18.29%
按下载量换算57

Gemini CLI

9.77%
按下载量换算30

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills