多引擎支持#
AIBrix 系统现在支持多引擎调度,允许开发者在一个 AIBrix 实例下部署和提供多个引擎(例如,不同的 LLM 或引擎后端)。这使得可以根据模型名称、调度策略或性能特征,灵活地将传入请求路由到不同的引擎。
主要特点#
在单个部署中支持 vLLM 之外的其他引擎(例如 SGLang、xLLM)。
通过在部署 YAML 文件中添加 model.aibrix.ai/engine 作为标签来配置引擎。
支持解释来自不同引擎类型的指标。
动机#
在此功能之前,AIBrix 在服务模型时仅支持 vLLM。这限制了在相同工作负载或基准测试场景中试验或比较不同引擎的灵活性。
通过多引擎支持,AIBrix 实现了:
引擎间延迟、吞吐量和行为的并排比较。
部署灵活性,支持模型分片或迁移策略。
指标适配,以解释来自不同引擎类型的指标。
系统概览#
传入请求将使用部署标签来确定解释从 Prometheus API 检索到的指标的正确方式,这些指标随后被 Router 用于委托执行。要配置特定引擎,请在部署 YAML 文件中应用以下标签
labels:
model.aibrix.ai/name: deepseek-llm-7b-chat
model.aibrix.ai/engine: "sglang"
model.aibrix.ai/metric-port: "8000" # Configure this if Prometheus port is different from default port.
model.aibrix.ai/port: "8000"
AIBrix 将使用 model.aibrix.ai/engine 标签来确定部署要使用的引擎,并从从 Prometheus 读取的所有指标中搜索正确的指标格式。
支持的指标#
我们只支持来自不同引擎的有限数量的指标,并将不断添加更多指标——对于通过路由策略 API 实现的路由算法,请确保您使用目标引擎支持的指标。对于现有的 AIBrix 路由策略,如果无法获取目标指标,路由器将回退到默认(即随机)策略。
指标 |
vllm |
sglang |
xllm |
|---|---|---|---|
num_requests_running |
vllm:num_requests_running |
sglang:num_running_reqs |
N/A |
num_requests_waiting |
vllm:num_requests_waiting |
N/A |
N/A |
num_requests_swapped |
vllm:num_requests_swapped |
N/A |
N/A |
avg_prompt_throughput_toks_per_s |
vllm:avg_prompt_throughput_toks_per_s |
N/A |
N/A |
avg_generation_throughput_toks_per_s |
vllm:avg_generation_throughput_toks_per_s |
sglang:gen_throughput |
N/A |
iteration_tokens_total |
vllm:iteration_tokens_total |
N/A |
N/A |
time_to_first_token_seconds |
vllm:time_to_first_token_seconds |
sglang:time_to_first_token_seconds |
N/A |
time_per_output_token_seconds |
vllm:time_per_output_token_seconds |
sglang:inter_token_latency_seconds |
N/A |
e2e_request_latency_seconds |
vllm:e2e_request_latency_seconds |
sglang:e2e_request_latency_seconds |
N/A |
request_queue_time_seconds |
vllm:request_queue_time_seconds |
N/A |
N/A |
request_inference_time_seconds |
vllm:request_inference_time_seconds |
N/A |
N/A |
request_decode_time_seconds |
vllm:request_decode_time_seconds |
N/A |
N/A |
request_prefill_time_seconds |
vllm:request_prefill_time_seconds |
N/A |
N/A |
gpu_cache_usage_perc |
vllm:gpu_cache_usage_perc |
sglang:token_usage [1] |
kv_cache_utilization |
engine_utilization |
N/A |
N/A |
engine_utilization |
cpu_cache_usage_perc |
vllm:cpu_cache_usage_perc |
N/A |
N/A |
添加新引擎#
要支持新引擎或指标类型
在 aibrix/pkg/metrics/metrics.go 中添加引擎类型到指标名称的映射。
在部署 YAML 文件中添加引擎名称到 model.aibrix.ai/engine 标签。
更多详情,请参见以下文件中的 cache_metrics.go 和 metrics.go