Gestione del gateway del modello

Gestire le connessioni e i modelli esistenti, abilitare il bilanciamento del carico per distribuire il traffico in modo efficiente su più modelli, creare criteri di accesso per definire quali gruppi possono accedere a risorse specifiche e impostare limiti di frequenza per controllare e prevenire il sovraccarico di richieste.

Requisiti

Per gestire il gateway del modello è necessario essere amministratori

Gestione delle connessioni e dei modelli esistenti

Per gestire le connessioni e i modelli esistenti:

  1. Seleziona la scheda "Fornitore del modello ". Si apre l'elenco delle connessioni.

  2. Utilizza il campo di ricerca per trovare una delle connessioni, quindi:

    • Fai clic sull'icona Modifica, quindi seleziona Modifica credenziali o Modifica modelli.
    • Clicca sull'icona Elimina.

    Gestione delle connessioni e dei modelli esistenti
    Gestione delle connessioni e dei modelli esistenti

Nota:

Se un provider è stato creato tramite API, il segreto ad esso associato non viene inserito automaticamente. È necessario selezionare manualmente la chiave segreta utilizzata durante la creazione del provider. I segreti creati tramite API hanno questo formato: mg-<connection name>-<six random characters>.

Gestione delle politiche di accesso

Per impostazione predefinita, il gateway del modello può comunicare con tutti i fornitori di modelli. Limita l'accesso solo ai fornitori che desideri utilizzare. Utilizza le politiche per mantenere provider, modelli e bilanciatori di carico limitati ai gruppi di utenti previsti e impedire l'esposizione involontaria.

Aggiunta di criteri di accesso dall'interfaccia utente del gateway modello

Per aggiungere una politica di accesso dall'interfaccia utente del gateway modello:

  1. Seleziona la scheda "Controllo accessi" e poi clicca su "Assegna accesso".
  2. Fare clic su " Seleziona gruppo di accesso ", quindi selezionare uno dei gruppi di accesso disponibili.
  3. Dal menu Tipo di risorsa, seleziona Model o Load balancer.
  4. Fare clic su "Risorsa" e selezionare la risorsa a cui si applica la politica di accesso.
  5. Seleziona l'azione e il tipo di autorizzazione, quindi fai clic su Crea.

Le politiche di accesso aggiunte sono elencate nella scheda "Controllo degli accessi ". Utilizza il campo di ricerca per trovarli e il menu Ordina per ordinarli in base ai criteri disponibili.

Elenco delle politiche di accesso definite
Elenco delle politiche di accesso definite

Non è possibile modificare le politiche di accesso. Per modificare una politica esistente, eliminarla e poi ricrearla.

Nota:

Alcune opzioni di configurazione del gateway del modello potrebbero essere accessibili solo a livello di programmazione e avere effetti applicabili esclusivamente all'accesso programmatico.

Aggiunta di criteri di accesso tramite codice

Crea una politica di accesso che conceda al gruppo specificato nel parametro oggetto l'autorizzazione ad accedere a una risorsa. Le risorse possono essere le seguenti:

  • model:<uuid>
  • provider:<uuid>
  • loadbalancer:<uuid>

Per gestire le politiche, utilizzare la politica con l'azione read o write. Ad esempio, il comando seguente concede l'accesso in lettura al modello specificato tramite l'UUID:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/policies" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
    "subject": "<group_id>",
    "resource": "model:<uuid>",
    "action": "read",
    "effect": "allow"
}'

Per visualizzare le politiche create, eseguire il seguente comando:

curl -sS -H "Authorization: Bearer ${TOKEN}" "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/policies"

Gestione dei bilanciatori di carico

Abilita il bilanciamento del carico per distribuire le richieste di inferenza su più istanze backend. Utilizza un unico alias stabile mentre riduci la capacità del backend per gestire il traffico elevato.

Creazione di un bilanciatore di carico dall'interfaccia utente del gateway modello

