了解 Gcore 的 EDA 如何增强系统响应能力、可扩展性和灵活性,以执行 AI 驱动的任务,例如为视频内容生成字幕。
译自 Orchestrating AI: Event-Driven Architectures for Complex AI Workflows,作者 Georgina Tryfou。
作为云云众生s的运营者,我现在也写了许多利用 AI 的工具,也正在考虑如何将不同的任务组合的问题,我的心中也有一个架构,与 Gcore 有些相似,后面我会尝试用自己的方式完成。
在当前人工智能狂热的氛围下,对于希望通过人工智能能力来增强其产品服务的公司来说,复杂人工智能工作流的实现正变得越来越流行。在本文中,我将分享一个幕后视角,介绍我们如何在 Gcore 中将事件驱动架构 (EDA) 应用于复杂人工智能工作流。
我将带你了解最初遇到的挑战、已做出的架构决策以及在动态的现实场景中使用 EDA 的结果,展示 EDA 如何提高系统响应能力、可扩展性和灵活性,以管理视频内容字幕生成等人工智能驱动的任务。
EDA是围绕事件(而不是预先定义的静态操作)的产生、检测、消费和反应而设计的一种模式。事件是系统内发生的状态或更新的任何重大变化。EDA允许系统的不同部分独立地通信和操作,由这些事件的发生推动,这些事件可为从用户行为到已完成进程的任何内容。
在人工智能工作流管理中采用EDA标志着传统架构(例如单体式、面向服务或基于轮询的架构)发生了重大发展。它的异步通信、解耦和动态可扩展性原则与现代人工智能应用程序的需求完全一致,具有三个主要好处:
- 该架构的模块化特性使其更易于独立扩展特定组件,例如无需影响系统其他部分便可在客服应用程序需求高峰期扩展语言处理功能。
- EDA 的模块化设计简化了使用新版本更新或替换模型的进程,正如医疗技术环境中所示,其中预测算法会经常优化和部署,以跟上医疗进步或新数据。
- EDA 的灵活性允许无缝集成各种模型来实现复杂的人工智能工作流,例如在制造中将图像识别与预测性维护相结合,增强系统稳健性和运营效率。
这些在不同领域观察到的好处增强了人工智能系统的可扩展性和响应性,还增强了它们的鲁棒性和适应性,使得 EDA 对于管理工业界和用例中的复杂多模型人工智能工作流不可或缺。
我们在 Gcore Video Streaming AI 功能中实施了 EDA。我们应用 EDA 的一种方式是使用 AI 为视频生成字幕。
这个项目以提高多种语言从原始视频内容生成字幕的效率、延迟、可扩展性和可靠性为目标。该过程涉及几个复杂的步骤:
- 视频解压:视频文件将解压或转码成适合处理的格式。
- 语音检测:视频中出现语音的部分经专门的机器学习 (ML) 模型辨识出来,与背景噪音或静音区分开来。
- 语音转文本(转录):检测到的语音转化为文本。这一步需使用经过训练的复杂语音识别模型,该类模型能够处理一系列语言、口音和方言。
- 文本后处理:更正转录中的错误、标点和语法。对文本进行格式化,使其与视频的时间匹配;例如,可以将其拆分为定时字幕。
- 翻译(可选):如果需要多语言字幕,则可以将转录的文本翻译成一种或多种目标语言,同样可以通过使用专门的机器翻译模型进行推断。
- 字幕同步:为字幕显示设定时间,与视频中的语音匹配,以便在听到相应语音时字幕准确无误地显示在屏幕上。
这些步骤中的每一个都需要专门的人工智能模型或算法,且可能需要以实时或接近实时的方式处理数据,尤其是在现场直播场景中。结果呢?巨大的复杂性。
复杂性不仅来自于与每项任务相关的技术挑战,还来自于有效管理步骤之间的数据流、处理错误或异常以及根据需求动态扩展资源的需要。
在追求编排如此复杂而要求苛刻的 AI 工作流的过程中,我们设计了一个 AI 系统,该系统通过定义明确的 EDA,以精准和敏捷的方式运行。此平台的架构概述如下:它解决了 AI 驱动的各个阶段的任务,促进了组件之间的通信,并确保可以动态扩展并自主处理各个任务。
Gcore 流媒体平台 AI 字幕生成工作流程
Gcore 流媒体 AI 平台后端的基础是四个核心组件。所有这些组件都具有多功能性并且对于广泛的 AI 应用程序至关重要。
该架构的前端是 API 服务,它使用强大的 Django 框架。这是用户交互的主要界面,并处理对各种服务的传入请求,包括 转录 和内容审核服务,如 裸露检测。此层验证并解析传入请求,触发工作流中后续任务的级联,如上图最左侧所示,用户向 API 服务发起转录请求。
深入后端,我们利用 Celery,这是一个异步任务队列,充当强大的后台处理引擎。Celery 的任务是管理 AI 进程,例如将音频转录为文本或分析内容以查找裸露,以及其他独立进程,例如将转录的内容同步到字幕中。Celery 与充当消息代理的 Redis 结合使用,编排这些任务并确保每个任务的启动和完成都由预定义事件的发生驱动。
Celery 处理 AI 工作流的能力通过一系列用于编排复杂工作流的高级功能得到增强:组、链和和弦。这些工具允许将高级、复杂的 AI 任务分解为细粒度的子任务,处理它们的依赖关系,并汇总它们的结果。
Redis 在我们的系统中扮演着至关重要的角色,作为代理和中介,管理着后端的任务分配和协调。它利用其快速、内存中数据结构存储来高效地处理任务队列。在架构中,任务签名和链充当控制任务执行流程和逻辑的中介。这种中介基于指示任务完成的事件信号。
Redis 快速处理这些信号的能力对于维持动态且响应式的工作流至关重要,如上图所示:任务由 Redis 代理接收并定向到适当的处理容器,并在推理后收集其结果,以实现无缝的任务转换和数据完整性。
每个 AI Celery 工作器都致力于一项特定的 AI 任务,部署和管理 AI 模型,例如 Whisper 用于转录,Pyannote 用于语音活动检测 (VAD)。这些工作器在隔离的环境中运行,以便以受控且安全的方式处理每项任务,最大程度地降低任务之间相互干扰的风险。此设置通过允许每个工作器根据任务需求独立扩展来增强我们系统的可扩展性,同时确保 AI 模型执行的高可靠性和效率。
我刚才描述的 Gcore 后端产生了三个主要好处,这些好处对于 AI 工作流尤为重要:可扩展性、可靠性和延迟降低。
该平台通过动态分配云资源并利用 GPU 加速来处理密集型 ML 任务,从而扩展以处理不同的需求。这确保了无缝扩展,避免了传统系统中常见的性能瓶颈和高成本。通过实时调整计算能力,该系统在高峰期和非高峰期都能有效地管理工作负载,而不会影响性能。
Gcore 视频流 AI 功能均设计为高可靠性,具有强大的容错能力和复杂错误处理功能。数据复制和自动恢复机制等策略可确保系统在故障期间也能持续运行。在视频转录中,如果一段音频损坏,我们的系统可以跳过或重试处理该段,而不是浪费资源丢弃或重试整个音轨。
通过最小化空闲时间和提高任务之间的转换速度,可以降低 AI 元素的系统延迟。我们采用三种关键策略:
- 将大型任务细分为较小的部分,以便在多个 GPU 上并行处理。
- 优化工作流以实现即时任务转换。
- 智能调度资源以充分利用计算资产。
在视频转录中,我们不会一次处理整个视频,而是将其分解为多个片段以进行并发处理。这种方法缩短了转录时间并确保高效利用资源,从而提高了系统的整体响应能力。
采用此系统彻底改变了 Gcore 视频流后端中复杂 AI 工作流的管理方式。具体而言,EDA 使我们能够减少分析时间、并行化 AI 任务、独立扩展 AI 工作人员并确保系统灵活性。
- 减少分析时间:通过利用 EDA,我们大幅减少了使用一组预训练模型分析单个视频所需的时间。这意味着可以更快地处理视频,以执行字幕生成和内容审核等任务。
- 并行化 AI 任务:AI 任务的并行处理意味着将复杂的过程分解为较小、可管理的任务,这些任务可以同时执行。这种方法加快了整个过程并优化了计算资源的使用。
- 独立扩展 AI 工作人员:了解不同 AI 任务的多样化需求,我们的架构根据每个任务的特定要求扩展 AI 工作人员。例如,一个字幕生成请求可能会触发一个用于 Pyannote(用于语音活动检测)的任务,并可能触发 100 个用于 Whisper(用于语音转文本)的任务,而只有后者需要动态扩展,因为需求较高。
- 确保系统灵活性:我们的目标是创建一个高度灵活的系统,能够快速适应任何新的 AI 请求。这需要能够以临时方式加载模型,以便我们的系统能够立即响应并满足新的或不断变化的 AI 需求,而无需进行重大重新配置。
分享就是关怀:以下是设置自己的 EDA 以立即获得最佳 AI 工作流结果时需要牢记的三件事。
- 避免常见的陷阱:从一开始就设计具有容错能力的系统。预见到各个组件中潜在的故障,并确保架构能够从容地处理这些事件,而不会中断整个工作流。有效的错误处理和重试机制至关重要。
- 选择正确的拓扑:实现中介模式拓扑可以极大地简化业务逻辑的实现以及 AI 模型的模块化和可重用性。最初采用代理拓扑时,由于其线性通信模型,我们在管理复杂 AI 任务时遇到了限制。为了应对这些挑战并提高我们系统的可扩展性和模块化,我们过渡到中介拓扑。此更改引入了一个中央中介来管理 AI 业务逻辑和协调事件,允许组件独立且更有效地运行。这种转变简化了开发过程,并显著增强了系统的适应性和鲁棒性。
- 计划快速集成:灵活性是为 AI 工作流设计的任何架构的关键。允许快速添加和集成新模型到最终服务中,这在快速发展的领域中至关重要,在该领域中,快速采用和部署新模型的能力可以提供显着的竞争优势。
我们一直在展望未来,并在 Gcore 创新我们的 EDA AI 系统。两个未来的方向看起来特别有希望。
纳入持续学习和模型适应机制需要定期使用新数据更新模型,而且不太明显的是,根据实时性能指标和反馈循环动态调整工作流和流程。随着 AI 模型在复杂性和能力方面不断增长,开发用于持续评估和部署的强大系统变得至关重要。这包括自动性能监控、版本控制和无缝部署更新的模型,而不会中断服务。
我们的架构旨在适应人工智能的不断变化。虽然大型语言模型 (LLM) 和生成式人工智能 (GenAI) 的兴起可能表明传统的 AI 推理工作流可能过时,但现实情况是,我们提出的架构支持 AI 部署的关键领域,例如持续模型学习和评估。我们事件驱动系统的灵活性使其非常适合集成 LLM 以增强决策制定过程,并根据 GenAI 的能力调整工作流,其中 AI 模型将越来越多地被更强大的模型所取代。
在 Gcore,我们发现采用事件驱动架构 (EDA) 进行工作流处理为在云和流环境中管理复杂 AI 系统的可扩展性、可靠性和效率提供了显著优势。此方法解决了关键挑战,包括大规模 ML 模型的动态扩展、系统稳健性和延迟降低。EDA 已被证明对于可扩展且高效的 AI 系统的演进至关重要。