Minimizza la latenza di inferenza in tempo reale utilizzando le strategie di routing di Amazon SageMaker

Riduci al minimo la latenza di inferenza in tempo reale con le strategie di routing di Amazon SageMaker

Amazon SageMaker rende semplice il deployment di modelli di machine learning (ML) per inferenze in tempo reale e offre una vasta selezione di istanze di ML che spaziano dalle CPU agli acceleratori come AWS Inferentia. Come servizio completamente gestito, puoi scalare il deployment dei tuoi modelli, minimizzare i costi di inferenza e gestire i tuoi modelli in produzione in modo più efficiente riducendo l’onere operativo. Un endpoint di inferenza in tempo reale di SageMaker consiste in un endpoint HTTPs e istanze di ML distribuite su più Availability Zone per garantire elevata disponibilità. La funzionalità di auto scaling dell’applicazione di SageMaker regola automaticamente le dimensioni delle istanze di ML assegnate a un modello in risposta ai cambiamenti del carico di lavoro. L’endpoint distribuisce in modo uniforme le richieste in arrivo alle istanze di ML utilizzando un algoritmo round-robin.

Quando i modelli di ML distribuiti su istanze ricevono chiamate API da un grande numero di client, una distribuzione casuale delle richieste può funzionare molto bene quando non c’è molta variabilità tra richieste e risposte. Ma in sistemi con carichi di lavoro di intelligenza artificiale generativa, le richieste e le risposte possono essere estremamente variabili. In questi casi, spesso è preferibile bilanciare il carico tenendo conto della capacità e dell’utilizzo dell’istanza anziché un bilanciamento casuale.

In questo post, discutiamo la strategia di routing delle richieste meno eccezionali (LOR) di SageMaker e come può ridurre al minimo la latenza per determinati tipi di carichi di lavoro di inferenza in tempo reale, tenendo conto della capacità e dell’utilizzo delle istanze di ML. Parliamo dei suoi vantaggi rispetto al meccanismo di routing predefinito e di come è possibile abilitare LOR per il deployment dei tuoi modelli. Infine, presentiamo un’analisi comparativa dei miglioramenti di latenza con LOR rispetto alla strategia di routing predefinita del bilanciamento casuale.

Strategia LOR di SageMaker

Per impostazione predefinita, gli endpoint di SageMaker hanno una strategia di routing casuale. SageMaker supporta ora anche una strategia LOR, che consente a SageMaker di instradare ottimamente le richieste all’istanza più adatta per gestire quella richiesta. SageMaker realizza ciò monitorando il carico delle istanze dietro l’endpoint e dei modelli o dei componenti di inferenza distribuiti su ciascuna istanza.

Il seguente diagramma interattivo mostra la politica di routing predefinita in cui le richieste che arrivano agli endpoint dei modelli vengono inoltrate in modo casuale alle istanze di ML.

Il seguente diagramma interattivo mostra la strategia di routing in cui SageMaker instraderà la richiesta all’istanza con il minor numero di richieste in sospeso.

In generale, il routing LOR funziona bene per modelli fondamentali o modelli di intelligenza artificiale generativa quando il tuo modello risponde in centinaia di millisecondi fino a minuti. Se la tua risposta del modello ha una latenza inferiore (fino a centinaia di millisecondi), potresti trarre maggiori benefici dal routing casuale. In ogni caso, ti consigliamo di testare e individuare l’algoritmo di routing migliore per i tuoi carichi di lavoro.

Come impostare le strategie di routing di SageMaker

SageMaker ora ti consente di impostare il parametro RoutingStrategy durante la creazione di EndpointConfiguration per gli endpoint. I diversi valori di RoutingStrategy supportati da SageMaker sono:

  • LEAST_OUTSTANDING_REQUESTS
  • RANDOM

Ecco un esempio di deployment di un modello su un endpoint di inferenza abilitato per LOR:

  1. Crea la configurazione dell’endpoint impostando RoutingStrategy come LEAST_OUTSTANDING_REQUESTS:

    endpoint_config_response = sm_client.create_endpoint_config(    EndpointConfigName=endpoint_config_name,    ProductionVariants=[        {            "VariantName": "variant1",            "ModelName": model_name,            "InstanceType": "instance_type",            "InitialInstanceCount": initial_instance_count,  …..            "RoutingConfig": {                'RoutingStrategy': 'LEAST_OUTSTANDING_REQUESTS'}        },    ],)
  2. Crea l’endpoint utilizzando la configurazione dell’endpoint (nessuna modifica):

    create_endpoint_response = sm_client.create_endpoint(    EndpointName="endpoint_name",     EndpointConfigName="endpoint_config_name")

Risultati delle prestazioni

Abbiamo eseguito il benchmark delle prestazioni per misurare la latenza di inferenza end-to-end e il throughput del modello codegen2-7B ospitato su istanze ml.g5.24xl con routing predefinito e endpoint di routing intelligente. Il modello CodeGen2 fa parte della famiglia di modelli di linguaggio autoregressivi e genera codice eseguibile quando vengono forniti prompt in inglese.

Nella nostra analisi, abbiamo aumentato il numero di istanze ml.g5.24xl dietro ogni endpoint per ogni esecuzione di test man mano che il numero di utenti simultanei aumentava, come indicato nella tabella seguente.

Test Numero di utenti simultanei Numero di istanze
1 4 1
2 20 5
3 40 10
4 60 15
5 80 20

Abbiamo misurato la latenza P99 end-to-end per entrambi gli endpoint e abbiamo osservato un miglioramento del 4-33% nella latenza quando il numero di istanze è stato aumentato da 5 a 20, come mostrato nel seguente grafico.

Allo stesso modo, abbiamo osservato un miglioramento del 15-16% nel throughput al minuto per istanza quando il numero di istanze è stato aumentato da 5 a 20.

Ciò dimostra che il routing intelligente è in grado di migliorare la distribuzione del traffico tra gli endpoint, portando a miglioramenti nella latenza end-to-end e nel throughput complessivo.

Conclusione

In questo articolo, abbiamo spiegato le strategie di routing di SageMaker e la nuova opzione per abilitare il routing LOR. Abbiamo spiegato come abilitare LOR e come può beneficiare i tuoi deployment di modelli. I nostri test di performance hanno mostrato miglioramenti nella latenza e nel throughput durante l’inferenza in tempo reale. Per saperne di più sulle funzionalità di routing di SageMaker, consulta la documentazione. Ti incoraggiamo a valutare i tuoi carichi di lavoro di inferenza e determinare se hai configurato in modo ottimale la strategia di routing.