

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á.

# Support para seus próprios contêineres com o Amazon SageMaker Model Monitor
<a name="model-monitor-byoc-containers"></a>

O Amazon SageMaker Model Monitor fornece um contêiner pré-construído com a capacidade de analisar os dados capturados de endpoints ou trabalhos de transformação em lote para conjuntos de dados tabulares. Se quiser trazer seu próprio contêiner, o Model Monitor fornecerá pontos de extensão que você pode aproveitar.

Dentro do sistema, ao criar um `MonitoringSchedule`, o Model Monitor acaba iniciando trabalhos de processamento. Por isso, o contêiner precisa estar ciente do contrato de trabalho de processamento documentado no tópico [Como criar um contêiner de processamento (cenário avançado)](build-your-own-processing-container.md). Observe que o Model Monitor inicia o trabalho de processamento em seu nome de acordo com a programação. Ao invocar, o Model Monitor configura variáveis de ambiente adicionais para você, de modo que o contêiner tenha contexto suficiente para processar os dados para essa execução específica da programação agendada. Para obter informações adicionais sobre entradas de contêiner, consulte o [Entradas do contrato de contêiner](model-monitor-byoc-contract-inputs.md).

No contêiner, usando as variáveis ou o contexto de ambiente acima, agora é possível analisar o conjunto de dados para o período atual no código personalizado. Uma vez concluída essa análise, é possível optar por emitir os relatórios que serão carregados no bucket do S3. Os relatórios gerados pelo contêiner pré-criado são documentados em [Saídas de contrato do contêiner](model-monitor-byoc-contract-outputs.md). Se você quiser que a visualização dos relatórios funcione no SageMaker Studio, siga o mesmo formato. Também é possível optar por emitir relatórios completamente personalizados.

Você também emite CloudWatch métricas do contêiner seguindo as instruções em[CloudWatch Métricas para trazer seus próprios contêineres](model-monitor-byoc-cloudwatch.md).

**Topics**
+ [Entradas do contrato de contêiner](model-monitor-byoc-contract-inputs.md)
+ [Saídas de contrato do contêiner](model-monitor-byoc-contract-outputs.md)
+ [CloudWatch Métricas para trazer seus próprios contêineres](model-monitor-byoc-cloudwatch.md)

# Entradas do contrato de contêiner
<a name="model-monitor-byoc-contract-inputs"></a>

A plataforma Amazon SageMaker Model Monitor invoca seu código de contêiner de acordo com um cronograma especificado. Se você optar por escrever seu próprio código de contêiner, as variáveis de ambiente a seguir estarão disponíveis. Nesse contexto, será possível analisar o conjunto de dados atual ou avaliar as restrições se escolher e emitir métricas, se aplicável.

As variáveis de ambiente disponíveis são as mesmas para endpoints em tempo real e trabalhos de transformação de lotes, exceto pela variável `dataset_format`. Se você estiver usando um endpoint em tempo real, a variável `dataset_format` oferece apoio às seguintes opções:

```
{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}
```

Se você estiver usando um trabalho de transformação de lotes, o `dataset_format` é compatível com as seguintes opções:

```
{\"csv\": {\"header\": [\"true\",\"false\"]}}
```

```
{\"json\": {\"line\": [\"true\",\"false\"]}}
```

```
{\"parquet\": {}}
```

O exemplo de código a seguir mostra o conjunto completo de variáveis de ambiente disponíveis para seu código de contêiner (e usa o formato `dataset_format` para um endpoint em tempo real).

```
"Environment": {
 "dataset_format": "{\"sagemakerCaptureJson\": {\"captureIndexNames\": [\"endpointInput\",\"endpointOutput\"]}}",
 "dataset_source": "/opt/ml/processing/endpointdata",
 "end_time": "2019-12-01T16: 20: 00Z",
 "output_path": "/opt/ml/processing/resultdata",
 "publish_cloudwatch_metrics": "Disabled",
 "sagemaker_endpoint_name": "endpoint-name",
 "sagemaker_monitoring_schedule_name": "schedule-name",
 "start_time": "2019-12-01T15: 20: 00Z"
}
```

Parâmetros 


