Zephyrnet-logo

Bouw ML-functies op schaal met Amazon SageMaker Feature Store met behulp van gegevens van Amazon Redshift | Amazon-webservices

Datum:

Amazon roodverschuiving is het meest populaire datawarehouse in de cloud dat door tienduizenden klanten wordt gebruikt om elke dag exabytes aan gegevens te analyseren. Veel beoefenaars breiden deze Redshift-datasets op schaal uit voor machine learning (ML). Amazon Sage Maker, een volledig beheerde ML-service, met de vereisten om functies offline te ontwikkelen op een code-manier of low-code/no-code-manier, aanbevolen gegevens van Amazon Redshift op te slaan en dit op schaal te laten gebeuren in een productieomgeving.

In dit bericht laten we u drie opties zien om Redshift-brongegevens op schaal voor te bereiden in SageMaker, inclusief het laden van gegevens van Amazon Redshift, het uitvoeren van feature-engineering en het opnemen van functies in Amazon SageMaker Feature Store:

Als u een AWS Glue-gebruiker bent en het proces interactief wilt doen, overweeg dan optie A. Als u bekend bent met SageMaker en Spark-code schrijft, kan optie B uw keuze zijn. Als je het proces op een low-code/no-code manier wilt doen, kun je optie C volgen.

Amazon Redshift gebruikt SQL om gestructureerde en semi-gestructureerde gegevens te analyseren in datawarehouses, operationele databases en datameren, met behulp van door AWS ontworpen hardware en ML om de beste prijs-prestatieverhouding op elke schaal te leveren.

SageMaker Studio is de eerste volledig geïntegreerde ontwikkelomgeving (IDE) voor ML. Het biedt een enkele webgebaseerde visuele interface waar u alle ML-ontwikkelingsstappen kunt uitvoeren, inclusief het voorbereiden van gegevens en het bouwen, trainen en implementeren van modellen.

AWS Glue is een serverloze data-integratieservice die het gemakkelijk maakt om data te ontdekken, voor te bereiden en te combineren voor analyse, ML en applicatie-ontwikkeling. Met AWS Glue kunt u naadloos gegevens verzamelen, transformeren, opschonen en voorbereiden voor opslag in uw datalakes en datapijplijnen met behulp van verschillende mogelijkheden, waaronder ingebouwde transformaties.

Overzicht oplossingen

Het volgende diagram illustreert de oplossingsarchitectuur voor elke optie.

Voorwaarden

Om door te gaan met de voorbeelden in dit bericht, moet u de vereiste AWS-bronnen maken. Om dit te doen, bieden we een AWS CloudFormatie sjabloon om een ​​stapel te maken die de resources bevat. Wanneer u de stapel maakt, maakt AWS een aantal bronnen aan in uw account:

  • Een SageMaker-domein, dat een bijbehorend Amazon elastisch bestandssysteem (Amazon EFS)-volume
  • Een lijst met geautoriseerde gebruikers en een verscheidenheid aan beveiligings-, applicatie-, beleids- en Amazon virtuele privécloud (Amazon VPC) configuraties
  • Een Redshift-cluster
  • Een geheim van Redshift
  • Een AWS Glue-verbinding voor Amazon Redshift
  • An AWS Lambda functie om vereiste resources, uitvoeringsrollen en beleid in te stellen

Zorg ervoor dat u niet al twee SageMaker Studio-domeinen heeft in de regio waar u de CloudFormation-sjabloon uitvoert. Dit is het maximaal toegestane aantal domeinen in elke ondersteunde regio.

Implementeer de CloudFormation-sjabloon

