AI项目的开发流程概述
发布时间:2021-09-08 18:46:59 所属栏目:大数据 来源:互联网
导读:根据江门站长网 Www.0750Zz.Com报道 人工智能作为当下最热门的行业之一,不管是高考的专业选择中,还是各行各业的工作中,基本都会听到人工智能这个词,主要原因就是社会上各行各业对人工智能的需求越来越大了。在国内,从2015年开始,人工智能技术就已经逐渐
如果没有模型评估,那么模型训练就只能凭运气了,有时候模型训练结束后,可能模型并没有训练到位,这种情况还比较容易处理,可以接着继续训练。但是如果模型训练过度了,就不太好处理了,一般来说模型训练过度之后的副作用就是过拟合,过拟合情况相信大家都比较清楚,模型过拟合之后会导致泛化能力大大的降低,这肯定不是我们想要看到的。
模型评估一般可以通过验证集和训练集的损失或精度的差距来做判断,看模型训练是否已经到位,需要停止训练。模型训练只管训练是否有效,是否是否能够持续快速的降低模型输出与目标直接的差距。模型评估要监督模型训练何时应该停止,不需要继续训练。
5、测试调整-AI的战前试炼
模型测试是项目交付前的最后一次试验,测试的目的就是和项目方给出的指标做对比,比如精度、速度等指标。所以作为项目交付前的最后一次测试实验,一定要按照项目方提出的指标要求做测试,测试的数据最好是从项目方实际的工作场景中采集,如果条件不允许,那么测试数据一定要最大可能的接近项目方实际工作场景的数据,只有这样才有可能在项目交付后不会出现算法指标上的问题。
测试数据不仅从质量上要接近真实场景的数据,而且在数量上也要达到一定的量级,测试的结果才会更加接近真实场景下的结果。根据大数定律,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。所以当数据的数量达到一定的量级,也就意味着测试的结果也会越多,最终所有测试结果的期望也就越接近真实结果。
在实际场景下的大规模数据测试中,如果出现测试结果和项目方给出的指标相差太远,当然这里所说的是模型测试出来的指标比项目方给出的指标要低。那么就需要对模型或者样本数据做调整之后再训练,或者重新训练模型。
人工智能项目的开发流程概述
如果模型在训练和验证的时候各项指标都没有问题,但是在测试的时候,却出现了指标急速下降的情况,一般出现这种情况,大部分原因都是由于测试数据与训练数据、验证数据差距太大造成的,也就是说训练集和验证集的数据差距不大,属于相似的数据场景分布,很有可能是从互联网获得的数据,而测试集的数据很有可能来自真实场景下采集到的数据,因此测测试集与训练集、验证集之间就会有很大的差距,而数据差距则是造成测试集的结果急速下降的主要原因,解决方案就是替换训练集和验证集的数据,最好也是从真实场景中采集。
当训练集、验证集、测试集都来自于统一场景下的数据的时候,不仅测试结果能够达到满意的效果,而且往往在部署之后,也不会出现算法指标上的问题。
6、部署实施-AI的落地成型
模型部署是模型在实际项目中的落地应用,模型部署包括了各种不同的编程语言的部署,比如常见的C/C++、JAVA、Python,以及其他语言,各种语言由于其自身的特性,在部署的时候部署方法也不大一样,比如按照某些定义而言,C/C++属于编译型语言,Python属于解释型语言,总之两者的程序执行过程的差异导致它们在部署的时候要考虑跨平台性的问题。
人工智能项目的开发流程概述
粗略的来说,由于C/C++的编译特性,它会将原生的程序代码生成一个可执行的二进制文件,这个过程称为编译过程,这个二进制文件相当于一个中间文件,执行这个中间文件的效率要比执行原生代码的速度快的多,这也是为什么很多算法程序使用python来开发,但是在推理部署的时候却要换成C++,其主要原因之一就是C++生成的中间程序能够加快推理速度,另外在安全性上也是比python要超出不少的,因为C++的打包程序是很难被反编译的,而python在这点上就要逊色不少。
另外,C/C++在不同的系统平台下生成的中间程序,在执行的时候只能在当前的系统平台上运行,一旦放到其他系统平台上就运行不了了,比如在Windows平台上生成的中间程序,只能在Windows平台上运行,在Linux平台或者其他平台上是运行不了,如果需要在其他平台上运行,则需要在对应的平台上重新编译才行。
人工智能项目的开发流程概述
而python就不一样了,解释型语言的特性使它具有跨平台的方便性,在一个平台上编写的语言可以放在其他任何平台上运行。但是由于解释型语言的特点,python程序的运行速度是没有C/C++的速度快的,所以如果是实现自己的算法想法,那么python无疑是最好的选择,但是如果要部署在工程应用上C/C++则更具有优势一些。
从部署的设备上来说,大概可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IOT端(传感器、板卡:Android),各种部署的方法也是大同小异,拿英伟达的JetSon nano系列来说,部署方法非常简单,只要你买回来按照上面的说明部署,基本都能够成功的部署上的。
人工智能项目的开发流程概述
这里简单说一下在pytorch框架下的部署,在pytorch框架下部署基本可以分为三种方法,第一种是使用指定的编程语言(C/C++/JAVA)调用Libtorch在对应的平台(Windows/Linux)编写程序,然后直接部署。
第二种方法是先使用python在任意平台编写模型(跨平台),然后使用torch.jit.trace()将python文件转成c++文件,最后使用save()方法打包成.pt文件,然后使用C/C ++/JAVA或其他语言在其他平台上调用。
第三种将python模型转换成onnx,再转成caffe,tensorflow等其他框架的模型。
后记:目前人工智能项目的开发流程相对来说还没有形成标准,各种方法都有,以上流程只是根据当前大部分人工智能项目的开发经验而总结,难免有遗漏之处,欢迎各位大牛们前来指正,做为一名炼丹学徒,这条路才刚刚开始,希望各位行业同仁共勉!
![]() (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |