mirror of
https://github.com/openmlsys/openmlsys-zh.git
synced 2026-04-05 11:47:55 +08:00
fix eqlabel issue & add extend-read (#276)
Co-authored-by: hangangqiang <hangangqiang2@huawei.com>
This commit is contained in:
@@ -125,46 +125,34 @@ ARMv8系列的CPU上有32个NEON寄存器v0-v31,如 :numref:`ch08-fig-register
|
||||
|
||||
以一维卷积运算为例,记为F(m,r),其中,m代表输出的个数,r为卷积核的个数。输入为$d=[d_0 \ d_1 \ d_2 \ d_3]$,卷积核为$g=[g_0 \ g_1 \ g_2]^T$,该卷积计算可以写成矩阵形式如公式 :eqref:`ch08-equ-conv_matmul_one_dimension`所示,需要6次乘法和4次加法。
|
||||
|
||||
$$F(2, 3)=
|
||||
\left[ \begin{matrix} d_0 & d_1 & d_2 \\ d_1 & d_2 & d_3 \end{matrix} \right] \left[ \begin{matrix} g_0 \\ g_1 \\ g_2 \end{matrix} \right]=
|
||||
\left[ \begin{matrix} y_0 \\ y_1 \end{matrix} \right]$$
|
||||
$$F(2, 3)=\left[ \begin{matrix} d_0 & d_1 & d_2 \\ d_1 & d_2 & d_3 \end{matrix} \right] \left[ \begin{matrix} g_0 \\ g_1 \\ g_2 \end{matrix} \right]=\left[ \begin{matrix} y_0 \\ y_1 \end{matrix} \right]$$
|
||||
:eqlabel:`ch08-equ-conv_matmul_one_dimension`
|
||||
|
||||
可以观察到,卷积运算转换为矩阵乘法时输入矩阵中存在着重复元素$d_1$和$d_2$,因此,卷积转换的矩阵乘法相对一般的矩阵乘有了优化空间。可以通过计算中间变量$m_0-m_3$得到矩阵乘的结果,见公式 :eqref:`ch08-equ-conv-2-winograd`:
|
||||
|
||||
$$F(2, 3)=
|
||||
\left[ \begin{matrix} d_0 & d_1 & d_2 \\ d_1 & d_2 & d_3 \end{matrix} \right] \left[ \begin{matrix} g_0 \\ g_1 \\ g_2 \end{matrix} \right]=
|
||||
\left[ \begin{matrix} m_0+m_1+m_2 \\ m_1-m_2+m_3 \end{matrix} \right]$$
|
||||
$$F(2, 3)=\left[ \begin{matrix} d_0 & d_1 & d_2 \\ d_1 & d_2 & d_3 \end{matrix} \right] \left[ \begin{matrix} g_0 \\ g_1 \\ g_2 \end{matrix} \right]=\left[ \begin{matrix} m_0+m_1+m_2 \\ m_1-m_2+m_3 \end{matrix} \right]$$
|
||||
:eqlabel:`ch08-equ-conv-2-winograd`
|
||||
|
||||
其中,$m_0-m_3$的分别见公式 :eqref:`ch08-equ-winograd-param`:
|
||||
|
||||
$$\begin{aligned}
|
||||
m_0=(d_0-d_2)*g_0 \\
|
||||
m_1=(d_1+d_2)*(\frac{g_0+g_1+g_2}{2}) \\
|
||||
m_2=(d_0-d_2)*(\frac{g_0-g_1+g_2}{2}) \\
|
||||
m_2=(d_1-d_3)*g_2
|
||||
\end{aligned}$$
|
||||
$$\begin{aligned}m_0=(d_0-d_2)*g_0 \\m_1=(d_1+d_2)*(\frac{g_0+g_1+g_2}{2}) \\m_2=(d_0-d_2)*(\frac{g_0-g_1+g_2}{2}) \\m_2=(d_1-d_3)*g_2\end{aligned}$$
|
||||
:eqlabel:`ch08-equ-winograd-param`
|
||||
|
||||
|
||||
通过$m_0-m_3$间接计算r1,r2,需要的运算次数包括:输入d的4次加法;输出m的4次乘法和4次加法。在推理阶段,权重的数值是常量,因此卷积核上的运算可以在图编译阶段计算,不计入在线的run时间。所以总的运算次数为4次乘法和8次加法,与直接运算的6次乘法和4次加法相比,乘法次数减少,加法次数增加。在计算机中,乘法一般比加法慢,通过减少乘法次数,增加少量加法,可以实现加速。
|
||||
|
||||
计算过程写成矩阵形式如公式 :eqref:`ch08-equ-winograd-matrix`所示,其中,⊙为对应位置相乘,A、B、G都是常量矩阵。这里写成矩阵计算是为了表达清晰,实际使用时,按照公式 :eqref:`ch08-equ-winograd-param`手写展开的计算速度更快。
|
||||
|
||||
|
||||
$$\mathbf{Y}=\mathbf{A^T}(\mathbf{G}g)*(\mathbf{B^T}d)$$
|
||||
:eqlabel:`ch08-equ-winograd-matrix`
|
||||
|
||||
$$\mathbf{B^T}=
|
||||
\left[ \begin{matrix} 1 & 0 & -1 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 1 & 0 & -1 \end{matrix} \right]$$
|
||||
$$\mathbf{B^T}=\left[ \begin{matrix} 1 & 0 & -1 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 1 & 0 & -1 \end{matrix} \right]$$
|
||||
:eqlabel:`ch08-equ-winograd-matrix-bt`
|
||||
|
||||
$$\mathbf{G}=
|
||||
\left[ \begin{matrix} 1 & 0 & 0 \\ 0.5 & 0.5 & 0.5 \\ 0.5 & -0.5 & 0.5 \\ 0 & 0 & 1 \end{matrix} \right]$$
|
||||
$$\mathbf{G}=\left[ \begin{matrix} 1 & 0 & 0 \\ 0.5 & 0.5 & 0.5 \\ 0.5 & -0.5 & 0.5 \\ 0 & 0 & 1 \end{matrix} \right]$$
|
||||
:eqlabel:`ch08-equ-winograd-matrix-g`
|
||||
|
||||
$$\mathbf{A^T}=
|
||||
\left[ \begin{matrix} 1 & 1 & -1 & 0 \\ 0 & 1 & -1 & -1 \end{matrix} \right] \\$$
|
||||
$$\mathbf{A^T}=\left[ \begin{matrix} 1 & 1 & -1 & 0 \\ 0 & 1 & -1 & -1 \end{matrix} \right] \\$$
|
||||
:eqlabel:`ch08-equ-winograd-matrix-at`
|
||||
|
||||
|
||||
|
||||
@@ -11,3 +11,11 @@
|
||||
- 针对模型的推理功耗,主要的优化思路是降低模型的计算量,这与针对模型推理时延的优化手段有重合之处,可以参考离线的模型优化技术 :numref:`ch08-sec-fusion`和模型压缩技术 :numref:`ch08-sec-model_compression`。
|
||||
|
||||
- 本章除了介绍优化模型部署的各方面指标的优化技术以外,还介绍了安全部署相关的技术,如模型混淆、模型加密等。部署安全一方面可以保护企业的重要资产,另一方面可以防止黑客通过篡改模型从而入侵攻击部署环境。
|
||||
|
||||
## 扩展阅读
|
||||
|
||||
- Google量化白皮书 [量化](https://arxiv.org/abs/1806.08342)
|
||||
|
||||
- 诺亚高精度剪枝算法 [剪枝](https://arxiv.org/abs/2010.10732)
|
||||
|
||||
- 针对多核处理器的自动图并行调度框架 [性能优化](https://proceedings.mlsys.org/paper/2021/file/a5e00132373a7031000fd987a3c9f87b-Paper.pdf)
|
||||
|
||||
Reference in New Issue
Block a user