跳到主要内容

推理平台基准测试:Bedrock AgentCore vs EKS 自建

创建日期:2026-03-18 | 状态:计划

目标

以 Bedrock AgentCore 为默认推理平台,量化验证何时以及在何种条件下需要自建 EKS。同时对比自建 EKS 中 LLM 网关(LiteLLM vs Bifrost)和缓存感知路由(llm-d)组合的性能/成本差异。

默认前提

Bedrock AgentCore 为默认选择。 作为托管服务,AWS 负责构建时间、运维负担和扩缩。通过 Custom Model Import 也支持开源/自定义模型,因此仅凭模型支持不能作为自建的理由。只有在需要推理引擎级别控制、大规模成本优化或缓存路由时才有必要自建。


对比目标

配置描述验证目的
基准. AgentCore(默认模型)直接使用 Bedrock 提供的模型参考基准
基准+. AgentCore(自定义模型)通过 Custom Model Import 服务自定义模型托管环境中的自定义模型性能/成本
方案 A-1. EKS + LiteLLM + vLLMLiteLLM 网关,标准负载均衡使用现有生态的自建方案
方案 A-2. EKS + Bifrost + vLLMBifrost 网关,标准负载均衡高性能网关效果验证
方案 B-1. EKS + LiteLLM + llm-d + vLLMLiteLLM + 缓存感知路由验证 llm-d 附加价值
方案 B-2. EKS + Bifrost + llm-d + vLLMBifrost + 缓存感知路由验证最优组合

架构配置

基准:     Client → AgentCore Gateway → Bedrock 推理(默认模型)
基准+: Client → AgentCore Gateway → Bedrock 推理(Custom Import 模型)

方案 A-1: Client → LiteLLM → kgateway (RoundRobin) → vLLM Pods
方案 A-2: Client → Bifrost → vLLM Pods (Bifrost 负载均衡)

方案 B-1: Client → LiteLLM → llm-d (Prefix-Cache Aware) → vLLM Pods
方案 B-2: Client → Bifrost → llm-d (Prefix-Cache Aware) → vLLM Pods
llm-d 连接方式

llm-d 提供 OpenAI 兼容端点,因此 LiteLLM 和 Bifrost 都可以通过将 base_url 指向 llm-d 服务来简单集成。网关选择和 llm-d 集成是独立的。


LLM 网关对比:LiteLLM vs Bifrost

网关选择直接影响自建 EKS 的平台性能和运维。

项目LiteLLM(Python)Bifrost(Go)
网关开销数百 us/req约 11 us/req(快 40-50 倍)
内存占用基准小约 68%
供应商支持100+20+(主要供应商原生支持)
成本追踪内置内置(分层:key/team/customer)
可观测性Langfuse 原生集成内置(请求追踪、Prometheus)
语义缓存内置内置(约 5ms 命中)
防护栏内置内置
MCP Tool 过滤有限内置(按 Virtual Key)
治理(Virtual Keys)API Key 管理分层(key/team/customer 预算/权限)
速率限制内置分层(key/team/customer)
回退/负载均衡内置内置
Web UI内置内置(实时监控)
Langfuse 集成原生插件(仅需配置)通过 OTel 或 Langfuse OpenAI SDK 包装器(应用层)
社区/参考案例成熟(16k+ GitHub stars)增长中(3k+ GitHub stars)

为什么网关开销对 Agentic AI 很重要

Agent 在单个任务中会进行多次顺序 LLM 调用。网关开销随每次调用累积:

Agent 1 任务 = LLM 调用 → 工具 → LLM 调用 → 工具 → LLM 调用 → 响应
(网关) (网关) (网关)

LiteLLM: 约 300us x 5 次调用 = 约 1.5ms 累积
Bifrost: 约 11us x 5 次调用 = 约 0.055ms 累积

占推理时间(数百毫秒到秒)的比例:1-3% vs 0.01-0.1%

