机器学习运维(MLOps)是一组用于自动化和简化机器学习(ML)工作流程和部署的实践。所选择的部署策略可以显著影响系统的性能和效用。所以要根据用例和需求,采用不一样的部署策略。在这篇文章中,我们将探讨三种常见的模型部署策略:批处理、实时和边缘计算。
批处理部署适合于不需要实时决策的场景,主要需要在指定的时间间隔处理大量数据。模型不是一直更新或对新数据作出反应,而是在一段时间内收集的一批数据上运行。该方法涉及在预定时间处理大块数据。常见的用例包括夜间风险评估、客户细分或预测性维护等。这种方法非常适合于实时洞察不重要的应用程序。
批处理能安排在非高峰时间,优化计算资源和减少相关成本。与实时系统相比,更容易实现和管理,因为它不需要持续的数据摄取和即时响应能力。
能够处理大型数据集,使其成为数据仓库、报告和离线分析等应用程序的理想选择。
例如我们想要分析电子商务平台的客户评论的情绪。使用预训练的情感分析模型,并定期将其应用于一批评论。
我们从CSV文件中读取客户评论数据,并以1000条为一批处理这些评论。对于每个批次,个人会使用情感分析流程来预测每个评论的情感(积极或消极),然后根据需要处理和存储结果。
实际的输出将取决于customer_reviews.csv文件的内容和预训练的情感分析模型的性能。
实时部署在数据到达时立即对其做处理,以此来实现即时操作。这种方法对需要实时数据处理和决策的应用程序是必不可少的。实时部署在处理数据并几乎即时提供输出时,适用于需要立即响应的应用程序,如欺诈检测、动态定价和实时个性化等。
提供即时反馈,对时间敏感的应用程序至关重要,支持在毫秒到秒之间做出决策。提供动态和响应的交互,支持与最终用户直接交互的应用程序,提供无可感知延迟的响应,能大大的提升用户粘性。能快速响应新出现的趋势或问题,提高运营效率和风险管理。
需要强大且可扩展的基础设施来处理可能的高吞吐量和低延迟需求。并且确保运行时间和性能可能既具挑战性又成本高昂。
我们希望对金融交易执行实时欺诈检测,需要部署一个预先训练的欺诈检测模型,并将其公开为web服务。
比如使用TensorFlow加载一个预训练的欺诈检测模型。然后我们创建一个Flask web应用程序,并定义一个endpoint /detect_fraud,它接受包含交易细节的JSON数据。对于每个传入请求,数据经过预处理等流程,输入模型并返回一个JSON响应,判断这条数据是不是具有欺诈性。
为了增加服务的响应速度,正常的情况下都是使用,使用Docker这样的容器化工具,并将容器部署到云平台或专用服务器上,并能进行自动化的资源调度和扩展。
边缘部署涉及在网络边缘的设备上运行机器学习模型,更接近数据生成的位置。这种方法在本地处理数据而不是将数据发送到集中式服务器来减少延迟和带宽使用。这种方法用于在将数据发送到中心服务器太慢或过于敏感的情况下,如无人驾驶汽车、智能摄像头等。
在本地处理数据,减少了向中心服务器回传数据的需要,节省了带宽,降低了成本。。通过在源附近处理数据来最大限度地减少延迟,很适合需要快速响应时间的应用程序。
独立于网络连接运行,即使在远程或不稳定的环境中也能确保持续的功能。并且敏感数据在设备上存储,最小化暴露和合规风险。
边缘设备的解决能力通常低于服务器环境,这可能限制了部署模型的复杂性。并且在众多边缘设备上部署和更新模型可能在技术上具有挑战性的,尤其是版本的管理。
我们以最简单的在移动电子设备上执行实时对象检测作为示例。使用TensorFlow Lite框架在Android设备上优化和部署预训练的对象检测模型。
以TensorFlow Lite格式加载一个预训练的对象检测模型,模型针对移动和嵌入式设备做了优化。
在主循环中,不断地从设备的相机中捕获帧,将它们传递给detect_objects函数,并为检测到的对象在帧上绘制边界框和标签。处理后的帧然后显示在设备的屏幕上。边框将以绿色绘制,对象标签将显示在每个边框的左上角。
选择正确的机器学习模型部署策略是确保高效性和成本效益的关键。以下是一些决定部署策略时需要仔细考虑的主要因素:
结合上述因素,你能够准确的通过具体的应用场景和业务需求来选择最适合的部署策略。这有助于优化性能,控制成本,并提升整体效率。。
了解批处理、实时和边缘部署策略的区别和应用程序是优化MLOps的基础。每种方法都提供了针对特定用例量身定制的独特优势,通过评估应用程序的需求和约束,可以再一次进行选择最符合目标的部署策略,为成功的AI集成和利用铺平道路。