Voer de volgende stappen uit om de CloudFormation-sjabloon te implementeren:

  1. Sla de CloudFormation-sjabloon op sm-roodverschuiving-demo-vpc-cfn-v1.yaml lokaal.
  2. Kies op de AWS CloudFormation-console Maak een stapel.
  3. Voor Bereid sjabloon voorselecteer Sjabloon is klaar.
  4. Voor Sjabloonbronselecteer Upload een sjabloonbestand.
  5. Kies Kies bestand en navigeer naar de locatie op uw computer waar de CloudFormation-sjabloon is gedownload en kies het bestand.
  6. Voer een stapelnaam in, zoals Demo-Redshift.
  7. Op de Configureer stapelopties pagina, laat alles op standaard staan ​​en kies Volgende.
  8. Op de Beoordeling 4040 hand404040 details hand4040 hand 3 details hand40 hand40 hand details details details details hand 3 Ik erken dat AWS CloudFormation IAM-bronnen met aangepaste namen kan maken En kies Maak een stapel.

Je zou een nieuwe CloudFormation-stack moeten zien met de naam Demo-Redshift gecreëerd worden. Wacht tot de status van de stapel is CREATE_COMPLETE (ongeveer 7 minuten) voordat u verder gaat. U kunt naar de stapel navigeren Resources tabblad om te controleren welke AWS-bronnen zijn gemaakt.

Start SageMaker Studio

Voer de volgende stappen uit om uw SageMaker Studio-domein te starten:

  1. Kies op de SageMaker-console domeinen in het navigatievenster.
  2. Kies het domein dat u hebt gemaakt als onderdeel van de CloudFormation-stack (SageMakerDemoDomain).
  3. Kies Lancering en Studio.

Het kan 1 tot 2 minuten duren voordat deze pagina is geladen wanneer u SageMaker Studio voor het eerst opent, waarna u wordt doorgestuurd naar een Home Tab.

Download de GitHub-repository

Voer de volgende stappen uit om de GitHub-repo te downloaden:

  1. In het SageMaker-notitieboek, op de Dien in menu, kies New en terminal.
  2. Voer in de terminal de volgende opdracht in:
git clone https://github.com/aws-samples/amazon-sagemaker-featurestore-redshift-integration.git

Je ziet nu de amazon-sagemaker-featurestore-redshift-integration map in het navigatievenster van SageMaker Studio.

Stel batchverwerking in met de Spark-connector

Voer de volgende stappen uit om batchopname in te stellen:

  1. Open het notitieblok in SageMaker Studio 1-uploadJar.ipynb voor amazon-sagemaker-featurestore-redshift-integration.
  2. Als u wordt gevraagd een kernel te kiezen, kiest u data Science als de afbeelding en Python 3 als de kernel, kies dan kies.
  3. Kies voor de volgende notebooks dezelfde afbeelding en kernel behalve de AWS Glue Interactive Sessions-notebook (4a).
  4. Voer de cellen uit door op te drukken Shift + Enter in elk van de cellen.

Terwijl de code wordt uitgevoerd, verschijnt er een sterretje (*) tussen de vierkante haken. Wanneer de code is voltooid, wordt de * vervangen door cijfers. Deze actie is ook uitvoerbaar voor alle andere notebooks.

Stel het schema in en laad gegevens naar Amazon Redshift

De volgende stap is het opzetten van het schema en het laden van gegevens van Amazon eenvoudige opslagservice (Amazon S3) naar Amazon Redshift. Voer hiervoor het notitieblok uit 2-geladenredshiftdata.ipynb.

Maak functiewinkels in SageMaker Feature Store

Voer de notebook uit om uw feature stores te maken 3-createFeatureStore.ipynb.

Functie-engineering uitvoeren en functies opnemen in SageMaker Feature Store

In deze sectie presenteren we de stappen voor alle drie de opties om feature-engineering uit te voeren en verwerkte functies in SageMaker Feature Store op te nemen.

Optie A: gebruik SageMaker Studio met een serverloze interactieve AWS Glue-sessie

Voer de volgende stappen uit voor optie A:

  1. Open het notitieblok in SageMaker Studio 4a-lijm-int-sessie.ipynb.
  2. Als u wordt gevraagd een kernel te kiezen, kiest u SparkAnalytics 2.0 als de afbeelding en Lijm Python [PySpark en Ray] als de kernel, kies dan kies.

