首页 文章

现实世界的机器学习 生产环境 系统如何运行?

提问于
浏览
0

亲爱的机器学习/ AI社区,

我只是一个崭露头角,有抱负的机器学习者,曾参与开放的在线数据集和一些为我的项目本地构建的POC . 我已经 Build 了一些模型并转换成了pickle对象,以避免重新训练 .

而这个问题总是困扰着我 . 真实的 生产环境 系统如何适用于ML算法?

说,我已经训练了我的ML算法有数百万的数据,我想将它移动到 生产环境 系统或在服务器上托管它 . 在现实世界中,它们会转化为泡菜对象吗?如果是这样,那将是巨大的腌制文件,不是 . 我在本地训练并转换为50000行数据本身在磁盘上为该腌制对象占用了300 Mb的空间 . 我不这么认为这是正确的方法 .

那么它是如何工作的,以避免我的ML算法重新训练并开始预测输入数据?我们如何实际将ML算法作为一个连续的在线学习者 . 例如,我构建了一个图像分类器,并开始预测传入的图像 . 但我想通过将传入的在线图像添加到我以前训练过的数据集来再次训练算法 . 可能不适用于每一个数据,但每天我希望将当天收到的所有数据合并,并重新训练我之前训练过的分类器用实际值预测的新100个图像 . 并且这种方法不应该影响我之前训练的算法来停止预测输入数据,因为这种重新训练可能需要基于计算资源和数据的时间 .

我用Google搜索并阅读了很多文章,但无法找到或理解我的上述问题 . 这让我每天都感到困惑 . 生产环境 系统也需要人工干预吗?还是有任何自动化的方法呢?

对上述问题的任何线索或答案都将非常有帮助和赞赏 . 如果我的问题没有意义或不可理解,请告诉我 .

这不是我想要的项目中心 . 只是现实 生产环境 ML系统示例的一般情况 .

先感谢您!

1 回答

  • 3

    请注意,这是非常广泛的,你的问题应该暂时搁置,但我试着简要总结一下你要问的问题:

    • "How does a real production system work?"
      嗯,它总是取决于您的产品规模,以及您在系统中使用ML / AI的方式 . 对于大多数部分,您可以在服务器或应用程序上使用deploy a model .
      请注意,部署不会根据您拥有的训练数据量进行线性扩展 . 相反,网络的大小完全取决于网络中的激活次数 . 请注意,在训练之后,您甚至可能不需要那么多的存储空间,因为例如CNN的连接数量非常有限,同时在训练期间保留了更多的数量 . 我强烈推荐Roger Grosse在size of a network上的幻灯片 . 这也与第二点直接相关 .

    • "How to avoid re-training?"
      据我所知,大多数系统不会定期进行再培训,至少对于较小的规模 . 这意味着网络将主要仅以推理模式运行,这具有上述关于网络规模(以及计算结果所花费的时间)的上述优点 . 然后,这也很大程度上取决于您部署ML模型的具体任务 . "standard categories"上的图像分类具有已经提供相当大的模型(AlexNet,Inception,ResNet,...)的好处,而机器翻译的模型主要取决于您的特定领域和词汇 .

    • "How would I go about re-training?"
      这实际上是棘手的部分,它背后有一个名为"bandit learning"的重要字段 . 问题是大多数传入的数据都是未标记的,即不能用于直接集成到新的训练阶段 . 相反,您依靠用户的反馈来让您了解哪些是错的或正确的 . 然而,并非每个用户对相同的机器翻译(或亚马逊等上的相同推荐)具有相同的评级,例如,因此判断您的系统是"right"还是"wrong"变得非常困难 .
      显然有很多方法可以自动标记(即图像的最近邻居或其他基于相似性的搜索) . 因此,如果您有连续的反馈/再训练循环,在线学习也是有效的 .

    对于较大规模的系统,扩展模型,每秒执行所需的预测/分类量也很重要 . 在我提供的TensorFlow部署页面的链接中也提到了这一点,并且主要构建在 Cloud /分布式体系结构之上,例如Hadoop或(最近)Kubernetes . 然而,对于较小的产品而言,这主要是过度杀伤,但其目的是以任意规模(可能需要)提供足够的资源 .

    至于机器学习模型的集成周期,有一个很好的概述this article . 我想通过强调这是一个非常自以为是的问题来结论,所以每个答案可能都不同!

相关问题