Per creare un bilanciatore di carico dall'interfaccia utente del gateway modello:

  1. Seleziona la scheda Regole.
  2. Nella scheda Regole, seleziona la scheda Bilanciatore di carico, quindi fai clic su Crea bilanciatore di carico.
  3. Digita il nome del tuo nuovo bilanciatore di carico, quindi seleziona il tipo di bilanciatore:
    • Round Robin: distribuisce le richieste in modo uniforme tra tutti i modelli in sequenza
    • Minimo numero di connessioni: indirizza le richieste al modello con il minor numero di connessioni attive
    • Round Robin ponderato: distribuisce le richieste in base ai pesi assegnati
    • Priorità delle quote: percorsi basati sui limiti di quota e sui livelli di priorità
  4. Fare clic su "Seleziona modelli" per scegliere i modelli a cui applicare il nuovo bilanciatore di carico.
  5. Facoltativo: impostare parametri aggiuntivi se richiesto dal tipo di bilanciatore selezionato.
  6. Fai clic su Crea per creare un nuovo bilanciatore di carico.

I bilanciatori di carico aggiunti sono elencati nella scheda " Bilanciatori di carico ". Utilizza il campo di ricerca per trovarli e il menu Ordina per ordinarli in base ai criteri disponibili.

Elenco dei bilanciatori di carico definiti
Elenco dei bilanciatori di carico definiti

Modifica di un bilanciatore di carico esistente

Per modificare un bilanciatore di carico esistente, nella scheda " Bilanciatore di carico " utilizzare il campo di ricerca per individuare la voce corrispondente, quindi:

  • Fai clic su Modifica, apporta le modifiche necessarie, quindi fai clic su Aggiorna.
  • Fai clic su Elimina.
Nota:

Alcune opzioni di configurazione del gateway del modello potrebbero essere accessibili solo a livello di programmazione e avere effetti applicabili esclusivamente all'accesso programmatico.

Creazione di un bilanciatore di carico tramite codice

Per ottenere gli UUID dei modelli verso cui si desidera instradare il traffico, utilizzare questo comando:

curl -sS -H "Authorization: Bearer ${TOKEN}" "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/models" | jq '.data[] | {id, uuid}'

Tipi di bilanciatori di carico disponibili:

  • Round Robin (round_robin): distribuisce le richieste in modo uniforme tra tutti i modelli in sequenza
  • Minimo numero di connessioni (least_connections): indirizza le richieste al modello con il minor numero di connessioni attive
  • Round Robin ponderato (weighted_round_robin): distribuisce le richieste in base ai pesi assegnati
  • Priorità delle quote (quota_priority): Percorsi basati sui limiti di quota e sui livelli di priorità

Alcuni tipi di bilanciatori di carico consentono di specificare parametri aggiuntivi:

  • Per weighted_round_robin, impostare il peso in ciascun backend (numero intero positivo; il valore predefinito è 1 per i backend senza peso esplicito)

    Esempio: {"algorithm": "weighted_round_robin", "backends": [{"model_uuid": "...", "weight": 5}]}

  • quota_priorityPer ogni backend, impostare la quota (numero massimo di connessioni simultanee, ≥0) e la priorità (ordine, più basso = prima). I fornitori vengono valutati in ordine di priorità (0→1→2), selezionando innanzitutto quelli che rientrano nella quota.

    Esempio: {"algorithm": "quota_priority", "backends": [{"model_uuid": "...", "quota": 10, "priority": 0}]}

Esempio: Creazione di un bilanciatore di carico con round_robin tipo:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/load-balancers" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
"name": "primary-router",
"alias": "chat-balanced",
"algorithm": "round_robin",
"backends": [
    {"model_uuid": "11111111-1111-1111-1111-111111111111"},
    {"model_uuid": "22222222-2222-2222-2222-222222222222"}
]
}'

Esempio: Creazione di un bilanciatore di carico con quota_priority tipo:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/load-balancers" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
  "name": "quota-priority-router",
  "alias": "qp-balanced",
  "algorithm": "quota_priority",
  "backends": [
    {
      "model_uuid": "11111111-1111-1111-1111-111111111111",
      "quota": 10,
      "priority": 0,
      "weight": 1
    },
    {
      "model_uuid": "22222222-2222-2222-2222-222222222222",
      "quota": 5,
      "priority": 1,
      "weight": 1
    }
  ]
}'