| Nome do parâmetro | Description | 
| --- | --- | 
| dataset\$1format |  Para um trabalho iniciado a partir de um `MonitoringSchedule` com base em um `Endpoint`, isso é `sageMakerCaptureJson` com os índices de captura `endpointInput`, `endpointOutput` ou ambos. Para um trabalho de transformação de lotes, isso especifica o formato dos dados, seja CSV, JSON ou Parquet.  | 
| dataset\$1source |  Se você estiver usando um endpoint em tempo real, o caminho local no qual os dados correspondentes ao período de monitoramento, conforme especificado por `start_time` e `end_time`, estão disponíveis. Nesse caminho, os dados estão disponíveis em ` /{endpoint-name}/{variant-name}/yyyy/mm/dd/hh`. Às vezes, fazemos download mais do que o especificado pelos horários de início e de término. Cabe ao código do contêiner analisar os dados conforme necessário.  | 
| output\$1path |  O caminho local para gravar relatórios de saída e outros arquivos. Especifique esse parâmetro na solicitação `CreateMonitoringSchedule` como `MonitoringOutputConfig.MonitoringOutput[0].LocalPath`. É feito upload dele no caminho `S3Uri` especificado em `MonitoringOutputConfig.MonitoringOutput[0].S3Uri`.  | 
| publish\$1cloudwatch\$1metrics |  Para um trabalho executado por `CreateMonitoringSchedule`, esse parâmetro é definido como `Enabled`. O contêiner pode escolher gravar o arquivo CloudWatch de saída da Amazon em`[filepath]`.  | 
| sagemaker\$1endpoint\$1name |  Se você estiver usando um endpoint em tempo real, o nome do `Endpoint` para o qual esse trabalho programado foi iniciado.  | 
| sagemaker\$1monitoring\$1schedule\$1name |  O nome do `MonitoringSchedule` que executou esse trabalho.  | 
| \$1sagemaker\$1endpoint\$1datacapture\$1prefix\$1 |  Se você estiver usando um endpoint em tempo real, o prefixo especificado no parâmetro `DataCaptureConfig` do `Endpoint`. O contêiner pode usar isso se precisar acessar diretamente mais dados do que os já baixados pela SageMaker IA no `dataset_source` caminho.  | 
| start\$1time, end\$1time |  A janela de tempo para a execução dessa análise. Por exemplo, para um trabalho programado para ser executado às 05:00 UTC e um trabalho executado em 20/02/2020, `start_time` é 2020-02-19T06:00:00Z e `end_time` é 2020-02-20T05:00:00Z  | 
| baseline\$1constraints: |  O caminho local do arquivo de restrição de linha de base especificado em ` BaselineConfig.ConstraintResource.S3Uri`. Isso só estará disponível se esse parâmetro tiver sido especificado na solicitação `CreateMonitoringSchedule`.  | 
| baseline\$1statistics |  O caminho local para o arquivo de estatísticas da linha de base especificado em `BaselineConfig.StatisticsResource.S3Uri`. Isso só estará disponível se esse parâmetro tiver sido especificado na solicitação `CreateMonitoringSchedule`.   | 

# Saídas de contrato do contêiner
<a name="model-monitor-byoc-contract-outputs"></a>

O contêiner pode analisar os dados disponíveis no caminho `*dataset_source*` e gravar relatórios para o caminho em `*output_path*.`. O código do contêiner pode gravar qualquer relatório que atenda às suas necessidades.

Se você usar a estrutura e o contrato a seguir, determinados arquivos de saída serão tratados especialmente pela SageMaker IA na visualização e na API. Isso se aplica somente a conjuntos de dados tabulares.

Arquivos de saída para conjuntos de dados tabulares


| Nome do arquivo | Description | 
| --- | --- | 
| statistics.json |  Espera-se que este arquivo tenha estatísticas colunares para cada atributo no conjunto de dados que é analisado. O esquema para este arquivo está disponível na próxima seção.  | 
| constraints.json |  Espera-se que este arquivo tenha as restrições sobre os atributos observados. O esquema para este arquivo está disponível na próxima seção.  | 
| constraints\$1violations.json |  Espera-se que este arquivo tenha a 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 no caminho `baseline_constaints` e `baseline_statistics`.  | 

Além disso, se o `publish_cloudwatch_metrics` valor for código de `"Enabled"` contêiner pode emitir CloudWatch métricas da Amazon neste local:`/opt/ml/output/metrics/cloudwatch`. O esquema para esses arquivos está descrito nas seções a seguir.

**Topics**
+ [Esquema para estatísticas (arquivo statistics.json)](model-monitor-byoc-statistics.md)
+ [Esquema para restrições (arquivo constraints.json)](model-monitor-byoc-constraints.md)

# Esquema para estatísticas (arquivo statistics.json)
<a name="model-monitor-byoc-statistics"></a>

O esquema definido no arquivo `statistics.json` especifica os parâmetros estatísticos a serem calculados para a linha de base e para os dados capturados. Ele também configura o bucket que deve ser usado pelo [KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html), um esboço de quantis muito compacto com esquema de compactação lento.

```
{
    "version": 0,
    # dataset level stats
    "dataset": {
        "item_count": number
    },
    # feature level stats
    "features": [
        {
            "name": "feature-name",
            "inferred_type": "Fractional" | "Integral",
            "numerical_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "mean": number,
                "sum": number,
                "std_dev": number,
                "min": number,
                "max": number,
                "distribution": {
                    "kll": {
                        "buckets": [
                            {
                                "lower_bound": number,
                                "upper_bound": number,
                                "count": number
                            }
                        ],
                        "sketch": {
                            "parameters": {
                                "c": number,
                                "k": number
                            },
                            "data": [
                                [
                                    num,
                                    num,
                                    num,
                                    num
                                ],
                                [
                                    num,
                                    num
                                ][
                                    num,
                                    num
                                ]
                            ]
                        }#sketch
                    }#KLL
                }#distribution
            }#num_stats
        },
        {
            "name": "feature-name",
            "inferred_type": "String",
            "string_statistics": {
                "common": {
                    "num_present": number,
                    "num_missing": number
                },
                "distinct_count": number,
                "distribution": {
                    "categorical": {
                         "buckets": [
                                {
                                    "value": "string",
                                    "count": number
                                }
                          ]
                     }
                }
            },
            #provision for custom stats
        }
    ]
}
```