Het voorbereidingsproces van de omgeving kan enige tijd in beslag nemen.

Optie B: gebruik een SageMaker-verwerkingstaak met Spark

In deze optie gebruiken we een SageMaker Processing-taak met een Spark-script om de originele dataset van Amazon Redshift te laden, feature-engineering uit te voeren en de gegevens op te nemen in de SageMaker Feature Store. Open hiervoor het notitieblok 4b-verwerking-rs-naar-fs.ipynb in uw SageMaker Studio-omgeving.

Hier gebruiken we RedshiftDatasetDefinition om de dataset op te halen uit het Redshift-cluster. RedshiftDatasetDefinition is een type invoer van de verwerkingstaak, die een eenvoudige interface biedt voor beoefenaars om Redshift-verbindingsgerelateerde parameters te configureren, zoals identificatie, database, tabel, queryreeks en meer. U kunt eenvoudig uw Redshift-verbinding tot stand brengen met behulp van RedshiftDatasetDefinition zonder fulltime een verbinding te onderhouden. Wij gebruiken ook de SageMaker Feature Store Spark-connectorbibliotheek in de verwerkingstaak om verbinding te maken met SageMaker Feature Store in een gedistribueerde omgeving. Met deze Spark-connector kunt u eenvoudig gegevens opnemen in de online en offline winkel van de functiegroep vanuit een Spark DataFrame. Deze connector bevat ook de functionaliteit om automatisch functiedefinities te laden om te helpen bij het maken van functiegroepen. Bovenal biedt deze oplossing u een native Spark-manier om een ​​end-to-end datapijplijn van Amazon Redshift naar SageMaker te implementeren. U kunt elke functie-engineering in een Spark-context uitvoeren en de laatste functies opnemen in SageMaker Feature Store in slechts één Spark-project.

Om de SageMaker Feature Store Spark-connector te gebruiken, breiden we een vooraf gebouwd SageMaker Spark-container Met sagemaker-feature-store-pyspark geïnstalleerd. Gebruik in het Spark-script de uitvoerbare opdracht van het systeem om uit te voeren pip install, installeer deze bibliotheek in uw lokale omgeving en verkrijg het lokale pad van de JAR-bestandsafhankelijkheid. Geef in de verwerkingstaak-API dit pad op naar de parameter van submit_jars naar het knooppunt van het Spark-cluster dat door de verwerkingstaak wordt gemaakt.

In het Spark-script voor de verwerkingstaak lezen we eerst de originele datasetbestanden van Amazon S3, die tijdelijk de uitgeladen dataset van Amazon Redshift als medium opslaat. Vervolgens voeren we feature engineering op een Spark-manier uit en gebruiken feature_store_pyspark om gegevens op te nemen in de offline feature store.

Voor de verwerkingstaak bieden we een ProcessingInput met een redshift_dataset_definition. Hier bouwen we een structuur volgens de interface en bieden we Redshift-verbindingsgerelateerde configuraties. Je kunt gebruiken query_string om uw dataset te filteren op SQL en deze uit te laden naar Amazon S3. Zie de volgende code:

rdd_input = ProcessingInput( input_name="redshift_dataset_definition", app_managed=True, dataset_definition=DatasetDefinition( local_path="/opt/ml/processing/input/rdd", data_distribution_type="FullyReplicated", input_mode="File", redshift_dataset_definition=RedshiftDatasetDefinition( cluster_id=_cluster_id, database=_dbname, db_user=_username, query_string=_query_string, cluster_role_arn=_redshift_role_arn, output_s3_uri=_s3_rdd_output, output_format="PARQUET" ), ), )

U moet 6–7 minuten wachten voor elke verwerkingstaak, inclusief USER, PLACE en RATING gegevenssets.

Raadpleeg voor meer informatie over SageMaker-verwerkingstaken Data verwerken.