Gestione dei limiti di frequenza

Imposta limiti di frequenza basati sulle richieste per controllare il numero di richieste API che possono essere effettuate in un determinato intervallo di tempo. Con i limiti di velocità, puoi evitare che carichi di lavoro eccessivi esauriscano la capacità condivisa e garantire un utilizzo equo della capacità tra i tuoi fornitori.

Gestione dei limiti di frequenza dall'interfaccia utente del gateway del modello

Per gestire i limiti di frequenza dall'interfaccia utente del gateway del modello:

  1. Seleziona la scheda Regole.
  2. Nella scheda Regole, seleziona la scheda Limite di frequenza e poi clicca su Crea limite di frequenza.
  3. Seleziona l'ambito di applicazione del nuovo limite di frequenza. Scegli una delle seguenti opzioni:
    • Model
    • Provider
    • Tenant
  4. Fare clic su "Aggiungi modello ", selezionare un modello e fare clic su "Applica". Quindi fare clic su Avanti.
  5. Imposta i limiti di velocità, quindi clicca su "Crea" per creare un nuovo limite di velocità.

Impostazioni disponibili per i limiti di frequenza

Quando si crea un limite di frequenza, è possibile configurare i seguenti tipi di limiti per controllare l'utilizzo dell'API:

  • Limiti delle richieste
  • Limiti dei token
Nota: è necessario abilitare almeno un tipo di limite con un valore di frequenza superiore a 0. È necessario specificare la durata per ogni limite attivato.

L'opzione "Limite richieste" controlla il numero di richieste API consentite in un determinato periodo di tempo.

Campi di configurazione:

  • Frequenza delle richieste (obbligatorio): numero di richieste consentite per intervallo di tempo
  • Capacità: dimensione massima del "token bucket" nell'algoritmo del token bucket. Questa impostazione definisce il numero totale di richieste che possono accumularsi in un dato momento. La capacità determina:
    • Limite di richieste consecutive : quante richieste è possibile inviare immediatamente quando il bucket è pieno
    • Limite di accumulo : i token vengono ricaricati fino al raggiungimento della capacità massima, senza mai superarla
    • Funziona in base alla frequenza delle richieste (token aggiunti per intervallo) e alla durata (intervallo di ricarica)
  • Durata: intervallo di tempo per il limite di frequenza

L'opzione "Abilita limite token" controlla il numero di token consumati in un determinato periodo.

Campi di configurazione:

  • Frequenza delle richieste (obbligatorio): numero di token consentiti per periodo di tempo
  • Capacità: dimensione massima del "token bucket" nell'algoritmo del token bucket. Questa impostazione definisce il numero totale di token che possono accumularsi in un dato momento. La capacità determina:
    • Limite di burst : quanti token possono essere consumati immediatamente quando il bucket è pieno
    • Limite di accumulo : i token vengono ricaricati fino al raggiungimento della capacità massima, senza mai superarla
    • Funziona in base alla frequenza dei gettoni (gettoni aggiunti per intervallo) e alla durata (intervallo di ricarica)
  • Durata: intervallo di tempo per il limite dei token

Esempi di configurazioni:

  • Limite delle richieste: 1000 richieste all'ora con una capacità di picco di 100
  • Limite di token: 50.000 token ogni 30 minuti con una capacità di picco di 5.000

Capire il concetto di capacità con un esempio:

Si consideri una configurazione del limite di velocità con:

  • Capacità: 100
  • Frequenza delle richieste: 10
  • Durata: 1 minuto

Questa configurazione implica che:

  • È possibile inviare immediatamente una raffica di 100 richieste quando il bucket è pieno
  • Il secchio si riempie al ritmo di 10 gettoni al minuto
  • Dopo aver utilizzato tutti i 100 gettoni, occorrono 10 minuti per ricaricare completamente (100 gettoni ÷ 10 gettoni al minuto = 10 minuti)
  • Quando il contenitore raggiunge i 100 gettoni, smette di accumularli (limite di capacità)

Elenco dei limiti di velocità definiti
Elenco dei limiti di velocità definiti

