Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen tussen AWS-accounts te bekijken of te beheren

Op 9 augustus 2022 hebben we de algemene beschikbaarheid aangekondigd van delen tussen accounts van: Amazon SageMaker Pipelines-entiteiten. U kunt nu ondersteuning voor meerdere accounts gebruiken voor: Amazon SageMaker-pijpleidingen om pijplijnentiteiten te delen over AWS-accounts en rechtstreeks toegang te krijgen tot gedeelde pijplijnen via Amazon Sage Maker API-aanroepen.

Klanten adopteren steeds meer architecturen voor meerdere accounts voor het implementeren en beheren van machine learning (ML) workflows met SageMaker Pipelines. Dit omvat het bouwen van workflows in (dev)-accounts voor ontwikkeling of experimenten, deze implementeren en testen in een test- of pre-productie (test) account, en ze uiteindelijk promoten naar productie (prod) accounts om te integreren met andere bedrijfsprocessen. U kunt profiteren van het delen van SageMaker-pipelines voor meerdere accounts in de volgende gevallen:

  • Wanneer datawetenschappers ML-workflows bouwen in een dev-account, worden die workflows vervolgens door een ML-engineer geïmplementeerd als een SageMaker-pipeline in een speciaal testaccount. Om deze workflows verder te bewaken, hebben datawetenschappers nu alleen-lezen-toestemming voor meerdere accounts nodig voor de geïmplementeerde pijplijn in het testaccount.
  • ML-engineers, ML-beheerders en complianceteams, die de implementatie en bewerkingen van die ML-workflows beheren vanuit een shared services-account, hebben ook inzicht nodig in de geïmplementeerde pijplijn in het testaccount. Ze hebben mogelijk ook aanvullende machtigingen nodig voor het starten, stoppen en opnieuw proberen van die ML-werkstromen.

In dit bericht presenteren we een voorbeeldarchitectuur met meerdere accounts voor het ontwikkelen en implementeren van ML-workflows met SageMaker Pipelines.

Overzicht oplossingen

Een strategie voor meerdere accounts helpt u gegevens-, project- en teamisolatie te bereiken en ondersteunt tegelijkertijd de levenscyclusstappen van softwareontwikkeling. Het delen van pijplijnen voor meerdere accounts ondersteunt een strategie voor meerdere accounts, waardoor de overhead van het in- en uitloggen van meerdere accounts wordt weggenomen en de ML-test- en implementatieworkflows worden verbeterd door bronnen rechtstreeks over meerdere accounts te delen.

In dit voorbeeld hebben we een data science-team dat een speciaal dev-account gebruikt voor de initiële ontwikkeling van de SageMaker-pijplijn. Deze pijplijn wordt vervolgens overgedragen aan een ML-engineer, die een continue integratie en continue levering (CI/CD) pijplijn in hun account voor gedeelde services om deze pijplijn in een testaccount te implementeren. Om de geïmplementeerde pijplijn nog steeds te kunnen bewaken en beheren vanuit hun respectievelijke dev- en shared services-accounts, resource aandelen zijn ingesteld met AWS Resource Access Manager in de test- en dev-accounts. Met deze opstelling kunnen de ML-engineer en de datawetenschapper nu de pijplijnen in de dev- en testaccounts vanuit hun respectievelijke accounts bewaken en besturen, zoals weergegeven in de volgende afbeelding.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

In de workflow voeren de datawetenschapper en ML-engineer de volgende stappen uit:

  1. De datawetenschapper (DS) bouwt een modelpijplijn in het dev-account.
  2. De ML-ingenieur (MLE) produceert de modelpijplijn en maakt een pijplijn (voor dit bericht noemen we het) sagemaker-pipeline).
  3. sagemaker-pipeline code is toegewijd aan een AWS Codecommit opslagplaats in het account voor gedeelde services.
  4. De datawetenschapper maakt een AWS RAM-resourceshare voor: sagemaker-pipeline en deelt het met het account voor gedeelde services, dat de resourceshare accepteert.
  5. Vanuit het shared services-account kunnen ML-engineers nu de pijplijnruns in het dev-account beschrijven, bewaken en beheren met SageMaker API-aanroepen.
  6. Een CI/CD-pijplijn die wordt geactiveerd in het gedeelde serviceaccount, bouwt en implementeert de code in het testaccount met behulp van AWS CodePipeline.
  7. De CI/CD-pijplijn wordt gemaakt en uitgevoerd sagemaker-pipeline op de testaccount.
  8. Na het rennen sagemaker-pipeline in het testaccount maakt de CI/CD-pijplijn een resourceshare voor sagemaker-pipeline op de testaccount.
  9. Een resourceshare uit de test sagemaker-pipeline met alleen-lezen machtigingen wordt gemaakt met het dev-account, dat de resourceshare accepteert.
  10. De datawetenschapper kan nu de uitvoeringsstatus van de testpijplijn beschrijven en bewaken met behulp van SageMaker API-aanroepen vanuit het dev-account.
  11. Een resourceshare uit de test sagemaker-pipeline met uitgebreide machtigingen wordt gemaakt met het account voor gedeelde services, dat de resourceshare accepteert.
  12. De ML-engineer kan nu de testpipeline-uitvoering beschrijven, bewaken en beheren met behulp van SageMaker API-aanroepen vanuit het shared services-account.

