AI/ML 的Sous-Chef:为什么你的第二位员工应该是 DevOps 工程师?

AI/ML 的Sous-Chef:为什么你的第二位员工应该是 DevOps 工程师?

以正确的顺序雇用正确的专业知识。这就是我们结束这篇博客的上一版本的方式 招聘人工智能成功:为什么你的第一位员工应该是数据工程师,顺便说一句,这是一篇很好的读物,你应该在这篇文章之前先读一读。AI/ML 工程师希望专注于构建和微调模型,而无需陷入基础设施即代码、监控基础设施或开发环境或任何一般 DevOps 等事情的泥潭。这是有道理的,DevOps 是一个平凡但重要的角色,我宁愿使用 AI 技术找到治疗癌症的方法。但是,在你寻求修复世界的过程中,你需要一个坚实的基础来构建。在你的努力中,你需要一个 “得力助手”,这就是 DevOps 工程师应该是你的第二个雇员。您的 DevOps 工程师的客户应该是您的 AI/ML 工程团队。DevOps 工程师可以缓解基础设施中的摩擦点,以便 AI/ML 人员可以专注于手头的任务。基础设施带来的任何问题都应该由 DevOps 工程师负责,以确保基础设施始终以船舶形式运行,主动,甚至在 AI/ML 团队抱怨基础设施太慢之前。DevOps 工程师应该能够提前几周/几个月预测这几周/几个月,以实施适当的解决方案,以便 AI/ML 团队能够取得进展。在这篇文章中,我们将展示为什么 DevOps 工程师应该在您聘用第一位主工程师后立即成为您的第二位工程师的一些原因。

监测

当您基于模型运行应用程序和 ETL 管道时,跟踪应用程序的各个方面至关重要。具体说来

  • 作业的运行时间
  • 代码回归
  • 应用程序日志
  • 运行状况服务 Endpoint
  • 监控负载以进行扩展

以及其他各种指标。原因是在部署新服务和功能时,由于各种未知原因,现有代码库可能会回归。正是出于这个原因,我们需要确保应用程序的所有方面都受到监控。市面上有几种工具,但除了应用程序性能监控 (APM) 之外,其中一种基本工具是 CPU、内存和磁盘。这种类型的监控更精细,您可以准确地判断您在代码的哪个部分遇到了问题。

扩展和灾难恢复

适用于单个用户的单个节点的功能可能不适用于具有数千个用户的数千个节点。在设计应用程序的可扩展性时,您需要考虑基础设施的一些限制,例如,基础设施需要时间来扩展和缩减,它不是即时的,那么如何管理负载呢?如上所述,您需要监控负载,然后在遇到瓶颈之前提前扩展。通常,通过增强单个实例,应用程序可以很好地进行垂直扩展。但最终,该单个实例将达到节点资源的限制,您将通过添加多个节点进行水平扩展。这会改变应用程序的访问方式,例如,会话是如何存储的?AIStor 和数据库等后端呢,我们是否需要扩展它们?通过进行监控,我们可以获得资源使用情况的基线,所有空间是在一周还是几个月内被占用?这种理解将帮助我们构建可以根据需求进行扩展的基础设施,而不会浪费太多未使用的资源。

CI/CD 管道

设置基础设施后,如果需要更新或更改,则需要先对其进行测试。对于 DevOps 工程师来说,即使是开发基础设施环境也被视为生产环境。这样做的原因是,如果开发基础设施因任何原因关闭,AI/ML 工程师如果不进行测试和建立信心,就无法进入生产部署阶段。这一切都是为了通过使用 CI/CD 管道的一系列步骤在开发环境中执行的一系列步骤来建立信心。这样,当我们使用相同的代码库进入生产环境时,我们确切地知道它将如何按预期工作。但是,整个管道不能手动设置,您需要自动执行测试和步骤,以便每次提交新代码库时,都会使用提供的基础设施测试整个应用程序。我们还可以对其进行设置,以便运行 CI/CD 作业的工作线程节点可以根据负载最大的时间根据需要进行扩展。如果我们只运行几个作业或部署,我们可以简单地在几个静态节点上运行它,但是随着我们扩展 CI/CD 管道基础设施,一直 24/7 运行节点是没有意义的,在非高峰时段,它们可以终止/关闭,因此只有运行少数作业所需的基本内容正在运行。

开发环境

环境需要尽可能地相互模仿以获得最佳结果。这意味着,在部署到生产环境之前,您需要在开发中测试代码,方法是将代码部署在多个节点上,一次以 Canary 模式部署几个节点,并密切关注监控系统,以确保部署尽可能顺利。一旦图表显示异常情况,我们就会停止、评估,然后回滚到以前的良好版本。除了这些用于部署生产就绪代码的环境之外,您还需要一些实例,开发人员可以在其中使用占用大量 CPU 的内容来测试他们的代码。将这些进程与开发代码库一起运行并不理想。您将看到与预期不符的结果,因为除了开发代码库之外,测试自己的代码的用户还占用了额外的资源。正确的方法是拥有具有专用资源的不同环境,开发人员可以使用这些资源来测试自己的代码库,而不会导致任何 “干扰邻居” 类型的问题。这甚至可以像在笔记本电脑上本地运行 Vagrant/Virtualbox with MinIO 并从那里扩展到本地或 EC2 一样简单。

基础设施即代码

无论您是否运行了几台服务器,启动基础设施的自动化代码都应该进行编码和版本控制。我们手动设置的日子已经一去不复返了,因为这不仅很麻烦,而且不可重复。我们希望能够编写和测试基础设施,以建立部署到不同环境的信心。此外,AI/ML 工程师甚至团队的新 DevOps 成员都无法通过查看 UI/CLI 控制台来了解基础设施的状态。这些模式仅在一定程度上有用,之后要了解更多详细信息,我们必须通过 SSH 连接到节点以弄清楚具体细节。通过对基础设施的所有部分进行编码,我们可以轻松地让新的团队成员加入,并且随着时间的推移,我们通常会了解对基础设施所做的更改。从现在开始的 6 个月后,您将不会记得用于设置特定基础设施的设置。

正确的专业知识顺序

毫无疑问,数据工程师应该是您的第一个员工。但是,如果您想留住数据工程师并专注于模型,那么您的第二个员工应该是 DevOps 工程师,他可以处理运行一流基础设施所带来的一切。因为正如您在上面看到的,在管理、维护和扩展基础设施方面还有很长的路要走。以上只是基础设施中您需要处理的许多其他事情的一个示例,例如轮换日志、更新操作系统版本、确保在更新期间软件包兼容,我们甚至没有讨论网络和气隙,这对于确保数据安全至关重要。

上一篇 下一篇