为什么机器学习部署起来这么难?
作者头像
  • 郭懿
  • 2019-12-09 07:34:36 1

导读

根据我在顾问领域的经验,很少有机器学习项目能够成功地投入生产。人工智能项目可能会因为多种原因失败,其中一个重要原因是部署问题。为了降低失败的风险,决策者需要充分理解部署过程及其关键环节。

部署挑战

部署的模型是指能够无缝集成到生产环境中的任何代码单元,它可以接收输入并返回结果。然而,大规模部署机器学习(ML)模型面临诸多挑战。以下是一些常见的问题:

管理编程语言

机器学习应用程序通常使用不同的编程语言编写,如R、Python等。这些语言之间存在兼容性问题。例如,虽然Python和R是最常用的编程语言,但它们在生产环境中的应用却受到限制。将Python或R模型移植到C++或Java等生产语言中可能会影响模型性能。此外,新版本的R包可能不稳定,而R本身在处理大数据方面速度较慢。

为了应对这些挑战,可以使用Docker等容器化技术解决兼容性和可移植性问题。然而,自动依赖项检查、错误检查、测试和构建工具在跨语言障碍时可能无法发挥作用。另外,手动跟踪依赖关系十分困难,因此需要一个机器学习生命周期工具来自动记录这些依赖项,并将它们打包成随时可以部署的工件。

计算能力和GPU

神经网络通常需要大量的计算资源,尤其是在训练和推理过程中。此外,许多生产级机器学习依赖于GPU,但GPU既稀缺又昂贵,增加了部署的复杂性。

可移植性和可扩展性

部署模型时,可移植性是一个重要的挑战。旧的分析系统通常难以移植到新的环境。此外,模型需要具备良好的可扩展性,以适应不断增加的数据量和功能需求。采用微服务架构可以帮助团队快速调整模型,以适应不同的处理模式,并扩展计算和内存资源以支持更复杂的工作负载。

机器学习峰值计算

机器学习算法并非时时都需要运行。用户只会在需要时调用它们。例如,上午8:00可能只需要处理100个API调用,但在8:30可能需要处理10,000个API调用。动态扩展和减少服务以避免不必要的成本是一个挑战。

模型的稳定性和鲁棒性

模型需要稳定且鲁棒,以服务大量用户。这通常需要大量的工作,包括重新编码模型以适应特定的架构。完成编码后,还需要将其集成到公司的IT架构中,这可能涉及各种库的问题。此外,在生产环境中访问数据也是一项艰巨的任务。

其他挑战

在实际项目中,我还注意到以下问题: - 如果输入特征发生变化,其他特征的重要性、权重或使用也可能改变。机器系统必须设计为易于跟踪特征工程和选择更改。 - 数据输入可能会随时间变化,需要一种方法来了解和跟踪这些变化。 - 机器学习应用程序中可能出现一些传统的单元/集成测试无法识别的错误,例如部署错误的模型版本、遗忘某些特征以及在过时的数据集上进行训练。

测试和验证

机器学习模型需要频繁更新,以适应数据更改和新方法。因此,每次更改时都需要重新验证模型的功能。这些验证步骤引入了几个挑战: - 除了离线测试外,还需要评估生产模型的功能。 - 监控已部署的模型并记录所有输入、输出和异常是至关重要的。

自动化机器学习平台

自动化机器学习平台可以快速生成模型,支持多个模型的开发和比较,帮助企业选择最适合其需求的模型。许多模型会经历漂移(功能随时间降低),因此需要监控已部署的模型。每个部署的模型都需要记录所有的输入、输出和异常,模型部署平台需要提供日志存储和模型功能可视化。

发布策略

探索多种部署方式,“影子模式”和“金丝雀”部署对机器学习应用程序特别有用。在“影子模式”中,可以捕获新模型的输入和预测而不实际服务这些预测。当架构成熟时,可以逐步向一部分用户发布产品,以最小化错误。

总结

机器学习仍处于初级阶段,软件和硬件组件都在不断发展以满足当前的需求。Docker/Kubernetes和微服务架构可以帮助解决异构性和基础设施方面的挑战。现有的工具可以单独解决一些问题,但将这些工具结合在一起以实现ML的规模化运营仍然是当前最大的挑战。

部署机器学习仍然具有挑战性,但新的架构和产品正在帮助数据科学家简化这个过程。随着越来越多的公司扩展数据科学操作,他们也在开发使模型部署更容易的工具。

    本文来源:图灵汇
责任编辑: : 郭懿
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
部署机器这么起来为什么学习
    下一篇