In de volgende secties gaan we dieper in op de details en geven we een demonstratie over het instellen van het delen van meerdere accounts voor SageMaker-pijplijnen.

SageMaker-pipelines maken en delen tussen accounts

In deze sectie doorlopen we de noodzakelijke stappen om pijplijnen te maken en te delen tussen accounts met behulp van AWS RAM en de SageMaker API.

Stel de omgeving in

Eerst moeten we een omgeving met meerdere accounts opzetten om het delen van SageMaker-pipelines tussen verschillende accounts te demonstreren:

  1. Stel twee AWS-accounts in (dev en test). U kunt dit instellen als ledenaccounts van een organisatie of als onafhankelijke accounts.
  2. Als u uw accounts instelt als lid van een organisatie, kunt u inschakelen het delen van bronnen met uw organisatie. Met deze instelling verstuurt AWS RAM geen uitnodigingen naar opdrachtgevers wanneer u resources in uw organisatie deelt. Directeuren in uw organisatie krijgen toegang tot gedeelde bronnen zonder uitnodigingen uit te wisselen.
  3. Start in het testaccount Amazon SageMaker Studio en voer de notebook uit trein-register-implementeren-pijplijn-model. Hiermee wordt een voorbeeldpijplijn gemaakt in uw testaccount. Om de demonstratie te vereenvoudigen, gebruiken we SageMaker Studio in het testaccount om de pijplijn te starten. Voor echte projecten moet u Studio alleen gebruiken in het dev-account en SageMaker Pipeline starten in het testaccount met behulp van uw CI/CD-tooling.

Volg de instructies in de volgende sectie om deze pijplijn te delen met het dev-account.

Een pijplijnresourceshare instellen

Voer de volgende stappen uit om uw pijplijn te delen met het dev-account:

  1. Kies op de AWS RAM-console: Resourceshare maken.
  2. Voor Selecteer resourcetype, kiezen SageMaker-pijpleidingen.
  3. Selecteer de pijplijn die u in de vorige stap hebt gemaakt.
  4. Kies Volgende.
  5. Voor machtigingen, kies de bijbehorende machtigingen.
  6. Kies Volgende.
    Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.Vervolgens bepaal je hoe je principals toegang wilt verlenen.
  7. Als u de pijplijn alleen binnen uw organisatieaccounts wilt delen, selecteert u Alleen delen toestaan ​​binnen uw organisatie; selecteer anders Sta delen met iedereen toe.
  8. Voor opdrachtgevers, kies uw hoofdtype (u kunt een AWS-account, organisatie of organisatie-eenheid gebruiken op basis van uw vereisten voor delen). Voor dit bericht delen we met iedereen op AWS-accountniveau.
  9. Selecteer uw hoofd-ID.
  10. Kies Volgende.
    Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.
  11. Op de Bekijk en creëer pagina, controleer of uw informatie correct is en kies Resourceshare maken.
    Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.
  12. Navigeer naar uw bestemmingsaccount (voor dit bericht uw dev-account).
  13. Op de AWS RAM-console, onder Gedeeld met mij in het navigatievenster, kies Resource-aandelen.
  14. Kies uw resourceshare en kies Accepteer het delen van bronnen.
    Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

Rechten voor het delen van bronnen

Bij het maken van uw resourceshare kunt u kiezen uit een van de twee ondersteunde machtigingsbeleidsregels om te koppelen aan het SageMaker-pijplijnresourcetype. Beide beleidsregels verlenen toegang tot elke geselecteerde pijplijn en alle uitvoeringen ervan.

De AWSRAMDefaultPermissionSageMakerPipeline beleid staat de volgende alleen-lezen acties toe:

"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"

De AWSRAMPermissionSageMakerPipelineAllowExecution beleid omvat alle alleen-lezen-machtigingen van het standaardbeleid en staat ook toe dat gedeelde accounts pijplijnuitvoeringen starten, stoppen en opnieuw proberen.

