

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Seguimiento del linaje de Amazon SageMaker ML
<a name="lineage-tracking"></a>

**importante**  
A partir del 30 de noviembre de 2023, la experiencia anterior de Amazon SageMaker Studio pasa a denominarse Amazon SageMaker Studio Classic. La siguiente sección es específica del uso de la aplicación de Studio Classic. Para obtener información sobre el uso de la experiencia de Studio actualizada, consulte [Amazon SageMaker Studio](studio-updated.md).  
Studio Classic se sigue manteniendo para las cargas de trabajo existentes, pero ya no está disponible para su incorporación. Solo puede detener o eliminar las aplicaciones de Studio Classic existentes y no puede crear aplicaciones nuevas. Te recomendamos [migrar tu carga de trabajo a la nueva experiencia de Studio](studio-updated-migrate.md).

Amazon SageMaker ML Lineage Tracking crea y almacena información sobre los pasos de un flujo de trabajo de aprendizaje automático (ML), desde la preparación de los datos hasta la implementación del modelo. Con la información de seguimiento, puede reproducir los pasos del flujo de trabajo, realizar un seguimiento del linaje de los modelos y conjuntos de datos y establecer normas de gobernanza y auditoría del modelo.

SageMaker La función de seguimiento del linaje de AI funciona en el backend para realizar un seguimiento de todos los metadatos asociados a los flujos de trabajo de entrenamiento e implementación de sus modelos. Esto incluye los trabajos de entrenamiento, los conjuntos de datos utilizados, las canalizaciones, los puntos de conexión y los modelos reales. Puede consultar el servicio de linaje en cualquier momento para encontrar los artefactos exactos que se utilizan para entrenar un modelo. Con esos artefactos, puede recrear el mismo flujo de trabajo de ML para reproducir el modelo, siempre y cuando tenga acceso al conjunto de datos exacto que se utilizó. Un componente de prueba hace un seguimiento del trabajo de entrenamiento. Este componente de prueba tiene todos los parámetros utilizados como parte del trabajo de entrenamiento. Si no necesita volver a ejecutar todo el flujo de trabajo, puede reproducir el trabajo de entrenamiento para obtener el mismo modelo.

Con SageMaker AI Lineage Tracking, los científicos de datos y los creadores de modelos pueden hacer lo siguiente:
+ Mantener un historial actualizado de los experimentos de descubrimiento de modelos.
+ Establecer la gobernanza del modelo mediante el seguimiento de los artefactos del linaje de los modelos para realizar auditorías y verificar el cumplimiento.

En el siguiente diagrama se muestra un ejemplo de gráfico de linaje que Amazon SageMaker AI crea automáticamente en un flujo de trabajo de aprendizaje automático de entrenamiento e implementación de end-to-end modelos.

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


**Topics**
+ [Entidades de seguimiento de linaje](lineage-tracking-entities.md)
+ [Entidades de seguimiento SageMaker creadas por Amazon AI](lineage-tracking-auto-creation.md)
+ [Creación manual de entidades de seguimiento](lineage-tracking-manual-creation.md)
+ [Consulta de entidades de linaje](querying-lineage-entities.md)
+ [Seguimiento del linaje entre cuentas](xaccount-lineage-tracking.md)

# Entidades de seguimiento de linaje
<a name="lineage-tracking-entities"></a>

Las entidades de seguimiento mantienen una representación de todos los elementos del flujo de trabajo de aprendizaje end-to-end automático. Puede utilizar esta representación para establecer un modelo de gobernanza, reproducir su flujo de trabajo y mantener un registro de su historial de trabajos.

Amazon SageMaker AI crea automáticamente entidades de seguimiento para los componentes de prueba y sus ensayos y experimentos asociados al crear trabajos de SageMaker IA, como trabajos de procesamiento, trabajos de formación y trabajos de transformación por lotes. Además del seguimiento automático, también puede [Creación manual de entidades de seguimiento](lineage-tracking-manual-creation.md) para modelar pasos personalizados en su flujo de trabajo. Para obtener más información, consulte [Amazon SageMaker Experiments en Studio Classic](experiments.md).

