软件开发视角看AI-碎片想法整理
Published:
(…碎片化想法太多,只能先零散的记录,慢慢整合) **
从深度学习的流程来看:训练一个深度学习模型,涉及到数据收集,数据处理,模型构建,模型训练,模型导出,模型部署等多个方面。一些常见的深度学习框架如pytorch tensorflow能够帮我们完成模型构建、训练和导出的部分。其他部分的工作,如数据的获取与处理,模型的部署(后端API/SDK开发、模型转换(ONNX))、模型压缩(模型优化、模型量化)、管理和应用等都可以由软件开发人员来完成。
这其中我认为模型部署最为重要,毕竟模型训练完后不能只是在各种榜单里或者论文里华丽登场后就尘封在机器中,将其部署并应用才是检验模型的重要方式。模型部署的目标平台一般来说平台分为云计算平台和终端设备(手机,fpga板子等多种边缘设备)。带有GPU计算资源的云平台的部署相对来说比终端设备要方便一些,毕竟终端设备受限于体积算力和存储都有限,同时终端设备又有多种硬件平台部署起来更加复杂。
模型部署-推理引擎
- onnx onnxRuntime
- tensorRT
从it行业的未来发展来看:随着云计算、终端设备的发展,云+端的模式将越来越流行。
模型和数据集越来越大,训练这些神经网络模型需要大规模的计算集群,计算上云则是趋势。在强大计算能力的云服务的帮助下,强大的ai也能在生活的方方面面帮助人们。比如ai可以对聋哑人等残疾人提供帮助,心理咨询师在ai的帮助下对心理有问题的人进行心理疗愈等。ai的功能越来越多,能力也越来越强,一个整合了多种能力的ai system也将会是未来的趋势。
而在一些情况下,由于模型需要的参数较多或者输入信息较大,网络传输也许会成为使用ai服务的效率瓶颈,ai模型部署在边缘设备上的需求将越来越大。而边缘设备则不像云服务那样有充足的计算资源和存储资源,如何将模型高性能的部署在边缘设备上,并且在保证模型精度的前提下压缩模型大小也是一个重要的研究方向。
对于web开发者来说,最快捷的方法就是将有实际应用价值的模型训练好(或者找到对应的预训练好的模型)部署在服务端作为一个web服务供人们使用。
Batch BatchNormalization