Superhuman与Databricks携手打造200K QPS推理平台
Superhuman从自建vLLM堆栈迁移到Databricks FMAPI Provisioned Throughput,现以200K+ QPS和亚秒级P99延迟服务自定义LLM。联合优化实现了每GPU吞吐量提升60%(每H100 pod从750 QPS提升至1,200 QPS),通过FP8量化、消除CPU端开销和优化Hopper架构注意力内核达成,且无质量回归。Databricks FMAPI通过生产级负载均衡、自动缩放和快速容器启动,可靠扩展至250+ GPU。
Superhuman,这家提供包括Superhuman、Coda、Superhuman Mail和Superhuman Go在内的生产力平台,每天为超过4000万用户提供服务,覆盖数十种语言。其AI通信助理能在用户书写时实时提供正确性、清晰度、语气和风格方面的建议。这些实时建议背后是一个高度复杂的自定义AI模型,以巨大规模提供服务:峰值流量超过每秒20万次查询,P99端到端延迟低于1秒,且需保证4个9的可靠性。
为了支撑这一规模,Superhuman此前使用基于vLLM的自建推理堆栈,并辅以内部训练和模型管理工具。然而,随着模型迭代,维护成本日益增加:每次模型更新需数月手动性能调优,运营负担(容量规划、性能调优、自动缩放)占用了本应聚焦模型质量和产品创新的团队精力。Superhuman需要一位平台合作伙伴,能够为推理堆栈的性能和延迟SLA做出承诺,并共同投入工程资源以满足要求。
Databricks模型服务平台(FMAPI Provisioned Throughput)成为最终选择。双方团队首先定义了严格的实时延迟SLO:P99延迟低于1秒,且在Superhuman内部评估集上无质量退化。为实现这一目标,双方在多个层面展开合作。
在负载均衡方面,默认的Kubernetes轮询在低QPS下表现良好,但在高QPS下会导致请求分布不均,引发热点和尾延迟飙升。Databricks团队采用了基于“二选一”幂次选择算法的自定义负载均衡器:端点发现服务(EDS)持续监控Kubernetes API,为每个请求采样两个候选Pod,并路由到活跃请求更少的那个,从而避免热点。
自动缩放策略同样关键:系统跟踪所有Pod的平均请求并发数,并通过基准测试得出每个Pod的最大可持续RPS,设定并发目标。缩放策略不对称——快速扩容、保守缩容——以避免抖动导致的延迟尖峰。双方通过联合影子测试发现了参数调优中的边缘情况并修复了问题。
容器启动速度优化方面,Databricks采用了镜像加速技术,将标准gzip格式镜像转换为适合延迟加载的块设备格式。容器运行时仅拉取元数据即可启动应用,文件读取时按需从远程镜像仓库获取实际块内容并缓存。这使容器启动时间从数分钟降至数秒。
运行时优化是提升每Pod吞吐量的核心。通过FP8量化——对注意力投影和MLP投影使用每通道缩放——获得了高达30%的吞吐量提升。双方迭代确定了量化层组:MLP投影从一开始就量化,注意力层经测试无质量退化后也启用量化。此外,消除CPU端瓶颈贡献了额外20%吞吐量:引入多进程RPC服务器,多个CPU进程并行准备和分发工作到GPU;用C++调用替换Python级张量操作;实现异步调度使CPU后处理与下一GPU前向传播并行。这些优化使每H100 Pod的吞吐量从750 QPS提升至1,200 QPS,增幅60%。
目前,Superhuman正将更多模型迁移至Databricks,涵盖不同规模、任务类型和延迟要求,并更广泛地采用AI平台用于训练、实验跟踪、评估、模型注册和代理追踪。这一大规模平台的建设是双方公司的共同努力,也是一次非凡的学习体验。