SageMaker La IA también crea automáticamente entidades de seguimiento para los demás pasos de un flujo de trabajo, de modo que usted pueda realizar un seguimiento del flujo de trabajo de principio a fin. Para obtener más información, consulte [Entidades de seguimiento SageMaker creadas por Amazon AI](lineage-tracking-auto-creation.md).

Puede crear entidades adicionales para complementar las creadas por la SageMaker IA. Para obtener más información, consulte [Creación manual de entidades de seguimiento](lineage-tracking-manual-creation.md).

SageMaker La IA reutiliza cualquier entidad existente en lugar de crear entidades nuevas. Por ejemplo, solo puede haber un artefacto con un único`SourceUri`.

**Conceptos clave para consultar el linaje**
+ **Linaje**: metadatos que rastrean las relaciones entre varias entidades en sus flujos de trabajo de ML.
+ **QueryLineage**— La acción de inspeccionar tu linaje y descubrir las relaciones entre las entidades.
+ **Entidades de linaje**: los elementos de metadatos que componen su linaje.
+ **Linaje entre cuentas**: su flujo de trabajo de ML puede abarcar más de una cuenta. Con el linaje multicuenta, puede configurar varias cuentas para crear automáticamente asociaciones de linaje entre los recursos de la entidad compartidos. QueryLineage a continuación, puede devolver entidades incluso de estas cuentas compartidas.

Se definen las siguientes entidades de seguimiento:

**Entidades del experimento**
+ [Componente de prueba](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): una etapa de una prueba de machine learning. Incluye trabajos de procesamiento, trabajos de entrenamiento y trabajos de transformación por lotes.
+ [Prueba](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrial.html): combinación de componentes de prueba que, por lo general, produce un modelo.
+ [Experimento](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateExperiment.html): grupo de pruebas que, por lo general, se centran en resolver un caso de uso específico.

**Entidades de linaje**
+ [Componente de prueba](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrialComponent.html): representa los trabajos de procesamiento, entrenamiento y transformación en el linaje. También forma parte de la administración del experimento.
+ [Contexto](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateContext.html): proporciona una agrupación lógica de otras entidades de seguimiento o experimentación. Conceptualmente, los experimentos y las pruebas son contextos. Algunos ejemplos son un punto de conexión y un paquete de modelos.
+ [Acción](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAction.html): representa una acción o actividad. Por lo general, una acción implica al menos un artefacto de entrada o un artefacto de salida. Algunos ejemplos son un paso del flujo de trabajo y la implementación de un modelo.
+ [Artefacto](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateArtifact.html): representa un objeto o dato direccionable mediante URI. Por lo general, un artefacto es una entrada o una salida de un componente o acción de prueba. Algunos ejemplos incluyen un conjunto de datos (URI de bucket S3) o una imagen (ruta de registro de Amazon ECR).
+ [Asociación](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddAssociation.html): vincula otras entidades de seguimiento o experimentación, como una asociación entre la ubicación de los datos de entrenamiento y un trabajo de entrenamiento.

  Una asociación tiene una propiedad `AssociationType` opcional. Los siguientes valores están disponibles junto con el uso sugerido para cada tipo. SageMaker La IA no impone restricciones a su uso:
  + `ContributedTo`: el origen contribuyó al destino o participó en la habilitación del destino. Por ejemplo, los datos de entrenamiento contribuyeron al trabajo de entrenamiento.
  + `AssociatedWith`: el origen está conectado al destino. Por ejemplo, un flujo de trabajo de aprobación está asociado a la implementación de un modelo.
  + `DerivedFrom`: el destino es una modificación del origen. Por ejemplo, la salida resumida de una entrada de canal para un trabajo de procesamiento se deriva de las entradas originales.
  + `Produced`: el origen generó el destino. Por ejemplo, un trabajo de entrenamiento produjo un artefacto del modelo.
  + `SameAs`: cuando la misma entidad de linaje se utiliza en cuentas diferentes.

