乐趣区

关于intel:AI算法优化实践以ncnn实现为例

前言

​ 我老爹已经传授给我一个古老的智慧:如果你是手艺人,那么你就要对靠着吃饭的家伙式非常相熟。自从我毕业开始从事图像方面的工作,我更加发现这句话的重要性。我工作中接触不少算法工程师,算法设计和模型推理过程曾经逐渐变成黑盒模式。仿佛能跑起来就是“理所因当”的,漠视效率在理论业务交付中的重要性。

​ 本系列的文章就是为了扭转这种思考误区存在. 2012 年 AlexNet 的横空出世,其中训练用的 G580 3G 的奉献被大大低估了。直到 2023 年,ChatGPT 的呈现,大家才猛然发现,A100 在其中的奉献比例超乎设想。根本所有人都陷入数据处理效率比不上模型自身重要的误区,所有人就感觉在训练和推理模型上浪费时间是“理所应当”。

​ 然而,我回绝。我回绝将模型推理作为一个黑盒,所以我走向底层,去钻研怎么让计算算得更快,如何缩小应用指令数量来实现性能。我走向 C 和 C ++,我抉择去了解计算机体系结构的利用。

​ 这系列文章的目标是编写本人的机器学习框架,所以我会从学习 ncnn 开始,会从 C 和汇编开始。我心愿阅读者懂一些机器学习的基础知识,感兴趣于推理框架设计和 Layer 优化。

​ 本系列会先探讨密集计算的 Intrinsic 和 inline Assembly 优化技术,进一步探讨针对某个 Layer,ncnn 是如何在 Intel 和 Arm 上都进行优化的。所有代码都会依照 TDD 的分析方法,把 Layer 底层逐渐拆出来进行解析。

目录

  1. Intrinsic
  2. inline Assembly
  3. Conv im2col sgemm
  4. Conv Winograd

​ ncnn Layer 解析是个巨量的工程,咱们会先以 Conv 为例, 先探讨根底的矩阵优化,进一步探讨 im2col_sgemm, 最初咱们才会到 ncnn 目前所应用的技术 Winograd 中。

补充材料

  • ncnn
  • GiantPandaCV
  • algorithmica

    感激以上材料的作者,及材料自私的 contributors

更新日志

  • 2023-04-20 更新 AI 算法优化总览文章

本文参加了 SegmentFault 思否写作挑战赛,欢送正在浏览的你也退出。

退出移动版