为什么机器学习部署起来这么难?
作者头像
  • 张宇
  • 2019-12-09 07:16:17 2

根据我的经验,尽管机器学习项目在理论上具有巨大潜力,但真正成功投入生产的项目却寥寥无几。其中一个主要原因是部署过程中的挑战。为了帮助企业通过人工智能创造价值,大规模部署机器学习(ML)模型已成为一个重要挑战。

在从事多个AI项目的过程中,我发现对于那些渴望利用人工智能创造价值的公司来说,部署机器学习模型是一项艰巨的任务。成功的部署不仅需要强大的技术支持,还需要深入理解整个过程的风险管理和最佳实践。

部署的机器学习模型可以定义为能够无缝集成到生产环境中的代码单元,可以接收输入并返回输出。然而,数据科学家们通常需要将他们的模型进行工程改造,以适应生产环境的要求。在这个过程中,会遇到一些常见的数据科学难题。

部署挑战

机器学习项目面临的挑战独特而复杂。以下是一些关键问题:

编程语言管理

机器学习应用通常由不同编程语言编写而成,如R、Python等。这些语言之间存在兼容性问题,导致部署过程复杂化。例如,虽然Python和R是机器学习应用中最常用的编程语言,但在生产环境中部署这些模型却面临诸多限制。将Python或R模型移植到C++或Java等语言中,可能会导致性能下降(如速度和准确性)。此外,R包在新版本发布时可能崩溃,而R语言本身处理大数据的能力有限。尽管R在原型设计中表现出色,但将其转化为生产级应用仍然需要将其翻译成Python或C++等语言。

容器化技术如Docker可以解决由多种工具引入的不兼容性和可移植性问题,但自动依赖项检查、错误检查、测试和构建工具难以克服跨语言障碍。可重复性也是个挑战。实际上,数据科学家可能使用不同的编程语言、库或同一库的不同版本来构建多个模型版本。手动追踪这些依赖关系困难重重。为了应对这些挑战,需要一种机器学习生命周期工具,能够在训练阶段自动追踪并记录这些依赖项,并将它们作为代码配置的一部分,然后与训练好的模型一起打包成随时可以部署的工件。

建议使用一种工具或平台,可以立即将代码从一种语言转换为另一种语言,或者允许数据科学家团队在API背后部署模型,以便在任何地方集成它们。

计算能力和GPU

深度神经网络需要大量的计算资源进行训练和推理。用户希望算法运行得更快,但对于许多用户来说,这可能是个挑战。此外,许多生产级别的机器学习依赖于GPU,但它们既稀缺又昂贵,增加了机器学习扩展的难度。

可移植性

模型部署的一个有趣挑战是缺乏可移植性。遗留分析系统经常遇到这种情况。由于缺乏将软件组件轻松迁移到另一个主机环境并在那里运行的能力,这些组件可能被锁定在特定平台上。这为数据科学家在创建和部署模型时带来困扰。

扩展性

对于许多AI项目而言,扩展性是一个实际问题。需要确保模型能够随着消费环境的需求增长而扩展。在项目初期,我们通常依赖于相对静态的数据集。但当模型进入生产环境时,它将接触到大量数据和数据传输形式。团队需要一些工具来监控和处理性能和扩展性方面的问题。采用微服务架构可以帮助实现消费分析的可扩展性。团队应该能够通过简单的配置更改快速地将模型从批处理迁移到实时处理。同样,团队也应该有扩展计算和内存占用的选项,以支持更复杂的工作负载。

峰值计算

模型在训练完成后并不会一直被使用。只有在需要的时候才会被调用。这意味着你可能只需要在某些时段支持大量的API请求。因此,如何动态地扩展或缩减服务以避免不必要的服务器成本成为一个挑战。

模型稳定性与鲁棒性

我们花费大量时间准备模型,使其稳定且鲁棒,以便能够服务于大量用户。这通常需要大量的工作。在许多情况下,整个模型需要使用适合系统架构的语言重新编码。这通常会导致大量的工作,从而导致数月的部署延迟。完成后,还需将其集成到公司的IT架构中,包括之前提到的所有库问题。此外,在生产环境中访问数据也常常是一项困难的任务。

更多挑战

在实际项目中,我还注意到以下问题: - 如果改变输入特征,其他特征的重要性、权重或使用情况也可能发生变化。机器系统需要设计得易于跟踪特征工程和选择更改。当模型不断迭代和改进时,跟踪配置更新同时保持配置的清晰性和灵活性成为额外的负担。 - 有些数据输入可能会随着时间变化。我们需要一种方法来理解和跟踪这些变化,以便全面了解我们的系统。 - 在机器学习应用中,会出现一些传统单元测试和集成测试无法捕捉的错误。例如,部署错误的模型版本、忘记某个特征或在过时的数据集上训练。

测试与验证

我们知道,随着数据的变化和新方法的出现,模型会不断发展。因此,每次变化都需要重新验证模型的功能。这些验证步骤引入了几个挑战: - 除了离线测试外,评估生产模型的功能也非常重要。通常,我们会在此过程中规划部署策略和监控部分。 - 相比于传统软件应用,机器学习模型需要更频繁地更新。

自动化机器学习平台

自动化机器学习平台可以帮助快速生成模型。这些平台可以支持多个模型的开发和比较,因此企业可以选择最符合其预测准确性、延迟和计算资源需求的模型。大约90%的企业机器学习模型可以通过自动化手段开发。数据科学家可以与业务人员合作,开发目前自动化无法完成的小部分模型。许多模型会经历漂移(即性能随时间降低),因此需要持续监控已部署的模型。每个部署的模型都应该记录所有的输入、输出和异常。模型部署平台需要提供日志存储和模型功能可视化。密切监控模型功能是有效管理机器学习模型生命周期的关键。

发布策略

探索多种部署软件的方式,“影子模式”和“金丝雀部署”对机器学习应用特别有用。在“影子模式”中,你可以捕获生产环境中新模型的输入和预测,而不实际提供这些预测。相反,你可以自由地分析结果,如果发现错误,也不会产生严重后果。当你的架构成熟时,可以考虑启用渐进或“金丝雀”版本。这种做法是指你可以向一小部分客户发布产品,而不是一次性全部发布。这需要更成熟的工具,但可以最小化错误。

总结

尽管机器学习仍在初级阶段,软件和硬件组件都在不断发展以满足其当前需求。Docker/Kubernetes和微服务体系架构可以用来解决异构性和基础设施方面的挑战。现有的工具可以单独解决一些问题。我认为,将所有这些工具结合起来以实现机器学习的自动化是当前面临的最大挑战。部署机器学习既困难又复杂,但一些新的架构和产品正在帮助数据科学家。随着越来越多的公司扩展其数据科学操作,他们也在实现使模型部署更加容易的工具。

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