

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

# Rastreamento SageMaker de linhagem do Amazon ML
<a name="lineage-tracking"></a>

**Importante**  
Em 30 de novembro de 2023, a experiência anterior do Amazon SageMaker Studio agora se chama Amazon SageMaker Studio Classic. A seção a seguir é específica ao uso da aplicação Studio Classic. Para obter informações sobre como usar a experiência atualizada do Studio, consulte [SageMaker Estúdio Amazon](studio-updated.md).  
O Studio Classic ainda é mantido para cargas de trabalho existentes, mas não está mais disponível para integração. Você só pode parar ou excluir aplicativos do Studio Classic existentes e não pode criar novos. Recomendamos que você [migre sua carga de trabalho para a nova experiência do Studio](studio-updated-migrate.md).

O Amazon SageMaker ML Lineage Tracking cria e armazena informações sobre as etapas de um fluxo de trabalho de aprendizado de máquina (ML), desde a preparação dos dados até a implantação do modelo. Com as informações de monitoramento, você pode reproduzir as etapas do fluxo de trabalho, rastrear a linhagem do modelo e do conjunto de dados e estabelecer padrões de governança e auditoria do modelo.

SageMaker O recurso de rastreamento de linhagem da AI funciona no back-end para rastrear todos os metadados associados aos fluxos de trabalho de treinamento e implantação do seu modelo. Isso inclui seus trabalhos de treinamento, conjuntos de dados usados, pipelines, endpoints e os modelos atuais. Você pode consultar o serviço de linhagem a qualquer momento para encontrar os artefatos exatos usados para treinar um modelo. Usando esses artefatos, você pode recriar o mesmo fluxo de trabalho de ML para reproduzir o modelo, desde que tenha acesso ao conjunto de dados exato que foi usado. Um componente teste monitora o trabalho de treinamento. Esse componente de teste tem todos os parâmetros usados como parte do trabalho de treinamento. Se você não precisar executar novamente todo o fluxo de trabalho, poderá reproduzir o trabalho de treinamento para derivar o mesmo modelo.

Com o SageMaker AI Lineage Tracking, cientistas de dados e criadores de modelos podem fazer o seguinte:
+ Manter um histórico contínuo dos experimentos de descoberta de modelos.
+ Estabelecer a governança do modelo rastreando artefatos da linhagem do modelo para auditoria e verificação de conformidade.

O diagrama a seguir mostra um exemplo de gráfico de linhagem que a Amazon SageMaker AI cria automaticamente em um fluxo de trabalho de ML de treinamento e implantação de end-to-end modelos.

