AI部署之路 | 模型选型、本地部署、服务器部署、模型转换全栈打通!( 四 )


模型的速度还是很重要的,平常我们可能习惯单压一个模型,也就是一个请求接一个连续不断请求这个模型然后看耗时以及qps,这样可以大概评估出一个模型的性能 。但实际中要考虑很多种情况:
一般可以用很多压测工具对模型使用场景进行压测来观察模型的性能,但最好是实际去测一下跑一下,感受一下实际场景的请求量 。
开始部署吧!
有了符合要求的模型、并且模型转换好之后,就可以集成到对应的框架中了 。
本地部署其实考虑比较多就是推理后端,或者说推理框架 。你要根据平台选择开源的或者自己研发的推理框架,平台很多(PC端、移动端、服务器、边缘端侧、嵌入式),一般来说有:
坑都不少,需要学习的也比较杂,毕竟在某一个平台部署,这个平台的相关知识相关信息也要理解,不过有一些经验是可以迁移的,因此经验也比较重要,什么AI部署、AI工程化、落地都是一个概念 。能让模型在某个平台顺利跑起来就行 。
确定好平台就可以确定推理框架了:
当然,如果你自己有实力或者有时间的话,也可以自己写一个推理框架,能学到很多东西!
本地部署
本地部署就是模型在本地跑,利用本地的计算资源 。比如你的笔记本电脑有显卡,然后你想做一个可以检测手的软件,通过exe安装,安装好之后使用笔记本的显卡或者CPU去跑,这个模型会根据笔记本的硬件情况选择CPU还是GPU跑(当然你得自己写代码去检测有哪些硬件可以使用) 。又比如说你有一个的服务器,插上一些摄像头完成一些工业项目,插上显卡在显卡上跑模型等等 。
本地部署可以参考的项目:
本地部署需要考虑的一些点:
服务器部署相关
服务器模型部署和本地部署有类似的地方,但涉及到的知识点更多,面也更广 。很多知识点和模型已经没什么关系了,我们其实也不需要深入理解架构方面的东西,简单了解一下即可,架构方面可以由公司内部专门的op去处理 。
首先,可部署的模型种类更多,你有了服务器,一般来说基本都是的,基本什么模型都能跑,基本什么服务都会搞上去,甚至模型扔上去也行,当然性能不是最优的 。除了模型的优化外,会涉及到模型的调度,自动扩缩,模型pack等等,大部分服务端相关的操作,不用我们参与,只需要提供模型或者前后处理代码即可,但有些我们是可以参与的 。
我个人参与过一些服务端部署,基于K8s那套(仅仅是了解并没有实际使用过),说说咱们模型端需要做的事儿吧:
要学习的东西
相关参考:
嵌入式部署
嵌入式部署和本地部署类似,不过嵌入式的平台硬件相比普通电脑或者插加速卡的工业机器要弱不少 。
一般都是嵌入式板卡一类的,比较好的有英伟达的 orin系列,比较差的有单片机stm32这类 。
嵌入式或者说手机端部署可以说是差不多,特点就是计算资源比较紧张,功耗往往都给的很低,性能不强的同时要求很多模型需要达到实时,这个对算法工程师和算法优化工程师来说挑战不小,差不多可以达到扣QPS这个级别(为了提升模型的几个QPS努力几个月),不像服务端动不动就100多Q 。嵌入式端简单转一个模型可能只有10来q,想要达到24q也就是实时的级别可能需要花不小的功夫 。
举几个大家经常玩的嵌入式平台:
特点:
参考:
多模型混合部署
有时候会有很多模型部署到同一张显卡上、或者部署到同一个AI加速卡上的情况,而显卡或者说加速卡,资源都是有限的(多个卡同理) 。