第 4 章:NCNN 优化教程
为了能够适配移动端,网络的计算速度是极其重要的。如果一个网络规模过大或计算过于复杂,其在移动端上都是不可接受的。
因此,我们需要做两方面的事情:
- 裁剪和量化网络模型
- 优化算子在设备上的计算
由于本教程是关于 NCNN 的,所以只会讲解如何优化算子在指定架构设备上的计算。
为了验证优化算法有多大性能上的提升,我们还将使用 benchmark 进行测试。例如不排除反向优化的可能,或者 CPU 在某些情况下更快。
由于优化算法可能有各种 Bug,其健壮性可能不如基础实现(基础算法都是验证过基本不可能有计算错误,而自己实现的算法很可能有错误,例如在极端的测试样例下不通过)。为了让算法健壮可用,本教程还将讲解如何使用 GitHub 工作流进行自动化测试,测试优化算子的健壮性。
由于不同的架构优化策略完全不同,而 NCNN 又是专注于移动端适配,我们将重点使用 ARMv8(AArch64)架构。
TODO 添加优化策略。