对单次请求可忽略不计,但高并发 + Agent 多次调用环境可能产生尾部延迟差异。


AgentCore 提供范围

领域AgentCore 提供自建需要
推理(默认模型)Claude、Llama、Mistral 等开箱即用vLLM + GPU + 模型部署
推理(自定义模型)Custom Model Import / MarketplacevLLM + GPU + 模型部署
扩缩自动(托管)Karpenter + HPA/KEDA
Agent 运行时内置 Agent RuntimeLangGraph / Strands 自建
MCP 连接内置 MCP Connector部署/运维 MCP 服务器
防护栏Bedrock Guardrails网关内置(Bifrost/LiteLLM)
可观测性CloudWatch 集成Langfuse + Bifrost/LiteLLM 内置 + Prometheus
安全IAM 原生、VPC 集成Pod Identity + NetworkPolicy
运维无需(托管)GPU 监控、模型更新、事件响应

验证问题

#问题场景
Q1AgentCore 默认模型性能是否满足生产 SLA?1
Q2Custom Model Import 性能与直接 vLLM 服务相比如何?2
Q3Custom Model Import 有哪些限制?(量化、批处理策略等)2
Q4在什么流量规模下自建更具成本效益?7
Q5AgentCore 能否处理复杂的 Agent 工作流需求?5
Q6llm-d 缓存优化效果是否足以逆转成本差距?3、6
Q7AgentCore 在突发流量时的响应如何?9
Q8AgentCore 的隔离性是否满足多租户环境?6
Q9LiteLLM vs Bifrost 网关开销在实践中是否显著?4
Q10Bifrost + llm-d 组合是否稳定运行?4

测试环境

区域:us-east-1

基准(AgentCore 默认模型):
- Bedrock Claude 3.5 Sonnet(按需 + 预留)
- Bedrock Llama 3.1 70B(按需)
- AgentCore Agent Runtime + MCP Connector
- Bedrock Guardrails、CloudWatch

基准+(AgentCore 自定义模型):
- Llama 3.1 70B 微调模型 → Custom Model Import
- 相同 AgentCore 运行时

方案 A-1(EKS + LiteLLM + vLLM):
- EKS v1.32、Karpenter v1.2
- g5.2xlarge(A10G)x 4、vLLM v0.7.x
- Llama 3.1 70B(AWQ 4bit)
- LiteLLM v1.60+ → kgateway(RoundRobin)
- Langfuse v3.x + Prometheus

方案 A-2(EKS + Bifrost + vLLM):
- 相同 EKS/vLLM 配置
- Bifrost(最新版)→ vLLM(Bifrost 负载均衡)
- Bifrost 内置可观测性 + Prometheus

方案 B-1(EKS + LiteLLM + llm-d + vLLM):
- 方案 A-1 + llm-d v0.3+

方案 B-2(EKS + Bifrost + llm-d + vLLM):
- 方案 A-2 + llm-d v0.3+
- Bifrost base_url → llm-d 服务端点

负载生成:Locust + LLMPerf

测试场景

场景 1:简单推理 — AgentCore 基准性能

  • 每次不同提示,输入 500 / 输出 1000 Token
  • 并发:1、10、50、100、200
  • 目标:基准(默认模型)
  • 验证:AgentCore TTFT、TPS 是否满足生产 SLA?

场景 2:Custom Model Import vs vLLM 直接服务

  • 相同模型(Llama 3.1 70B)在基准+ vs 方案 A-1/A-2 上服务
  • 输入 500 / 输出 1000 Token,并发:1、10、50、100
  • 测量:TTFT、TPS、E2E 延迟
  • 验证:Custom Import 的性能差异和限制
    • 量化选项对比(Import 支持范围 vs vLLM AWQ/GPTQ/FP8)
    • 批次大小/并发处理控制可用性
    • 模型更新周转时间(Import 重新部署 vs vLLM 滚动更新)

