Proxy - Lastenausgleich
Lasten Sie mehrere Instanzen desselben Modells aus
Der Proxy leitet Anfragen (mithilfe des Routers von LiteLLM) weiter. Setzen Sie rpm in der Konfiguration, wenn Sie den maximalen Durchsatz erzielen möchten
Weitere Details zu Routing-Strategien / Parametern finden Sie unter Routing
Schnellstart - Lastenausgleich​
Schritt 1 - Deployments in der Konfiguration festlegen​
Beispielkonfiguration unten. Hier werden Anfragen mit model=gpt-3.5-turbo ĂĽber mehrere Instanzen von azure/gpt-3.5-turbo geleitet
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
rpm: 6 # Rate limit for this deployment: in requests per minute (rpm)
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-ca
api_base: https://my-endpoint-canada-berri992.openai.azure.com/
api_key: <your-azure-api-key>
rpm: 6
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-large
api_base: https://openai-france-1234.openai.azure.com/
api_key: <your-azure-api-key>
rpm: 1440
router_settings:
routing_strategy: simple-shuffle # Literal["simple-shuffle", "least-busy", "usage-based-routing","latency-based-routing"], default="simple-shuffle"
model_group_alias: {"gpt-4": "gpt-3.5-turbo"} # all requests with `gpt-4` will be routed to models with `gpt-3.5-turbo`
num_retries: 2
timeout: 30 # 30 seconds
redis_host: <your redis host> # set this when using multiple litellm proxy deployments, load balancing state stored in redis
redis_password: <your redis password>
redis_port: 1992
Detaillierte Informationen zu Routing-Strategien finden Sie hier
Schritt 2: Proxy mit Konfiguration starten​
$ litellm --config /path/to/config.yaml
Test - Einfacher Aufruf​
Hier werden Anfragen mit model=gpt-3.5-turbo ĂĽber mehrere Instanzen von azure/gpt-3.5-turbo geleitet
👉 Wichtige Änderung: model="gpt-3.5-turbo"
ĂśberprĂĽfen Sie die model_id in den Antwortheadern, um sicherzustellen, dass die Anfragen Lastenausgleich durchlaufen
- OpenAI Python v1.0.0+
- Curl-Anfrage
- Langchain
import openai
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages = [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
]
)
print(response)
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}'
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
SystemMessagePromptTemplate,
)
from langchain.schema import HumanMessage, SystemMessage
import os
os.environ["OPENAI_API_KEY"] = "anything"
chat = ChatOpenAI(
openai_api_base="http://0.0.0.0:4000",
model="gpt-3.5-turbo",
)
messages = [
SystemMessage(
content="You are a helpful assistant that im using to make a test request to."
),
HumanMessage(
content="test from litellm. tell me why it's amazing in 1 sentence"
),
]
response = chat(messages)
print(response)
Test - Lastenausgleich​
Bei dieser Anfrage geschieht Folgendes:
- Es wird eine Rate-Limit-Ausnahme ausgelöst
- LiteLLM-Proxy versucht die Anfrage auf der Modellgruppe erneut (Standard ist 3).
curl -X POST 'http://0.0.0.0:4000/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer sk-1234' \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": "Hi there!"}
],
"mock_testing_rate_limit_error": true
}'
Lastenausgleich unter Verwendung mehrerer LiteLLM-Instanzen (Kubernetes, automatische Skalierung)​
LiteLLM Proxy unterstĂĽtzt die gemeinsame Nutzung von RPM/TPM ĂĽber mehrere LiteLLM-Instanzen, ĂĽbergeben Sie redis_host, redis_password und redis_port, um dies zu aktivieren. (LiteLLM verwendet Redis, um die RPM/TPM-Nutzung zu verfolgen)
Beispielkonfiguration
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
rpm: 6 # Rate limit for this deployment: in requests per minute (rpm)
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/gpt-turbo-small-ca
api_base: https://my-endpoint-canada-berri992.openai.azure.com/
api_key: <your-azure-api-key>
rpm: 6
router_settings:
redis_host: <your redis host>
redis_password: <your redis password>
redis_port: 1992
Router-Einstellungen in der Konfiguration - routing_strategy, model_group_alias​
Exponieren Sie ein 'Alias' fĂĽr einen 'model_name' auf dem Proxy-Server.
model_group_alias: {
"gpt-4": "gpt-3.5-turbo"
}
Diese Aliase werden standardmäßig auf /v1/models, /v1/model/info und /v1/model_group/info angezeigt.
LiteLLM.Router()-Einstellungen können unter router_settings vorgenommen werden. Sie können model_group_alias, routing_strategy, num_retries, timeout einstellen. Alle vom Router unterstützten Parameter finden Sie hier
Verwendung​
Beispielkonfiguration mit router_settings
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
router_settings:
model_group_alias: {"gpt-4": "gpt-3.5-turbo"} # all requests with `gpt-4` will be routed to models
Alias-Modelle ausblenden​
Verwenden Sie dies, wenn Sie Aliase für Folgendes einrichten möchten:
- Tippfehler
- kleinere Modellversionsänderungen
- Groß-/Kleinschreibung von Änderungen zwischen Updates
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/<your-deployment-name>
api_base: <your-azure-endpoint>
api_key: <your-azure-api-key>
router_settings:
model_group_alias:
"GPT-3.5-turbo": # alias
model: "gpt-3.5-turbo" # Actual model name in 'model_list'
hidden: true # Exclude from `/v1/models`, `/v1/model/info`, `/v1/model_group/info`
Vollständige Spezifikation​
model_group_alias: Optional[Dict[str, Union[str, RouterModelGroupAliasItem]]] = {}
class RouterModelGroupAliasItem(TypedDict):
model: str
hidden: bool # if 'True', don't return on `/v1/models`, `/v1/model/info`, `/v1/model_group/info`