**Propiedades comunes**
+ **Propiedad de tipo**

  Las entidades de acción, artefacto y contexto tienen una propiedad de *tipo*, `ActionType`, `ArtifactType` y `ContextType`, respectivamente. Esta propiedad es una cadena personalizada que puede asociar información significativa a la entidad y usarse como filtro en la lista APIs.
+ **Propiedad de origen**

  Las entidades de acción, artefacto y contexto tienen una propiedad de `Source`. Esta propiedad proporciona el URI subyacente que representa la entidad. Algunos ejemplos son:
  + Una acción `UpdateEndpoint` en la que el origen es el `EndpointArn`.
  + Un artefacto de imagen para un trabajo de procesamiento en el que el origen es el `ImageUri`.
  + Un contexto `Endpoint` en la que el origen es el `EndpointArn`.
+ **Propiedad de metadatos**

  Las entidades de acción y artefacto tienen una propiedad de `Metadata` opcional que puede proporcionar la siguiente información:
  + `ProjectId`— Por ejemplo, el ID del MLOps proyecto de SageMaker IA al que pertenece un modelo.
  + `GeneratedBy`— Por ejemplo, la ejecución de una canalización de SageMaker IA que registró una versión de paquete modelo.
  + `Repository`: por ejemplo, el repositorio que contiene un algoritmo.
  + `CommitId`: por ejemplo, el ID de confirmación de una versión del algoritmo.

# Entidades de seguimiento SageMaker creadas por Amazon AI
<a name="lineage-tracking-auto-creation"></a>

Amazon SageMaker AI crea automáticamente entidades de seguimiento para trabajos, modelos, paquetes de modelos y puntos finales de SageMaker IA si los datos están disponibles. No hay límite en cuanto al número de entidades de linaje creadas por SageMaker la IA.

Para obtener información sobre cómo crear entidades de seguimiento manualmente, consulte [Creación manual de entidades de seguimiento](lineage-tracking-manual-creation.md).

