AssemblyAI 如何用 Amazon EC2 Spot 优化语音转文字推理成本
Cost-optimizing AssemblyAI speech-to-text inference on AWS with Amazon EC2 Spot
AssemblyAI 在 Amazon ECS 上混合使用 EC2 Spot 与 On-Demand GPU 实例运行语音转文字推理,通过 SQS 队列重试机制在 Spot 中断的 2 分钟预警内把任务重新入队,兼顾成本与 SLA。其 Spot 池覆盖 g4dn、g5、g6 三类 NVIDIA GPU 实例家族,并部署在 us-west-2 与 eu-west-2 以满足数据驻留合规。
译文尚不完整,完整内容请切换到原文。
语音转文本推理的计算量很大。每个音频文件都会触发一系列深度学习模型(声学模型、语言模型和后处理阶段)在 NVIDIA GPU 上运行,以满足延迟要求。在大规模场景下,这意味着数千个 GPU 实例持续运行。
AssemblyAI 需要一种方式,能够以经济高效的方式大规模运行 GPU 密集型推理工作负载,同时不牺牲客户所依赖的可用性和延迟保证。完全运行在按需实例上会成本过高。Spot 实例可带来显著节省,但当其他位置需要容量时,Amazon Elastic Compute Cloud(Amazon EC2)可在提前 2 分钟发出警告后回收这些实例。AssemblyAI 需要一种能够平稳吸收 Spot 中断、同时维持服务等级协议(SLA)承诺的架构。此外,包括医疗、金融和法律在内的受监管行业客户必须将音频数据保留在特定地理边界内。他们在欧洲 AWS 区域实施了严格的数据驻留配置。
AssemblyAI 在 AWS Marketplace 上提供,提供用于转录、说话人检测、情感分析、章节检测和个人可识别信息(PII)脱敏的 API。其模型为技术、媒体、医疗和金融服务等行业的高吞吐量工作负载转录和分析语音。
在本文中,我们将向您展示 AssemblyAI 如何为其语音转文本平台大规模运行成本优化的 AI 推理。该架构使用 Amazon Elastic Container Service(Amazon ECS)、Amazon Elastic Compute Cloud(Amazon EC2)Spot 实例和 Amazon Simple Queue Service(Amazon SQS)。这些服务共同组合出一个灵活的 NVIDIA GPU 机群、ECS 容量提供程序和基于队列的重试机制。其结果是在欧洲 AWS 区域维持 SLA 承诺的同时实现显著成本节省。
解决方案概览
AssemblyAI 的推理平台运行在 Amazon ECS 上,计算容量通过 ECS 容量提供程序管理。该机群在多个 NVIDIA GPU 实例系列中混合使用 Amazon EC2 Spot 实例和按需实例,每个 GPU 运行一个推理模型,规模达数千个实例。该架构建立在四大支柱之上,它们协同工作以实现成本优化且有弹性的推理:
- Amazon ECS 容量提供程序混合使用 Spot 和按需实例。
- 跨 EC2 实例类型(例如 g4dn.xlarge、g4dn.2xlarge、g5.xlarge、g5.4xlarge 和 g6.2xlarge)的多系列 GPU Spot 多样化。
- 使用 Amazon SQS 实现中断恢复的基于队列的重试架构。
- 跨美国西部(俄勒冈)us-west-2 和欧洲(伦敦)eu-west-2 的区域部署,以满足数据驻留合规要求。
下图说明了该解决方案的部署方式:
图 1:AssemblyAI 在 Amazon ECS 上的推理架构,使用 Amazon EC2 Spot GPU 实例和基于 Amazon SQS 的重试机制
Amazon ECS 集群在虚拟私有云(VPC)内跨多个可用区运行。该集群托管由 GPU 支持的 ECS 任务(显示为 ECS Task, GPU Spot 1 和 ECS Task GPU Spot 2),这些任务轮询队列并处理推理作业。每个任务从 Amazon Simple Storage Service(Amazon S3)检索音频文件,并将完成的转录写入结果存储,AssemblyAI 配置该存储以将输出交付给最终客户。
当 Spot 实例收到中断通知时,Amazon EventBridge 会调用 Spot 中断处理器(一个 AWS Lambda 函数)。该处理器将正在执行的任务返回到主任务 SQS 队列,以便另一个健康的 ECS 任务可以接手处理。客户配置其系统,将耗尽重试次数的任务路由到死信 SQS 队列以供排查。Amazon CloudWatch Metrics 监控集群的健康状况和 Spot 中断事件,为整个系统提供可观测性。
Amazon ECS 容量提供程序和 Spot 多样化
为了在不影响可靠性的前提下优化推理成本,AssemblyAI 在每个 ECS 集群内的单个容量提供程序策略中配置了多个容量提供程序。按需容量提供程序作为始终在线的基线,而 Spot 容量提供程序则跨越不同的 GPU 实例系列和可用区,以应对需求高峰。每个容量提供程序都与一个 Amazon EC2 Auto Scaling 组关联。Amazon ECS 托管扩缩容根据容量提供程序权重和待处理的推理任务自动扩缩容 GPU 实例。当任务队列增长时,Spot 容量提供程序会从多样化的资源池中请求额外实例。当需求下降时,实例会优雅地缩容。
Spot 最佳实践中最有效的方法之一是在广泛的实例类型上保持灵活性,以提高获得所需总计算容量的机会。AssemblyAI 的基础设施并不依赖单一的 GPU 实例系列,而是跨越三个 Amazon EC2 GPU 实例系列:
- g4dn 实例 – 由 NVIDIA T4 GPU 驱动,为标准的语音识别模型提供经济高效的基线。
- g5 实例 – 配备 NVIDIA A10G GPU,为要求更高的模型架构提供更高的吞吐量。
- g6 实例 – 采用 NVIDIA L4 GPU,为包括基于大语言模型的推理在内的更大模型提供更高的性价比。
通过将需求分散到不同的实例系列和规格上,AssemblyAI 可以从显著更大的可用 Spot 容量池中获取资源。使用价格容量优化分配策略,Amazon EC2 会从可用容量最高、价格最低的 Spot 容量池中预置实例,从而降低中断的可能性。
基于队列的重试机制以增强中断韧性
在 Spot 中断期间保持服务质量是一项核心设计要求。AssemblyAI 使用 Amazon SQS 将任务提交与执行解耦。当转录请求到达时,它会被放入 Amazon SQS 队列。运行在 GPU 实例上的 Amazon ECS 任务会轮询该队列,拉取任务并执行推理流水线。单个任务通常需要 15 秒到几分钟不等,具体取决于音频长度。
当 Spot 实例收到 2 分钟的中断通知时,重试流程如下:
- 能够在 2 分钟窗口内完成的任务会正常完成。需要更多时间的任务会被返回到 Amazon SQS 队列,在那里它们会立即可供其他工作线程使用。
- 另一个健康的 GPU 实例会接手该消息,可能位于不同的实例类型或不同的可用区,并完成推理。
为了缩短恢复时间,AssemblyAI 在大约 2 分钟内创建包含模型产物和容器镜像的自定义 Amazon Machine Images(AMI)。对于最终客户而言,Spot 中断的影响是处理时间略有增加,但转录会成功完成并按预期交付。
面向数据驻留的区域部署
在多个 AWS 区域运行使 AssemblyAI 能够支持受监管行业的客户,包括医疗保健、金融服务和法律服务,这些行业的音频数据绝不能离开特定的地理边界。每个 AWS 区域都运行完全独立的推理架构副本:各自的 Amazon SQS 队列、Amazon ECS 集群、容量提供程序和 GPU 集群。在这些欧洲区域中,多种 GPU 实例系列(g4dn、g5、g6)可用,且 Spot 定价具有竞争力。这种实例多样性支持可靠的基于 Spot 的推理服务,同时满足严格的数据驻留要求。
结果
通过在生产环境中运行带 GPU 的 Amazon EC2 Spot 实例,AssemblyAI 相比按需定价在推理计算上实现了 70% 的成本节省。随着平台的计算需求同比增长近 4 倍,基于 Spot 的架构保持了单位经济的可持续性。在这种规模下运营,AssemblyAI 认识到,跨实例系列和规模进行多样化是最大限度降低 Spot 中断率的最有效手段。g4dn、g5 和 g6 系列接入独立的容量池,因此当某个系列面临容量压力时,其他系列仍然可用。从第一天起就通过基于队列的重试和快速预热来设计容错能力,使 Spot 中断成为常规事件,同时保持 SLA 承诺。
结论
运行具有类似特征(GPU 计算上短时、可独立重试的任务)的批处理或近实时 AI 工作负载的团队可以应用此模式。首先从多样化实例系列和构建基于队列的容错能力入手,以利用高性价比的 Spot 基础设施,同时不牺牲可用性。
To get started with GPU tasks on Amazon ECS, see Amazon ECS for GPU workloads. To evaluate Spot availability for your workload, explore using Spot placement scores for accelerated compute and Amazon EC2 Spot Instances best practices. AssemblyAI’s Speech-to-Text API is available on AWS Marketplace. To learn more about their platform, visit assemblyai.com.
关于作者
Belair Albahagwi
Belair 是 AWS 的 ISV 技术客户经理,专攻容器和无服务器计算。他帮助企业客户在 Amazon ECS 和 EKS 上优化其工作负载。业余时间,Belair 喜欢旅行和户外活动。
Sandeep Kampa
Sandeep 是 AWS 的 ISV 解决方案架构师,与 AI/ML ISV 客户合作,在 AWS 上构建可扩展、高性价比的解决方案。他专注于帮助客户大规模部署生成式 AI 和机器学习工作负载。工作之余,Sandeep 喜欢探索 AI 研究的最新进展。
Mimi Chiang
Mimi 是 AssemblyAI 的软件工程师,负责构建和维护支撑大规模语音转文本推理的基础设施。她专注于 GPU 调度、容器编排和成本优化。工作之余,Mimi 喜欢享受完整的周末。
来源:AWS Machine Learning Blog · aws.amazon.com
