生产环境中的 TensorFlow:如何重新训练您的模型

Posted

技术标签:

【中文标题】生产环境中的 TensorFlow:如何重新训练您的模型【英文标题】:TensorFlow in production: How to retrain your models 【发布时间】:2017-03-21 02:43:53 【问题描述】:

我有一个与此相关的问题:

TensorFlow in production for real time predictions in high traffic app - how to use?

我想设置 TensorFlow Serving 以将推理作为服务提供给我们的其他应用程序。我看到了 TensorFlow Serving 如何帮助我做到这一点。此外,它还提到了continuous training pipeline,这可能与 TensorFlow Serving 可以服务于多个版本的训练模型的可能性有关。但我不确定如何在获得新数据时重新训练模型。另一篇文章提到了使用 cron 作业进行再培训的想法。但是,我不确定自动再培训是否是一个好主意。对于系统不断面对新的标记数据的持续再训练管道,您会提出什么架构?

编辑:这是一个监督学习案例。问题是你会在 n 个新数据点进来后自动重新训练你的模型,还是在客户停机期间自动重新训练还是手动重新训练?

【问题讨论】:

【参考方案1】:

您可能想要使用某种半监督训练。在这方面有相当广泛的研究。

一个粗略但权宜的方法是使用当前最好的模型来标记新的传入数据。模型通常能够产生分数(希望是对数概率)。您可以使用该分数仅对拟合良好的数据进行训练。

这是我们在语音识别中使用的一种方法,是一个很好的基准。

【讨论】:

感谢您的回答,这听起来很适合我们的其他任务。实际上,我更感兴趣的是如何在有监督的持续再培训案例中将旧模型与新模型交换。这意味着如果你有你的模型 x,并且你看到 n 个新的、标记的数据点,你什么时候重新训练以将你的模型改进到 x+1?您是否会触发数据点的数量,或者如果可能的话,您会在客户停机期间重新运行它吗?还是您只会手动重新运行而不自动推出? 出于不同的原因,有两种方法都被使用。它们需要一定程度的规模。在第一个中,我们有一个数据科学家团队,不断改进算法,并利用更多数据。然后,每周,他们都会为一个启动委员会开会。算法的每一项改进都必须得到批准。在另一种方法中,机械地,每个,比如星期三,用模型切割一个分支。然后它被放在前面的任何东西上。在这两种情况下,我们都会在服务服务中逐步引入新模型/代码,并对其延迟、内存、准确性等进行监控。

以上是关于生产环境中的 TensorFlow:如何重新训练您的模型的主要内容,如果未能解决你的问题,请参考以下文章

如何使用tensorflow的retrain.py重新训练多个初始实例

Python TensorFlow:如何使用优化器和 import_meta_graph 重新开始训练?

Tensorflow:您如何在模型训练期间实时监控 GPU 性能?

81TensorFlow 2 模型部署方法实践--TensorFlow Serving 部署模型

Tensorflow Serving 初探

Java应用XV使用Java中的TensorFlow来构建和训练机器学习模型