关于intel:AI算法优化实践以ncnn实现为例
前言 我老爹已经传授给我一个古老的智慧:如果你是手艺人,那么你就要对靠着吃饭的家伙式非常相熟。自从我毕业开始从事图像方面的工作,我更加发现这句话的重要性。我工作中接触不少算法工程师,算法设计和模型推理过程曾经逐渐变成黑盒模式。仿佛能跑起来就是“理所因当”的,漠视效率在理论业务交付中的重要性。 本系列的文章就是为了扭转这种思考误区存在. 2012年AlexNet的横空出世,其中训练用的G580 3G的奉献被大大低估了。直到2023年,ChatGPT的呈现,大家才猛然发现,A100在其中的奉献比例超乎设想。根本所有人都陷入数据处理效率比不上模型自身重要的误区,所有人就感觉在训练和推理模型上浪费时间是“理所应当”。 然而,我回绝。我回绝将模型推理作为一个黑盒,所以我走向底层,去钻研怎么让计算算得更快,如何缩小应用指令数量来实现性能。我走向C和C++,我抉择去了解计算机体系结构的利用。 这系列文章的目标是编写本人的机器学习框架,所以我会从学习ncnn开始,会从C和汇编开始。我心愿阅读者懂一些机器学习的基础知识,感兴趣于推理框架设计和Layer优化。 本系列会先探讨密集计算的Intrinsic 和inline Assembly优化技术,进一步探讨针对某个Layer,ncnn是如何在Intel 和Arm上都进行优化的。所有代码都会依照TDD的分析方法,把Layer底层逐渐拆出来进行解析。 目录Intrinsicinline AssemblyConv im2col sgemmConv Winograd ncnn Layer解析是个巨量的工程,咱们会先以Conv为例,先探讨根底的矩阵优化,进一步探讨im2col_sgemm,最初咱们才会到ncnn目前所应用的技术Winograd中。 补充材料ncnnGiantPandaCValgorithmica 感激以上材料的作者,及材料自私的contributors 更新日志2023-04-20 更新AI算法优化总览文章本文参加了SegmentFault 思否写作挑战赛,欢送正在浏览的你也退出。