目前主流的大語言模型(LLM)供應商大多是通過HTTP協議向使用者提供服務。Service Mesh (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流量路由和流量觀測能力。