Créer manuellement des entités de suivi - Amazon SageMaker

Créer manuellement des entités de suivi

Vous pouvez créer manuellement des entités de suivi pour n'importe quelle propriété. Pour obtenir des informations sur les entités de suivi créées automatiquement par Amazon SageMaker, veuillez consulter Entités de suivi créées par Amazon SageMaker.

Vous pouvez ajouter des balises à toutes les entités, à l'exception des associations. Les balises sont des paires clé-valeur arbitraires qui fournissent des informations personnalisées. Vous pouvez filtrer ou trier une liste ou une requête de recherche par balises. Pour de plus amples informations, veuillez consulter Balisage des ressources AWS dans la section Référence générale d'AWS.

Pour obtenir un exemple de bloc-notes qui montre comment créer des entités de lignée, veuillez consulter le bloc-notes Lignée Amazon SageMaker dans le référentiel d'exemples GitHub Amazon SageMaker.

Créer manuellement des entités

La procédure suivante vous indique comment créer et associer des artefacts entre une tâche d'entraînement SageMaker et un point de terminaison. Procédez comme suit :

  • Créez des artefacts d'entrée pour le code source, les données d'entraînement et les emplacements de données de test.

  • Créez un artefact de sortie pour l'emplacement du modèle généré.

  • Créez un composant d'essai en tant que tâche d'entraînement.

  • Associez l'artefact d'entrée et les artefacts de sortie à la tâche d'entraînement.

  • Entraînez le modèle et créez un point de terminaison.

  • Créez un contexte pour le point de terminaison.

  • Associez la tâche d'entraînement et le contexte du point de terminaison.

Pour créer des entités de suivi et des associations

  1. Importez les entités de suivi.

    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")
  2. Créez les artefacts d'entrée et de sortie.

    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
  3. Entraînez le modèle et obtenez le trial_component_arn qui représente la tâche d'entraînement.

  4. Associez les artefacts d'entrée et les artefacts de sortie à la tâche d'entraînement (composant d'essai).

    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)
  5. Créez le point de terminaison d'inférence.

    predictor = mnist_estimator.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')
  6. Créez le contexte de point de terminaison.

    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
  7. Associez la tâche d'entraînement (composant d'essai) et le contexte du point de terminaison.

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

Suivi manuel d'un flux

Vous pouvez effectuer un suivi manuel du flux créé dans la section précédente.

Compte tenu de l'Amazon Resource Name (ARN) du point de terminaison de l'exemple précédent, la procédure suivante montre comment suivre le flux de travail jusqu'aux jeux de données utilisés pour entraîner le modèle qui a été déployé sur le point de terminaison. Procédez comme suit :

  • Compte tenu de l'ARN du point de terminaison, obtenez le contexte du point de terminaison.

  • Récupérez le composant d'essai à partir de l'association entre le composant d'essai et le contexte du point de terminaison.

  • Obtenez l'artefact d'emplacement des données d'entraînement à partir de l'association entre le composant d'essai et le contexte du point de terminaison.

  • Obtenez l'emplacement des données d'entraînement à partir de l'artefact d'emplacement des données d'entraînement.

Pour suivre un flux du point de terminaison à la source de données d'entraînement

  1. Importez les entités de suivi.

    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")
  2. Obtenez le contexte du point de terminaison à partir de l'ARN du point de terminaison.

    endpoint_context_arn = sagemaker_client.list_contexts( SourceUri=endpoint_arn)['ContextSummaries'][0]['ContextArn']
  3. Récupérez le composant d'essai à partir de l'association entre le composant d'essai et le contexte du point de terminaison.

    trial_component_arn = sagemaker_client.list_associations( DestinationArn=endpoint_context_arn)['AssociationSummaries'][0]['SourceArn']
  4. Obtenez l'artefact d'emplacement des données d'entraînement à partir de l'association entre le composant d'essai et le contexte du point de terminaison.

    train_data_location_artifact_arn = sagemaker_client.list_associations( DestinationArn=trial_component_arn, SourceType='Model')['AssociationSummaries'][0]['SourceArn']
  5. Obtenez l'emplacement des données d'entraînement à partir de l'artefact d'emplacement des données d'entraînement.

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

    Réponse:

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

Limits

Une association peut être créée entre n'importe quelle entité, expérience et lignée, à l'exception des éléments suivants :

  • Une association ne peut pas être créée entre deux entités d'expérience. Les entités d'expérience comprennent des expériences, des essais et des composants d'essai.

  • Une association ne peut pas être créée avec une autre association.

Une erreur se produit si vous essayez de créer une entité qui existe déjà.

Nombre maximal d'entités de lignée créées manuellement

  • Actions : 3 000

  • Artefact s: 6 000

  • Associations : 6 000

  • Contextes : 500

Le nombre d'entités de lignée créées automatiquement par SageMaker n'est pas limité.