Voor native SageMaker-oplossingen voor functieverwerking van Amazon Redshift kunt u ook gebruiken Functieverwerking in SageMaker Feature Store, dat is voor de onderliggende infrastructuur, inclusief het inrichten van de computeromgevingen en het maken en onderhouden van SageMaker-pijplijnen om gegevens te laden en op te nemen. U kunt zich alleen concentreren op uw functieprocessordefinities die transformatiefuncties, de bron van Amazon Redshift en de sink van SageMaker Feature Store omvatten. De planning, het taakbeheer en andere werklasten in de productie worden beheerd door SageMaker. Feature Processor-pijplijnen zijn SageMaker-pijplijnen, dus de standaard monitoringmechanismen en integraties beschikbaar.

Optie C: gebruik SageMaker Data Wrangler

Met SageMaker Data Wrangler kunt u gegevens importeren uit verschillende gegevensbronnen, waaronder Amazon Redshift, voor een low-code/no-code manier om uw gegevens voor te bereiden, te transformeren en weer te geven. Nadat u klaar bent met het voorbereiden van de gegevens, kunt u SageMaker Data Wrangler gebruiken om functies te exporteren naar de SageMaker Feature Store.

Er zijn enkele AWS Identiteits- en toegangsbeheer (IAM) instellingen waarmee SageMaker Data Wrangler verbinding kan maken met Amazon Redshift. Maak eerst een IAM-rol aan (bijvoorbeeld redshift-s3-dw-connect) met een toegangsbeleid voor Amazon S3. Voor dit bericht hebben we de AmazonS3FullAccess beleid naar de IAM-rol. Als u toegangsbeperkingen hebt voor een bepaalde S3-bucket, kunt u deze definiëren in het Amazon S3-toegangsbeleid. We hebben de IAM-rol gekoppeld aan het Redshift-cluster dat we eerder hebben gemaakt. Maak vervolgens een beleid voor SageMaker om toegang te krijgen tot Amazon Redshift door de clusterreferenties op te halen en koppel het beleid aan de SageMaker IAM-rol. Het beleid ziet eruit als de volgende code:

{ "Version": "2012-10-17", "Statement": [ { "Action": "redshift:getclustercredentials", "Effect": "Allow", "Resource": [ "*" ] } ]
}

Na deze installatie kunt u met SageMaker Data Wrangler Amazon Redshift opvragen en de resultaten uitvoeren in een S3-bucket. Raadpleeg voor instructies om verbinding te maken met een Redshift-cluster en het opvragen en importeren van gegevens van Amazon Redshift naar SageMaker Data Wrangler Importeer gegevens van Amazon Redshift.

SageMaker Data Wrangler biedt een selectie van meer dan 300 vooraf gebouwde gegevenstransformaties voor veelvoorkomende gebruikssituaties, zoals het verwijderen van dubbele rijen, het toerekenen van ontbrekende gegevens, eenmalige codering en het verwerken van tijdreeksgegevens. U kunt ook aangepaste transformaties toevoegen in panda's of PySpark. In ons voorbeeld hebben we enkele transformaties toegepast, zoals drop-kolom, afdwinging van gegevenstypes en ordinale codering op de gegevens.

Wanneer uw gegevensstroom is voltooid, kunt u deze exporteren naar de SageMaker Feature Store. Op dit punt moet u een functiegroep maken: geef de functiegroep een naam, selecteer zowel online als offline opslag, geef de naam op van een S3-bucket om te gebruiken voor de offline winkel en geef een rol op die SageMaker Feature Store-toegang heeft . Ten slotte kunt u een taak maken, waarmee een SageMaker Processing-taak wordt gemaakt die de SageMaker Data Wrangler-stroom uitvoert om functies van de Redshift-gegevensbron op te nemen in uw functiegroep.

Hier is een end-to-end datastroom in het scenario van PLACE feature engineering.

Gebruik SageMaker Feature Store voor modeltraining en voorspelling

Om SageMaker Feature Store te gebruiken voor modeltraining en -voorspelling, opent u het notitieblok 5-classificatie-met-functiegroepen.ipynb.

