
图片由作者使用 Midjourney 创建
引言
将机器学习模型部署到现实世界是部署人工智能技术和系统的重要组成部分。不幸的是,模型部署之路可能很艰难。部署过程通常以那些试图将训练好的模型(漫长的数据准备和模型训练过程的结晶)带入广阔世界,并要求其在世界中保持良好性能所带来的挑战为特征。当机器学习模型必须在它所处的环境(通常发生剧烈变化)中持续运行时,就会出现这些挑战。
为了引起人们对模型部署相关的一些问题(以及解决方案)的关注,下面列出了一系列旨在指导初学者和从业者掌握最佳实践的技巧。这些技巧涵盖了从优化和容器化,到持续集成/持续部署(CI/CD)等部署流程,再到旨在使部署更加“黄金时段”可用性的监控和安全最佳实践等一系列主题。
1. 优化您的模型以用于生产
在实验室环境中,机器学习模型可以为了开发而牺牲生产相关的性能。然而,在现实世界中,机器学习模型需要进行优化才能实现其设计优势。如果没有优化,模型可能无法满足推理应用程序对其施加的延迟要求,可能会占用过多宝贵的CPU周期或占用大量内存,以至于在实际条件下无法使用。
量化、剪枝和知识蒸馏等增强功能为优化模型提供了希望。量化可以减少用于表示权重的位数,从而减小模型尺寸并加快推理速度。剪枝可以消除明显不必要的权重,从而精简模型。知识蒸馏可以帮助在大型模型和小型模型之间传递知识,从而提高训练效率。
TensorFlow Lite 和 ONNX 等工具能够为模型优化做出贡献。这些工具能够在转换过程中优化模型,从而减少在各种环境(包括嵌入式和移动设备)中使其准备好进行推理所需的精力。
2. 容器化您的应用程序
容器化将您的机器学习模型及其所有依赖项和要求打包在一起,创建一个可部署的单一工件,该工件几乎可以在任何环境中运行。容器化能够将您的模型运行在任何能够运行特定容器品牌的系统上,而与宿主系统的确切安装或配置无关。
Docker 是用于执行容器化的流行工具。Docker 有助于创建封装且可移植的软件包。Kubernetes 可以有效地管理容器的生命周期。使用一系列开发和运营最佳实践,您可以为 Kubernetes 部署准备一个容器化的 Django 应用程序,例如,使用自定义 API 并访问机器学习模型。
容器化如今是机器学习工程师的一项基本技能,尽管在追求更多机器学习知识时忽略了这看似无关紧要的工具集,但这会是一个错误。容器化可以成为扩大受众群体并轻松管理生产中项目的过程中的一个重要早期步骤。
3. 实现持续集成和持续部署
持续集成和持续部署(CI/CD)可以提高模型部署的可靠性。各种此类技术和工具能够实现模型测试、部署和更新的自动化。
CI/CD 方法使得在系统测试、部署以及重新加载和更新的推出过程中,异常处理变得无缝。值得注意的是,为机器学习准备和使用 CI/CD 时可能遇到的问题,并不比部署软件时遇到的问题更麻烦。这有助于使其在机器学习模型部署和管理中得到广泛采用。
CI 和 CD 过程可以利用 Jenkins 和 GitHub Actions 等 CI/CD 工具来完成。Jenkins 是一个开源自动化服务器,能够让开发人员可靠地构建、测试和部署他们的代码。GitHub Actions 提供直接集成到 GitHub 存储库中的灵活 CI/CD 工作流。它们都通过在方便的配置文件中定义工具管道,为自动化整个软件开发以及机器学习模型的部署和管理生命周期提供了价值。
4. 监控生产中的模型性能
模型部署后,需要密切监控模型性能,以确保模型继续为组织带来预期的价值。各种工具可以帮助我们监控性能,但监控性能不仅仅是看着终端窗口中闪过的数据。例如,虽然可以使用各种工具和方法来监控机器学习模型的准确性、响应时间和资源使用情况,但我们也应该采用可靠的日志记录包和策略。Kubernetes 等工具具有一个仪表板,可以显示响应时间、关键交易的结果和请求速率。
此外,至关重要的是建立自动警报系统,在模型性能出现任何显著偏差时通知机器学习运维工程师和其他利益相关者。这种主动的方法可以立即进行调查和补救,而不是在例行日志检查中注意到时才进行,从而最大程度地减少潜在的中断。您的模型是否正在经历漂移?最好现在就知道。
最后,将这些监控解决方案的集合与集中式仪表板集成,可以提供所有已部署模型的整体视图,从而能够更有效地管理和优化机器学习操作。不要忽视“一切尽在一个地方”的价值。
5. 确保模型安全和合规
我们将以从应用程序角度来看普遍显而易见,但从模型角度来看却常常被忽略的事情来结束:安全至关重要。明确说明:在部署模型时,不要忽视合规性和安全性。安全漏洞可能采取多种形式,而不保护数据的后果是巨大的。
为了保护机器学习模型,您可以采取一些简单的步骤,这些步骤可以产生巨大的影响。首先,在模型静止和传输过程中对其进行保护,并限制谁可以访问模型及其输入。潜在的访问点越少,发生泄露的机会就越少。模型的架构在防御中也起着作用,因此请注意模型的内部结构。最后,监管合规性是另一个重要问题,在部署模型时必须考虑,原因有很多,从做一个负责任的参与者到避免当局的制裁。
总结
我们应该记住,部署机器学习模型涉及几个关键实践。优化有助于模型更好地运行。容器化对于当前和规模化的系统组合很重要。持续集成和持续部署有助于快速准确地持续交付预测。而监控、确保安全和合规性有助于保护模型并使其可供用户使用。

从开发到生产:任务和工具示例的时间线
由作者创建的可视化
在部署之前,将这些实践牢记在心,您的机器学习模型将有最大的机会取得成功所需的成果。
暂无评论。