训练(training)和推理\推断(inference)的关系?

训练(training)和推理\推断(inference)的关系?为什么传统机器学习 都会用 predict 表示预测 而深度学习中往往用 inference 这个词 他们意义有什么不同吗 在深度学习里面 使用学习好的模型做预测的过程叫 inference 这个情景

大家好,欢迎来到IT知识分享网。

训练(Training)

打个比方,你现在想要训练一个能区分苹果还是橘子的模型,你需要搜索一些苹果和橘子的图片,这些图片放在一起称为训练数据集(training dataset),训练数据集是有标签的,苹果图片的标签就是苹果,橘子亦然。一个初始神经网络通过不断的优化自身参数,来让自己变得准确,可能开始10张苹果的照片,只有5张被网络认为是苹果,另外5张认错了,这个时候通过优化参数,让另外5张错的也变成对的。这整个过程就称之为训练(Traning)。

推理(Inference)

你训练好了一个模型,在训练数据集中表现良好,但是我们的期望是它可以对以前没看过的图片进行识别。你重新拍一张图片扔进网络让网络做判断,这种图片就叫做现场数据(live data),如果现场数据的区分准确率非常高,那么证明你的网络训练的是非常好的。我们把训练好的模型拿出来遛一遛的过程,称为推理(Inference)。


 简答来说训练与推理的区别

深度学习中涉及到训练(Training)推断(Inference),简单来说:
1、训练也就是搜索和求解模型最优参数的阶段。
2、当模型参数已经求解出来,使用和部署模型,则称为推断阶段。

我们可以把深度学习的训练看成学习过程。人工神经网络是分层的、是在层与层之间互相连接的、网络中数据的传播是有向的。训练神经网络的时候,训练数据被输入到网络的第一层。然后所有的神经元,都会根据任务执行的情况,根据其正确或者错误的程度如何,分配一个权重参数(权值)。

训练需要分 batch 多次迭代,inference 只需要分 batch 执行一次计算流图。训练是计算密集型的,以 GPU 资源为主,CPU 主要用于通信,参数更新等低消耗的任务。单次训练任务计算量大,需要用分布式系统才能较快得到结果。训练过程主要关心分布式集群的资源利用率。


推断过程关注的指标为:

  • 访问延迟
  • 吞吐量
  • 模型版本管理
  • DevOps【devops是敏捷开发的升级版】(DevOps到底是什么意思? – 知乎)

推断过程常用的工具:TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 和 Restful 作为接口接受外部调用。它支持模型热更新与自动模型版本管理。这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。

  1. 推断的网络权值已经固定下来,无后向传播过程,模型固定,可以对计算图进行优化。还可以输入输出大小固定,做 memory 优化(fine-tuning 只是在已有的训练好的模型上做小的改动和调优,本质上仍然是训练过程,TensorRT 没有 fine-tuning)
  2. 推断的 batch size 要小很多,如果 batch size 很大,吞吐可以很大。比如每秒可以处理 1024 个 batch,500 毫秒处理完,吞吐可以达到 2048,可以很好地利用 GPU;但是推断关心延迟 latency,不能有 500 毫秒处理延迟。所以 batch 可以是 8 或者 16,吞吐降低,没有办法很好地利用 GPU。
  3. 训练的时候因为要保证前后向传播,每次梯度的更新很微小,需要相对较高的精度,一般来说需要 float 型,如 FP32,32 位的浮点型来处理数据。但是推断对精度的要求没有那么高,可以使用低精度的技术,很多研究表明可以用如半长(16)的 float 型,即 FP16,或者 8 位的整型(INT8)来做推断,研究结果表明没有特别大的精度损失,尤其对 CNN。对 Binary(二进制)的使用也处在研究中,即权值只有 0 和 1。低精度计算的好处是一方面可以减少计算量,原来计算 32 位的单元处理 FP16 的时候,理论上可以达到两倍的速度,处理 INT8 的时候理论上可以达到四倍的速度。另一方面是模型需要的空间减少,不管是权值的存储还是中间值的存储,应用更低的精度,模型大小会相应减小。用于 inference 的模型要进行简化、压缩、针对运行性能优化:查找神经网络中经过训练后并没有用到、尚未激活的清洗掉。把神经网络中的多个层融合为一个单独的计算步骤。(通过神经网络剪枝、训练量化和 Huffman 编码等压缩模型),但仍能达到几乎一样的预测、识别准确率

另外还有结构重参数化:

请阅读:解读模型压缩6:结构重参数化技术:进可暴力提性能,退可无损做压缩 – 知乎

为了做模型压缩用的

深度学习中训练和推断的区别 · 大专栏

深度学习的宏观框架——训练(training)和推理(inference)及其应用场景_木子山石的学习笔记-CSDN博客_inference

DevOps到底是什么意思? – 知乎

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/160570.html

(0)
上一篇 2024-12-04 21:00
下一篇 2024-12-04 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信