Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esegui un test di carico personalizzato
I test di carico di Amazon SageMaker Inference Recommender eseguono benchmark approfonditi in base ai requisiti di produzione per la latenza e il throughput, i modelli di traffico personalizzati e gli endpoint serverless o le istanze in tempo reale (fino a 10) selezionate dall'utente.
Le seguenti sezioni mostrano come creare, descrivere e arrestare un test di carico a livello di programmazione utilizzando AWS SDK per Python (Boto3) e l’AWS CLI oppure in modo interattivo utilizzando Amazon SageMaker Studio Classic o la console di SageMaker AI.
Crea un processo di test di carico
Crea un test di carico a livello di programmazione utilizzando AWS SDK per Python (Boto3), con l’AWS CLI, oppure in modo interattivo utilizzando Studio Classic o la console di SageMaker AI. Come per le raccomandazioni di inferenza del suggeritore di inferenza, specifica un nome di processo per il test di carico, un ARN del ruolo IAM AWS, una configurazione di input e l'ARN del pacchetto di modelli da quando hai registrato il modello nel registro dei modelli. I test di carico richiedono anche che sia specificato un modello di traffico e le condizioni di arresto.
- AWS SDK per Python (Boto3)
-
Utilizza l'API
CreateInferenceRecommendationsJobper creare un test di carico del suggeritore di inferenza. SpecificaAdvancedper il campoJobTypee indica:-
Un nome di processo per il test di carico (
JobName). Il nome del processo deve essere univoco all'interno della regione AWS e nell'account AWS. -
Il nome della risorsa Amazon (ARN) di un ruolo IAM che consente al suggeritore di inferenza di eseguire attività per tuo conto. Definiscilo per il campo
RoleArn. -
Un dizionario di configurazione endpoint (
InputConfig) in cui specifichi le seguenti informazioni:-
Per
TrafficPattern, specifica il modello di traffico a fasi o a scalini. Con il modello di traffico a fasi, i nuovi utenti vengono generati ogni minuto alla velocità specificata. Con il modello di traffico a scalini, i nuovi utenti vengono generati a intervalli di tempo (o fasi) alla frequenza specificata. Seleziona una delle seguenti opzioni:-
Per
TrafficType, specificarePHASES. Quindi, per la matricePhases, specificaInitialNumberOfUsers(con quanti utenti simultanei iniziare, con un minimo di 1 e un massimo di 3),SpawnRate(il numero di utenti da generare in un minuto per una fase specifica di test di carico, con un minimo di 0 e un massimo di 3) eDurationInSeconds(quanto deve essere lunga la fase di traffico, con un minimo di 120 e un massimo di 3600). -
Per
TrafficType, specificareSTAIRS. Quindi, per la matriceStairs, specificaDurationInSeconds(quanto deve essere lunga la fase di traffico, con un minimo di 120 e un massimo di 3600),NumberOfSteps(quanti intervalli vengono utilizzati durante la fase) eUsersPerStep(quanti utenti vengono aggiunti durante ogni intervallo). Si noti che la lunghezza di ogni fase è il valore diDurationInSeconds / NumberOfSteps. Ad esempio, seDurationInSecondsè600e si specificano5fasi, ogni fase dura 120 secondi.Nota
Un utente è definito come un attore generato dal sistema che viene eseguito in un ciclo e invoca le richieste a un endpoint come parte del suggeritore di inferenza. Per un container XGBoost tipico in esecuzione su un'istanza
ml.c5.large, gli endpoint possono raggiungere le 30.000 invocazioni al minuto (500 tps) con solo 15-20 utenti.
-
-
Per
ResourceLimit, specificaMaxNumberOfTests(il numero massimo di test di carico di benchmarking per un processo del suggeritore di inferenza, con un minimo di 1 e un massimo di 10) eMaxParallelOfTests(il numero massimo di test di carico di benchmarking paralleli per un processo del suggeritore di inferenza, con un minimo di 1 e un massimo di 10). -
Per
EndpointConfigurations, puoi specificare uno dei seguenti elementi:-
Il campo
InstanceType, in cui specifichi il tipo di istanza su cui desideri eseguire i test di carico. -
ServerlessConfig, in cui si specifichi i valori ideali perMaxConcurrencyeMemorySizeInMBper un endpoint serverless. Per ulteriori informazioni, consulta la documentazione per inferenze serverless.
-
-
-
Un dizionario delle condizioni di arresto (
StoppingConditions), in cui il processo del suggeritore di inferenza si interrompe qualora fosse soddisfatta una condizione qualsiasi. Per questo esempio, specifica i seguenti campi nel dizionario:-
Per
MaxInvocations, specifica il numero massimo di richieste al minuto previsto per l'endpoint, con un minimo di 1 e un massimo di 30.000. -
Per
ModelLatencyThresholds, specificaPercentile(la soglia del percentile di latenza del modello) eValueInMilliseconds(il valore del percentile di latenza del modello in millisecondi). -
(Facoltativo) Per
FlatInvocations, è possibile specificare se continuare il test di carico quando la velocità TPS (invocazioni al minuto) smette di aumentare. Una velocità TPS costante indica generalmente che l'endpoint ha raggiunto la capacità. Tuttavia, potresti voler continuare a monitorare l'endpoint in condizioni di piena capacità. Per continuare il test di carico quando ciò accade, specifica questo valore comeContinue. In caso contrario, il valore predefinito èStop.
-
# Create a low-level SageMaker service client. import boto3 aws_region=<INSERT>sagemaker_client=boto3.client('sagemaker', region=aws_region) # Provide a name to your recommendation based on load testing load_test_job_name="<INSERT>"# Provide the name of the sagemaker instance type instance_type="<INSERT>"# Provide the IAM Role that gives SageMaker permission to access AWS services role_arn='arn:aws:iam::<account>:role/*' # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*' sagemaker_client.create_inference_recommendations_job( JobName=load_test_job_name, JobType="Advanced", RoleArn=role_arn, InputConfig={ 'ModelPackageVersionArn': model_package_arn, "JobDurationInSeconds": 7200, 'TrafficPattern' : { # Replace PHASES with STAIRS to use the stairs traffic pattern 'TrafficType': 'PHASES', 'Phases': [ { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 }, { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, 'ResourceLimit': { 'MaxNumberOfTests': 10, 'MaxParallelOfTests': 3 }, "EndpointConfigurations" : [{ 'InstanceType': 'ml.c5.xlarge' }, { 'InstanceType': 'ml.m5.xlarge' }, { 'InstanceType': 'ml.r5.xlarge' }] # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint # "ServerlessConfig": { # "MaxConcurrency":value, # "MemorySizeInMB":value# } }, StoppingConditions={ 'MaxInvocations': 1000, 'ModelLatencyThresholds':[{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 'FlatInvocations': 'Stop' } )Consulta la guida Amazon SageMaker API Reference per un elenco completo degli argomenti facoltativi e obbligatori che è possibile passare a
CreateInferenceRecommendationsJob. -
- AWS CLI
-
Utilizza l'API
create-inference-recommendations-jobper creare un test di carico del suggeritore di inferenza. SpecificaAdvancedper il campoJobTypee indica:-
Un nome di processo per il test di carico (
job-name). Il nome del processo deve essere univoco all'interno della regione AWS e nell'account AWS. -
Il nome della risorsa Amazon (ARN) di un ruolo IAM che consente al suggeritore di inferenza di eseguire attività per tuo conto. Definiscilo per il campo
role-arn. -
Un dizionario di configurazione endpoint (
input-config) in cui specifichi le seguenti informazioni:-
Per
TrafficPattern, specifica il modello di traffico a fasi o a scalini. Con il modello di traffico a fasi, i nuovi utenti vengono generati ogni minuto alla velocità specificata. Con il modello di traffico a scalini, i nuovi utenti vengono generati a intervalli di tempo (o fasi) alla frequenza specificata. Seleziona una delle seguenti opzioni:-
Per
TrafficType, specificarePHASES. Quindi, per la matricePhases, specificaInitialNumberOfUsers(con quanti utenti simultanei iniziare, con un minimo di 1 e un massimo di 3),SpawnRate(il numero di utenti da generare in un minuto per una fase specifica di test di carico, con un minimo di 0 e un massimo di 3) eDurationInSeconds(quanto deve essere lunga la fase di traffico, con un minimo di 120 e un massimo di 3600). -
Per
TrafficType, specificareSTAIRS. Quindi, per la matriceStairs, specificaDurationInSeconds(quanto deve essere lunga la fase di traffico, con un minimo di 120 e un massimo di 3600),NumberOfSteps(quanti intervalli vengono utilizzati durante la fase) eUsersPerStep(quanti utenti vengono aggiunti durante ogni intervallo). Si noti che la lunghezza di ogni fase è il valore diDurationInSeconds / NumberOfSteps. Ad esempio, seDurationInSecondsè600e si specificano5fasi, ogni fase dura 120 secondi.Nota
Un utente è definito come un attore generato dal sistema che viene eseguito in un ciclo e invoca le richieste a un endpoint come parte del suggeritore di inferenza. Per un container XGBoost tipico in esecuzione su un'istanza
ml.c5.large, gli endpoint possono raggiungere le 30.000 invocazioni al minuto (500 tps) con solo 15-20 utenti.
-
-
Per
ResourceLimit, specificaMaxNumberOfTests(il numero massimo di test di carico di benchmarking per un processo del suggeritore di inferenza, con un minimo di 1 e un massimo di 10) eMaxParallelOfTests(il numero massimo di test di carico di benchmarking paralleli per un processo del suggeritore di inferenza, con un minimo di 1 e un massimo di 10). -
Per
EndpointConfigurations, puoi specificare uno dei seguenti elementi:-
Il campo
InstanceType, in cui specifichi il tipo di istanza su cui desideri eseguire i test di carico. -
ServerlessConfig, in cui si specifichi i valori ideali perMaxConcurrencyeMemorySizeInMBper un endpoint serverless.
-
-
-
Un dizionario delle condizioni di arresto (
stopping-conditions), in cui il processo del suggeritore di inferenza si interrompe qualora fosse soddisfatta una condizione qualsiasi. Per questo esempio, specifica i seguenti campi nel dizionario:-
Per
MaxInvocations, specifica il numero massimo di richieste al minuto previsto per l'endpoint, con un minimo di 1 e un massimo di 30.000. -
Per
ModelLatencyThresholds, specificaPercentile(la soglia del percentile di latenza del modello) eValueInMilliseconds(il valore del percentile di latenza del modello in millisecondi). -
(Facoltativo) Per
FlatInvocations, è possibile specificare se continuare il test di carico quando la velocità TPS (invocazioni al minuto) smette di aumentare. Una velocità TPS costante indica generalmente che l'endpoint ha raggiunto la capacità. Tuttavia, potresti voler continuare a monitorare l'endpoint in condizioni di piena capacità. Per continuare il test di carico quando ciò accade, specifica questo valore comeContinue. In caso contrario, il valore predefinito èStop.
-
aws sagemaker create-inference-recommendations-job\ --region<region>\ --job-name<job-name>\ --job-type ADVANCED\ --role-arn arn:aws:iam::<account>:role/*\ --input-config \"{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\", \"JobDurationInSeconds\": 7200, \"TrafficPattern\" : { # Replace PHASES with STAIRS to use the stairs traffic pattern \"TrafficType\": \"PHASES\", \"Phases\": [ { \"InitialNumberOfUsers\": 1, \"SpawnRate\": 60, \"DurationInSeconds\": 300 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, \"ResourceLimit\": { \"MaxNumberOfTests\": 10, \"MaxParallelOfTests\": 3 }, \"EndpointConfigurations\" : [ { \"InstanceType\": \"ml.c5.xlarge\" }, { \"InstanceType\": \"ml.m5.xlarge\" }, { \"InstanceType\": \"ml.r5.xlarge\" } # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint # \"ServerlessConfig\": { # \"MaxConcurrency\":value, # \"MemorySizeInMB\":value# } ] }\" --stopping-conditions \"{ \"MaxInvocations\": 1000, \"ModelLatencyThresholds\":[ { \"Percentile\": \"P95\", \"ValueInMilliseconds\": 100 } ], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten \"FlatInvocations\": \"Stop\" }\" -
- Amazon SageMaker Studio Classic
-
Crea un test di carico con Studio Classic.
-
Nell’applicazione Studio Classic scegli l’icona home (
). -
Nella barra laterale di sinistra di Studio Classic scegli Implementazioni.
-
Scegli Suggeritore di inferenza dall'elenco a discesa.
-
Scegli Crea un processo di raccomandazione di inferenza. Si apre una nuova scheda intitolata Crea un processo di raccomandazione di inferenza.
-
Seleziona il nome del tuo gruppo di modelli dal campo Gruppo di modelli del menu a discesa. L’elenco include tutti i gruppi di modelli registrati nel registro dei modelli nell’account, inclusi i modelli registrati al di fuori di Studio Classic.
-
Seleziona una versione del modello dal campo Versione del modello del menu a discesa.
-
Scegli Continua.
-
Indica un nome per il processo nel campo Nome.
-
(Facoltativo) Fornisci una descrizione del processo nel campo Descrizione.
-
Seleziona un ruolo IAM che concede a Inference Recommender l’autorizzazione per accedere ai servizi AWS. A tale scopo, è possibile creare un ruolo e collegare la policy gestita IAM
AmazonSageMakerFullAccessoppure è possibile lasciare che sia Studio Classic a creare un ruolo. -
Scegli Condizioni di arresto per espandere i campi di input disponibili. Fornisci una serie di condizioni per interrompere una raccomandazione di implementazione.
-
Specifica il numero massimo di richieste al minuto previsto per l'endpoint nel campo Numero massimo di invocazioni al minuto.
-
Specifica la soglia di latenza del modello in microsecondi nel campo Soglia di latenza del modello. La soglia di latenza del modello rappresenta l'intervallo di tempo impiegato da un modello per rispondere, come mostrato dal suggeritore di inferenza. Questo intervallo include il tempo per le comunicazioni locali impiegato per inviare la richiesta e recuperare la risposta dal container del modello e il tempo richiesto per completare l'inferenza nel container.
-
-
Scegli Modello di traffico per espandere i campi di input disponibili.
-
Imposta il numero iniziale di utenti virtuali specificando un numero intero nel campo Numero iniziale di utenti.
-
Fornisci un numero intero per il campo Velocità di generazione. La velocità di generazione imposta il numero di utenti creati al secondo.
-
Imposta la durata della fase in secondi specificando un numero intero nel campo Durata.
-
(Facoltativo) Aggiungi modelli di traffico aggiuntivi. A tale scopo, seleziona Aggiungi.
-
-
Seleziona l'impostazione Aggiuntivo per visualizzare il campo Durata massima del test. Specifica, in secondi, il tempo massimo che un test può impiegare durante un processo. I nuovi processi non vengono pianificati dopo la durata definita. Ciò contribuisce a garantire che i processi in corso non vengano interrotti e che vengano visualizzati solo i processi completati.
-
Scegli Continua.
-
Seleziona Istanze selezionate.
-
Nel campo Istanze per il benchmarking, seleziona Aggiungi istanze da testare. Seleziona fino a 10 istanze che il suggeritore di inferenza deve utilizzare per i test di carico.
-
Seleziona Impostazioni aggiuntive.
-
Fornisci un numero intero che stabilisca un limite massimo al numero di test che un processo può eseguire per il campo Numero massimo di test. Tieni presente che ogni configurazione dell'endpoint comporta un nuovo test di carico.
-
Fornisci un numero intero per il campo di test Massimo paralleli. Questa impostazione definisce un limite superiore al numero di test di carico che possono essere eseguiti in parallelo.
-
-
Scegli Invia.
Il test di carico può richiedere fino a 2 ore.
avvertimento
Non chiudere questa scheda. Se si chiude questa scheda, si annulla il processo di test di carico del suggeritore di inferenza.
-
- SageMaker AI console
-
Crea un test di carico personalizzato tramite la console di SageMaker AI effettuando le seguenti operazioni:
-
Vai alla console di SageMaker AI all’indirizzo https://console.aws.amazon.com/sagemaker/
. -
Nel riquadro di navigazione di sinistra, seleziona Inferenza e poi Suggeritore di inferenza.
-
Nella pagina dei processi del suggeritore di inferenza, seleziona Crea processo.
-
Per fase 1, configurazione di modelli, procedi come segue:
-
Per Tipo di processo, seleziona Processo del suggeritore avanzato.
-
Se stai utilizzando un modello registrato nel registro dei modelli SageMaker AI, attiva la funzionalità Scegli un modello dal registro del modello ed esegui le seguenti operazioni:
-
Dall’elenco a discesa Gruppo di modelli seleziona il gruppo di modelli in SageMaker AI Model Registry in cui si trova il modello.
-
Dall'elenco a discesa Versione del modello, seleziona la versione desiderata del modello.
-
-
Se stai utilizzando un modello creato in SageMaker AI, disattiva la funzionalità Scegli un modello dal registro del modello ed esegui le seguenti operazioni:
-
Nel campo Nome modello inserisci il nome del tuo modello SageMaker AI.
-
-
Per Ruolo IAM, è possibile selezionare un ruolo IAM AWS esistente che dispone delle autorizzazioni necessarie per creare un processo di raccomandazione delle istanze. In alternativa, se non disponi di un ruolo esistente, è possibile scegliere Crea un nuovo ruolo per aprire il pop-up di creazione del ruolo e SageMaker AI aggiunge le autorizzazioni necessarie al nuovo ruolo creato.
-
Per Bucket S3 per l’esecuzione del benchmark del payload, inserisci il percorso Amazon S3 all’archivio del payload di esempio, che dovrebbe contenere i file di payload di esempio utilizzati da Inference Recommender per eseguire il benchmark del tuo modello in base a diversi tipi di istanze.
-
Per tipo di contenuto di payload, inserisci i tipi MIME per i dati del payload di esempio.
-
Per Modello di traffico, configura le fasi per il test di carico effettuando le seguenti operazioni:
-
Per Numero iniziale di utenti, specifica da quanti utenti simultanei vuoi iniziare (con un minimo di 1 e un massimo di 3).
-
Per Frequenza di generazione, specifica il numero di utenti da generare in un minuto per la fase (con un minimo di 0 e un massimo di 3).
-
Per Durata (secondi), specifica quanto deve essere bassa la fase di traffico in secondi (con un minimo di 120 e un massimo di 3600).
-
-
(Facoltativo) Se hai disattivato l’interruttore Scegli un modello dal registro del modello e hai specificato un modello SageMaker AI, per la configurazione del container, procedi come segue:
-
Per l’elenco a discesa Dominio, seleziona il dominio di machine learning del modello, ad esempio visione artificiale, elaborazione del linguaggio naturale o machine learning.
-
Per l'elenco a discesa Framework, seleziona il framework del tuo container, ad esempio TensorFlow o XGBoost.
-
Per Versione del framework, inserisci la versione del framework dell'immagine del container.
-
Per l'elenco a discesa Nome del modello più vicino, seleziona il modello pre-addestrato che più si avvicina al tuo.
-
Nell'elenco a discesa Attività, seleziona l'attività di machine learning svolta dal modello, ad esempio la classificazione o la regressione delle immagini.
-
-
(Facoltativo) Per la compilazione del modello con SageMaker Neo, è possibile configurare il processo di raccomandazione per un modello che è stato compilato utilizzando SageMaker Neo. Per configurazione dell'input dei dati, inserisci la forma dei dati di input corretta per il tuo modello in un formato simile a
{'input':[1,1024,1024,3]}. -
Scegli Next (Successivo).
-
-
Per fase 2, istanze e parametri di ambiente, effettua le seguenti operazioni:
-
Per Seleziona le istanze per l'esecuzione dei benchmark, seleziona fino a 8 tipi di istanze da sottoporre a benchmark.
-
(Facoltativo) Per Intervalli dei parametri dell'ambiente, puoi specificare i parametri dell'ambiente che contribuiscono a ottimizzare il modello. Specifica i parametri come le coppie Chiave e Valore.
-
Scegli Next (Successivo).
-
-
Per fase 3, parametri del processo, effettua le seguenti operazioni:
-
(Facoltativo) Nel campo Nome del processo, immetti un nome per il tuo processo di suggerimento sull’istanza. Quando crei il processo, SageMaker AI aggiunge un timestamp alla fine di questo nome.
-
(Facoltativo) Per il campo Descrizione processo, immetti una descrizione per il processo.
-
(Facoltativo) Per l'elenco a discesa Chiave di crittografia, seleziona una chiave AWS KMS per nome o inserisci il relativo ARN per crittografare i dati.
-
(Facoltativo) Per Numero massimo di test, inserisci il numero di test che desideri eseguire durante il processo di raccomandazione.
-
(Facoltativo) Per Test paralleli massimi, inserisci il numero di test paralleli che desideri eseguire durante il processo di raccomandazione.
-
(Per Durate massime dei test, inserisci il numero massimo di secondi per cui desideri che ciascun test venga eseguito.
-
Per Numero massimo di invocazioni al minuto, inserisci il numero massimo di richieste al minuto che l'endpoint può raggiungere prima dell'interruzione del processo di raccomandazione. Dopo aver raggiunto questo limite, SageMaker AI termina il processo.
-
Per Soglia di latenza del modello P99 (ms), inserisci il percentile di latenza del modello in millisecondi.
-
Scegli Next (Successivo).
-
-
Per fase 4, esamina il processo, esamina le configurazioni e quindi seleziona Invia.
-
Ottieni i risultati dei test di carico
È possibile raccogliere a livello di programmazione le metriche di tutti i test di carico una volta eseguiti i test di carico con AWS SDK per Python (Boto3), l’AWS CLI, Studio Classic o la console di SageMaker AI.
- AWS SDK per Python (Boto3)
-
Raccogli i parametri con l’API
DescribeInferenceRecommendationsJob. Specifica il nome del processo del test di carico per il campoJobName:load_test_response = sagemaker_client.describe_inference_recommendations_job( JobName=load_test_job_name )Stampa l'oggetto risposta.
load_test_response['Status']Questo esempio restituisce una risposta JSON simile alla seguente: Questo esempio mostra i tipi di istanza consigliati per l’inferenza in tempo reale (per un esempio che mostra raccomandazioni di inferenza Serverless, consulta l’esempio successivo).
{ 'JobName':'job-name', 'JobDescription':'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100} ]}, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName':'endpoint-name', 'VariantName':'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId':'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid':'x-amzn-requestid', 'content-type':'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0} }Le prime nuove righe forniscono informazioni sullo stesso processo di test di carico. Ciò include il nome del processo, l'ARN del ruolo e l'ora di creazione ed eliminazione.
Il dizionario
InferenceRecommendationscontiene un elenco di suggerimenti sull’inferenza di Inference Recommender.Il dizionario annidato
EndpointConfigurationcontiene il consiglio sul tipo di istanza (InstanceType) insieme al nome dell'endpoint e della variante (un modello di machine learning AWS implementato) utilizzati durante il processo di raccomandazione. Puoi utilizzare l'endpoint e il nome della variante per il monitoraggio in Eventi Amazon CloudWatch. Per ulteriori informazioni, consulta Metriche di Amazon SageMaker AI in Amazon CloudWatch.Il dizionario annidato
EndpointConfigurationcontiene anche la raccomandazione del conteggio di istanze (InitialInstanceCount). Si tratta del numero di istanze da fornire nell'endpoint per soddisfareMaxInvocationsspecificato inStoppingConditions. Ad esempio, seInstanceTypeèml.m5.largeeInitialInstanceCountè2, dovresti effettuare il provisioning di 2 istanzeml.m5.largeper l'endpoint in modo che possa gestire il TPS specificato nella condizione di arrestoMaxInvocations.Il dizionario annidato
Metricscontiene informazioni sul costo orario stimato (CostPerHour) per il tuo endpoint in tempo reale in dollari statunitensi, il costo per inferenza stimato (CostPerInference) per il tuo endpoint in tempo reale, il numero massimo di richiesteInvokeEndpointinviate all’endpoint e la latenza del modello (ModelLatency), ovvero l’intervallo di tempo (in microsecondi) impiegato dal modello per rispondere a SageMaker AI. La latenza del modello include il tempo per le comunicazioni locali impiegato per inviare la richiesta e recuperare la risposta dal container di un modello e il tempo richiesto per completare l’inferenza nel container.L'esempio seguente mostra la parte
InferenceRecommendationsdella risposta per un processo di test di carico configurato per restituire raccomandazioni di inferenza serverless:"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount":value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency":value, "MemorySizeInMb":value} }, "InvocationEndTime":value, "InvocationStartTime":value, "Metrics": { "CostPerHour":value, "CostPerInference":value, "CpuUtilization":value, "MaxInvocations":value, "MemoryUtilization":value, "ModelLatency":value, "ModelSetupTime":value}, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]È possibile interpretare i consigli per l’inferenza serverless in modo simile ai risultati per l’inferenza in tempo reale, ad eccezione di
ServerlessConfig, che indica i valori specificati perMaxConcurrencyeMemorySizeInMBdurante la configurazione del test di carico. Le raccomandazioni serverless misurano anche il parametroModelSetupTime, che misura (in microsecondi) il tempo necessario per avviare le risorse di calcolo su un endpoint serverless. Per ulteriori informazioni sulla configurazione di endpoint serverless, consulta la documentazione per inferenze serverless. - AWS CLI
-
Raccogli i parametri con l'API
describe-inference-recommendations-job. Specifica il nome del processo del test di carico per il flagjob-name:aws sagemaker describe-inference-recommendations-job --job-name<job-name>Questo restituisce una risposta simile al seguente esempio. Questo esempio mostra i tipi di istanza consigliati per l’inferenza in tempo reale (per un esempio che mostra raccomandazioni di inferenza Serverless, consulta l’esempio successivo).
{ 'JobName':'job-name', 'JobDescription':'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }] }, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName':'endpoint-name', 'VariantName':'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId':'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid':'x-amzn-requestid', 'content-type':'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0 } }Le prime nuove righe forniscono informazioni sullo stesso processo di test di carico. Ciò include il nome del processo, l'ARN del ruolo e l'ora di creazione ed eliminazione.
Il dizionario
InferenceRecommendationscontiene un elenco di suggerimenti sull’inferenza di Inference Recommender.Il dizionario annidato
EndpointConfigurationcontiene il consiglio sul tipo di istanza (InstanceType) insieme al nome dell'endpoint e della variante (un modello di machine learning AWS implementato) utilizzati durante il processo di raccomandazione. Puoi utilizzare l'endpoint e il nome della variante per il monitoraggio in Eventi Amazon CloudWatch. Per ulteriori informazioni, consulta Metriche di Amazon SageMaker AI in Amazon CloudWatch.Il dizionario annidato
Metricscontiene informazioni sul costo orario stimato (CostPerHour) per il tuo endpoint in tempo reale in dollari statunitensi, il costo per inferenza stimato (CostPerInference) per il tuo endpoint in tempo reale, il numero massimo di richiesteInvokeEndpointinviate all’endpoint e la latenza del modello (ModelLatency), ovvero l’intervallo di tempo (in microsecondi) impiegato dal modello per rispondere a SageMaker AI. La latenza del modello include il tempo per le comunicazioni locali impiegato per inviare la richiesta e recuperare la risposta dal container di un modello e il tempo richiesto per completare l’inferenza nel container.L'esempio seguente mostra la parte
InferenceRecommendationsdella risposta per un processo di test di carico configurato per restituire raccomandazioni di inferenza serverless:"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount":value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency":value, "MemorySizeInMb":value} }, "InvocationEndTime":value, "InvocationStartTime":value, "Metrics": { "CostPerHour":value, "CostPerInference":value, "CpuUtilization":value, "MaxInvocations":value, "MemoryUtilization":value, "ModelLatency":value, "ModelSetupTime":value}, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]È possibile interpretare i consigli per l'inferenza serverless in modo simile ai risultati per l'inferenza in tempo reale, ad eccezione di
ServerlessConfig, che indica i valori specificati perMaxConcurrencyeMemorySizeInMBdurante la configurazione del test di carico. Le raccomandazioni serverless misurano anche il parametroModelSetupTime, che misura (in microsecondi) il tempo necessario per avviare le risorse informatiche su un endpoint serverless. Per ulteriori informazioni sulla configurazione di endpoint serverless, consulta la documentazione per inferenze serverless. - Amazon SageMaker Studio Classic
-
Le raccomandazioni sono riportate in una nuova scheda chiamata Raccomandazioni di inferenza all’interno di Studio Classic. Può essere necessario fino a 2 ore prima che i risultati vengano visualizzati. Questa scheda contiene le collone Risultati e Dettagli.
La colonna Dettagli fornisce informazioni sul processo dei test di carico, ad esempio il nome assegnato al processo del test di carico, quando il processo è stato creato (Ora di creazione) e altro ancora. Contiene inoltre informazioni sulle Impostazioni, come il numero massimo di invocazioni avvenute al minuto e informazioni sugli Amazon Resource Name utilizzati.
La colonna Risultati fornisce una finestra riguardante gli obiettivi di implementazione e le raccomandazioni SageMaker AI in cui è possibile modificare l’ordine di visualizzazione dei risultati in base all’importanza dell’implementazione. Sono disponibili tre menu a discesa in cui è possibile indicare il livello di importanza del costo, della latenza e del throughput per il proprio caso d'uso. Puoi impostare il livello di importanza di ogni obiettivo (costo, latenza e throughput): importanza minima, importanza bassa, importanza moderata, importanza elevata o importanza massima.
In base alle selezioni di importanza per ogni obiettivo, il suggeritore di inferenza mostra la propria raccomandazione principale nel campo raccomandazione di SageMaker sulla destra del pannello, insieme al costo orario stimato e alla richiesta di inferenza. Fornisce inoltre informazioni sulla latenza del modello prevista, sul numero massimo di invocazioni e sul numero di istanze.
Oltre ai consigli principali visualizzati, è anche possibile visualizzare le stesse informazioni riportate per tutte le istanze testate dal suggeritore di inferenza nella sezione Tutte le esecuzioni.
- SageMaker AI console
-
È possibile visualizzare i risultati dei processi di test di carico personalizzati nella console di SageMaker AI effettuando le seguenti operazioni:
-
Vai alla console di SageMaker AI all’indirizzo https://console.aws.amazon.com/sagemaker/
. -
Nel riquadro di navigazione di sinistra, seleziona Inferenza e poi Suggeritore di inferenza.
-
Nella pagina dei processi di raccomandazione delle inferenze, scegli il nome del tuo processo di raccomandazione delle inferenze.
Nella pagina dei dettagli del processo è possibile visualizzare le raccomandazioni di inferenza, ovvero i tipi di istanza consigliati da SageMaker AI per il tuo modello, come mostrato nello screenshot seguente.
In questa sezione, è possibile confrontare i tipi di istanza in base a vari fattori, come la latenza del modello, il costo all’ora, il costo per inferenza e le invocazioni al minuto.
In questa pagina, è possibile visualizzare anche le configurazioni specificate per il processo. Nella sezione Monitoraggio, è possibile visualizzare i parametri di Amazon CloudWatch registrati per ogni tipo di istanza. Per ulteriori informazioni sull'interpretazione di questi parametri, consulta Interpretazione dei risultati.
-