Nadat de Redshift-gegevens zijn omgezet in functies en zijn opgenomen in de SageMaker Feature Store, zijn de functies beschikbaar voor zoeken en ontdekken door teams van datawetenschappers die verantwoordelijk zijn voor veel onafhankelijke ML-modellen en use cases. Deze teams kunnen de functies gebruiken voor modellering zonder dat ze feature-engineering-pijplijnen opnieuw hoeven op te bouwen of opnieuw uit te voeren. Functiegroepen worden onafhankelijk beheerd en geschaald en kunnen opnieuw worden gebruikt en samengevoegd, ongeacht de stroomopwaartse gegevensbron.

De volgende stap is het bouwen van ML-modellen met behulp van functies die zijn geselecteerd uit een of meerdere functiegroepen. U beslist welke functiegroepen u voor uw modellen wilt gebruiken. Er zijn twee opties om een ​​ML-dataset te maken van functiegroepen, beide met behulp van de SageMaker Python SDK:

  • Gebruik de SageMaker Feature Store DatasetBuilder API – De SageMaker Feature Store DatasetBuilder Met API kunnen datawetenschappers ML-datasets maken van een of meer functiegroepen in de offline winkel. U kunt de API gebruiken om een ​​dataset te maken op basis van een enkele of meerdere functiegroepen, en deze uitvoeren als een CSV-bestand of een Panda's DataFrame. Zie de volgende voorbeeldcode:
from sagemaker.feature_store.dataset_builder import DatasetBuilder fact_rating_dataset = DatasetBuilder( sagemaker_session = sagemaker_session, base = fact_rating_feature_group, output_path = f"s3://{s3_bucket_name}/{prefix}", record_identifier_feature_name = 'ratingid', event_time_identifier_feature_name = 'timestamp', ).to_dataframe()[0]

  • Voer SQL-query's uit met de functie athena_query in de FeatureGroup API - Een andere optie is om de automatisch gebouwde AWS Glue Data Catalog voor de FeatureGroup API te gebruiken. De FeatureGroup API bevat een Athena_query functie die een AthenaQuery-instantie maakt om door de gebruiker gedefinieerde SQL-querytekenreeksen uit te voeren. Vervolgens voer je de Athena-query uit en organiseer je het queryresultaat in een Panda's DataFrame. Met deze optie kunt u meer gecompliceerde SQL-query's opgeven om informatie uit een functiegroep te extraheren. Zie de volgende voorbeeldcode:
dim_user_query = dim_user_feature_group.athena_query()
dim_user_table = dim_user_query.table_name dim_user_query_string = ( 'SELECT * FROM "' + dim_user_table + '"'
) dim_user_query.run( query_string = dim_user_query_string, output_location = f"s3://{s3_bucket_name}/{prefix}",
) dim_user_query.wait()
dim_user_dataset = dim_user_query.as_dataframe()

Vervolgens kunnen we de opgevraagde gegevens van verschillende functiegroepen samenvoegen tot onze definitieve dataset voor modeltraining en testen. Voor deze post gebruiken we batch-transformatie voor modelinferentie. Met batchtransformatie kun je modelinferene krijgen voor een groot deel van de gegevens in Amazon S3, en het gevolgtrekkingsresultaat wordt ook opgeslagen in Amazon S3. Raadpleeg het notitieblok voor meer informatie over modeltraining en inferentie 5-classificatie-met-functiegroepen.ipynb.

Voer een join-query uit op voorspellingsresultaten in Amazon Redshift

Ten slotte vragen we het gevolgtrekkingsresultaat en voegen we het samen met originele gebruikersprofielen in Amazon Redshift. Hiervoor gebruiken we Amazon Roodverschuivingsspectrum om batchvoorspellingsresultaten in Amazon S3 samen te voegen met de originele Redshift-gegevens. Raadpleeg de notebookrun voor meer informatie 6-leesresultaten-in-roodverschuiving.ipynb.

Opruimen

