人工智能与 Kubernetes
和科技行业的许多人一样,人工智能 (AI) 已成为我日常工作中的重要议题。我开始探索“AI”如何融入 Kubernetes 的世界,以及 Kubernetes 如何与 AI 相辅相成。这篇文章将开启一个系列文章,探讨我所学习的 AI 和 Kubernetes 相关知识。
Kubernetes 上的 AI 工作负载类型
为了描述工程师在 Kubernetes 上运行的 AI 工作负载,我们需要一些术语。在本文中,我将描述两种主要的工作负载类型:训练和推理。这两个术语分别描述了平台工程师为实现 AI 工作负载而开展的工作的不同方面。在本文中,我将重点介绍 AI 工作负载从概念到生产过程中的两个角色。平台工程师在设计模型的数据科学家和与这些数据科学家设计的模型的训练实现进行交互的最终用户之间架起了桥梁。
数据科学家设计模型,而平台工程师在使模型在硬件上运行方面发挥着重要作用。
在进入 AI 模型的生产运行阶段之前,还有很多工作要做。数据科学家需要选择模型类型、实现模型(程序“大脑”的结构)、确定模型目标,并收集训练数据。基础设施工程师则负责管理训练模型和为最终用户运行模型所需的大量计算资源。从设计模型到交付给用户,第一步就是训练。
注意:AI 训练工作负载通常是一种有状态工作负载,您可以在我的帖子中了解更多信息。
训练工作量
“训练”模型是指创建或改进模型以实现其预期用途的过程。它本质上是模型生命周期的学习阶段。在训练过程中,模型会被输入大量数据。在此过程中,人工智能通过算法调整模型参数来“学习”训练数据中的模式和关系。这是人们在讨论人工智能的海量计算和能耗需求时通常谈论的主要工作负载。
在训练过程中,人工智能模型会被输入大量数据,它会从这些数据中“学习”,并通过算法调整自身的参数。
团队使用预先训练好的模型,而不是从头开始训练自己的模型,这正成为一种常见的策略。然而,通用人工智能通常无法很好地处理特定用例。对于需要定制人工智能的场景,团队可能会进行类似的“训练”步骤来定制模型,而无需对其进行全面训练。我们称之为“微调”。我将在其他时间深入探讨微调策略,但这篇关于 Google Cloud Gemini 模型调优的概述是一个很好的入门资源。
为什么使用 Kubernetes 进行训练
Kubernetes 作为 AI 训练工作负载的平台意义非凡。作为一个分布式系统,Kubernetes 旨在管理海量分布式基础设施及其带来的网络挑战。训练工作负载对硬件要求极高,而 Kubernetes 可以通过 GPU、TPU 和其他专用硬件来支持这些硬件。模型的规模差异很大——从相当简单到非常复杂且资源密集型。扩展性是 Kubernetes 的核心竞争力之一,这意味着它能够管理训练工作负载需求的变化。
Kubernetes 还具有极强的可扩展性,这意味着它可以与其他实用工具集成,例如用于大规模训练工作负载的可观察性/监控。一个完整的生态系统已经出现,其中充满了适用于 Kubernetes 上的 AI/批处理/高性能计算 (HPC) 工作负载的实用工具。Kueue就是这样一个工具——一个 Kubernetes 原生的开源项目,用于管理 Kubernetes 上批处理工作负载的队列。要了解更多关于使用 Kueue 在 Kubernetes 上处理批处理工作负载的信息,您可以查看本教程。您还可以在本指南中了解更多关于如何在 Google Cloud 的 GKE 上运行批处理工作负载的信息,该指南介绍了如何在 Kubernetes 上使用 GPU 运行批处理工作负载。
推理工作负载
可以说,训练能让人工智能成为它未来发展成的“专家”。运行预先训练的模型本身就是一种工作负载。这些“推理”工作负载通常比“训练”工作负载耗费的资源少得多,但推理工作负载的资源需求可能差异很大。IBM 将“人工智能推理”定义为:“通过训练好的人工智能模型运行实时数据以进行预测或解决任务的过程。”
“推理工作负载”描述的是运行一个已训练好的模型。该模型应该能够相对较好地完成其预期任务。
推理工作负载的范围很广,从相当简单、轻量级的实现,到更加复杂且资源密集型的实现。“推理工作负载”一词可以描述预先训练的AI模型的独立、主动运行的实现。或者,它可以描述本质上作为大型应用程序中的后端服务运行的AI模型,通常采用微服务架构。这个术语似乎被用作任何运行经过训练的AI模型的情况的统称。我听说它与“服务工作负载”和“预测工作负载”交替使用。
为什么使用 Kubernetes 进行推理
推理工作负载可能具有多种资源需求。有些工作负载可能轻量级,可在 CPU 上运行,而有些工作负载则可能需要强大的 GPU 才能实现最佳性能。Kubernetes 擅长管理异构硬件,让您能够为每个推理工作负载分配合适的资源,以实现最佳效率。
Kubernetes 为推理工作负载的使用方式提供了灵活性。用户可以将其作为独立应用程序直接与其交互,也可以将其作为微服务的一部分通过单独的前端进行交互。无论工作负载是独立的还是整体的一部分,我们都将运行 AI 模型的工作负载称为“推理”。
关于术语
在撰写这篇博文的过程中,我了解到 AI 工作负载的术语仍在积极确定中。“推理”目前与“服务”、“预测”等词互换使用。词语本身就有意义,但当其含义尚在确定中时,尽可能清晰地表达使用术语的含义就显得尤为重要。
我认为现有 AI 术语未能很好地涵盖的一个领域是运行模型和运行完整 AI 应用程序之间的区别。我还看到过,“推理”系列术语不仅用于描述正在运行的模型,还用于描述它所属的完整应用程序,尤其是在演讲者重点关注该应用程序的 AI 方面时。
值得注意的是,Kubernetes 不仅适合运行 AI 部分,也适合运行包含 AI 模型的应用程序以及相关服务。像 Ray 这样的服务框架不仅是管理 AI 模型的有用工具,也是管理其周边应用程序的有用工具。我可能会在未来的博客文章中更深入地探讨 Ray。如果您想了解更多关于 Ray 的信息,可以查看这篇关于 Ray 在 GKE 上的博客文章。
人工智能模型通常在为用户服务的大型应用程序中发挥作用。
最后,谈论AI工作负载时一定要小心!尽量清晰地解释你的意思,这样我们才能一起学习和理解!
定制人工智能:一切都与环境有关
我很享受学习“AI”如何融入“Kubernetes”世界,而且还有很多东西需要学习!在这篇文章中,我们探讨了 AI 训练、推理和服务工作负载,以及为什么要在 Kubernetes 上运行它们。这些工作负载类型对于理解在 Kubernetes 上运行 AI 模型的意义非常有帮助。但 AI 的真正价值在于它能够理解并传达上下文信息。为了使通用 AI 模型在许多用例中发挥作用,需要让它了解其运行的上下文以及它所扮演的角色。“微调”是指定制通用模型的技术,通常是通过部分重新训练来实现的。还有其他技术,例如 RAG 和快速工程,可用于定制通用模型的响应,而无需更改模型本身。我将在以后的博客文章中深入探讨这些技术。
文章来源:https://dev.to/googlecloud/ai-kubernetes-1957