Zum Hauptinhalt springen

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

Info

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
Info

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

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)

Test - Lastenausgleich​

Bei dieser Anfrage geschieht Folgendes:

  1. Es wird eine Rate-Limit-Ausnahme ausgelöst
  2. 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
}'

Code anzeigen

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:

  1. Tippfehler
  2. kleinere Modellversionsänderungen
  3. 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`