In dit gedeelte geven we de stappen om de bronnen op te schonen die als onderdeel van dit bericht zijn gemaakt om lopende kosten te voorkomen.

Sluit SageMaker-apps af

Voer de volgende stappen uit om uw bronnen af ​​te sluiten:

  1. In SageMaker Studio, aan de Dien in menu, kies Afsluiten.
  2. In het Afsluitbevestiging dialoogvenster, kies Alles afsluiten verder gaan.

  1. Nadat u het bericht "Server gestopt" heeft ontvangen, kunt u dit tabblad sluiten.

Verwijder de apps

Voer de volgende stappen uit om uw apps te verwijderen:

  1. Kies op de SageMaker-console in het navigatievenster domeinen.
  2. Op de domeinen pagina, kies SageMakerDemoDomain.
  3. Op de pagina met domeindetails, onder Gebruikersprofielen, kies de gebruiker sagemakerdemouser.
  4. In het Apps sectie, in de Actie kolom, kies App verwijderen voor alle actieve apps.
  5. Zorg ervoor dat de Status kolom zegt Verwijderde voor alle apps.

Verwijder het EFS-opslagvolume dat is gekoppeld aan uw SageMaker-domein

Zoek uw EFS-volume op de SageMaker-console en verwijder het. Raadpleeg voor instructies Beheer uw Amazon EFS-opslagvolume in SageMaker Studio.

Verwijder standaard S3-buckets voor SageMaker

Verwijder de standaard S3-buckets (sagemaker-<region-code>-<acct-id>) voor SageMaker Als u SageMaker niet gebruikt in die regio.

De CloudFormation-stack verwijderen

Verwijder de CloudFormation-stack in uw AWS-account om alle gerelateerde bronnen op te ruimen.

Conclusie

In dit bericht demonstreerden we een end-to-end data- en ML-stroom van een Redshift-datawarehouse naar SageMaker. U kunt eenvoudig AWS-native integratie van speciaal gebouwde engines gebruiken om het gegevenstraject naadloos te doorlopen. Bekijk de AWS-blog voor meer tips over het bouwen van ML-functies vanuit een modern datawarehouse.


Over de auteurs

Akhilesh Dube, een Senior Analytics Solutions Architect bij AWS, heeft meer dan twintig jaar ervaring in het werken met databases en analyseproducten. Zijn primaire rol bestaat uit het samenwerken met zakelijke klanten om robuuste data-analyseoplossingen te ontwerpen, terwijl hij uitgebreide technische begeleiding biedt voor een breed scala aan AWS Analytics- en AI/ML-services.

Ren Guo is een Senior Data Specialist Solutions Architect op het gebied van generatieve AI, analyse en traditionele AI/ML bij AWS, regio Groot-China.

sherry ding is een Senior AI/ML Specialist Solutions Architect. Ze heeft uitgebreide ervaring met machine learning en is gepromoveerd in computerwetenschappen. Ze werkt voornamelijk met klanten uit de publieke sector aan verschillende AI/ML-gerelateerde zakelijke uitdagingen, en helpt hen hun machine learning-traject op de AWS Cloud te versnellen. Als ze geen klanten helpt, houdt ze van buitenactiviteiten.

Marc Roy is een Principal Machine Learning Architect voor AWS en helpt klanten bij het ontwerpen en bouwen van AI/ML-oplossingen. Marks werk bestrijkt een breed scala aan ML-use-cases, met een primaire interesse in computervisie, deep learning en het opschalen van ML binnen de onderneming. Hij heeft bedrijven in vele sectoren geholpen, waaronder verzekeringen, financiële diensten, media en entertainment, gezondheidszorg, nutsbedrijven en productie. Mark heeft zes AWS-certificeringen, waaronder de ML Specialty-certificering. Voordat hij bij AWS kwam, was Mark meer dan 25 jaar architect, ontwikkelaar en technologieleider, waarvan 19 jaar in de financiële dienstverlening.

spot_img

Laatste intelligentie

spot_img