LLM流量管理
目前主流的大语言模型(LLM)提供商大多是通过HTTP协议向用户提供服务。阿里云服务网格(ASM)在HTTP协议的基础上,针对LLM请求进行了特别优化。现在已支持多个主流LLM提供商的协议标准,为您提供了简单高效的接入体验。本文将从流量路由、可观测两个角度介绍如何在ASM中管理LLM流量。
功能概述
流量路由
在服务网格中,如果要将普通的外部HTTP服务注册到集群中来,需要首先配置ServiceEntry,然后通过VirtualService配置相应的路由规则,之后便可以通过网关或者业务Pod调用这个外部服务。如果不注册直接调用,将无法享受到服务网格提供的流量管理和可观测能力。
然而原生的ServiceEntry只能处理普通的TCP以及HTTP协议的流量,LLM请求在HTTP协议之上有一些特定的高级参数,普通的ServiceEntry无法直接支持。在这种情况下,ASM提出了两种新的资源:
LLMProvider:对应HTTP协议的ServiceEntry。您可以使用该资源将外部的LLM服务提供商注册到集群中来,并且可以在此处配置LLM提供商的Host、APIKey以及其他模型参数。
LLMRoute:对应HTTP协议的VirtualService。您可以使用LLMRoute配置流量规则,将流量按照比例或者一定的匹配条件分发给特定的LLMProvider。
ASM会根据LLMRoute和LLMProvider配置,动态地选择路由目的地,添加预先配置好的请求参数,然后发送给对应的Provider。基于此配置,您可以实现快速变更Provider配置、根据请求特征选择不同模型和在Provider之间灰度流量等操作,极大降低了大模型接入集群的成本。以下为您介绍两个基于LLMRoute和LLMProvider来管理大语言模型流量的场景。
配置LLMRoute实现不同类型的用户使用不同的模型
灵积服务提供了qwen-1.8b-chat和qwen-turbo两种模型。您可以通过创建和配置LLMRoute,来实现:普通用户发起调用,默认使用qwen-1.8b-chat;订阅用户调用时,使用更加强大的qwen-turbo模型。订阅用户的请求上会有一个特殊的header来标识用户身份。
配置LLMProvider和LLMRoute实现按比例分发流量
本场景结合灵积服务和Moonshot两种语言模型服务,通过配置LLMRoute和LLMProvider来实现在不同的LLMProvider之间按比例路由的能力。
demo-llm-server是集群中一个普通的service,没有对应任何endpoint。
流量观测
除了LLM请求路由能力以外,ASM还在多个方面对可观测能力进行了增强,以满足LLM场景中更加高级的观测需求。一个健壮的软件系统必须拥有准确、清晰的可观测数据,让运维以及开发人员可以随时查看当前业务的运行状况,并基于当前的运行状况作出合理的反馈。
服务网格提供的可观测能力分为三大块:
访问日志
监控指标
链路追踪
LLM请求是基于HTTP协议的,所以可以直接适应当前的链路追踪能力。然而当前的访问日志、监控指标能力尚不足以满足对于LLM请求的可观测需求。 访问日志并不能打印出LLM请求特定的信息,例如当前请求的model;监控指标目前也只能反映标准的HTTP信息。因此,ASM着重增强了当前的访问日志和监控指标能力。主要增强分为两方面:
访问日志:您可以使用自定义访问日志格式的功能,在访问日志中打印出LLM请求特定的信息。
监控指标:
ASM新增了两个监控指标,用来反映当前请求的输入token数(prompt tokens)和输出token数(completion tokens)。
新增了LLM请求特定的信息作为指标维度,您可以在标准的Istio指标中引用。
场景概述
使用ASM接入LLM之后,可以实现LLM的灰度接入、按比例路由以及多种可观测能力,进一步将应用与LLMProvider解耦,提升整个链路的健壮性和可维护性。通过以下场景,您将了解如何配置和实现LLM流量路由和流量观测能力。