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à.
Acquisizione di dati da endpoint in tempo reale
Nota
Amazon SageMaker Model Monitor non è più aperto a nuovi clienti. I clienti esistenti possono continuare a utilizzare il servizio normalmente. AWS continua a investire in miglioramenti della sicurezza e della disponibilità per Model Monitor, ma non prevediamo di introdurre nuove funzionalità. Per ulteriori informazioni, consulta modifica della disponibilità di Amazon SageMaker Model Monitor.
Nota
Per prevenire l'impatto sulle richieste di inferenza, Acquisizione dei dati interrompe l'acquisizione delle richieste a livelli elevati di utilizzo del disco. Si consiglia di mantenere l'utilizzo del disco al di sotto del 75% per garantire che l'acquisizione dei dati continui a ricevere le richieste.
Per acquisire dati per il tuo endpoint in tempo reale, devi implementare un modello utilizzando i servizi di hosting SageMaker AI. Ciò richiede la creazione di un modello SageMaker AI, la definizione di una configurazione dell'endpoint e la creazione di un endpoint HTTPS.
I passaggi necessari per attivare l'acquisizione dei dati sono simili sia che si utilizzi l'SDK Python AWS SDK per Python (Boto) o SageMaker Python. Se usi l' AWS SDK, definisci il DataCaptureConfig dizionario, insieme ai campi obbligatori, all'interno del CreateEndpointConfig metodo per attivare l'acquisizione dei dati. Se usi SageMaker Python SDK, importa la DataCaptureConfig DataCaptureConfig nel metodo sagemaker.model.Model.deploy().
Per utilizzare i frammenti di codice procedenti, sostituisci il codice di esempio con italicized
placeholder text le tue informazioni.
Come abilitare l'acquisizione dei dati
Specifica una configurazione per l’acquisizione dei dati. Con questa configurazione puoi acquisire il payload di richiesta, il payload di risposta o entrambi. Lo snippet di codice che procede dimostra come abilitare l'acquisizione dei dati utilizzando l'SDK AI Python. AWS SDK per Python (Boto) SageMaker
Nota
Non è necessario utilizzare il monitoraggio dei modelli per acquisire i payload di richiesta o risposta.
Distribuzione del modello
Distribuisci il tuo modello e crea un endpoint HTTPS con abilitato DataCapture.
Visualizzare i dati acquisiti
Crea un Endpoint oggetto dall'SDK SageMaker Python. Utilizzerai l'Endpointoggetto per richiamare il tuo endpoint in una fase successiva. Fornisci il nome del tuo endpoint (definito in precedenza come). endpoint_name
from sagemaker.core.resources import Endpoint endpoint = Endpoint(endpoint_name=endpoint_name) # Example #from sagemaker.core.resources import Endpoint #endpoint = Endpoint(endpoint_name=endpoint_name)
Nel seguente scenario di esempio di codice, richiamiamo l'endpoint con dati di convalida di esempio che abbiamo archiviato in locale in un file CSV denominato validation_with_predictions. Il nostro set di convalida di esempio contiene etichette per ogni input.
Le prime righe delle istruzioni aprono innanzitutto il file CSV del set di convalida, quindi dividono ogni riga all'interno del file in base alla virgola "," e quindi memorizzano i due oggetti restituiti in un’etichetta e variabili input_cols. Per ogni riga, l'input (input_cols) viene passato al metodo integrato (endpoint) della variabile endpoint. invoke()
Supponiamo che il modello restituisca una probabilità. Le probabilità sono comprese tra i valori interi 0 e 1,0. Se la probabilità restituita dal modello è maggiore dell'80% (0,8), assegniamo alla previsione un'etichetta di valore intero pari a 1. Altrimenti, assegniamo alla previsione un'etichetta di valore intero pari a 0.
from time import sleep validate_dataset = "validation_with_predictions.csv" # Cut off threshold of 80% cutoff = 0.8 limit = 200 # Need at least 200 samples to compute standard deviations i = 0 with open(f"test_data/{validate_dataset}", "w") as validation_file: validation_file.write("probability,prediction,label\n") # CSV header with open("test_data/validation.csv", "r") as f: for row in f: (label, input_cols) = row.split(",", 1) probability = float(endpoint.invoke(input_cols)) prediction = "1" if probability > cutoff else "0" baseline_file.write(f"{probability},{prediction},{label}\n") i += 1 if i > limit: break print(".", end="", flush=True) sleep(0.5) print() print("Done!")
Poiché nelle fasi precedenti è stata abilitata l'acquisizione dei dati, i payload della richiesta e della risposta, insieme ad alcuni metadati aggiuntivi, vengono salvati nel percorso Amazon S3 specificato in DataCaptureConfig. La consegna dei dati di acquisizione ad Amazon S3 può richiedere qualche minuto.
Visualizzazione dei dati acquisiti tramite elenco dei file di acquisizione dei dati archiviati in Amazon S3. Il formato del percorso Amazon S3 è: s3:///.{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename.jsonl
Potrai visualizzare file differenti relativi a periodi diversi, organizzati in base all'ora in cui sono stati richiamati. Esegui quanto segue per stampare il contenuto di un singolo file di acquisizione:
print("\n".join(capture_file[-3:-1]))
Ciò restituirà un file JSON-line formattato specifico per l' SageMaker IA. Di seguito è riportato un esempio di risposta tratto da un endpoint in tempo reale che abbiamo richiamato utilizzando i dati csv/text:
{"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT", "data":"69,0,153.7,109,194.0,105,256.1,114,14.1,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0\n", "encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.0254181120544672","encoding":"CSV"}}, "eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"} {"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT", "data":"94,23,197.1,125,214.5,136,282.2,103,9.5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1\n", "encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.07675473392009735","encoding":"CSV"}}, "eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"}
Nell'esempio precedente, l'oggetto capture_file è un tipo di elenco. Indicizza il primo elemento dell'elenco per visualizzare una singola richiesta di inferenza.
# The capture_file object is a list. Index the first element to view a single inference request print(json.dumps(json.loads(capture_file[0]), indent=2))
Ciò restituisce una risposta simile alla seguente. I valori restituiti saranno diversi in base alla configurazione dell'endpoint, al modello SageMaker AI e ai dati acquisiti:
{ "captureData": { "endpointInput": { "observedContentType": "text/csv", # data MIME type "mode": "INPUT", "data": "50,0,188.9,94,203.9,104,151.8,124,11.6,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0\n", "encoding": "CSV" }, "endpointOutput": { "observedContentType": "text/csv; charset=character-encoding", "mode": "OUTPUT", "data": "0.023190177977085114", "encoding": "CSV" } }, "eventMetadata": { "eventId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "inferenceTime": "2022-02-14T17:25:06Z" }, "eventVersion": "0" }