Het uitgebreide machtigingsbeleid voor het uitvoeren van pijplijnen staat de volgende acties toe:

"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"

Toegang tot gedeelde pijplijnentiteiten via directe API-aanroepen

In dit gedeelte laten we zien hoe u verschillende SageMaker Pipeline API-aanroepen kunt gebruiken om inzicht te krijgen in pijplijnen die worden uitgevoerd in externe accounts die met u zijn gedeeld. Voor het testen van de API's tegen de pijplijn die in het testaccount van het dev-account wordt uitgevoerd, logt u in op het dev-account en gebruikt u AWS-cloudshell.

Voor de SageMaker Pipeline API-aanroepen voor meerdere accounts moet u altijd uw pijplijn-ARN gebruiken als pijplijnidentificatie. Dat omvat ook de opdrachten die de pijplijnnaam vereisen, waarbij u uw pijplijn-ARN als pijplijnnaam moet gebruiken.

Om uw pijplijn ARN te krijgen, navigeert u in uw testaccount naar uw pijplijngegevens in Studio via SageMaker-bronnen.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

Kies Pijpleidingen op uw bronnenlijst.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

Kies uw pijplijn en ga naar uw pijplijn Instellingen tabblad. U vindt de pijplijn ARN met uw Metadata informatie. Voor dit voorbeeld is uw ARN gedefinieerd als "arn:aws:sagemaker:us-east-1:<account-id>:pipeline/serial-inference-pipeline".

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.

LijstPipelineExecutions

Deze API-aanroep somt de runs op van uw pijplijn. Voer de volgende opdracht uit, vervang $SHARED_PIPELINE_ARN met uw pijplijn ARN van CloudShell of met behulp van de AWS-opdrachtregelinterface (AWS CLI) geconfigureerd met de juiste AWS Identiteits- en toegangsbeheer (IAM) rol:

aws sagemaker list-pipeline-executions --pipeline-name $SHARED_PIPELINE_ARN

Het antwoord geeft een overzicht van alle runs van uw pijplijn met hun PipelineExecutionArn, StartTime, PipelineExecutionStatus en PipelineExecutionDisplayName:

{
  "PipelineExecutionSummaries": [
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:32:05.543000+00:00",
      "PipelineExecutionStatus": "Executing",
      "PipelineExecutionDisplayName": "execution-321"
    },
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:28:03.680000+00:00",
      "PipelineExecutionStatus": "Stopped",
      "PipelineExecutionDisplayName": "test"
    },
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:03:47.406000+00:00",
      "PipelineExecutionStatus": "Succeeded",
      "PipelineExecutionDisplayName": "execution-123"
    }
  ]
}

BeschrijvingPipeline

Deze API-aanroep beschrijft de details van uw pijplijn. Voer de volgende opdracht uit, vervang $SHARED_PIPELINE_ARN met uw pijplijn ARN:

aws sagemaker describe-pipeline --pipeline-name $SHARED_PIPELINE_ARN

Het antwoord biedt de metadata van uw pijplijn, evenals informatie over het maken en wijzigen ervan:

Output(truncated): 
{
"PipelineArn": "arn:aws:sagemaker:<region>:<account-id>:pipeline/<pipeline_name>",
"PipelineName": "serial-inference-pipeline",
"PipelineDisplayName": "serial-inference-pipeline",
"PipelineDefinition": "{"Version": "2020-12-01", "Metadata": {}, "Parameters": [{"Name": "TrainingInstanceType", "Type": "String", "DefaultValue": "ml.m5.xlarge"}, {"Name": "ProcessingInstanceType", "Type": "String", "DefaultValue": "ml.m5.xlarge"}, {"Name": "ProcessingInstanceCount", "Type": "Integer", "DefaultValue": 1}, {"Name": "InputData", "Type":

..

"PipelineStatus": "Active",
"CreationTime": "2022-08-08T21:33:39.159000+00:00",
"LastModifiedTime": "2022-08-08T21:48:14.274000+00:00",
"CreatedBy": {},
"LastModifiedBy": {}
}

BeschrijvingPipelineExecution

Deze API-aanroep beschrijft de details van uw pijplijnrun. Voer de volgende opdracht uit, vervang $SHARED_PIPELINE_ARN met uw pijplijn ARN:

aws sagemaker describe-pipeline-execution 
--pipeline-execution-arn $PIPELINE_EXECUTION_ARN

Het antwoord geeft details over uw pijplijnuitvoering, inclusief de PipelineExecutionStatus, ExperimentName en TrialName:

{
  "PipelineArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>",
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
  "PipelineExecutionDisplayName": "execution-123",
  "PipelineExecutionStatus": "Succeeded",
  "PipelineExperimentConfig": {
  "ExperimentName": "<pipeline_name>",
  "TrialName": "<execution_id>"
},
  "CreationTime": "2022-08-10T11:03:47.406000+00:00",
  "LastModifiedTime": "2022-08-10T11:15:01.102000+00:00",
  "CreatedBy": {},
  "LastModifiedBy": {}
}

StartPipelineExecution

Deze API-aanroep starts een pijplijnloop. Voer de volgende opdracht uit, vervang $SHARED_PIPELINE_ARN met uw pijplijn ARN en $CLIENT_REQUEST_TOKEN met een unieke, hoofdlettergevoelige id die u voor deze uitvoering genereert. De ID moet tussen 32 en 128 tekens bevatten. U kunt bijvoorbeeld een string genereren met de AWS CLI kms genereren-willekeurige opdracht.

aws sagemaker start-pipeline-execution 
  --pipeline-name $SHARED_PIPELINE_ARN 
  --client-request-token $CLIENT_REQUEST_TOKEN

Als reactie retourneert deze API-aanroep de PipelineExecutionArn van de gestarte run:

{
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>"
}

StopPijplijnuitvoering

Deze API-aanroep stopt een pijplijnloop. Voer de volgende opdracht uit, vervang $PIPELINE_EXECUTION_ARN met de pijplijn run ARN van uw lopende pijplijn en $CLIENT_REQUEST_TOKEN met een unieke, hoofdlettergevoelige id die u voor deze uitvoering genereert. De ID moet tussen 32 en 128 tekens bevatten. U kunt bijvoorbeeld een string genereren met de AWS CLI kms genereren-willekeurige opdracht.

aws sagemaker stop-pipeline-execution 
  --pipeline-execution-arn $PIPELINE_EXECUTION_ARN 
  --client-request-token $CLIENT_REQUEST_TOKEN

Als reactie retourneert deze API-aanroep de PipelineExecutionArn van de gestopte pijpleiding:

{
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>"
}

Conclusie

Cross-account delen van SageMaker-pipelines stelt u in staat om pipeline-entiteiten veilig te delen over AWS-accounts en toegang te krijgen tot gedeelde pipelines via directe API-aanroepen, zonder dat u zich bij meerdere accounts hoeft aan en uit te melden.

In dit bericht zijn we in de functionaliteit gedoken om te laten zien hoe u pijplijnen tussen accounts kunt delen en deze kunt openen via SageMaker API-aanroepen.

Als volgende stap kunt u deze functie gebruiken voor uw volgende ML-project.

Resources

Raadpleeg de volgende bronnen om aan de slag te gaan met SageMaker-pijplijnen en pijplijnen te delen tussen accounts:


Over de auteurs

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.Ram Vital is een ML Specialist Solutions Architect bij AWS. Hij heeft meer dan 20 jaar ervaring met het ontwerpen en bouwen van gedistribueerde, hybride en cloudapplicaties. Hij heeft een passie voor het bouwen van veilige en schaalbare AI/ML- en big data-oplossingen om zakelijke klanten te helpen bij hun cloudadoptie en optimalisatietraject om hun bedrijfsresultaten te verbeteren. In zijn vrije tijd houdt hij van tennis, fotografie en actiefilms.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.Maira Ladeira Tanke is een ML Specialist Solutions Architect bij AWS. Met een achtergrond in datawetenschap heeft ze 9 jaar ervaring met het ontwerpen en bouwen van ML-applicaties met klanten in verschillende sectoren. Als technisch leider helpt ze klanten hun bedrijfswaarde te versnellen door middel van opkomende technologieën en innovatieve oplossingen. In haar vrije tijd houdt Maira van reizen en tijd doorbrengen met haar familie op een warme plek.

Gebruik Amazon SageMaker-pijplijndeling om pijplijnen voor AWS-accounts PlatoBlockchain Data Intelligence te bekijken of te beheren. Verticaal zoeken. Ai.Gabriël Zylka is een Professional Services Consultant bij AWS. Hij werkt nauw samen met klanten om hun reis naar de cloud te versnellen. Hij is gespecialiseerd in het MLOps-domein en richt zich op het produceren van machine learning-workloads door end-to-end machine learning-levenscycli te automatiseren en de gewenste bedrijfsresultaten te helpen bereiken. In zijn vrije tijd houdt hij van reizen en wandelen in de Beierse Alpen.

Tijdstempel:

Meer van AWS-machine learning