![\[\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/pipelines/PipelineLineageWorkflow.png)


**Topics**
+ [Entidades de monitoramento de linhagem](lineage-tracking-entities.md)
+ [Entidades de rastreamento SageMaker criadas pela Amazon AI](lineage-tracking-auto-creation.md)
+ [Crie entidades de monitoramento manualmente](lineage-tracking-manual-creation.md)
+ [Consultar entidades de linhagem](querying-lineage-entities.md)
+ [Monitorar linhagem entre contas](xaccount-lineage-tracking.md)

# Entidades de monitoramento de linhagem
<a name="lineage-tracking-entities"></a>

As entidades de rastreamento mantêm uma representação de todos os elementos do seu fluxo de trabalho end-to-end de aprendizado de máquina. Você pode usar essa representação para estabelecer a governança do modelo, reproduzir seu fluxo de trabalho e manter um registro do seu histórico de trabalho.

A Amazon SageMaker AI cria automaticamente entidades de rastreamento para componentes de teste e seus testes e experimentos associados quando você cria trabalhos de SageMaker IA, como trabalhos de processamento, trabalhos de treinamento e trabalhos de transformação em lote. Além do monitoramento automático, você também pode [Crie entidades de monitoramento manualmente](lineage-tracking-manual-creation.md) modelar etapas personalizadas em seu fluxo de trabalho. Para obter mais informações, consulte [SageMaker Experiências da Amazon no Studio Classic](experiments.md).

SageMaker A IA também cria automaticamente entidades de rastreamento para as outras etapas de um fluxo de trabalho, para que você possa acompanhar o fluxo de trabalho de ponta a ponta. Para obter mais informações, consulte [Entidades de rastreamento SageMaker criadas pela Amazon AI](lineage-tracking-auto-creation.md).

Você pode criar entidades adicionais para complementar as criadas pela SageMaker IA. Para obter mais informações, consulte [Crie entidades de monitoramento manualmente](lineage-tracking-manual-creation.md).

SageMaker A IA reutiliza todas as entidades existentes em vez de criar novas. Por exemplo, pode haver apenas um artefato com um `SourceUri` exclusivo.

**Conceitos-chave para consultar a linhagem**
+ **Linhagem**: metadados que rastreiam as relações entre várias entidades em seus fluxos de trabalho de ML.
+ **QueryLineage**— A ação de inspecionar sua linhagem e descobrir relacionamentos entre entidades.
+ **Entidades de linhagem**: os elementos de metadados dos quais sua linhagem é composta.
+ **Linhagem entre contas**: seu fluxo de trabalho de ML pode abranger mais de uma conta. Com a linhagem entre contas, você pode configurar várias contas para criar automaticamente associações de linhagem entre recursos de entidades compartilhadas. QueryLineage então pode retornar entidades até mesmo dessas contas compartilhadas.

As seguintes entidades de monitoramento estão definidas:

**Entidades do experimento**
+ [Componente de teste](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): um estágio de um teste de machine learning. Inclui trabalhos de processamento, trabalhos de treinamento e trabalhos de transformação de lote.
+ [Teste](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrial.html): Uma combinação de componentes de teste que geralmente produz um modelo.
+ [Experiência](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateExperiment.html): Um agrupamento de ensaios geralmente focados na solução de um caso de uso específico.

**Entidades de linhagem**
+ [Componente experimental](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): representa trabalhos de processamento, treinamento e transformação na linhagem. Também faz parte do gerenciamento de experimentos.
+ [Contexto](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateContext.html): fornece um agrupamento lógico de outras entidades de monitoramento ou experimento. Conceitualmente, experimentos e ensaios são contextos. Alguns exemplos são um endpoint e um pacote de modelo.
+ [Ação](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAction.html): representa uma ação ou atividade. Geralmente, uma ação envolve pelo menos um artefato de entrada ou artefato de saída. Alguns exemplos são uma etapa do fluxo de trabalho e a implantação do modelo.
+ [Artefato](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateArtifact.html): representa um objeto ou dado endereçável por URI. Um artefato geralmente é uma entrada ou uma saída para um componente ou ação de teste. Alguns exemplos incluem um conjunto de dados (URI do bucket do S3) ou uma imagem (caminho de registro do Amazon ECR).
+ [Associação](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html): vincula outras entidades de monitoramento ou experimento, como uma associação entre a localização dos dados de treinamento e um trabalho de treinamento.

  Uma associação tem uma propriedade `AssociationType` opcional. Os valores a seguir estão disponíveis junto com o uso sugerido para cada tipo. SageMaker A IA não impõe restrições ao seu uso:
  + `ContributedTo`: a fonte contribuiu para o destino ou participou da habilitação do destino. Por exemplo, os dados de treinamento contribuíram para o trabalho de treinamento.
  + `AssociatedWith`: a fonte está conectada ao destino. Por exemplo, um fluxo de trabalho de aprovação está associado à implantação de um modelo.
  + `DerivedFrom`: o destino é uma modificação da fonte. Por exemplo, uma saída resumida de uma entrada de canal para um trabalho de processamento é derivada das entradas originais.
  + `Produced`: a fonte gerou o destino. Por exemplo, um trabalho de treinamento produziu um artefato do modelo.
  + `SameAs`: quando a mesma entidade de linhagem é usada em contas diferentes.

**Propriedades comuns**
+ **Tipo de propriedade**

  As entidades de ação, artefato e contexto têm uma propriedade *de tipo*, `ActionType`, `ArtifactType` e `ContextType`, respectivamente. Essa propriedade é uma string personalizada que pode associar informações significativas à entidade e ser usada como filtro na Lista APIs.
+ **Propriedade da origem**

  As entidades de ação, artefato e contexto têm uma propriedade `Source`. Essa propriedade fornece o URI subjacente que a entidade representa. Alguns exemplos são:
  + Uma ação `UpdateEndpoint` em que a fonte é a `EndpointArn`.
  + Um artefato de imagem para um trabalho de processamento em que a fonte é a `ImageUri`.
  + Um contexto `Endpoint` em que a fonte é a `EndpointArn`.
+ **Propriedades de metadados**

  As entidades de ação e artefato têm uma propriedade `Metadata` opcional que pode fornecer as seguintes informações:
  + `ProjectId`— Por exemplo, o ID do MLOps projeto de SageMaker IA ao qual um modelo pertence.
  + `GeneratedBy`— Por exemplo, a execução do pipeline de SageMaker IA que registrou uma versão do pacote do modelo.
  + `Repository`: por exemplo, o repositório que contém um algoritmo.
  + `CommitId`: por exemplo, o ID de confirmação de uma versão do algoritmo.

# Entidades de rastreamento SageMaker criadas pela Amazon AI
<a name="lineage-tracking-auto-creation"></a>

O Amazon SageMaker AI cria automaticamente entidades de rastreamento para trabalhos, modelos, pacotes de modelos e endpoints de SageMaker IA, se os dados estiverem disponíveis. Não há limite para o número de entidades de linhagem criadas pela SageMaker IA.

Para obter informações sobre como você pode criar manualmente entidades de monitoramento, consulte [Crie entidades de monitoramento manualmente](lineage-tracking-manual-creation.md).

**Topics**
+ [Entidades de rastreamento para trabalhos de SageMaker IA](#lineage-tracking-auto-creation-jobs)
+ [Entidades de monitoramento para pacotes de modelos](#lineage-tracking-auto-creation-model-package)
+ [Entidades de monitoramento para endpoints](#lineage-tracking-auto-creation-endpoint)

## Entidades de rastreamento para trabalhos de SageMaker IA
<a name="lineage-tracking-auto-creation-jobs"></a>

SageMaker A IA cria um componente de teste para e está associado a cada trabalho de SageMaker IA. SageMaker A IA cria artefatos para rastrear os metadados do trabalho e as associações entre cada artefato e o trabalho.

Os artefatos são criados para as seguintes propriedades de trabalho e associados ao Amazon Resource Name (ARN) SageMaker do trabalho de IA. O artefato `SourceUri` está listado entre parênteses.

**Trabalho de treinamento**
+ A imagem de contêiner que especifica o algoritmo de treinamento (`TrainingImage`).
+ A fonte de dados de cada canal de entrada (`S3Uri`).
+ A localização do modelo (`S3OutputPath)`.
+ A localização dos dados do ponto de verificação pontual gerenciado (`S3Uri`).

**Processamento de trabalho**
+ O contêiner a ser executado pelo trabalho de processamento (`ImageUri`).
+ A localização dos dados para cada entrada e saída de processamento (`S3Uri`).

**Trabalho de transformação**
+ A fonte de dados de entrada a ser transformada (`S3Uri`).
+ Os resultados da transformação (`S3OutputPath`).

**nota**  
Os artefatos do Amazon Simple Storage Service (Amazon S3) são rastreados com base nos valores de URI do Amazon S3 fornecidos à API Create, por exemplo, [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)e não na chave e nos valores de hash ou etag do Amazon S3 de cada arquivo.

## Entidades de monitoramento para pacotes de modelos
<a name="lineage-tracking-auto-creation-model-package"></a>

As seguintes entidades são criadas:

**Pacotes de modelos**
+ Um contexto para cada grupo de pacotes de modelos.
+ Um artefato para cada pacote de modelo.
+ Uma associação entre cada artefato de pacote de modelo e o contexto de cada grupo de pacote de modelo ao qual o pacote pertence.
+ Uma ação para a criação de uma versão de pacote de modelo.
+ Uma associação entre o artefato do pacote de modelos e a ação de criação.
+ Uma associação entre o artefato do pacote do modelo e o contexto de cada grupo do pacote do modelo ao qual o pacote pertence.
+ Contêiner de inferência
  + Um artefato para a imagem usada em cada contêiner definido no pacote do modelo.
  + Um artefato para o modelo usado em cada contêiner.
  + Uma associação entre cada artefato e o artefato do pacote de modelos.
+ Algoritmos
  + Um artefato para cada algoritmo definido no pacote do modelo.
  + Um artefato para o modelo criado por cada algoritmo.
  + Uma associação entre cada artefato e o artefato do pacote de modelos.

## Entidades de monitoramento para endpoints
<a name="lineage-tracking-auto-creation-endpoint"></a>

As seguintes entidades são criadas pela Amazon SageMaker AI:

**Endpoints**
+ Um contexto para cada endpoint
+ Uma ação para a implantação do modelo que criou cada endpoint
+ Um artefato para cada modelo implantado no endpoint
+ Um artefato para a imagem usada no modelo
+ Um artefato para o pacote de modelo do modelo
+ Um artefato para cada imagem implantada no endpoint
+ Uma associação entre cada artefato e a ação de implantação do modelo

# Crie entidades de monitoramento manualmente
<a name="lineage-tracking-manual-creation"></a>

Você pode criar entidades de rastreamento manualmente para qualquer propriedade a fim de estabelecer a governança do modelo, reproduzir seu fluxo de trabalho e manter um registro do seu histórico de trabalho. Para obter informações sobre as entidades de rastreamento que a Amazon SageMaker AI cria automaticamente, consulte[Entidades de rastreamento SageMaker criadas pela Amazon AI](lineage-tracking-auto-creation.md). O tutorial a seguir demonstra as etapas necessárias para criar e associar manualmente artefatos entre um trabalho de SageMaker treinamento e um endpoint e, em seguida, acompanhar o fluxo de trabalho. 

É possível adicionar tags a todas as entidades, exceto às associações. As tags são pares de valores-chave arbitrários que fornecem informações personalizadas. Você pode filtrar ou classificar uma lista ou consulta de pesquisa por tags. Para obter mais informações, consulte [Marcar AWS recursos](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) no *Referência geral da AWS*.

Para ver um exemplo de caderno que demonstra como criar entidades de linhagem, consulte o caderno [Amazon SageMaker AI Lineage no repositório](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-lineage) de exemplos da [Amazon SageMaker ](https://github.com/awslabs/amazon-sagemaker-examples). GitHub 

**Topics**
+ [Crie entidades manualmente](#lineage-tracking-manual-create)
+ [Monitorar manualmente um fluxo de trabalho](#lineage-tracking-manual-track)
+ [Limites](#lineage-tracking-manual-track-limits)

## Crie entidades manualmente
<a name="lineage-tracking-manual-create"></a>

O procedimento a seguir mostra como criar e associar artefatos entre um trabalho de treinamento de SageMaker IA e um endpoint. Execute as seguintes etapas:

**Importar entidades e associações de monitoramento**

1. Importe as entidades de monitoramento de linhagem.

   ```
   import sys
   !{sys.executable} -m pip install -q sagemaker
   
   from sagemaker import get_execution_role
   from sagemaker.session import Session
   from sagemaker.lineage import context, artifact, association, action
   
   import boto3
   boto_session = boto3.Session(region_name=region)
   sagemaker_client = boto_session.client("sagemaker")
   ```

1. Criar os artefatos de entrada e saída.

   ```
   code_location_arn = artifact.Artifact.create(
       artifact_name='source-code-location',
       source_uri='s3://...',
       artifact_type='code-location'
   ).artifact_arn
   
   # Similar constructs for train_data_location_arn and test_data_location_arn
   
   model_location_arn = artifact.Artifact.create(
       artifact_name='model-location',
       source_uri='s3://...',
       artifact_type='model-location'
   ).artifact_arn
   ```

1. Treine o modelo e obtenha o `trial_component_arn` que representa o trabalho de treinamento.

1. Associe os artefatos de entrada e os artefatos de saída ao trabalho de treinamento (componente experimental).

   ```
   input_artifacts = [code_location_arn, train_data_location_arn, test_data_location_arn]
   for artifact_arn in input_artifacts:
       try:
           association.Association.create(
               source_arn=artifact_arn,
               destination_arn=trial_component_arn,
               association_type='ContributedTo'
           )
       except:
           logging.info('association between {} and {} already exists', artifact_arn, trial_component_arn)
   
   output_artifacts = [model_location_arn]
   for artifact_arn in output_artifacts:
       try:
            association.Association.create(
               source_arn=trial_component_arn,
               destination_arn=artifact_arn,
               association_type='Produced'
           )
       except:
           logging.info('association between {} and {} already exists', artifact_arn, trial_component_arn)
   ```

1. Crie o endpoint de inferência.

   ```
   predictor = mnist_estimator.deploy(initial_instance_count=1,
                                        instance_type='ml.m4.xlarge')
   ```

1. Criar o contexto do endpoint.

   ```
   from sagemaker.lineage import context
   
   endpoint = sagemaker_client.describe_endpoint(EndpointName=predictor.endpoint_name)
   endpoint_arn = endpoint['EndpointArn']
   
   endpoint_context_arn = context.Context.create(
       context_name=predictor.endpoint_name,
       context_type='Endpoint',
       source_uri=endpoint_arn
   ).context_arn
   ```

1. Associe o trabalho de treinamento (componente experimental) e o contexto do endpoint.

   ```
   association.Association.create(
       source_arn=trial_component_arn,
       destination_arn=endpoint_context_arn
   )
   ```

## Monitorar manualmente um fluxo de trabalho
<a name="lineage-tracking-manual-track"></a>

Você pode acompanhar manualmente o fluxo de trabalho criado na seção anterior.

Considerando o nome do recurso da Amazon (ARN) do endpoint do exemplo anterior, o procedimento a seguir mostra como rastrear o fluxo de trabalho até os conjuntos de dados usados para treinar o modelo que foi implantado no endpoint. Execute as seguintes etapas:

**Para monitorar um fluxo de trabalho do endpoint à fonte de dados de treinamento**

1. Importe as entidades de monitoramento.

   ```
   import sys
   !{sys.executable} -m pip install -q sagemaker
   
   from sagemaker import get_execution_role
   from sagemaker.session import Session
   from sagemaker.lineage import context, artifact, association, action
   
   import boto3
   boto_session = boto3.Session(region_name=region)
   sagemaker_client = boto_session.client("sagemaker")
   ```

1. Obtenha o contexto do endpoint a partir do ARN do endpoint.

   ```
   endpoint_context_arn = sagemaker_client.list_contexts(
       SourceUri=endpoint_arn)['ContextSummaries'][0]['ContextArn']
   ```

1. Obtenha o componente de teste a partir da associação entre o componente de teste e o contexto do endpoint.

   ```
   trial_component_arn = sagemaker_client.list_associations(
       DestinationArn=endpoint_context_arn)['AssociationSummaries'][0]['SourceArn']
   ```

1. Obtenha o artefato de localização dos dados de treinamento a partir da associação entre o componente de teste e o contexto do endpoint.

   ```
   train_data_location_artifact_arn = sagemaker_client.list_associations(
       DestinationArn=trial_component_arn, SourceType='Model')['AssociationSummaries'][0]['SourceArn']
   ```

1. Obtenha a localização dos dados de treinamento a partir do artefato de localização dos dados de treinamento.

   ```
   train_data_location = sagemaker_client.describe_artifact(
       ArtifactArn=train_data_location_artifact_arn)['Source']['SourceUri']
       print(train_data_location)
   ```

   Resposta:

   ```
   s3://sagemaker-sample-data-us-east-2/mxnet/mnist/train
   ```

## Limites
<a name="lineage-tracking-manual-track-limits"></a>

Você pode criar uma associação entre qualquer entidade, experimento e linhagem, exceto o seguinte:
+ Você não pode criar uma associação entre duas entidades do experimento. As entidades do experimento consistem em experimentos, ensaios e componentes do teste.
+ Você pode criar uma associação com outra associação.

Ocorrerá um erro se você tentar criar uma entidade que já existe.

**Número máximo de entidades de linhagem criadas manualmente**
+ Ações: 3.000
+ 6.000 artefatos
+ Associações: 6000
+ Contextos: 500

Não há limite para o número de entidades de linhagem criadas automaticamente pela Amazon SageMaker AI.

# Consultar entidades de linhagem
<a name="querying-lineage-entities"></a>

A Amazon SageMaker AI gera automaticamente gráficos de entidades de linhagem à medida que você as usa. Você pode consultar esses dados para responder a várias perguntas. Veja a seguir instruções sobre como consultar esses dados no SDK para Python. 

Para obter informações sobre como visualizar uma linhagem de modelo registrada no Amazon SageMaker Studio, consulte[Visualizar detalhes da linhagem de modelo no Studio](model-registry-lineage-view-studio.md).

Você pode consultar suas entidades de linhagem para:
+ Recupere todos os conjuntos de dados usados na criação de um modelo.
+ Recupere todos os trabalhos que foram usados na criação de um endpoint.
+ Recupere todos os modelos que usam um conjunto de dados.
+ Recupere todos os endpoints que usam um modelo.
+ Recupere quais endpoints são derivados de um determinado conjunto de dados.
+ Recupere a execução do pipeline que criou um trabalho de treinamento.
+ Recupere as relações entre entidades para investigação, governança e reprodutibilidade.
+ Recupere todos os testes posteriores que usam o artefato.
+ Recupere todos os testes iniciais que usam o artefato.
+ Recupere uma lista de artefatos que usam o uri do S3 fornecido.
+ Recupere artefatos upstream que usam o artefato do conjunto de dados.
+ Recupere artefatos posteriores que usam o artefato do conjunto de dados.
+ Recupere conjuntos de dados que usam o artefato de imagem.
+ Recupere ações que usam o contexto.
+ Recupere trabalhos de processamento que usam o endpoint.
+ Recupere trabalhos de processamento que usam o endpoint.
+ Recupere componentes de teste que usam o endpoint.
+ Recupere o ARN para a execução do pipeline associado ao grupo de pacotes do modelo.
+ Recupere todos os artefatos que usam a ação.
+ Recupere todos os conjuntos de dados upstream que usam a ação de aprovação do pacote modelo.
+ Recupere o pacote do modelo da ação de aprovação do pacote do modelo.
+ Recupere contextos de endpoint downstream que usam o endpoint.
+ Recupere o ARN para a execução do pipeline associado ao componente de teste.
+ Recupere conjuntos de dados que usam o componente de teste.
+ Recupere modelos que usam o componente de teste.
+ Explore sua linhagem para visualização.

**Limitações**
+ A consulta de linhagem não está disponível nas seguintes regiões:
  + África (Cidade do Cabo), af-south
  + Ásia-Pacífico (Jacarta), ap-southeast-3
  + Ásia-Pacífico (Osaka) - ap-northeast-3
  + Europa (Milão),eu-south-1
  + Europa (Espanha), eu-south-2
  + Israel (Tel Aviv): il-central-1
+ A profundidade máxima de relações a serem descobertos está atualmente limitada a 10.
+ A filtragem é limitada às seguintes propriedades: data da última modificação, data de criação, tipo e tipo de entidade de linhagem. 

**Topics**
+ [Conceitos básicos da consulta de entidades de linhagem](#querying-lineage-entities-getting-started)

## Conceitos básicos da consulta de entidades de linhagem
<a name="querying-lineage-entities-getting-started"></a>

A maneira mais fácil de começar é por meio do:
+ [Amazon SageMaker AI SDK para Python](https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/lineage/artifact.py#L397), que definiu muitos casos de uso comuns.
+ [Para um caderno que demonstra como usar o SageMaker AI Lineage APIs para consultar relacionamentos no gráfico de linhagem, consulte .ipynb. sagemaker-lineage-multihop-queries](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/sagemaker-lineage-multihop-queries.ipynb)

Os exemplos a seguir mostram como usar `LineageQuery` e criar consultas `LineageFilter` APIs para responder perguntas sobre o gráfico de linhagem e extrair relacionamentos de entidades para alguns casos de uso.

**Example Usando a API `LineageQuery` para encontrar associações de entidades**  

```
from sagemaker.lineage.context import Context, EndpointContext
from sagemaker.lineage.action import Action
from sagemaker.lineage.association import Association
from sagemaker.lineage.artifact import Artifact, ModelArtifact, DatasetArtifact

from sagemaker.lineage.query import (
    LineageQuery,
    LineageFilter,
    LineageSourceEnum,
    LineageEntityEnum,
    LineageQueryDirectionEnum,
)
# Find the endpoint context and model artifact that should be used for the lineage queries.

contexts = Context.list(source_uri=endpoint_arn)
context_name = list(contexts)[0].context_name
endpoint_context = EndpointContext.load(context_name=context_name)
```

**Example Encontre todos os conjuntos de dados associados a um endpoint**  

```
# Define the LineageFilter to look for entities of type `ARTIFACT` and the source of type `DATASET`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT], sources=[LineageSourceEnum.DATASET]
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the lineage objects corresponding to the datasets
dataset_artifacts = []
for vertex in query_result.vertices:
    dataset_artifacts.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(dataset_artifacts)
```

**Example Encontre os modelos associados a um endpoint**  

```
# Define the LineageFilter to look for entities of type `ARTIFACT` and the source of type `MODEL`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT], sources=[LineageSourceEnum.MODEL]
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the lineage objects corresponding to the model
model_artifacts = []
for vertex in query_result.vertices:
    model_artifacts.append(vertex.to_lineage_object().source.source_uri)

# The results of the `LineageQuery` API call return the ARN of the model deployed to the endpoint along with
# the S3 URI to the model.tar.gz file associated with the model
pp.pprint(model_artifacts)
```

**Example Encontre os componentes do teste associados ao endpoint**  

```
# Define the LineageFilter to look for entities of type `TRIAL_COMPONENT` and the source of type `TRAINING_JOB`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.TRIAL_COMPONENT],
    sources=[LineageSourceEnum.TRAINING_JOB],
)

# Providing this `LineageFilter` to the `LineageQuery` constructs a query that traverses through the given context `endpoint_context`
# and find all datasets.

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[endpoint_context.context_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

# Parse through the query results to get the ARNs of the training jobs associated with this Endpoint
trial_components = []
for vertex in query_result.vertices:
    trial_components.append(vertex.arn)

pp.pprint(trial_components)
```

**Example Mudando o ponto focal da linhagem**  
Os `LineageQuery` podem ser modificados para serem diferentes `start_arns`, o que altera o ponto focal da linhagem. Além disso, é `LineageFilter` possível usar várias fontes e entidades para expandir o escopo da consulta.  
A seguir, usamos o modelo como ponto focal da linhagem e encontramos os endpoints e conjuntos de dados associados a ele.  

```
# Get the ModelArtifact

model_artifact_summary = list(Artifact.list(source_uri=model_package_arn))[0]
model_artifact = ModelArtifact.load(artifact_arn=model_artifact_summary.artifact_arn)
query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[LineageSourceEnum.ENDPOINT, LineageSourceEnum.DATASET],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # Find all the entities that descend from the model, i.e. the endpoint
    direction=LineageQueryDirectionEnum.DESCENDANTS,
    include_edges=False,
)

associations = []
for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # Find all the entities that ascend from the model, i.e. the datasets
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(associations)
```

**Example Usando `LineageQueryDirectionEnum.BOTH` para encontrar relações ascendentes e descendentes**  
Quando a direção é definida como `BOTH`, a consulta percorre o gráfico para encontrar relações ascendentes e descendentes. Essa travessia ocorre não apenas no nó inicial, mas em cada nó visitado. Por exemplo, se um trabalho de treinamento for executado duas vezes e os dois modelos gerados pelo trabalho de treinamento forem implantados nos endpoints, o resultado da consulta com a direção definida como `BOTH` mostrará os dois endpoints. Isso ocorre porque a mesma imagem é usada para treinar e implantar o modelo. Como a imagem é comum ao modelo, o `start_arn` e os dois endpoints aparecem no resultado da consulta.  

```
query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[LineageSourceEnum.ENDPOINT, LineageSourceEnum.DATASET],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],  # Model is the starting artifact
    query_filter=query_filter,
    # This specifies that the query should look for associations both ascending and descending for the start
    direction=LineageQueryDirectionEnum.BOTH,
    include_edges=False,
)

associations = []
for vertex in query_result.vertices:
    associations.append(vertex.to_lineage_object().source.source_uri)

pp.pprint(associations)
```

**Example Instruções em `LineageQuery` - `ASCENDANTS` vs. `DESCENDANTS`**  
Para entender a direção no gráfico de linhagem, use o seguinte gráfico de relações de entidades - Conjunto de dados -> Trabalho de treinamento -> Modelo -> Endpoint  
O endpoint é descendente do modelo e o modelo é descendente do conjunto de dados. Da mesma forma, o modelo é um ascendente do endpoint. O parâmetro `direction` pode ser usado para especificar se a consulta deve retornar entidades descendentes ou ascendentes da entidade em `start_arns`. Se o `start_arns` contiver um modelo e a direção for `DESCENDANTS`, a consulta retornará o endpoint. Se a direção for `ASCENDANTS`, a consulta retornará o conjunto de dados.  

```
# In this example, we'll look at the impact of specifying the direction as ASCENDANT or DESCENDANT in a `LineageQuery`.

query_filter = LineageFilter(
    entities=[LineageEntityEnum.ARTIFACT],
    sources=[
        LineageSourceEnum.ENDPOINT,
        LineageSourceEnum.MODEL,
        LineageSourceEnum.DATASET,
        LineageSourceEnum.TRAINING_JOB,
    ],
)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.ASCENDANTS,
    include_edges=False,
)

ascendant_artifacts = []

# The lineage entity returned for the Training Job is a TrialComponent which can't be converted to a
# lineage object using the method `to_lineage_object()` so we extract the TrialComponent ARN.
for vertex in query_result.vertices:
    try:
        ascendant_artifacts.append(vertex.to_lineage_object().source.source_uri)
    except:
        ascendant_artifacts.append(vertex.arn)

print("Ascendant artifacts : ")
pp.pprint(ascendant_artifacts)

query_result = LineageQuery(sagemaker_session).query(
    start_arns=[model_artifact.artifact_arn],
    query_filter=query_filter,
    direction=LineageQueryDirectionEnum.DESCENDANTS,
    include_edges=False,
)

descendant_artifacts = []
for vertex in query_result.vertices:
    try:
        descendant_artifacts.append(vertex.to_lineage_object().source.source_uri)
    except:
        # Handling TrialComponents.
        descendant_artifacts.append(vertex.arn)

print("Descendant artifacts : ")
pp.pprint(descendant_artifacts)
```

**Example Funções auxiliares do SDK para facilitar as consultas de linhagem**  
As classes `EndpointContext`, `ModelArtifact` e `DatasetArtifact` têm funções auxiliares que são envolventes na API `LineageQuery` para facilitar o aproveitamento de determinadas consultas de linhagem. O exemplo a seguir mostra como usar essas funções auxiliares.  

```
# Find all the datasets associated with this endpoint

datasets = []
dataset_artifacts = endpoint_context.dataset_artifacts()
for dataset in dataset_artifacts:
    datasets.append(dataset.source.source_uri)
print("Datasets : ", datasets)

# Find the training jobs associated with the endpoint
training_job_artifacts = endpoint_context.training_job_arns()
training_jobs = []
for training_job in training_job_artifacts:
    training_jobs.append(training_job)
print("Training Jobs : ", training_jobs)

# Get the ARN for the pipeline execution associated with this endpoint (if any)
pipeline_executions = endpoint_context.pipeline_execution_arn()
if pipeline_executions:
    for pipeline in pipelines_executions:
        print(pipeline)

# Here we use the `ModelArtifact` class to find all the datasets and endpoints associated with the model

dataset_artifacts = model_artifact.dataset_artifacts()
endpoint_contexts = model_artifact.endpoint_contexts()

datasets = [dataset.source.source_uri for dataset in dataset_artifacts]
endpoints = [endpoint.source.source_uri for endpoint in endpoint_contexts]

print("Datasets associated with this model : ")
pp.pprint(datasets)

print("Endpoints associated with this model : ")
pp.pprint(endpoints)

# Here we use the `DatasetArtifact` class to find all the endpoints hosting models that were trained with a particular dataset
# Find the artifact associated with the dataset

dataset_artifact_arn = list(Artifact.list(source_uri=training_data))[0].artifact_arn
dataset_artifact = DatasetArtifact.load(artifact_arn=dataset_artifact_arn)

# Find the endpoints that used this training dataset
endpoint_contexts = dataset_artifact.endpoint_contexts()
endpoints = [endpoint.source.source_uri for endpoint in endpoint_contexts]

print("Endpoints associated with the training dataset {}".format(training_data))
pp.pprint(endpoints)
```

**Example Obtendo uma visualização do gráfico de linhagem**  
Uma classe auxiliar `Visualizer` é fornecida no exemplo de caderno [visualizer.py](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/visualizer.py) para ajudar a traçar o gráfico de linhagem. Quando a resposta da consulta é renderizada, um gráfico com as relações de linhagem do `StartArns` é exibido. A partir `StartArns` da visualização, mostra as relações com as outras entidades de linhagem retornadas na ação da API `query_lineage`.  

```
# Graph APIs
# Here we use the boto3 `query_lineage` API to generate the query response to plot.

from visualizer import Visualizer

query_response = sm_client.query_lineage(
    StartArns=[endpoint_context.context_arn], Direction="Ascendants", IncludeEdges=True
)

viz = Visualizer()
viz.render(query_response, "Endpoint")
        
        query_response = sm_client.query_lineage(
    StartArns=[model_artifact.artifact_arn], Direction="Ascendants", IncludeEdges=True
)
viz.render(query_response, "Model")
```

# Monitorar linhagem entre contas
<a name="xaccount-lineage-tracking"></a>

O Amazon SageMaker AI oferece suporte ao rastreamento de entidades de linhagem a partir de uma AWS conta diferente. Outras AWS contas podem compartilhar suas entidades de linhagem com você e você pode acessar essas entidades de linhagem por meio de chamadas diretas de API ou consultas de linhagem de SageMaker IA.

SageMaker A IA é usada [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)para ajudar você a compartilhar com segurança seus recursos de linhagem. Você pode compartilhar seus recursos por meio do [console do AWS RAM](https://console.aws.amazon.com/ram/home).



## Configurar o monitoramento de linhagem entre contas
<a name="setup-xaccount-lineage-tracking"></a>

Você pode agrupar e compartilhar seus [Entidades de monitoramento de linhagem](lineage-tracking-entities.md) por meio de um grupo de linhagem na Amazon SageMaker AI. SageMaker A IA oferece suporte a apenas um grupo de linhagem padrão por conta. SageMaker A IA cria o grupo de linhagem padrão sempre que uma entidade de linhagem é criada em sua conta. Cada entidade de linhagem pertencente à sua conta é atribuída a esse grupo de linhagem padrão. Para compartilhar entidades de linhagem com outra conta, você compartilha esse grupo de linhagem padrão com essa conta.

**nota**  
Você pode compartilhar todas as entidades de monitoramento de linhagem em um grupo de linhagem ou nenhuma.

Crie um compartilhamento de recursos para suas entidades de linhagem usando o AWS Resource Access Manager console. Para obter mais informações, consulte [Compartilhar seus recursos da AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) no *Guia do usuário do AWS Resource Access Manager *.

**nota**  
Depois que o compartilhamento de recursos for criado, poderá levar alguns minutos para que as associações de recursos e entidades principais sejam concluídas. Depois que a associação for definida, a conta compartilhada receberá um convite para ingressar no compartilhamento de recursos. As contas compartilhadas devem aceitar o convite para obter acesso a todos os recursos compartilhados. Para obter mais informações sobre como aceitar um convite para compartilhamento de recursos AWS RAM, consulte [Usando AWS recursos compartilhados](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) no *Guia do Usuário do AWS Resource Access Manager*.

### Sua política de recursos de monitoramento de linhagem entre contas
<a name="setup-xaccount-lineage-tracking-resource-policy"></a>

A Amazon SageMaker AI oferece suporte a apenas um tipo de política de recursos. A política de recursos de SageMaker IA deve permitir todas as seguintes operações:

```
"sagemaker:DescribeAction"
"sagemaker:DescribeArtifact"
"sagemaker:DescribeContext"
"sagemaker:DescribeTrialComponent"
"sagemaker:AddAssociation"
"sagemaker:DeleteAssociation"
"sagemaker:QueryLineage"
```

**Example Veja a seguir uma política de recursos de SageMaker IA criada usando AWS Resource Access Manager para criar um compartilhamento de recursos para um grupo de linhagem de contas.**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "FullLineageAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": "111122223333"
      },
      "Action": [
        "sagemaker:DescribeAction",
        "sagemaker:DescribeArtifact",
        "sagemaker:DescribeContext",
        "sagemaker:DescribeTrialComponent",
        "sagemaker:AddAssociation",
        "sagemaker:DeleteAssociation",
        "sagemaker:QueryLineage"
      ],
      "Resource": "arn:aws:sagemaker:us-west-2:111111111111:lineage-group/sagemaker-default-lineage-group"
    }
  ]
}
```

## Monitoramento de entidades de linhagem entre contas
<a name="tracking-lineage-xaccount"></a>

Com o monitoramento de linhagem entre contas, você pode associar entidades de linhagem em contas diferentes usando a mesma ação de API `AddAssociation`. Quando você associa duas entidades de linhagem, a SageMaker IA valida se você tem permissões para realizar a ação da `AddAssociation` API em ambas as entidades de linhagem. SageMaker A IA então estabelece a associação. Se você não tiver as permissões, a SageMaker IA *não* cria a associação. Depois que a associação entre contas for estabelecida, você poderá acessar qualquer entidade de linhagem da outra por meio da ação da API `QueryLineage`. Para obter mais informações, consulte [Consultar entidades de linhagem](querying-lineage-entities.md).

Além da SageMaker IA criar automaticamente entidades de linhagem, se você tiver acesso entre contas, a SageMaker IA conecta artefatos que fazem referência ao mesmo objeto ou dados. Se os dados de uma conta forem usados no rastreamento de linhagem por contas diferentes, a SageMaker IA cria um artefato em cada conta para rastrear esses dados. Com a linhagem entre contas, sempre que a SageMaker IA cria novos artefatos, SageMaker ela verifica se há outros artefatos criados para os mesmos dados que também são compartilhados com você. SageMaker A IA então estabelece associações entre o artefato recém-criado e cada um dos artefatos compartilhados com você com o `AssociationType` conjunto. `SameAs` Em seguida, você pode usar a ação da `[QueryLineage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_QueryLineage.html)` API para atravessar as entidades de linhagem em sua própria conta até entidades de linhagem compartilhadas com você, mas pertencentes a uma conta diferente AWS . Para obter mais informações, consulte [Consultar entidades de linhagem](querying-lineage-entities.md).

**Topics**
+ [Acessando recursos de linhagem de uma conta diferente](#tracking-lineage-xaccount-accessing-resources)
+ [Autorização para consultar entidades de linhagem entre contas](#tracking-lineage-xaccount-authorization)

### Acessando recursos de linhagem de uma conta diferente
<a name="tracking-lineage-xaccount-accessing-resources"></a>

Depois que o acesso entre contas para compartilhar linhagem for configurado, você poderá chamar as seguintes ações de SageMaker API diretamente com o ARN para descrever as entidades de linhagem compartilhada de outra conta:
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAction.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAction.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeArtifact.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeArtifact.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeContext.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeContext.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrialComponent.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrialComponent.html)

Você também pode gerenciar [associações](https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html) para entidades de linhagem pertencentes a contas diferentes que são compartilhadas com você, usando as seguintes ações de SageMaker API: 
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteAssociation.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteAssociation.html)

[Para um caderno que demonstra como usar o SageMaker AI Lineage APIs para consultar a linhagem em várias contas, consulte -with-ram.ipynb. sagemaker-lineage-cross-account](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/sagemaker-lineage-cross-account-with-ram.ipynb)

### Autorização para consultar entidades de linhagem entre contas
<a name="tracking-lineage-xaccount-authorization"></a>

A Amazon SageMaker AI deve validar que você tem permissões para realizar a ação `QueryLineage` da API no`StartArns`. Isso é aplicado por meio da política de recursos anexada ao `LineageGroup`. O resultado dessa ação inclui todas as entidades de linhagem às quais você tem acesso, sejam elas de propriedade da sua conta ou compartilhadas por outra conta. Para obter mais informações, consulte [Consultar entidades de linhagem](querying-lineage-entities.md).