场景 3:重复系统提示 — 缓存效果

  • 3 个固定系统提示(各 2000 Token)+ 仅用户输入变化
  • 并发:10、50、100
  • 目标:基准(Prompt 缓存)vs 方案 A-1/A-2 vs 方案 B-1/B-2(llm-d)
  • 验证:Bedrock Prompt 缓存 vs llm-d Prefix 缓存 vs Bifrost 语义缓存,TTFT/成本对比

场景 4:网关开销 — LiteLLM vs Bifrost

  • LiteLLM 和 Bifrost 各自作为相同 vLLM 后端的网关
  • 并发:1、10、50、100、500、1000
  • 有/无 llm-d 组合:A-1 vs A-2、B-1 vs B-2
  • 测量:网关额外延迟(p50/p95/p99)、内存使用、CPU 使用、错误率
  • 验证
    • Q9 — 高并发下网关开销是否产生显著差异?
    • Q10 — Bifrost → llm-d 连接是否稳定运行?
    • Agent 多次调用(5 轮)的累积开销差异

场景 5:多轮 Agent 工作流

  • 5 轮对话 + 3 次工具调用(网页搜索、数据库查询、计算)
  • AgentCore:Agent Runtime + MCP Connector
  • EKS:LangGraph + MCP Server(Bifrost MCP 工具过滤 vs LiteLLM)
  • 验证:AgentCore Agent Runtime 复杂工作流处理能力、定制化限制

场景 6:多租户

  • 5 个租户,各有不同的系统提示/防护栏策略
  • AgentCore:基于 IAM 的隔离
  • EKS + LiteLLM:基于 API Key 的隔离
  • EKS + Bifrost:Virtual Key 分层治理(按 team/customer 预算、权限)
  • EKS + llm-d:按租户的缓存路由
  • 验证:AgentCore 隔离级别 vs EKS、Bifrost Virtual Key 治理效果

场景 7:盈亏平衡点探索

  • 逐步增加负载:1、5、10、30、50、100 req/s
  • 计算每级别 6 种配置的月度成本
  • 验证:推导精确的成本交叉点

场景 8:长时间运行(24 小时)

  • 30 req/s,持续 24 小时
  • 总成本、稳定性(错误率)、性能波动
  • 验证:AgentCore 成本可预测性 vs EKS GPU 空闲成本

场景 9:突发流量

  • 正常 10 req/s → 100 req/s 持续 5 分钟 → 回到 10 req/s
  • 验证:AgentCore 限流/排队行为 vs EKS Karpenter 扩展延迟

测量指标

类别指标基准基准+A-1(LiteLLM)A-2(Bifrost)B-1(LiteLLM+llm-d)B-2(Bifrost+llm-d)
性能TTFT(p50/p95/p99)OOOOOO
TPS(输出 tokens/sec)OOOOOO
E2E 延迟OOOOOO
吞吐量(req/s)OOOOOO
冷启动OOOOOO
网关网关额外延迟--OOOO
网关内存使用--OOOO
网关 CPU 使用--OOOO
缓存Bedrock Prompt 缓存节省OO----
语义缓存命中率---O-O
KV 缓存命中率----OO
成本月度总成本(按流量级别)OOOOOO
有效每 Token 成本OOOOOO
空闲成本--OOOO
治理租户隔离级别OOOOOO
预算/速率限制精度OOOOOO
运维构建时间OOOOOO
灾难恢复时间OOOOOO
所需人员/技能集OOOOOO

成本模拟

固定成本(月度)

项目基准基准+A-1/A-2B-1/B-2
GPU 实例(g5.2xlarge x4)--约 $4,800约 $4,800
EKS 集群--$73$73
llm-d(CPU Pod)---约 $50
网关(LiteLLM/Bifrost)--约 $50约 $50
Langfuse(自托管)--约 $100约 $100
Bedrock 预留另行计算另行计算--

可变成本

