已合并
产品文档中的png文件命名英文化 #1229
chenjiao创建于 8月4日
产品文档中的png文件命名英文化 #1229
已合并
共 42 个文件变更+49-56
| @@ -25,7 +25,7 @@ | |||
| 25 | 25 | ||
| 26 | 算子开发贡献流程如下: | 26 | 算子开发贡献流程如下: |
| 27 | 27 | ||
| 28 | - | 28 | + |
| 29 | 29 | ||
| 30 | 如果您有全新的算子希望基于 NPU 设计与实现,欢迎在 Issue 中提出您的想法与设计方案。完整的贡献过程如下: | 30 | 如果您有全新的算子希望基于 NPU 设计与实现,欢迎在 Issue 中提出您的想法与设计方案。完整的贡献过程如下: |
| 31 | 31 | ||
| @@ -20,32 +20,32 @@ CANN算子量化是指对神经网络中Matmul等矩阵(cube)类算子的输 | |||
| 20 | 20 | ||
| 21 | 假设左矩阵shape为(m, k),右矩阵shape为(k, n),k为reduce轴,生成量化参数的shape为(1, )。 | 21 | 假设左矩阵shape为(m, k),右矩阵shape为(k, n),k为reduce轴,生成量化参数的shape为(1, )。 |
| 22 | 22 | ||
| 23 | -  | 23 | +  |
| 24 | 24 | ||
| 25 | - perchannel量化(简称C量化):量化对象是右矩阵,每个channel分别使用独立的量化参数。 | 25 | - perchannel量化(简称C量化):量化对象是右矩阵,每个channel分别使用独立的量化参数。 |
| 26 | 26 | ||
| 27 | 假设右矩阵shape为(k, n),k为reduce轴,生成量化参数的shape为(n, )。 | 27 | 假设右矩阵shape为(k, n),k为reduce轴,生成量化参数的shape为(n, )。 |
| 28 | 28 | ||
| 29 | -  | 29 | +  |
| 30 | 30 | ||
| 31 | - pertoken量化(简称K量化):量化对象是左矩阵,每个token分别使用独立的量化参数。 | 31 | - pertoken量化(简称K量化):量化对象是左矩阵,每个token分别使用独立的量化参数。 |
| 32 | 32 | ||
| 33 | 假设左矩阵shape为(m, k),k为reduce轴,生成量化参数的shape为(m, )。 | 33 | 假设左矩阵shape为(m, k),k为reduce轴,生成量化参数的shape为(m, )。 |
| 34 | 34 | ||
| 35 | -  | 35 | +  |
| 36 | 36 | ||
| 37 | - pergroup量化(简称G量化):量化对象既可以是左矩阵,也可以是右矩阵,在reduce轴上对数据分组,每组使用独立的量化参数。 | 37 | - pergroup量化(简称G量化):量化对象既可以是左矩阵,也可以是右矩阵,在reduce轴上对数据分组,每组使用独立的量化参数。 |
| 38 | - 假设左矩阵shape为(m, k),k为reduce轴,在k轴上分组,group size为gs,生成量化参数的shape为(m, k/gs)。 | 38 | - 假设左矩阵shape为(m, k),k为reduce轴,在k轴上分组,group size为gs,生成量化参数的shape为(m, k/gs)。 |
| 39 | - 假设右矩阵shape为(k, n),k为reduce轴,在k轴上分组,group size为gs,生成量化参数的shape为(k/gs, n)。 | 39 | - 假设右矩阵shape为(k, n),k为reduce轴,在k轴上分组,group size为gs,生成量化参数的shape为(k/gs, n)。 |
| 40 | 40 | ||
| 41 | -  | 41 | +  |
| 42 | 42 | ||
| 43 | - perblock量化(简称B量化):量化对象既可以是左矩阵,也可以是右矩阵,在所有轴上对数据分块,每块使用独立的量化参数。 | 43 | - perblock量化(简称B量化):量化对象既可以是左矩阵,也可以是右矩阵,在所有轴上对数据分块,每块使用独立的量化参数。 |
| 44 | 44 | ||
| 45 | - 假设左矩阵shape为(m, k),k为reduce轴,在m、k轴上分别按(bs, bs)块对数据分组,bs为block size,生成量化参数的shape为(m/bs, k/bs)。 | 45 | - 假设左矩阵shape为(m, k),k为reduce轴,在m、k轴上分别按(bs, bs)块对数据分组,bs为block size,生成量化参数的shape为(m/bs, k/bs)。 |
| 46 | - 假设右矩阵shape为(k, n),k为reduce轴,在k、n轴上分别按(bs, bs)块对数据分组,bs为block size,生成量化参数的shape为(k/bs, n/bs)。 | 46 | - 假设右矩阵shape为(k, n),k为reduce轴,在k、n轴上分别按(bs, bs)块对数据分组,bs为block size,生成量化参数的shape为(k/bs, n/bs)。 |
| 47 | 47 | ||
| 48 | -  | 48 | +  |
| 49 | 49 | ||
| 50 | ## 常见组合量化 | 50 | ## 常见组合量化 |
| 51 | 51 | ||
| @@ -56,4 +56,4 @@ CANN算子量化是指对神经网络中Matmul等矩阵(cube)类算子的输 | |||
| 56 | - pertensor-perchannel-pergroup量化模式(简称T-CG量化模式) | 56 | - pertensor-perchannel-pergroup量化模式(简称T-CG量化模式) |
| 57 | - perblock-perblock量化模式(简称B-B量化模式) | 57 | - perblock-perblock量化模式(简称B-B量化模式) |
| 58 | - 伪量化:一般是指对权重矩阵(weight)进行量化的模式,包括perchannel量化模式(简称C量化模式)。 | 58 | - 伪量化:一般是指对权重矩阵(weight)进行量化的模式,包括perchannel量化模式(简称C量化模式)。 |
| 59 | -- mx量化:本质是Microscaling量化,通过动态调整缩放因子,在极低比特下(如1bit)保持模型精度。这里指pergroup-pergroup量化模式(简称G-G量化模式),是对于量化参数类型为FLOAT8_E8M0且group size为32的特例。 | 59 | +- MX量化(Microscaling Formats):指由开放计算项目(OCP)制定的低精度数据表示方式。属于pergroup量化模式,表示量化参数类型为FLOAT8\_E8M0且gourp size为32的特例情况。 |
| @@ -17,10 +17,12 @@ | |||
| 17 | | 8 | varlen外切场景,leftUpCausal模式。 | 仅varlen场景支持。 | | 17 | | 8 | varlen外切场景,leftUpCausal模式。 | 仅varlen场景支持。 | |
| 18 | 18 | ||
| 19 | attenMask的工作原理为,在Mask为True的位置遮蔽query(Q)与key(K)的转置矩阵乘积的值,示意如下: | 19 | attenMask的工作原理为,在Mask为True的位置遮蔽query(Q)与key(K)的转置矩阵乘积的值,示意如下: |
| 20 | - | 20 | + |
| 21 | + | ||
| 21 | 22 | ||
| 22 | $QK^T$矩阵在attenMask为True的位置会被遮蔽,效果如下: | 23 | $QK^T$矩阵在attenMask为True的位置会被遮蔽,效果如下: |
| 23 | - | 24 | + |
| 25 | + | ||
| 24 | 26 | ||
| 25 | ## sparseMode=0 | 27 | ## sparseMode=0 |
| 26 | 28 | ||
| @@ -28,43 +30,43 @@ sparseMode为0时,代表defaultMask模式。 | |||
| 28 | 30 | ||
| 29 | - 不传mask:如果attenMask未传入则不做mask操作,attenMask取值为None,忽略preTokens和nextTokens取值。Masked $QK^T$矩阵示意如下: | 31 | - 不传mask:如果attenMask未传入则不做mask操作,attenMask取值为None,忽略preTokens和nextTokens取值。Masked $QK^T$矩阵示意如下: |
| 30 | 32 | ||
| 31 | -  | 33 | +  |
| 32 | 34 | ||
| 33 | - nextTokens取值为0,preTokens大于等于Sq,表示causal场景sparse,attenMask应传入下三角矩阵,此时preTokens和nextTokens之间的部分需要计算,Masked $QK^T$矩阵示意如下: | 35 | - nextTokens取值为0,preTokens大于等于Sq,表示causal场景sparse,attenMask应传入下三角矩阵,此时preTokens和nextTokens之间的部分需要计算,Masked $QK^T$矩阵示意如下: |
| 34 | 36 | ||
| 35 | -  | 37 | +  |
| 36 | 38 | ||
| 37 | attenMask应传入下三角矩阵,示意如下: | 39 | attenMask应传入下三角矩阵,示意如下: |
| 38 | - | 40 | + |
| 39 | -  | 41 | +  |
| 40 | 42 | ||
| 41 | - preTokens小于Sq,nextTokens小于Skv,且都大于等于0,表示band场景,此时preTokens和nextTokens之间的部分需要计算。Masked $QK^T$矩阵示意如下: | 43 | - preTokens小于Sq,nextTokens小于Skv,且都大于等于0,表示band场景,此时preTokens和nextTokens之间的部分需要计算。Masked $QK^T$矩阵示意如下: |
| 42 | 44 | ||
| 43 | -  | 45 | +  |
| 44 | - | 46 | + |
| 45 | attenMask应传入band形状矩阵,示意如下: | 47 | attenMask应传入band形状矩阵,示意如下: |
| 46 | 48 | ||
| 47 | -  | 49 | +  |
| 48 | 50 | ||
| 49 | - nextTokens为负数,以preTokens=9,nextTokens=-3为例,preTokens和nextTokens之间的部分需要计算。Masked $QK^T$示意如下: | 51 | - nextTokens为负数,以preTokens=9,nextTokens=-3为例,preTokens和nextTokens之间的部分需要计算。Masked $QK^T$示意如下: |
| 50 | 52 | ||
| 51 | **说明:nextTokens为负数时,preTokens取值必须大于等于nextTokens的绝对值,且nextTokens的绝对值小于Skv。** | 53 | **说明:nextTokens为负数时,preTokens取值必须大于等于nextTokens的绝对值,且nextTokens的绝对值小于Skv。** |
| 52 | - | 54 | + |
| 53 | -  | 55 | +  |
| 54 | 56 | ||
| 55 | - preTokens为负数,以nextTokens=7,preTokens=-3为例,preTokens和nextTokens之间的部分需要计算。Masked $QK^T$示意如下: | 57 | - preTokens为负数,以nextTokens=7,preTokens=-3为例,preTokens和nextTokens之间的部分需要计算。Masked $QK^T$示意如下: |
| 56 | 58 | ||
| 57 | **说明:preTokens为负数时,nextTokens取值必须大于等于preTokens的绝对值,且preTokens的绝对值小于Sq。** | 59 | **说明:preTokens为负数时,nextTokens取值必须大于等于preTokens的绝对值,且preTokens的绝对值小于Sq。** |
| 58 | 60 | ||
| 59 | -  | 61 | +  |
| 60 | - | 62 | + |
| 61 | ## sparseMode=1 | 63 | ## sparseMode=1 |
| 62 | 64 | ||
| 63 | sparseMode为1时,代表allMask,即传入完整的attenMask矩阵。 | 65 | sparseMode为1时,代表allMask,即传入完整的attenMask矩阵。 |
| 64 | 66 | ||
| 65 | 该场景下忽略nextTokens、preTokens取值,Masked $QK^T$矩阵示意如下: | 67 | 该场景下忽略nextTokens、preTokens取值,Masked $QK^T$矩阵示意如下: |
| 66 | 68 | ||
| 67 | - | 69 | + |
| 68 | 70 | ||
| 69 | ## sparseMode=2 | 71 | ## sparseMode=2 |
| 70 | 72 | ||
| @@ -72,11 +74,11 @@ sparseMode为2时,代表leftUpCausal模式的mask,对应以左上顶点划 | |||
| 72 | 74 | ||
| 73 | 该场景下忽略preTokens、nextTokens取值,Masked $QK^T$矩阵示意如下: | 75 | 该场景下忽略preTokens、nextTokens取值,Masked $QK^T$矩阵示意如下: |
| 74 | 76 | ||
| 75 | - | 77 | + |
| 76 | 78 | ||
| 77 | 传入的attenMask为优化后的压缩下三角矩阵(2048\*2048),压缩下三角矩阵示意(下同): | 79 | 传入的attenMask为优化后的压缩下三角矩阵(2048\*2048),压缩下三角矩阵示意(下同): |
| 78 | 80 | ||
| 79 | - | 81 | + |
| 80 | 82 | ||
| 81 | ## sparseMode=3 | 83 | ## sparseMode=3 |
| 82 | 84 | ||
| @@ -84,13 +86,13 @@ sparseMode为3时,代表rightDownCausal模式的mask,对应以右下顶点 | |||
| 84 | 86 | ||
| 85 | 该场景下忽略preTokens、nextTokens取值。attenMask为优化后的压缩下三角矩阵(2048\*2048),Masked $QK^T$矩阵示意如下: | 87 | 该场景下忽略preTokens、nextTokens取值。attenMask为优化后的压缩下三角矩阵(2048\*2048),Masked $QK^T$矩阵示意如下: |
| 86 | 88 | ||
| 87 | - | 89 | + |
| 88 | 90 | ||
| 89 | ## sparseMode=4 | 91 | ## sparseMode=4 |
| 90 | 92 | ||
| 91 | sparseMode为4时,代表band场景,即计算preTokens和nextTokens之间的部分,参数起点为右下角,preTokens和nextTokens之间需要有交集。attenMask为优化后的压缩下三角矩阵(2048\*2048)。Masked $QK^T$矩阵示意如下: | 93 | sparseMode为4时,代表band场景,即计算preTokens和nextTokens之间的部分,参数起点为右下角,preTokens和nextTokens之间需要有交集。attenMask为优化后的压缩下三角矩阵(2048\*2048)。Masked $QK^T$矩阵示意如下: |
| 92 | 94 | ||
| 93 | - | 95 | + |
| 94 | 96 | ||
| 95 | ## sparseMode=5 | 97 | ## sparseMode=5 |
| 96 | 98 | ||
| @@ -98,17 +100,17 @@ sparseMode为5时,代表prefix非压缩场景,即在rightDownCausal的基础 | |||
| 98 | 100 | ||
| 99 | 该场景下忽略preTokens、nextTokens取值,attenMask矩阵数据格式须为BNSS或B1SS,Masked $QK^T$矩阵示意如下: | 101 | 该场景下忽略preTokens、nextTokens取值,attenMask矩阵数据格式须为BNSS或B1SS,Masked $QK^T$矩阵示意如下: |
| 100 | 102 | ||
| 101 | - | 103 | + |
| 102 | 104 | ||
| 103 | attenMask应传入矩阵示意如下: | 105 | attenMask应传入矩阵示意如下: |
| 104 | 106 | ||
| 105 | - | 107 | + |
| 106 | 108 | ||
| 107 | ## sparseMode=6 | 109 | ## sparseMode=6 |
| 108 | 110 | ||
| 109 | sparseMode为6时,代表prefix压缩场景,即prefix场景时,attenMask为优化后的压缩下三角+矩形的矩阵(3072\*2048):其中上半部分[2048, 2048]的下三角矩阵,下半部分为[1024, 2048]的矩形矩阵,矩形矩阵左半部分全0,右半部分全1,attenMask应传入矩阵示意如下。该场景下忽略preTokens、nextTokens取值。 | 111 | sparseMode为6时,代表prefix压缩场景,即prefix场景时,attenMask为优化后的压缩下三角+矩形的矩阵(3072\*2048):其中上半部分[2048, 2048]的下三角矩阵,下半部分为[1024, 2048]的矩形矩阵,矩形矩阵左半部分全0,右半部分全1,attenMask应传入矩阵示意如下。该场景下忽略preTokens、nextTokens取值。 |
| 110 | 112 | ||
| 111 | - | 113 | + |
| 112 | 114 | ||
| 113 | ## sparseMode=7 | 115 | ## sparseMode=7 |
| 114 | 116 | ||
| @@ -119,9 +121,9 @@ Masked $QK^T$矩阵示意如下,在第二个batch对query进行切分,key和 | |||
| 119 | - 卡1的最后一块mask为band类型的mask,配置preTokens=6(保证大于等于最后一个Skv),nextTokens=-2,actual_seq_qlen应传入{3,5},actual_seq_kvlen应传入{3,9}。 | 121 | - 卡1的最后一块mask为band类型的mask,配置preTokens=6(保证大于等于最后一个Skv),nextTokens=-2,actual_seq_qlen应传入{3,5},actual_seq_kvlen应传入{3,9}。 |
| 120 | - 卡2的mask类型切分后不变,sparseMode为3,actual_seq_qlen应传入{2,7,11},actual_seq_kvlen应传入{6,11,15}。 | 122 | - 卡2的mask类型切分后不变,sparseMode为3,actual_seq_qlen应传入{2,7,11},actual_seq_kvlen应传入{6,11,15}。 |
| 121 | 123 | ||
| 122 | - | 124 | + |
| 123 | 125 | ||
| 124 | -**说明**: | 126 | +**说明** |
| 125 | 127 | ||
| 126 | - sparseMode=7,band表示的是最后一个非空tensor的Batch的sparse类型;如果只有一个batch,用户需按照band模式的要求来配置参数;sparseMode=7时,用户需要输入2048x2048的下三角mask作为该融合算子的输入。 | 128 | - sparseMode=7,band表示的是最后一个非空tensor的Batch的sparse类型;如果只有一个batch,用户需按照band模式的要求来配置参数;sparseMode=7时,用户需要输入2048x2048的下三角mask作为该融合算子的输入。 |
| 127 | - 基于sparseMode=3进行外切产生的band模式的sparse参数应符合以下条件: | 129 | - 基于sparseMode=3进行外切产生的band模式的sparse参数应符合以下条件: |
| @@ -139,11 +141,12 @@ Masked $QK^T$矩阵示意如下,在第二个batch对query进行切分,key和 | |||
| 139 | - 卡1的mask类型切分后不变,sparseMode为2,actual_seq_qlen应传入{3,5},actual_seq_kvlen应传入{3,7}。 | 141 | - 卡1的mask类型切分后不变,sparseMode为2,actual_seq_qlen应传入{3,5},actual_seq_kvlen应传入{3,7}。 |
| 140 | - 卡2的第一块mask为band类型的mask,配置preTokens=4(保证大于等于第一个Skv),nextTokens=1,actual_seq_qlen应传入{3,8,12},actual_seq_kvlen应传入{4,9,13}。 | 142 | - 卡2的第一块mask为band类型的mask,配置preTokens=4(保证大于等于第一个Skv),nextTokens=1,actual_seq_qlen应传入{3,8,12},actual_seq_kvlen应传入{4,9,13}。 |
| 141 | 143 | ||
| 142 | - | 144 | + |
| 143 | 145 | ||
| 144 | **说明**: | 146 | **说明**: |
| 145 | 147 | ||
| 146 | - sparseMode=8,band表示的是第一个非空tensor的Batch的sparse类型;如果只有一个batch,用户需按照band模式的要求来配置参数;sparseMode=8时,用户需要输入2048x2048的下三角mask作为该融合算子的输入。 | 148 | - sparseMode=8,band表示的是第一个非空tensor的Batch的sparse类型;如果只有一个batch,用户需按照band模式的要求来配置参数;sparseMode=8时,用户需要输入2048x2048的下三角mask作为该融合算子的输入。 |
| 149 | + | ||
| 147 | - 基于sparseMode=2进行外切产生的band模式的sparse的参数应符合以下条件: | 150 | - 基于sparseMode=2进行外切产生的band模式的sparse的参数应符合以下条件: |
| 148 | - preTokens >= first_Skv。 | 151 | - preTokens >= first_Skv。 |
| 149 | - nextTokens >= first_Sq - first_Skv,根据实际情况进行配置。 | 152 | - nextTokens >= first_Sq - first_Skv,根据实际情况进行配置。 |
| @@ -175,7 +175,7 @@ cannsim report [options] | |||
| 175 | 175 | ||
| 176 | 4. 仿真结果查看 | 176 | 4. 仿真结果查看 |
| 177 | 在Chrome浏览器中输入“chrome://tracing”地址,并将生成的指令流水图文件(trace.json)拖到空白处打开,键盘上输入快捷键(W:放大,S:缩小,A:左移,D:右移)可进行查看。 | 177 | 在Chrome浏览器中输入“chrome://tracing”地址,并将生成的指令流水图文件(trace.json)拖到空白处打开,键盘上输入快捷键(W:放大,S:缩小,A:左移,D:右移)可进行查看。 |
| 178 | -  | 178 | +  |
| 179 | 179 | ||
| 180 | **表3关键字段说明** | 180 | **表3关键字段说明** |
| 181 | 181 | ||
| @@ -7,13 +7,13 @@ | |||
| 7 | ### Atlas A2 系列硬件架构 | 7 | ### Atlas A2 系列硬件架构 |
| 8 | 8 | ||
| 9 | <div align="center"> | 9 | <div align="center"> |
| 10 | - <img src="../figures/Atlas A2硬件架构.png" width="900" alt="Atlas A2硬件架构" /> | 10 | + <img src="../figures/atlas_a2_hardware_arch.png" width="900" alt="Atlas A2硬件架构" /> |
| 11 | </div> | 11 | </div> |
| 12 | 12 | ||
| 13 | ### Ascend 950 系列硬件架构 | 13 | ### Ascend 950 系列硬件架构 |
| 14 | 14 | ||
| 15 | <div align="center"> | 15 | <div align="center"> |
| 16 | - <img src="../figures/Ascend 950硬件架构.png" width="900" alt="Ascend 950硬件架构" /> | 16 | + <img src="../figures/ascend950_hardware_arch.png" width="900" alt="Ascend 950硬件架构" /> |
| 17 | </div> | 17 | </div> |
| 18 | 18 | ||
| 19 | ### 代际规格参数对比 | 19 | ### 代际规格参数对比 |
| @@ -134,7 +134,7 @@ | |||
| 134 | Ascend 950硬件新增同地址请求并行处理特性,不需要在各种分核场景额外规避同地址访问冲突。迁移时可将Atlas A2上为"错位规避冲突"设计的分核策略简化为更规则的滑动窗口模板(如行组窗口+列向往返扫描),减少无效偏移与冗余地址变换。实践中建议先以功能等价为目标保留原tile尺寸,再逐步放开分核约束,结合profiling数据观察MAC利用率、MTE2利用率、L2命中率等关键指标,确认模板调整是否带来稳定收益。 | 134 | Ascend 950硬件新增同地址请求并行处理特性,不需要在各种分核场景额外规避同地址访问冲突。迁移时可将Atlas A2上为"错位规避冲突"设计的分核策略简化为更规则的滑动窗口模板(如行组窗口+列向往返扫描),减少无效偏移与冗余地址变换。实践中建议先以功能等价为目标保留原tile尺寸,再逐步放开分核约束,结合profiling数据观察MAC利用率、MTE2利用率、L2命中率等关键指标,确认模板调整是否带来稳定收益。 |
| 135 | 135 | ||
| 136 | <div align="center"> | 136 | <div align="center"> |
| 137 | - <img src="../figures/SWAT滑动窗口模板.png" width="900" alt="SWAT滑动窗口模板" /> | 137 | + <img src="../figures/swat_sliding_window_template.png" width="900" alt="SWAT滑动窗口模板" /> |
| 138 | </div> | 138 | </div> |
| 139 | 139 | ||
| 140 | #### Tile尺寸大小调整 | 140 | #### Tile尺寸大小调整 |
| @@ -327,7 +327,7 @@ __VEC_SCOPE_ | |||
| 327 | 327 | ||
| 328 | Ascend 950新架构引入UB2L1 & L0C2UB间的直连通路,实现矩阵计算数据的快速搬移,旨在简化CV融合算子开发并提升性能。 | 328 | Ascend 950新架构引入UB2L1 & L0C2UB间的直连通路,实现矩阵计算数据的快速搬移,旨在简化CV融合算子开发并提升性能。 |
| 329 | <div align="center"> | 329 | <div align="center"> |
| 330 | - <img src="../figures/Ascend950新增CV直连通路.png" width="700" alt="Ascend950新增CV直连通路" /> | 330 | + <img src="../figures/ascend950_cv_direct_channel.png" width="700" alt="Ascend950新增CV直连通路" /> |
| 331 | </div> | 331 | </div> |
| 332 | 332 | ||
| 333 | **矩阵搬入** | 333 | **矩阵搬入** |
| @@ -181,7 +181,7 @@ resultData[3] is: 4.000000 | |||
| 181 | 181 | ||
| 182 | 为方便调用算子,Host侧提供算子对应的C语言API(即以aclnn为前缀的API)实现算子调用,无需提供算子IR(Intermediate Representation)定义。aclnn API调用流程如下: | 182 | 为方便调用算子,Host侧提供算子对应的C语言API(即以aclnn为前缀的API)实现算子调用,无需提供算子IR(Intermediate Representation)定义。aclnn API调用流程如下: |
| 183 | 183 | ||
| 184 | - | 184 | + |
| 185 | 185 | ||
| 186 | #### 编译运行 | 186 | #### 编译运行 |
| 187 | 187 | ||
| @@ -433,7 +433,7 @@ resultData[3] is: 4.000000 | |||
| 433 | 433 | ||
| 434 | 该方式基于算子GE IR(Intermediate Representation)定义,以构图方式调用算子,调用流程如下: | 434 | 该方式基于算子GE IR(Intermediate Representation)定义,以构图方式调用算子,调用流程如下: |
| 435 | 435 | ||
| 436 | - | 436 | + |
| 437 | 437 | ||
| 438 | #### 编译运行 | 438 | #### 编译运行 |
| 439 | 439 | ||
| @@ -112,17 +112,6 @@ $$ | |||
| 112 | 112 | ||
| 113 | ## 调用说明 | 113 | ## 调用说明 |
| 114 | 114 | ||
| 115 | -<table><thead> | 115 | +| 调用方式 | 调用样例 | 说明 | |
| 116 | - <tr> | 116 | +|---------|---------------------------|--------------------------------| |
| 117 | - <th>调用方式</th> | 117 | +| GE图模式 | [test_geir_anchor_response_flags](examples/arch35/test_geir_anchor_response_flags.cpp) | 通过[算子IR](op_graph/anchor_response_flags_proto.h)构图方式调用AnchorResponseFlags算子。 | |
| 118 | - <th>调用样例</th> | ||
| 119 | - <th>说明</th> | ||
| 120 | - </tr></thead> | ||
| 121 | -<tbody> | ||
| 122 | - <tr> | ||
| 123 | - <td>图模式调用</td> | ||
| 124 | - <td><a href="./examples/test_geir_anchor_response_flags.cpp">test_geir_anchor_response_flags</a></td> | ||
| 125 | - <td>参见<a href="../../docs/zh/invocation/quick_op_invocation.md">算子调用</a>完成算子编译和验证。</td> | ||
| 126 | - </tr> | ||
| 127 | -</tbody> | ||
| 128 | -</table> | ||
| @@ -3,7 +3,7 @@ | |||
| 3 | ## 产品支持情况 | 3 | ## 产品支持情况 |
| 4 | 4 | ||
| 5 | | 产品 | 是否支持 | | 5 | | 产品 | 是否支持 | |
| 6 | -| :----------------------------------------- | :------:| | 6 | +| :----------------------------------------- | :------: | |
| 7 | | <term>Ascend 950PR/Ascend 950DT</term> | √ | | 7 | | <term>Ascend 950PR/Ascend 950DT</term> | √ | |
| 8 | | <term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term> | √ | | 8 | | <term>Atlas A3 训练系列产品/Atlas A3 推理系列产品</term> | √ | |
| 9 | | <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term> | √ | | 9 | | <term>Atlas A2 训练系列产品/Atlas A2 推理系列产品</term> | √ | |
| @@ -11,7 +11,6 @@ | |||
| 11 | | <term>Atlas 推理系列产品</term> | √ | | 11 | | <term>Atlas 推理系列产品</term> | √ | |
| 12 | | <term>Atlas 训练系列产品</term> | √ | | 12 | | <term>Atlas 训练系列产品</term> | √ | |
| 13 | 13 | ||
| 14 | - | ||
| 15 | ## 功能说明 | 14 | ## 功能说明 |
| 16 | 15 | ||
| 17 | - 算子功能:将归一化边界框坐标(相对坐标,值域[0, 1])按图像高宽转换为绝对像素坐标。常用于Faster R-CNN、SSD、YOLO等目标检测模型推理后处理阶段,将模型预测的归一化bbox恢复到图像绝对坐标空间。 | 16 | - 算子功能:将归一化边界框坐标(相对坐标,值域[0, 1])按图像高宽转换为绝对像素坐标。常用于Faster R-CNN、SSD、YOLO等目标检测模型推理后处理阶段,将模型预测的归一化bbox恢复到图像绝对坐标空间。 |
| @@ -93,6 +92,6 @@ | |||
| 93 | 92 | ||
| 94 | ## 调用说明 | 93 | ## 调用说明 |
| 95 | 94 | ||
| 96 | -| 调用方式 | 样例代码 | 说明 | | 95 | +| 调用方式 | 样例代码 | 说明 | |
| 97 | -| ---------------- |-----------------------------------------------------------------------------| --------------------------------------------------- | | 96 | +| ---------------- | ----------------------------------------------------------------------------- | --------------------------------------------------- | |
| 98 | | 图模式 | [test_geir_to_absolute_b_box](./examples/arch35/test_geir_to_absolute_b_box.cpp) | 通过[算子IR](./op_graph/to_absolute_b_box_proto.h)构图方式调用 ToAbsoluteBBox 算子。 | | 97 | | 图模式 | [test_geir_to_absolute_b_box](./examples/arch35/test_geir_to_absolute_b_box.cpp) | 通过[算子IR](./op_graph/to_absolute_b_box_proto.h)构图方式调用 ToAbsoluteBBox 算子。 | |
| @@ -20,6 +20,7 @@ | |||
| 20 | 输入x的shape为(N, boxes*(coords+1+classes), H, W),通道维度C按(elem, box)排列,即先排列所有锚框的x坐标,再排列所有锚框的y坐标,依此类推。 | 20 | 输入x的shape为(N, boxes*(coords+1+classes), H, W),通道维度C按(elem, box)排列,即先排列所有锚框的x坐标,再排列所有锚框的y坐标,依此类推。 |
| 21 | 21 | ||
| 22 | 坐标处理: | 22 | 坐标处理: |
| 23 | + | ||
| 23 | - x, y坐标做sigmoid激活 | 24 | - x, y坐标做sigmoid激活 |
| 24 | - w, h坐标直接搬移(move),输出时w和h位置交换,输出排列为(x, y, h, w) | 25 | - w, h坐标直接搬移(move),输出时w和h位置交换,输出排列为(x, y, h, w) |
| 25 | 26 | ||
| @@ -28,6 +29,7 @@ sigmoid(x) = \frac{1}{1 + exp(-x)} | |||
| 28 | $$ | 29 | $$ |
| 29 | 30 | ||
| 30 | 目标置信度和类别概率根据yolo_mode处理,yolo_mode由yolo_version、softmax和background三个属性决定: | 31 | 目标置信度和类别概率根据yolo_mode处理,yolo_mode由yolo_version、softmax和background三个属性决定: |
| 32 | + | ||
| 31 | - YOLO_MODE_1(V3,或V2且softmax=false且background=false):obj=sigmoid, classes=sigmoid | 33 | - YOLO_MODE_1(V3,或V2且softmax=false且background=false):obj=sigmoid, classes=sigmoid |
| 32 | - YOLO_MODE_2(V2且softmax=true且background=false):obj=sigmoid, classes=softmax | 34 | - YOLO_MODE_2(V2且softmax=true且background=false):obj=sigmoid, classes=softmax |
| 33 | - YOLO_MODE_3(V2且softmax=false且background=true):obj=move, classes=sigmoid | 35 | - YOLO_MODE_3(V2且softmax=false且background=true):obj=move, classes=sigmoid |
🟡 Medium Priority
changed line → affected behavior/contract → failure mode → suggested fix
在
docs/zh/context/quant_mode_introduction.md第59行,此diff将MX量化的描述从旧版本重写为新版本。新版本的描述中出现了拼写错误:gourp size应为group size。旧版本原文(已删除)中正确使用了
group size,新版本引入了一个打字错误gourp(字母顺序颠倒)。此错误会直接呈现在产品文档中,对读者造成困惑,属于文档准确性问题。触发条件:任何读者阅读该文档时都会看到此拼写错误。
建议:将
gourp修正为group。rp size为32的特例情况。