As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Capturar dados do endpoint em tempo real
nota
O Amazon SageMaker Model Monitor não está mais aberto a novos clientes. Os clientes existentes podem continuar usando o serviço normalmente. AWS continua investindo em melhorias de segurança e disponibilidade para o Model Monitor, mas não planejamos introduzir novos recursos. Para obter mais informações, consulte Alteração na disponibilidade SageMaker do Amazon Model Monitor.
nota
Para evitar o impacto nas solicitações de inferência, a Captura de dados interrompe a captura de solicitações em altos níveis de uso do disco. É recomendável que você mantenha a utilização do disco abaixo de 75% para garantir que a captura de dados continue capturando as solicitações.
Para capturar dados para seu endpoint em tempo real, você deve implantar um modelo usando serviços de hospedagem de SageMaker IA. Isso exige que você crie um modelo de SageMaker IA, defina uma configuração de endpoint e crie um endpoint HTTPS.
As etapas necessárias para ativar a captura de dados são semelhantes, independentemente de você usar o SDK do Python AWS SDK para Python (Boto) ou o SDK do SageMaker Python. Se você usa o AWS SDK, defina o DataCaptureConfig dicionário, junto com os campos obrigatórios, dentro do CreateEndpointConfig método para ativar a captura de dados. Se você usa o SDK do SageMaker Python, importe a DataCaptureConfig DataCaptureConfig no método sagemaker.model.Model.deploy().
Para usar os trechos de código anteriores, substitua o italicized
placeholder text código do exemplo por suas próprias informações.
Como habilitar a captura de dados
Especifique uma configuração de captura de dados. É possível capturar a carga útil da solicitação, a carga útil da resposta ou ambas com essa configuração. O trecho de código a seguir demonstra como ativar a captura de dados usando o AWS SDK para Python (Boto) e o SageMaker AI Python SDK.
nota
Você não precisa usar o Model Monitor para capturar cargas úteis da solicitação ou da resposta.
Implantar o modelo
Implante seu modelo e crie um endpoint HTTPS com DataCapture ativado.
Visualizar os dados capturados
Crie um Endpoint objeto a partir do SDK do SageMaker Python. Você usará o Endpoint objeto para invocar seu endpoint em uma etapa futura. Forneça o nome do seu endpoint (definido anteriormente comoendpoint_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)
No cenário de exemplo de código em andamento, invocamos o endpoint com exemplos de dados de validação que armazenamos localmente em um arquivo CSV chamado validation_with_predictions. Nosso conjunto de validação de amostras contém rótulos para cada entrada.
As primeiras linhas da instrução With abrem primeiro o arquivo CSV do conjunto de validação, depois dividem cada linha dentro do arquivo pelo caractere de vírgula "," e, em seguida, armazenam os dois objetos retornados em um rótulo e variáveis input_cols. Para cada linha, a entrada (input_cols) é passada para o método invoke() embutido (endpoint) da variável de endpoint.
Suponha que o modelo retorne uma probabilidade. As probabilidades variam entre valores inteiros de 0 e 1.0. Se a probabilidade retornada pelo modelo for maior que 80% (0,8), atribuímos à predição um rótulo de valor inteiro de 1. Caso contrário, atribuímos à predição um rótulo de valor inteiro de 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!")
Como você habilitou a captura de dados nas etapas anteriores, a carga útil da solicitação e da resposta, além de alguns metadados adicionais, é salva no local do Amazon S3 especificado em DataCaptureConfig. A entrega dos dados de captura para o Amazon S3 pode exigir alguns minutos.
Visualize dados capturados listando os arquivos de captura de dados armazenados no Amazon S3. O formato do caminho do Amazon S3 é: s3:///.{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename.jsonl
Espere ver arquivos diferentes de diferentes períodos de tempo, organizados com base na hora em que a invocação ocorreu. Execute o seguinte para imprimir o conteúdo de um único arquivo de captura:
print("\n".join(capture_file[-3:-1]))
Isso retornará um arquivo JSON-line formatado específico da SageMaker IA. A seguir está um exemplo de resposta retirado de um endpoint em tempo real que invocamos usando dados 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"}
No exemplo a seguir, o objeto capture_file é um tipo de lista. Indexe o primeiro elemento da lista para visualizar uma única solicitação de inferência.
# 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))
Essa ação retornará uma resposta semelhante à seguinte: Os valores retornados serão diferentes com base na configuração do seu endpoint, no modelo de SageMaker IA e nos dados capturados:
{ "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" }