Interpretar resultados
Depois de executar um trabalho de processamento de linha de base e obter estatísticas e restrições para o seu conjunto de dados, você poderá executar trabalhos de monitoramento que calculam estatísticas e listam as violações encontradas em relação às restrições de linha de base. As métricas do Amazon CloudWatch também são relatadas em sua conta por padrão. Para obter informações sobre como visualizar os resultados do monitoramento no Amazon SageMaker Studio, consulte Visualizar resultados para endpoints em tempo real no Amazon SageMaker Studio.
Execuções de lista
A programação inicia trabalhos de monitoramento nos intervalos especificados. O código a seguir lista as cinco últimas execuções. Se você estiver executando esse código depois de criar a programação por hora, as execuções poderão estar vazias e você poderá ter que esperar até cruzar o limite de horas (em UTC) para ver as execuções serem iniciadas. O código a seguir inclui a lógica de espera.
mon_executions = my_default_monitor.list_executions() print("We created a hourly schedule above and it will kick off executions ON the hour (plus 0 - 20 min buffer.\nWe will have to wait till we hit the hour...") while len(mon_executions) == 0: print("Waiting for the 1st execution to happen...") time.sleep(60) mon_executions = my_default_monitor.list_executions()
Inspecionar uma execução específica
Na etapa anterior, você selecionou a execução programada concluída ou com falha mais recente. É possível explorar o que deu certo ou errado. Os estados finais são:
-
Completed
: A execução do monitoramento foi concluída e nenhum problema foi encontrado no relatório de violações. -
CompletedWithViolations
: A execução foi concluída, mas foram detectadas violações de restrição. -
Failed
: A execução de monitoramento falhou, possivelmente devido a erro do cliente (por exemplo, problemas de função) ou problemas de infraestrutura. Para identificar a causa, consulteFailureReason
eExitMessage
.
latest_execution = mon_executions[-1] # latest execution's index is -1, previous is -2 and so on.. time.sleep(60) latest_execution.wait(logs=False) print("Latest execution status: {}".format(latest_execution.describe()['ProcessingJobStatus'])) print("Latest execution result: {}".format(latest_execution.describe()['ExitMessage'])) latest_job = latest_execution.describe() if (latest_job['ProcessingJobStatus'] != 'Completed'): print("====STOP==== \n No completed executions to inspect further. Please wait till an execution completes or investigate previously reported failures.")
report_uri=latest_execution.output.destination print('Report Uri: {}'.format(report_uri))
Relatórios gerados por listas
Use o código a seguir para listar os relatórios gerados.
from urllib.parse import urlparse s3uri = urlparse(report_uri) report_bucket = s3uri.netloc report_key = s3uri.path.lstrip('/') print('Report bucket: {}'.format(report_bucket)) print('Report key: {}'.format(report_key)) s3_client = boto3.Session().client('s3') result = s3_client.list_objects(Bucket=report_bucket, Prefix=report_key) report_files = [report_file.get("Key") for report_file in result.get('Contents')] print("Found Report Files:") print("\n ".join(report_files))
Relatório de violações
Se houver violações comparadas à linha de base, elas serão geradas no relatório de violações. Use o código a seguir para listar as violações.
violations = my_default_monitor.latest_monitoring_constraint_violations() pd.set_option('display.max_colwidth', -1) constraints_df = pd.io.json.json_normalize(violations.body_dict["violations"]) constraints_df.head(10)
Isso se aplica somente a conjuntos de dados que contêm dados tabulares. Os arquivos de esquema a seguir especificam as estatísticas calculadas e as violações monitoradas.
Arquivos de saída para conjuntos de dados tabulares
Nome do arquivo | Descrição |
---|---|
statistics.json |
Contém estatísticas colunares para cada atributo no conjunto de dados que é analisado. Consulte o esquema desse arquivo no próximo tópico. notaEsse arquivo é criado somente para monitoramento da qualidade dos dados. |
constraint_violations.json |
Contém uma lista de violações encontradas nesse conjunto atual de dados em comparação com o arquivo de estatísticas e restrições de linha de base especificado nos caminhos |
O Contêiner pré-criado do Amazon SageMaker Model Monitor salva um conjunto de métricas do Amazon CloudWatch para cada atributo por padrão.
O código do contêiner pode emitir métricas do CloudWatch neste local: /opt/ml/output/metrics/cloudwatch
.