**Topics**
+ [Entidades de seguimiento para trabajos de SageMaker IA](#lineage-tracking-auto-creation-jobs)
+ [Entidades de seguimiento para paquetes de modelos](#lineage-tracking-auto-creation-model-package)
+ [Entidades de seguimiento para puntos de conexión](#lineage-tracking-auto-creation-endpoint)

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

SageMaker La IA crea un componente de prueba para cada trabajo de SageMaker IA y se asocia a él. SageMaker La IA crea artefactos para rastrear los metadatos del trabajo y las asociaciones entre cada artefacto y el trabajo.

Los artefactos se crean para las siguientes propiedades de trabajo y se asocian al nombre de recurso de Amazon (ARN) del trabajo de SageMaker IA. El artefacto `SourceUri` se muestra entre paréntesis.

**Trabajo de capacitación**
+ La imagen que contiene el algoritmo de entrenamiento (`TrainingImage`).
+ El origen de datos de cada canal de entrada (`S3Uri`).
+ La ubicación del modelo (`S3OutputPath)`).
+ La ubicación de los datos del punto de control puntual administrado (`S3Uri`).

**Trabajo de procesamiento**
+ El contenedor que ejecutará el trabajo de procesamiento (`ImageUri`).
+ La ubicación de los datos de cada entrada y salida de procesamiento (`S3Uri`).

**Trabajo de transformación**
+ El origen de datos de entrada que se va a transformar (`S3Uri`).
+ Los resultados de la transformación (`S3OutputPath`).

**nota**  
Los artefactos del Amazon Simple Storage Service (Amazon S3) se rastrean en función de los valores de URI de Amazon S3 proporcionados a la API Create, por [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)ejemplo, y no en la clave de Amazon S3 y los valores de hash o etag de cada archivo.

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

Se crean las siguientes entidades:

**Paquetes de modelos**
+ Un contexto para cada grupo de paquetes de modelos.
+ Un artefacto para cada paquete de modelos.
+ Una asociación entre cada artefacto del paquete de modelos y el contexto de cada grupo de paquetes de modelos al que pertenece el paquete.
+ Una acción para la creación de una versión del paquete de modelos.
+ Una asociación entre el artefacto del paquete de modelos y la acción de creación.
+ Una asociación entre cada artefacto del paquete de modelos y el contexto de cada grupo de paquetes de modelos al que pertenece el paquete.
+ Contenedores de inferencia
  + Un artefacto para la imagen utilizada en cada contenedor definido en el paquete de modelos.
  + Un artefacto para el modelo utilizado en cada contenedor.
  + Una asociación entre cada artefacto y el artefacto del paquete de modelos.
+ Algoritmos
  + Un artefacto para cada algoritmo definido en el paquete de modelos.
  + Un artefacto para el modelo creado por cada algoritmo.
  + Una asociación entre cada artefacto y el artefacto del paquete de modelos.

## Entidades de seguimiento para puntos de conexión
<a name="lineage-tracking-auto-creation-endpoint"></a>

Amazon SageMaker AI crea las siguientes entidades:

**Puntos de conexión**
+ Un contexto para cada punto de conexión
+ Una acción para la implementación del modelo que creó cada punto de conexión
+ Un artefacto para cada modelo implementado en el punto de conexión
+ Un artefacto para la imagen utilizada en el modelo
+ Un artefacto para el paquete de modelos para el modelo
+ Un artefacto para cada imagen implementada en el punto de conexión
+ Una asociación entre cada artefacto y la acción de implementación del modelo

# Creación manual de entidades de seguimiento
<a name="lineage-tracking-manual-creation"></a>

Puede crear manualmente entidades de seguimiento para cualquier propiedad con el fin de establecer la gobernanza del modelo, reproducir su flujo de trabajo y mantener un registro de su historial de trabajo. Para obtener información sobre las entidades de seguimiento que Amazon SageMaker AI crea automáticamente, consulte[Entidades de seguimiento SageMaker creadas por Amazon AI](lineage-tracking-auto-creation.md). El siguiente tutorial muestra los pasos necesarios para crear y asociar manualmente artefactos entre un trabajo de SageMaker formación y un punto final y, a continuación, realizar un seguimiento del flujo de trabajo. 

Puede agregar etiquetas a todas las entidades, excepto a las asociaciones. Las etiquetas son pares clave-valor arbitrarios que proporcionan información personalizada. Puede filtrar u ordenar una lista o consulta de búsqueda por etiquetas. Para obtener más información, consulte [Etiquetado de AWS recursos](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) en. *Referencia general de AWS*

Para ver un ejemplo de cuaderno que muestre cómo crear entidades de linaje, consulte el cuaderno [Amazon SageMaker AI Lineage](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-lineage) en el repositorio de [ SageMaker ejemplos GitHub de Amazon](https://github.com/awslabs/amazon-sagemaker-examples).

**Topics**
+ [Creación manual de entidades](#lineage-tracking-manual-create)
+ [Seguimiento manual de un flujo de trabajo](#lineage-tracking-manual-track)
+ [Límites](#lineage-tracking-manual-track-limits)

## Creación manual de entidades
<a name="lineage-tracking-manual-create"></a>

El siguiente procedimiento muestra cómo crear y asociar artefactos entre un trabajo de entrenamiento de SageMaker IA y un punto final. Debe realizar los pasos siguientes:

**Importe entidades de seguimiento y asociaciones**

1. Importe las entidades de seguimiento del linaje.

   ```
   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. Cree los artefactos de entrada y salida.

   ```
   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. Entrene el modelo y obtenga el `trial_component_arn` que represente el trabajo de entrenamiento.

1. Asocie los artefactos de entrada y los artefactos de salida al trabajo de entrenamiento (componente de prueba).

   ```
   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. Cree el punto de conexión de inferencia.

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

1. Cree el contexto del punto de conexión.

   ```
   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. Asocie el trabajo de entrenamiento (componente de prueba) y el contexto del punto de conexión.

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

## Seguimiento manual de un flujo de trabajo
<a name="lineage-tracking-manual-track"></a>

Puede realizar un seguimiento manual del flujo de trabajo creado en la sección anterior.

Dado el nombre de recurso de Amazon (ARN) del punto de conexión del ejemplo anterior, el siguiente procedimiento le muestra cómo realizar un seguimiento del flujo de trabajo hasta los conjuntos de datos utilizados para entrenar el modelo que se implementó en el punto de conexión. Debe realizar los pasos siguientes:

**Para realizar un seguimiento de un flujo de trabajo desde el punto de conexión hasta el origen de datos de entrenamiento**

1. Importe las entidades de seguimiento.

   ```
   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. Obtenga el contexto del punto de conexión del ARN del punto de conexión.

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

1. Obtenga el componente de prueba a partir de la asociación entre el componente de prueba y el contexto del punto de conexión.

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

1. Obtenga el artefacto de ubicación de los datos de entrenamiento a partir de la asociación entre el componente de prueba y el contexto del punto de conexión.

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

1. Obtenga la ubicación de los datos de entrenamiento a partir del artefacto de ubicación de los datos de entrenamiento.

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

   Respuesta:

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

## Límites
<a name="lineage-tracking-manual-track-limits"></a>

Puede crear una asociación entre cualquier entidad, experimento o linaje, excepto los siguientes:
+ No puede crear una asociación entre dos entidades del experimento. Las entidades del experimento se componen de experimentos, pruebas y componentes de prueba.
+ Puede crear una asociación con otra asociación.

Se produce un error si intenta crear una entidad que ya existe.

**Número máximo de entidades de linaje creadas manualmente**
+ Acciones: 3000
+ Artefactos: 6000
+ Asociaciones: 6000
+ Contextos: 500

No hay límite en cuanto al número de entidades de linaje que Amazon SageMaker AI crea automáticamente.

# Consulta de entidades de linaje
<a name="querying-lineage-entities"></a>

Amazon SageMaker AI genera automáticamente gráficos de entidades de linaje a medida que las usa. Puede consultar estos datos para responder a una variedad de preguntas. A continuación, se proporcionan instrucciones sobre cómo consultar estos datos en el SDK para Python. 

Para obtener información sobre cómo ver un linaje de modelos registrado en Amazon SageMaker Studio, consulte[Visualización de los detalles del linaje del modelo en Studio](model-registry-lineage-view-studio.md).

Puede consultar las entidades de su linaje para:
+ Recuperar todos los conjuntos de datos que se utilizaron en la creación de un modelo.
+ Recuperar todos los trabajos necesarios para la creación de un punto de conexión.
+ Recuperar todos los modelos que utilizan un conjunto de datos.
+ Recuperar todos los puntos de conexión que utilizan un modelo.
+ Recuperar qué puntos de conexión se derivan de un determinado conjunto de datos.
+ Recuperar la ejecución de la canalización que creó un trabajo de entrenamiento.
+ Recuperar las relaciones entre las entidades para la investigación, la gobernanza y la reproducibilidad.
+ Recuperar todas las pruebas posteriores que utilizan el artefacto.
+ Recuperar todas las pruebas anteriores que utilizan el artefacto.
+ Recuperar una lista de artefactos que utilizan el URI de S3 proporcionado.
+ Recuperar los artefactos anteriores que utilizan el artefacto del conjunto de datos.
+ Recuperar los artefactos posteriores que utilizan el artefacto del conjunto de datos.
+ Recuperar los conjuntos de datos que utilizan el artefacto de imagen.
+ Recuperar las acciones que utilizan el contexto.
+ Recuperar los trabajos de procesamiento que utilizan el punto de conexión.
+ Recuperar los trabajos de transformación que utilizan el punto de conexión.
+ Recuperar los componentes de prueba que utilizan el punto de conexión.
+ Recuperar el ARN de la ejecución de la canalización asociada al grupo de paquetes de modelos.
+ Recuperar todos los artefactos que utilizan la acción.
+ Recuperar todos los conjuntos de datos originales que utilizan la acción de aprobación del paquete de modelos.
+ Recuperar el paquete de modelos de la acción de aprobación del paquete de modelos.
+ Recuperar los contextos de punto de conexión posteriores que utilizan el punto de conexión.
+ Recuperar el ARN de la ejecución de la canalización asociada al componente de prueba.
+ Recuperar los conjuntos de datos que utilizan el componente de prueba.
+ Recuperar los modelos que utilizan el componente de prueba.
+ Explorar su linaje para visualizarlo.

**Limitaciones**
+ La consulta de linaje no está disponible en las siguientes regiones:
  + África (Ciudad del Cabo): af-south
  + Asia-Pacífico (Yakarta) (ap-southeast-3)
  + Asia-Pacífico (Osaka) ap-northeast-3
  + Europa (Milán) (eu-south-1)
  + Europa (España): eu-south-2
  + Israel (Tel Aviv): il-central-1
+ La profundidad máxima de las relaciones por detectar está limitada actualmente a 10.
+ El filtrado se limita a las siguientes propiedades: fecha de la última modificación, fecha de creación, tipo y tipo de entidad de linaje. 

**Topics**
+ [Introducción a la consulta de entidades de linaje](#querying-lineage-entities-getting-started)

## Introducción a la consulta de entidades de linaje
<a name="querying-lineage-entities-getting-started"></a>

La forma más sencilla para empezar es a través de:
+ [Amazon SageMaker AI SDK para Python](https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/lineage/artifact.py#L397), que ha definido muchos casos de uso comunes.
+ [Para ver un cuaderno que muestre cómo usar SageMaker AI Lineage APIs para consultar las relaciones en el gráfico de linaje, consulte sagemaker-lineage-multihop-queries .ipynb.](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/sagemaker-lineage-multihop-queries.ipynb)

Los siguientes ejemplos muestran cómo usar el gráfico de linaje `LineageQuery` y cómo construir consultas `LineageFilter` APIs para responder a preguntas sobre el gráfico de linaje y extraer las relaciones entre entidades para algunos casos de uso.

**Example Uso de la API `LineageQuery` para buscar asociaciones 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 Buscar todos los conjuntos de datos asociados a un punto de conexión**  

```
# 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 Buscar los modelos asociados a un punto de conexión**  

```
# 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 Buscar los componentes de prueba asociados al punto de conexión**  

```
# 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 Cambiar el punto focal del linaje**  
`LineageQuery` se puede modificar para que tenga diferentes `start_arns`, lo que cambia el punto focal del linaje. Además, `LineageFilter` pueden utilizarse varios orígenes y entidades para ampliar el alcance de la consulta.  
A continuación, utilizamos el modelo como punto focal del linaje y buscamos los puntos de conexión y los conjuntos de datos asociados a él.  

```
# 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 Uso de `LineageQueryDirectionEnum.BOTH` para encontrar relaciones ascendentes y descendentes**  
Cuando la dirección está establecida en `BOTH`, la consulta recorre el gráfico para encontrar las relaciones ascendentes y descendentes. Este recorrido se realiza no solo desde el nodo inicial, sino también desde cada nodo visitado. Por ejemplo, si un trabajo de entrenamiento se ejecuta dos veces y los dos modelos generados por el trabajo de entrenamiento se despliegan en los puntos de conexión, el resultado de la consulta con la dirección establecida en `BOTH` muestra ambos puntos de conexión. Esto se debe a que se utiliza la misma imagen para entrenar e implementar el modelo. Como la imagen es común al modelo, el `start_arn` y ambos puntos de conexión aparecen en el resultado de la 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 Direcciones en `LineageQuery`: `ASCENDANTS` vs. `DESCENDANTS`**  
Para entender la dirección del gráfico de linaje, tome el siguiente gráfico de relación entre entidades: Conjunto de datos -> Trabajo de entrenamiento -> Modelo -> Punto de conexión  
El punto de conexión es un descendiente del modelo y el modelo es un descendiente del conjunto de datos. Del mismo modo, el modelo es un ascendente del punto de conexión. El parámetro `direction` se puede usar para especificar si la consulta debe devolver entidades descendientes o ascendentes de la entidad en `start_arns`. Si `start_arns` contiene un modelo y la dirección es `DESCENDANTS`, la consulta devuelve el punto de conexión. Si la dirección es `ASCENDANTS`, la consulta devuelve el conjunto de datos.  

```
# 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 Funciones auxiliares del SDK que facilitan las consultas de linaje**  
Las clases `EndpointContext`, `ModelArtifact` y `DatasetArtifact` tienen funciones auxiliares que se integran en la API `LineageQuery` para facilitar el uso de determinadas consultas de linaje. El siguiente ejemplo muestra cómo utilizar esta función auxiliar.  

```
# 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 Obtener una visualización de un gráfico de linaje**  
En el ejemplo de cuaderno [visualizer.py](https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-lineage/visualizer.py) se proporciona una clase auxiliar `Visualizer` para ayudar a trazar el gráfico de linaje. Cuando se representa la respuesta a la consulta, se muestra un gráfico con las relaciones de linaje de `StartArns`. Desde el `StartArns` la visualización muestran las relaciones con las demás entidades de linaje devueltas en la acción de la 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")
```

# Seguimiento del linaje entre cuentas
<a name="xaccount-lineage-tracking"></a>

Amazon SageMaker AI admite el seguimiento de entidades de linaje desde una AWS cuenta diferente. Otras AWS cuentas pueden compartir sus entidades de linaje con usted y usted puede acceder a estas entidades de linaje mediante llamadas directas a la API o consultas de linaje de SageMaker IA.

SageMaker La IA lo utiliza [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)para ayudarte a compartir de forma segura tus recursos de linaje. Puede compartir sus recursos a través de la [consola de AWS RAM](https://console.aws.amazon.com/ram/home).



## Configuración del seguimiento del linaje entre cuentas
<a name="setup-xaccount-lineage-tracking"></a>

Puedes agruparlos y compartirlos a [Entidades de seguimiento de linaje](lineage-tracking-entities.md) través de un grupo de linaje en Amazon SageMaker AI. SageMaker La IA solo admite un grupo de linaje predeterminado por cuenta. SageMaker La IA crea el grupo de linaje predeterminado cada vez que se crea una entidad de linaje en tu cuenta. Todas las entidades de linaje propiedad de su cuenta están asignadas a este grupo de linaje predeterminado. Para compartir entidades de linaje con otra cuenta, compartirá este grupo de linaje predeterminado con esa cuenta.

**nota**  
Puede compartir todas las entidades de seguimiento de linaje de un grupo de linaje o ninguna.

Crea un recurso compartido para tus entidades de linaje mediante la consola. AWS Resource Access Manager Para obtener más información, consulte [Cómo compartir los recursos de AWS](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) en la *Guía del usuario de AWS Resource Access Manager *.

**nota**  
Una vez creado el recurso compartido, las asociaciones de recursos y entidades principales pueden tardar unos minutos en completarse. Una vez que se establece la asociación, la cuenta compartida recibe una invitación para unirse al recurso compartido. La cuenta compartida debe aceptar la invitación para acceder a los recursos compartidos. Para obtener más información sobre cómo aceptar una invitación para compartir recursos AWS RAM, consulte [Uso de AWS recursos compartidos](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-shared.html) en la *Guía del usuario de AWS Resource Access Manager*.

### Su política de recursos para el seguimiento del linaje entre cuentas
<a name="setup-xaccount-lineage-tracking-resource-policy"></a>

Amazon SageMaker AI solo admite un tipo de política de recursos. La política de recursos de SageMaker IA debe permitir todas las operaciones siguientes:

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

**Example La siguiente es una política de recursos de SageMaker IA creada AWS Resource Access Manager para crear un recurso compartido para un grupo de linaje de cuentas.**    
****  

```
{
  "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"
    }
  ]
}
```

## Seguimiento de entidades de linaje entre cuentas
<a name="tracking-lineage-xaccount"></a>

Con el seguimiento de linaje entre cuentas, puede asociar entidades de linaje en diferentes cuentas mediante la misma acción de la API `AddAssociation`. Al asociar dos entidades de linaje, la SageMaker IA valida si tiene permisos para realizar la acción de la `AddAssociation` API en ambas entidades de linaje. SageMaker A continuación, la IA establece la asociación. Si no tienes los permisos, SageMaker AI *no* crea la asociación. Una vez establecida la asociación entre cuentas, puede acceder a cualquiera de las entidades de linaje desde la otra mediante la acción de la API `QueryLineage`. Para obtener más información, consulte [Consulta de entidades de linaje](querying-lineage-entities.md).

Además de crear automáticamente entidades de linaje, si tienes acceso a varias cuentas, la SageMaker IA conecta artefactos que hacen referencia al mismo objeto o a los mismos datos. SageMaker Si diferentes cuentas utilizan los datos de una cuenta para rastrear el linaje, la SageMaker IA crea un artefacto en cada cuenta para rastrear esos datos. Con el linaje entre cuentas, cada vez que la SageMaker IA crea nuevos artefactos, SageMaker comprueba si se han creado otros artefactos con los mismos datos y que también se han compartido contigo. SageMaker A continuación, la IA establece asociaciones entre el artefacto recién creado y cada uno de los artefactos que hayas compartido contigo con el `AssociationType` conjunto. `SameAs` A continuación, puede utilizar la acción de la API `[QueryLineage](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_QueryLineage.html)` para pasar las entidades de linaje de su propia cuenta a las entidades de linaje compartidas con usted pero que pertenecen a otra cuenta de AWS . Para obtener más información, consulte [Consulta de entidades de linaje](querying-lineage-entities.md)

**Topics**
+ [Acceso a los recursos de linaje desde cuentas diferentes](#tracking-lineage-xaccount-accessing-resources)
+ [Autorización para consultar entidades de linaje entre cuentas](#tracking-lineage-xaccount-authorization)

### Acceso a los recursos de linaje desde cuentas diferentes
<a name="tracking-lineage-xaccount-accessing-resources"></a>

Una vez que se haya configurado el acceso entre cuentas para compartir el linaje, puedes ejecutar las siguientes acciones de la SageMaker API directamente con el ARN para describir las entidades del linaje compartido desde otra cuenta:
+ [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)

También puedes gestionar [las asociaciones](https://docs.aws.amazon.com/sagemaker/latest/dg/lineage-tracking-entities.html) de las entidades de linaje que sean propiedad de distintas cuentas que compartas contigo mediante las siguientes acciones de la API: SageMaker 
+ [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 ver un cuaderno que muestre cómo usar SageMaker AI Lineage para consultar el linaje de todas APIs las cuentas, consulta -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)

### Autorización para consultar entidades de linaje entre cuentas
<a name="tracking-lineage-xaccount-authorization"></a>

Amazon SageMaker AI debe validar que tienes permisos para realizar la acción de la `QueryLineage` API en el`StartArns`. Esto se aplica mediante la política de recursos asociada al`LineageGroup`. El resultado de esta acción incluye todas las entidades de linaje a las que tiene acceso, ya sean propiedad de su cuenta o compartidas por otra cuenta. Para obtener más información, consulte [Consulta de entidades de linaje](querying-lineage-entities.md).