同一应用程序中是否需要训练和推理系统?

人工智能 深度学习 训练 执行 推理
2021-11-06 08:22:28

据我了解,深度学习有两个阶段:第一个是训练,第二个是推理。第一个通常在 GPU 上完成,因为它们具有强大的并行能力等。第二个,推理,虽然它可以在 GPU 上完成,但由于功耗的原因并没有太多使用,而且因为推理时呈现的数据要少得多,所以不需要 GPU 的全部功能。相反,FPGA 和 CPU 通常用于此目的。

我的理解也是,一个完整的深度学习系统将同时具备训练系统和推理系统。

我的问题是:两个系统都需要在同一个应用程序上吗?

让我们假设一辆自动驾驶汽车或一个完成视觉和图像识别的应用程序,它是否既有要训练的训练系统,也有要执行的推理系统?或者它只有推理系统,并且将与已经训练并建立数据库的远程系统进行通信?

另外,如果应用程序有两个系统,它是否有足够大的内存来存储训练数据?鉴于它可以是一个小型系统,并且内存最终是有限的。

2个回答

训练和推理通常在两个独立的系统上完成您知道深度神经网络的训练通常在 GPU 上进行,而推理通常在 CPU 上进行,您是对的。然而,训练和推理几乎总是在两个独立的系统上完成。

当今许多数据科学家的主要工作流程如下:

  1. 为深度神经网络等模型创建和建立所有超参数

  2. 使用 GPU 训练深度神经网络

  3. 保存在 GPU 上训练建立的权重,以便可以部署模型。

  4. 使用在训练中找到的最佳权重在生产应用程序中对模型进行编码。

因此,正如您从这个工作流程中看到的那样,训练和推理是在两个完全独立的阶段中完成的。

但是,在某些特定情况下,训练和推理是在同一个系统上完成的。例如,如果您使用深度神经网络来玩视频游戏,那么您可能会在同一个系统上训练和推断神经网络。这将提高效率,因为它可以让模型不断学习。

要回答您关于内存的问题,在同一应用程序中完成推理和训练的唯一应用程序有大量可用内存(想想双 GPU 双 CPU 128GB RAM 工作站),而内存量有限的应用程序仅使用推理例如嵌入式应用程序。

深度学习似乎主要是本质上是神经网络的流行词。您使用数据集进行训练以识别模式,然后输入新数据,然后由经过训练的网络进行分类。

因此,您使用数千张图片来训练一个包含 10 种不同动物的神经网络。然后你向网络展示 100 张新图像,让网络“猜测”每只动物是什么。

这里的要点是,训练神经网络需要反馈代码,而使用经过训练的网络的应用程序则不需要。因此,仅使用经过训练的网络的应用程序将比允许额外训练数据的应用程序更精简。

缺少的是机器学习从受过训练的网络中形成分层或其他相互关联的规则的能力,以便受过训练的网络更接近于能够合理地解释分类工作的原因。回到训练有素的 10 只动物的网络,如果在训练期间没有制定规则,网络就没有实用的方法来揭示为什么任何动物都按原来的方式分类。