AWS 与 NVIDIA 合作:MPS + Triton 将 ASR 推理成本降低 75%
AWS、NVIDIA 与医疗 AI 公司 Heidi Health 联合演示,在 Amazon EC2 上结合 NVID…
AWS、NVIDIA 与医疗 AI 公司 Heidi Health 联合发布技术实践,通过在 Amazon EC2 GPU 实例上结合 NVIDIA CUDA Multi-Process Service(MPS)与 Triton Inference Server,将自动语音识别(ASR)推理所需的 GPU 实例数量从 16 台缩减到 4 台,降幅达 75%,同时在每 GPU 上保持 92.1 RPS 与亚秒级延迟。
背景:ASR 推理的 GPU 利用率瓶颈
Heidi Health 是一家 AI 医疗助手服务商,每周处理超过 240 万次临床问诊,覆盖 190 个国家。其 ASR 服务基于 NVIDIA Nemotron 语音模型 Parakeet TDT 0.6B V2。在生产环境中,单次 ASR 推理请求仅占用一块 NVIDIA L40S GPU(142 个流多处理器 SM)约 15–20% 的算力,剩余约 80% 在前向计算过程中处于空闲。
更棘手的是,CUDA 默认采用时间片轮转(time-slicing)方式分配 GPU,各进程独占访问、串行执行,并产生上下文切换开销。结果是单 GPU 在可接受延迟(均值 < 650 ms、p99 < 1,000 ms)下仅能处理约 62 RPS。为应对峰值流量并满足 SLA,该公司此前需要部署 16 台 GPU 实例。
方案概览:三种 GPU 共享机制与 MPS 选型
NVIDIA GPU 提供三种多租户共享机制,各有权衡:
- 时间片(默认):进程独占、串行执行、无并发,适合少量大模型
- MIG(Multi-Instance GPU):硬物理分区、固定划分,适合多租户隔离
- MPS(Multi-Process Service):共享上下文、软 SM 限制、支持并发内核,适合在单 GPU 上运行多个小模型
CUDA MPS 是 CUDA API 的二进制兼容替代实现,通过 MPS 守护进程管理单一 GPU 上下文,使多个进程并发运行而无需修改代码。其核心优势包括:消除上下文切换开销、支持并发内核执行、可通过 CUDA_MPS_ACTIVE_THREAD_PERCENTAGE 环境变量配置分区比例、原生兼容现有 CUDA 应用、进程间内存地址空间隔离。
在 Heidi 的实际部署中,团队为不同任务配置了独立的 MPS 实例:
- 转写实例:25% SM 分配,运行 4 个并发进程,每个约占用 2.5 GB VRAM(共 48 GB)
- 说话人分离实例:12% SM 分配,运行 8 个并发进程,每个约 1.8 GB
模型层优化:ONNX Runtime 与 TensorRT
在 MPS 提升 GPU 利用率的基础上,团队进一步通过模型层优化压缩单请求计算时间。计算密集的 Conformer 编码器(24 层、1024 维隐藏维度)通过 ONNX Runtime 的 TensorRT Execution Provider 执行,借助算子融合与 FP16 精度校准获得硬件级加速;而面向可变长度生成的 RNN-T Token-and-Duration Transducer(TDT)解码器则保留 PyTorch CUDA 原生运行,因 CUDA Graph 缓存更适合其动态生成逻辑,避免静态 TensorRT 引擎带来的灵活性损失。
推理服务层:Triton 的批处理策略
请求调度与批处理由 NVIDIA Triton Inference Server 统一承担:
- 转写任务:采用动态批处理,设置 50 ms 等待窗口以累积请求,再以批次形式派发
- 说话人分离:根据模型自身约束采用独立调度策略
最终架构在每 GPU 上实现 92.1 RPS 与亚秒级延迟,将 GPU 实例数从 16 台压缩到 4 台,基础设施成本下降 75%。该实践为在 EC2 上运行语音识别及其他低 GPU 利用率推理任务的工作负载提供了一条可复制的优化路径。
