Amazon SageMaker-pijpleidingen stelt datawetenschappers en machine learning-engineers (ML) in staat om trainingsworkflows te automatiseren, wat u helpt een herhaalbaar proces te creëren om modelontwikkelingsstappen te orkestreren voor snelle experimenten en hertraining van modellen. U kunt de volledige workflow voor het bouwen van modellen automatiseren, inclusief gegevensvoorbereiding, feature-engineering, modeltraining, modelafstemming en modelvalidatie, en deze catalogiseren in het modelregister. U kunt pijplijnen zo configureren dat ze automatisch worden uitgevoerd met regelmatige tussenpozen of wanneer bepaalde gebeurtenissen worden geactiveerd, of u kunt ze indien nodig handmatig uitvoeren.
In dit bericht belichten we enkele van de verbeteringen aan de Amazon Sage Maker SDK en introduceren nieuwe functies van Amazon SageMaker Pipelines die het voor ML-beoefenaars gemakkelijker maken om ML-modellen te bouwen en te trainen.
Pipelines blijft zijn ontwikkelaarservaring innoveren en met deze recente releases kunt u de service nu op een meer aangepaste manier gebruiken:
- 2.99.0, 2.101.1, 2.102.0, 2.104.0 – Bijgewerkte documentatie over
PipelineVariable
gebruik voor schatter, processor, tuner, transformator en modelbasisklassen, Amazon-modellen en raamwerkmodellen. Er zullen aanvullende wijzigingen komen met nieuwere versies van de SDK om alle subklassen van schatters en processors te ondersteunen. - 2.90.0 - Beschikbaarheid van ModelStap voor geïntegreerde taken voor het maken en registreren van modelbronnen.
- 2.88.2 - Beschikbaarheid van Pijplijnsessie voor beheerde interactie met SageMaker-entiteiten en -bronnen.
- 2.88.2 – Compatibiliteit met subklassen voor workflow pijplijn taakstappen zodat u taakabstracties kunt bouwen en verwerkings-, training-, transformatie- en afstemmingstaken kunt configureren en uitvoeren zoals u zou doen zonder een pijplijn.
- 2.76.0 - Beschikbaarheid van FailStap om een pijplijn met een storingsstatus voorwaardelijk te stoppen.
In dit bericht leiden we u door een workflow met behulp van een voorbeeldgegevensset met een focus op modelbouw en -implementatie om te demonstreren hoe u de nieuwe functies van Pipelines kunt implementeren. Aan het einde zou u voldoende informatie moeten hebben om deze nieuwere functies met succes te gebruiken en uw ML-workloads te vereenvoudigen.
Functies overzicht
Pipelines biedt de volgende nieuwe functies:
- Annotatie van pijplijnvariabelen – Bepaalde methodeparameters accepteren meerdere invoertypen, waaronder:
PipelineVariables
, en er is aanvullende documentatie toegevoegd om te verduidelijken waarPipelineVariables
worden ondersteund in zowel de nieuwste stabiele versie van SageMaker SDK-documentatie als de init-handtekening van de functies. In de volgende TensorFlow-schatter toont de init-handtekening nu bijvoorbeeld dat:model_dir
enimage_uri
ondersteuningPipelineVariables
, terwijl de andere parameters dat niet doen. Voor meer informatie, zie: TensorFlow-schatter.- Vooraf:
- Na:
- Pijplijnsessie - Pijplijnsessie is een nieuw concept dat is geïntroduceerd om eenheid te brengen in de SageMaker SDK en introduceert een luie initialisatie van de pijplijnbronnen (de run-aanroepen worden vastgelegd maar niet uitgevoerd totdat de pijplijn is gemaakt en uitgevoerd). De
PipelineSession
context erft deSageMakerSession
en implementeert handige methoden voor interactie met andere SageMaker-entiteiten en -bronnen, zoals trainingstaken, eindpunten en invoergegevenssets die zijn opgeslagen in Amazon eenvoudige opslagservice (Amazone S3). - Compatibiliteit van subklasse met taakstappen voor workflow-pijplijn – U kunt nu taakabstracties maken en verwerkings-, training-, transformatie- en afstemmingstaken configureren en uitvoeren zoals u zou doen zonder een pijplijn.
- Bijvoorbeeld een verwerkingsstap maken met
SKLearnProcessor
eerder het volgende nodig: - Zoals we in de voorgaande code zien,
ProcessingStep
moet in principe dezelfde voorverwerkingslogica doen als:.run
, gewoon zonder de API-aanroep te starten om de taak te starten. Maar nu de compatibiliteit van subklassen is ingeschakeld met de taakstappen van de workflow-pijplijn, declareren we destep_args
argument dat de preprocessing-logica met .run gebruikt, zodat u een taakabstractie kunt bouwen en deze kunt configureren zoals u deze zonder Pipelines zou gebruiken. We passeren ook in depipeline_session
, EenPipelineSession
object, in plaats vansagemaker_session
om ervoor te zorgen dat de run-aanroepen worden vastgelegd maar niet worden aangeroepen totdat de pijplijn is gemaakt en uitgevoerd. Zie de volgende code:
- Bijvoorbeeld een verwerkingsstap maken met
- Modelstap (een gestroomlijnde aanpak met stappen voor het maken en registreren van modellen) –Pipelines biedt twee soorten stappen om te integreren met SageMaker-modellen:
CreateModelStep
enRegisterModel
. U kunt nu beide bereiken met alleen deModelStep
type. Merk op dat eenPipelineSession
is nodig om dit te bereiken. Dit brengt overeenkomst tussen de pijplijnstappen en de SDK.- Vooraf:
-
- Na:
- Fail-stap (voorwaardelijke stop van de pijplijnrun) -
FailStep
maakt het mogelijk een pijplijn te stoppen met een storingsstatus als aan een voorwaarde wordt voldaan, bijvoorbeeld als de modelscore onder een bepaalde drempel ligt.
Overzicht oplossingen
In deze oplossing is uw toegangspunt de Amazon SageMaker Studio geïntegreerde ontwikkelomgeving (IDE) voor snel experimenteren. Studio biedt een omgeving om de end-to-end Pipelines-ervaring te beheren. Met Studio kunt u de AWS-beheerconsole voor uw volledige workflowbeheer. Voor meer informatie over het beheren van pijplijnen vanuit Studio, zie: SageMaker-pijplijnen bekijken, volgen en uitvoeren in SageMaker Studio.
Het volgende diagram illustreert de architectuur op hoog niveau van de ML-workflow met de verschillende stappen voor het trainen en genereren van gevolgtrekkingen met behulp van de nieuwe functies.
De pijplijn omvat de volgende stappen:
- Verwerk gegevens voor om de vereiste functies te bouwen en splits gegevens op in trein-, validatie- en testgegevenssets.
- Creëer een trainingstaak met het SageMaker XGBoost-framework.
- Evalueer het getrainde model met behulp van de testgegevensset.
- Controleer of de AUC-score boven een vooraf gedefinieerde drempel ligt.
- Als de AUC-score lager is dan de drempelwaarde, stopt u de pijplijnuitvoering en markeert u deze als mislukt.
- Als de AUC-score hoger is dan de drempel, maakt u een SageMaker-model en registreert u dit in het SageMaker-modelregister.
- Pas batchtransformatie toe op de gegeven gegevensset met behulp van het model dat in de vorige stap is gemaakt.
Voorwaarden
Om dit bericht te volgen, heb je een AWS-account nodig met een Studio domein.
Pipelines is rechtstreeks geïntegreerd met SageMaker-entiteiten en -bronnen, dus u hoeft geen interactie te hebben met andere AWS-services. U hoeft ook geen resources te beheren omdat het een volledig beheerde service is, wat betekent dat het resources voor u maakt en beheert. Voor meer informatie over de verschillende SageMaker-componenten die zowel zelfstandige Python-API's als geïntegreerde componenten van Studio zijn, zie de SageMaker-productpagina.
Installeer voordat u aan de slag gaat SageMaker SDK-versie >= 2.104.0 en xlrd >=1.0.0 in de Studio-notebook met behulp van het volgende codefragment:
ML-workflow
Voor deze post gebruik je de volgende componenten:
- Data voorbereiding
- SageMaker-verwerking – SageMaker Processing is een volledig beheerde service waarmee u aangepaste gegevenstransformaties en feature-engineering voor ML-workloads kunt uitvoeren.
- Model gebouw
- Modeltraining en evaluatie
- Training met één klik – De SageMaker gedistribueerde trainingsfunctie. SageMaker biedt gedistribueerde trainingsbibliotheken voor gegevensparallellisme en modelparallellisme. De bibliotheken zijn geoptimaliseerd voor de SageMaker-trainingsomgeving, helpen uw gedistribueerde trainingstaken aan te passen aan SageMaker en verbeteren de trainingssnelheid en -doorvoer.
- SageMaker-experimenten – Experimenten is een mogelijkheid van SageMaker waarmee u uw ML-iteraties kunt organiseren, volgen, vergelijken en evalueren.
- SageMaker batch-transformatie – Batchtransformatie of offline scoren is een beheerde service in SageMaker waarmee u kunt voorspellen op een grotere dataset met behulp van uw ML-modellen.
- Workflow-orkestratie
Een SageMaker-pijplijn is een reeks onderling verbonden stappen die worden gedefinieerd door een JSON-pijplijndefinitie. Het codeert een pijplijn met behulp van een gerichte acyclische grafiek (DAG). De DAG geeft informatie over de vereisten voor en relaties tussen elke stap van de pijplijn, en de structuur ervan wordt bepaald door de gegevensafhankelijkheden tussen de stappen. Deze afhankelijkheden worden gemaakt wanneer de eigenschappen van de uitvoer van een stap worden doorgegeven als invoer voor een andere stap.
Het volgende diagram illustreert de verschillende stappen in de SageMaker-pijplijn (voor een gebruiksscenario voor het voorspellen van verloop) waarbij de verbindingen tussen de stappen worden afgeleid door SageMaker op basis van de invoer en uitvoer die zijn gedefinieerd door de stapdefinities.
In de volgende secties wordt beschreven hoe u elke stap van de pijplijn maakt en de volledige pijplijn uitvoert nadat deze is gemaakt.
Project structuur
Laten we beginnen met de projectstructuur:
- /sm-pipelines-end-to-end-voorbeeld – De projectnaam
- /gegevens – De datasets
- /pijpleidingen – De codebestanden voor pijplijncomponenten
- /klantenverloop
- preproces.py
- evalueren.py
- /klantenverloop
- sagemaker-pijpleidingen-project.ipynb – Een notebook die door de modelleringsworkflow loopt met behulp van de nieuwe functies van Pipelines
Download de dataset
Om dit bericht te volgen, moet je de . downloaden en opslaan voorbeeldgegevensset onder de gegevensmap in de hoofdmap van het project, waarin het bestand wordt opgeslagen in Amazon elastisch bestandssysteem (Amazon EFS) binnen de Studio-omgeving.
Bouw de pijplijncomponenten
Nu bent u klaar om de pijplijncomponenten te bouwen.
Verklaringen importeren en parameters en constanten declareren
Maak een Studio-notebook met de naam sagemaker-pipelines-project.ipynb
in de homedirectory van het project. Voer het volgende codeblok in een cel in en voer de cel uit om SageMaker- en S3-clientobjecten in te stellen, maak PipelineSession
, en stel de S3-bucketlocatie in met behulp van de standaardbucket die bij een SageMaker-sessie wordt geleverd:
Pipelines ondersteunt parametrering, waarmee u tijdens runtime invoerparameters kunt opgeven zonder uw pipeline-code te wijzigen. U kunt de modules gebruiken die beschikbaar zijn onder de sagemaker.workflow.parameters
module, zoals: ParameterInteger
, ParameterFloat
en ParameterString
, om pijplijnparameters van verschillende gegevenstypen op te geven. Voer de volgende code uit om meerdere invoerparameters in te stellen:
Een batchgegevensset genereren
Genereer de batchgegevensset, die u later in de batchtransformatiestap gebruikt:
Gegevens uploaden naar een S3-bucket
Upload de datasets naar Amazon S3:
Definieer een verwerkingsscript en verwerkingsstap
In deze stap bereidt u een Python-script voor om feature-engineering uit te voeren, één hot-codering, en beheert u de training, validatie en testsplitsingen die moeten worden gebruikt voor het bouwen van modellen. Voer de volgende code uit om uw verwerkingsscript te bouwen:
Voer vervolgens het volgende codeblok uit om de processor te instantiëren en de stap Pipelines om het verwerkingsscript uit te voeren. Omdat het verwerkingsscript in Panda's is geschreven, gebruik je a SKLearnProcessor. De pijpleidingen ProcessingStep
functie heeft de volgende argumenten: de processor, de invoer S3-locaties voor onbewerkte datasets en de uitvoer S3-locaties om verwerkte datasets op te slaan.
Definieer een trainingsstap
Stel modeltraining in met behulp van een SageMaker XGBoost-schatter en de Pipelines TrainingStep
functie:
Definieer het evaluatiescript en de modelevaluatiestap
Voer het volgende codeblok uit om het model te evalueren nadat het is getraind. Dit script bevat de logica om te controleren of de AUC-score aan de opgegeven drempelwaarde voldoet.
Voer vervolgens het volgende codeblok uit om de processor te instantiëren en de stap Pipelines om het evaluatiescript uit te voeren. Omdat het evaluatiescript het XGBoost-pakket gebruikt, gebruik je a ScriptProcessor
samen met de XGBoost-afbeelding. De pijpleidingen ProcessingStep
functie heeft de volgende argumenten: de processor, de invoer S3-locaties voor onbewerkte datasets en de uitvoer S3-locaties om verwerkte datasets op te slaan.
Definieer een stap voor het maken van een model
Voer het volgende codeblok uit om een SageMaker-model te maken met behulp van de modelstap Pijplijnen. Deze stap gebruikt de uitvoer van de trainingsstap om het model te verpakken voor implementatie. Houd er rekening mee dat de waarde voor het argument van het instantietype wordt doorgegeven met behulp van de parameter Pipelines die u eerder in de post hebt gedefinieerd.
Een batchtransformatiestap definiëren
Voer het volgende codeblok uit om batchtransformatie uit te voeren met behulp van het getrainde model met de batchinvoer die in de eerste stap is gemaakt:
Definieer een registermodel stap
De volgende code registreert het model in het SageMaker-modelregister met behulp van de modelstap Pijplijnen:
Definieer een mislukte stap om de pijplijn te stoppen
De volgende code definieert de stap Pijplijnen mislukken om de pijplijnuitvoering te stoppen met een foutbericht als de AUC-score niet aan de gedefinieerde drempelwaarde voldoet:
Definieer een voorwaardestap om de AUC-score te controleren
De volgende code definieert een voorwaardestap om de AUC-score te controleren en voorwaardelijk een model te maken en een batchtransformatie uit te voeren en een model te registreren in het modelregister, of om de pijplijnuitvoering in een mislukte staat te stoppen:
De pijplijn bouwen en uitvoeren
Nadat u alle componentstappen hebt gedefinieerd, kunt u ze samenvoegen tot een Pipelines-object. U hoeft de volgorde van de pijplijn niet op te geven, omdat Pipelines automatisch de volgorde van de volgorde afleidt op basis van de afhankelijkheden tussen de stappen.
Voer de volgende code uit in een cel in uw notitieblok. Als de pijplijn al bestaat, werkt de code de pijplijn bij. Als de pijplijn niet bestaat, wordt er een nieuwe gemaakt.
Conclusie
In dit bericht hebben we enkele van de nieuwe functies geïntroduceerd die nu beschikbaar zijn met Pipelines, samen met andere ingebouwde SageMaker-functies en het XGBoost-algoritme om een model voor churn-voorspelling te ontwikkelen, herhalen en implementeren. De oplossing kan worden uitgebreid met extra gegevensbronnen
om uw eigen ML-workflow te implementeren. Voor meer details over de stappen die beschikbaar zijn in de Pipelines-workflow, zie: Amazon SageMaker Modelbouwpijpleiding en SageMaker-workflows. De AWS SageMaker-voorbeelden GitHub-repo heeft meer voorbeelden van verschillende use-cases met behulp van Pipelines.
Over de auteurs
Jerry Peng is een softwareontwikkelaar bij AWS SageMaker. Hij richt zich op het bouwen van end-to-end grootschalige MLOps-systemen, van training tot modelmonitoring in productie. Hij is ook gepassioneerd om het concept van MLOps naar een breder publiek te brengen.
Dewen Qi is een Software Development Engineer bij AWS. Momenteel richt ze zich op het ontwikkelen en verbeteren van SageMaker Pipelines. Naast haar werk beoefent ze graag cello.
Gayatri Ghanakota is een Sr. Machine Learning Engineer bij AWS Professional Services. Ze heeft een passie voor het ontwikkelen, implementeren en uitleggen van AI/ML-oplossingen in verschillende domeinen. Voorafgaand aan deze functie leidde ze meerdere initiatieven als datawetenschapper en ML-engineer bij wereldwijde topbedrijven in de financiële en winkelruimte. Ze heeft een master's degree in Computer Science, gespecialiseerd in Data Science, van de University of Colorado, Boulder.
Rupinder Grewal is een Sr Ai/ML Specialist Solutions Architect bij AWS. Hij richt zich momenteel op het bedienen van modellen en MLOps op SageMaker. Voorafgaand aan deze functie heeft hij gewerkt als Machine Learning Engineer voor het bouwen en hosten van modellen. Naast zijn werk speelt hij graag tennis en fietst hij graag op bergpaden.
Ray Li is Sr. Data Scientist bij AWS Professional Services. Zijn specialiteit is het bouwen en operationaliseren van AI/ML-oplossingen voor klanten van verschillende groottes, variërend van startups tot enterprise organisaties. Naast zijn werk houdt Ray van fitness en reizen.
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazon Sage Maker
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- van dall
- diepgaand leren
- google ai
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- zephyrnet