项目基准基准+A-1/A-2B-1/B-2
计费方式按 Token按 TokenGPU 时间分配GPU 时间分配
缓存节省Prompt 缓存折扣Prompt 缓存折扣语义缓存(Bifrost)KV 缓存 + 语义缓存
空闲成本无(按需)无(按需)GPU 空闲时计费GPU 空闲时计费

预期成本曲线

月度成本
^
| AgentCore 按需
| \
| \ / A-1 (LiteLLM+vLLM)
| \ / A-2 (Bifrost+vLLM)
| \ /
| AgentCore \ / B-1 (LiteLLM+llm-d)
| 预留 \ / / B-2 (Bifrost+llm-d)
| \ / / /
| \ / / /
| \ / / /
| X / / <-- 盈亏平衡点
| / \ / /
| EKS 固定成本--/---\--/-/----------
| / \/
+-------------------------------------------> 流量 (req/s)
5 10 30 50 100
流量范围建议原因
低于盈亏平衡点AgentCore 按需无 GPU 固定成本,即时启动
盈亏平衡点附近AgentCore 预留折扣吞吐量,仍为托管
高于盈亏平衡点 + 多样提示方案 A-2(Bifrost)低开销,治理
高于盈亏平衡点 + 重复提示方案 B-2(Bifrost+llm-d)缓存效果 + 低开销

决策流程图


证明 EKS 自建合理性的条件

仅当 AgentCore 不足时才考虑自建

当满足以下一项或多项条件时,自建 EKS 才有充分理由。

条件原因
精细的推理引擎控制自由选择 vLLM 调度、批处理策略、量化(AWQ/GPTQ/FP8)
大规模流量成本优化超过盈亏平衡点后每 Token 成本逆转
KV 缓存路由通过 llm-d Prefix 缓存最大化 TTFT/GPU 效率
多租户治理通过 Bifrost Virtual Keys 实现精细的按 team/customer 预算/权限控制
即时采用最新模型在 Bedrock Import 之前使用社区最新模型
数据主权 / 断网环境无法调用 Bedrock API 的环境

可观测性栈配置

自建 EKS 的可观测性栈因网关选择而异。

基于 LiteLLM(A-1、B-1)

应用(Langfuse SDK) ──→ Langfuse Server(Trace/Span)
LiteLLM ──→ Langfuse Server(原生集成,请求/成本日志)
vLLM + llm-d ──→ Prometheus → Grafana(GPU、KV 缓存指标)

基于 Bifrost(A-2、B-2)

应用(Langfuse SDK) ──→ Langfuse Server(Trace/Span)
Bifrost(OTel 插件) ──→ OTLP Collector ──→ Langfuse Server(网关级 Trace)
Bifrost ──→ Prometheus → Grafana(成本/Token/延迟指标)
Bifrost ──→ Bifrost Web UI(实时监控)
vLLM + llm-d ──→ Prometheus → Grafana(GPU、KV 缓存指标)
无论选择哪种网关都需要 Langfuse

Bifrost 的内置可观测性监控网关层(请求/成本/延迟)。完整的 Agent 工作流追踪(连接多次调用、提示质量评估、会话跟踪)由 Langfuse 处理。两个层面互补,而非替代。


结果报告结构(计划)

章节内容
执行摘要清晰区分"何时 AgentCore 足够"和"何时需要自建"
AgentCore 基准性能默认模型 TTFT、TPS、吞吐量基准
Custom Import vs vLLM相同模型的性能/成本/限制对比
网关对比LiteLLM vs Bifrost 开销、治理、稳定性
缓存策略对比Bedrock Prompt 缓存 vs Bifrost 语义缓存 vs llm-d Prefix 缓存
Agent 运行时对比AgentCore Runtime vs LangGraph 能力/灵活性
成本盈亏平衡按流量范围的 6 种配置成本图 + 交叉点
可观测性栈按网关的可观测性配置对比
决策指南工作负载特性 → 最优配置流程图
迁移路径从 AgentCore → EKS 迁移的工作量和风险