Modifica di un limite di frequenza esistente

Per modificare un limite di frequenza esistente, nella scheda " Limite di frequenza " utilizzare il campo di ricerca per individuare la voce corrispondente, quindi:

  • Fai clic su Modifica, apporta le modifiche necessarie, quindi fai clic su Salva.
  • Fai clic su Elimina.
Nota:

Alcune opzioni di configurazione del gateway del modello potrebbero essere accessibili solo a livello di programmazione e avere effetti applicabili esclusivamente all'accesso programmatico.

Gestione dei limiti di frequenza a livello di programmazione

Aggiungi un limite a livello di tenant. Ad esempio, vedere il seguente comando:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/rate-limits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
  "type": "tenant",
  "request": {"capacity": 60, "amount": 10, "duration": "1m"}
}'

Aggiungi un limite a livello di provider. Ad esempio, vedere il seguente comando:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/rate-limits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
  "type": "provider",
  "provider_uuid": "8c7c5cb7-6b20-4d2e-b7c5-3c0e888b2e2b",
  "request": {"capacity": 30, "amount": 5, "duration": "1m"}
}'

Aggiungi un limite a livello di modello. Ad esempio, vedere il seguente comando:

curl -sS -X POST "https://cpd-<namespace-name>.apps.<OCP-domain>/ml/gateway/v1/rate-limits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${TOKEN}" \
-d '{
  "type": "model",
  "model_uuid": "7fa969e7-d315-4777-b2f7-5ea5500bf211",
  "request": {"capacity": 15, "amount": 3, "duration": "1m"}
}'

Monitoraggio dell'utilizzo

Monitorare l'utilizzo per ottenere:

Il monitoraggio dell'utilizzo è disponibile solo a livello di programmazione.

Ottenere le statistiche di utilizzo per un tenant specifico

Vedi esempio di query:

curl -sS -X GET "<https://cpd-<namespace-name>.apps.<OCP-domain>/ml/v1/usage?start_time=1704067200&end_time=1704153600&bucket_width=1d&group_by=model&group_by=usage_type&limit=50"> \

-H "Authorization: Bearer ${TOKEN}"

Parametri chiave:

  • end_timestart_time e: Unix timestamp (da 0 a 4102444800)

  • bucket_width: Intervallo di aggregazione - 1m, 1h, 1d (impostazione predefinita: 1d)

  • group_by: Raggruppa per campi - user_uuid, model, service_provider, credential_uuid, usage_type, load_balancer_uuid, load_balancer_alias (1-20 elementi)

  • limit: Numero massimo di bucket (1-100, impostazione predefinita: 10)

  • models: Filtra per nome del modello (1-100 articoli)

  • usage_types: Filtra per tipo - completion, embedding, moderation, image (1-20 articoli)

Ottenere le statistiche di utilizzo di un utente

Vedi esempio di query:

curl -sS -X GET "<https://cpd-<namespace-name>.apps.<OCP-domain>/ml/v1/usage/user?start_time=1704067200&end_time=1704153600&bucket_width=1h&group_by=model&limit=25"> \

-H "Authorization: Bearer ${TOKEN}"

Parametri chiave:

  • end_timestart_time e: Unix timestamp (da 0 a 4102444800)

  • bucket_width: Intervallo di aggregazione - 1m, 1h, 1d (impostazione predefinita: 1d)

  • group_by: Raggruppa per campi - user_uuid, model, service_provider, credential_uuid, usage_type, load_balancer_uuid, load_balancer_alias (1-20 elementi)

  • limit: Numero massimo di bucket (1-100, impostazione predefinita: 10)

  • models: Filtra per nome del modello (1-100 articoli)

  • usage_types: Filtra per tipo - completion, embedding (1-20 articoli)

Cosa fare adesso

Ora è possibile inviare richieste ai modelli tramite il gateway dei modelli. Per ulteriori dettagli, consultare la sezione "Inferenza dei modelli gateway".

Ulteriori informazioni

Per ulteriori dettagli sulla gestione del gateway del modello, consultare la documentazione API del gateway del modello.