**Observações**  
As métricas especificadas são reconhecidas pela SageMaker IA em alterações posteriores na visualização. O contêiner pode emitir mais métricas, se necessário.
O [esboço KLL](https://datasketches.apache.org/docs/KLL/KLLSketch.html) é o esboço reconhecido. Os contêineres personalizados podem escrever sua própria representação, mas ela não será reconhecida pela SageMaker IA nas visualizações.
Por padrão, a distribuição é materializada em 10 buckets. Não é possível alterar esse valor.

# Esquema para restrições (arquivo constraints.json)
<a name="model-monitor-byoc-constraints"></a>

Um arquivo constraints.json é usado para expressar as restrições que um conjunto de dados deve satisfazer. Os contêineres SageMaker do Amazon Model Monitor podem usar o arquivo constraints.json para avaliar os conjuntos de dados. Os contêineres pré-criados fornecem a capacidade de gerar o arquivo constraints.json automaticamente para um conjunto de dados da linha de base. Se você trouxer seu próprio contêiner, será possível fornecê-lo com habilidades semelhantes ou você poderá criar o arquivo constraints.json de alguma outra maneira. Veja a seguir o esquema para o arquivo de restrição que o contêiner pré-criado usa. Ao trazer seus próprios contêineres, é possível adotar o mesmo formato ou melhorá-lo conforme necessário.

```
{
    "version": 0,
    "features":
    [
        {
            "name": "string",
            "inferred_type": "Integral" | "Fractional" | 
                    | "String" | "Unknown",
            "completeness": number,
            "num_constraints":
            {
                "is_non_negative": boolean
            },
            "string_constraints":
            {
                "domains":
                [
                    "list of",
                    "observed values",
                    "for small cardinality"
                ]
            },
            "monitoringConfigOverrides":
            {}
        }
    ],
    "monitoring_config":
    {
        "evaluate_constraints": "Enabled",
        "emit_metrics": "Enabled",
        "datatype_check_threshold": 0.1,
        "domain_content_threshold": 0.1,
        "distribution_constraints":
        {
            "perform_comparison": "Enabled",
            "comparison_threshold": 0.1,
            "comparison_method": "Simple"||"Robust",
            "categorical_comparison_threshold": 0.1,
            "categorical_drift_method": "LInfinity"||"ChiSquared"
        }
    }
}
```

O objeto `monitoring_config` contém opções para o trabalho de monitoramento do atributo. A tabela a seguir descreve cada opção.

Monitoramento de restrições

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/model-monitor-byoc-constraints.html)

# CloudWatch Métricas para trazer seus próprios contêineres
<a name="model-monitor-byoc-cloudwatch"></a>

Se o `publish_cloudwatch_metrics` valor estiver `Enabled` no `Environment` mapa do `/opt/ml/processing/processingjobconfig.json` arquivo, o código do contêiner emite CloudWatch métricas da Amazon neste local:`/opt/ml/output/metrics/cloudwatch`. 

O esquema desse arquivo é estreitamente baseado na CloudWatch `PutMetrics` API. O namespace não é especificado aqui. O padrão é o seguinte:
+ `For real-time endpoints: /aws/sagemaker/Endpoint/data-metrics`
+ `For batch transform jobs: /aws/sagemaker/ModelMonitoring/data-metrics`

No entanto, é possível especificar dimensões. Recomendamos que você adicione as dimensões a seguir no mínimo:
+ `Endpoint` e `MonitoringSchedule` para endpoints em tempo real
+ `MonitoringSchedule` para trabalhos de transformação de lotes

Os trechos JSON a seguir mostram como definir suas dimensões.

Para um endpoint em tempo real, consulte o seguinte trecho JSON, que inclui as dimensões `Endpoint` e `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"Endpoint","Value":"endpoint_0"},{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```

Para um trabalho de transformação de lotes, consulte o seguinte trecho JSON, que inclui a dimensão `MonitoringSchedule`:

```
{ 
    "MetricName": "", # Required
    "Timestamp": "2019-11-26T03:00:00Z", # Required
    "Dimensions" : [{"Name":"MonitoringSchedule","Value":"schedule_0"}]
    "Value": Float,
    # Either the Value or the StatisticValues field can be populated and not both.
    "StatisticValues": {
        "SampleCount": Float,
        "Sum": Float,
        "Minimum": Float,
        "Maximum": Float
    },
    "Unit": "Count", # Optional
}
```