本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。
合集完整版会放在我的星球上,点击这里查看。
前几节介绍了推理和训练的大致过程,以及训练过程中要用损失函数来作为评判预测值和真实值差距的标准。
在很多时候,尤其是训练大型AI模型的时候,从开始训练到训练完成是要经过很长的时间。
如果训练一轮消耗的时间增加一分钟,那么训练1万轮便会增加更多的时间,而实际上很多大型的模型训练次数可能要远高于这个轮次。
所以说一个模型的运行性能在训练过程中会显得很重要。
初代GPT的故事
有一个故事,据说 OpenAI 在训练初代GPT的时候,专门派了几个工程师在电脑旁值守。
因为当时的GPU性能并没有那么好,导致训练时间被拉的很长,再加上 GPT 模型参数量巨大,因此如果训练过程出了任何一个问题,导致程序崩溃,需要从头再来的话,花费的代价是很大的。
而雇佣几个工程师在电脑旁值守,一旦发现问题就及时保存当时学习到的参数,然后下一次训练时可以从这个保存点继续往后训练,可以大大节省训练成本。
神经网络运行的性能不光对训练重要,对推理过程也是一样。
一个常用的场景是,如果我们用GPT来对话,输入一句话GPT 返回一句话,这个过程就是一次文本生成的推理。
如果这个过程耗时很长,用户体验就会很差,你很可能就不会继续等待GPT的输出,也就不会再使用这个AI模型了。
在工业场景中,很多情况下对于性能的要求就更加严苛,比如自动驾驶中汽车识别图像需要做到微妙级甚至更低的一个推理延时。
推理框架
为了提高神经网络推理的性能,人们就开发了很多AI框架来做这件事情,比如大名鼎鼎的TVM,MLIR,pytorch等等。
这些推理框架会将一个神经网络的结构进行优化,消除掉其中一些冗余的部分,使得整个神经网络变得更加简洁。
除此之外,推理框架还能做很多的事情,比如说可以绕过很多高层语言如Python语言,直接生成神经网络运行的硬件上的汇编代码,完成代码的编译,然后生成二进制文件。
所以很多推理框架也被称为深度学习编译器框架,目的就是为了加速神经网络的性能,提高神经网络模型的编译速度。
就目前我所了解到的,几乎每一家做AI加速的硬件平台公司都会研发属于专属的深度学习编译器,让神经网络可以在AI加速器平台上运行的更快。
总之,神经网络运行的性能是很重要的,不论是对于推理而言,还是对训练而言。
如果以后有机会去做深度学习编译器相关的工作,建议去接触一下。个人感觉这是一个不错的方向,至少在未来可见的时间里,都将会是AI行业里性能优化最为重要的一部分。
深度学习的基础概念知识就介绍到这。
总结一下这部分,对于这一部分,只需要了解基础的概念即可:比如什么是训练、什么是推理、什么是损失函数。
在后面的文章中,会以真实的神经网络模型和算法为基础,逐步介绍有关于深度学习更细节的知识。
下一节是一个实战练习,用一个简单的图像识别模型为例子,来完成模型的从头开始的训练,并且完成一张图片的推理识别。
我创建了一个《小而精的AI学习圈子》的知识星球,星球上会有非常多高质量的技术专栏分享,同时你也可以在星球向我提问。 在星球你还可以学到很多关于 CV 、大模型以及 AIGC 相关的技术,看到别的同学都在如何学习。不要犹豫,戳下面的链接加入吧,这可能是你学习AI 的道路上非常重要的一次点击呀。 点击这里,我们星球见!