Amazon SageMaker är en fullständigt hanterad maskininlärningstjänst (ML). Med SageMaker kan datavetare och utvecklare snabbt och enkelt bygga och träna ML-modeller och sedan direkt distribuera dem i en produktionsklar värdmiljö. Sagemaker tillhandahåller en integrerad Jupyter-författaranteckningsbok-instans för enkel åtkomst till dina datakällor för utforskning och analys, så att du inte behöver hantera servrar. Den tillhandahåller också vanliga ML-algoritmer som är optimerade för att köras effektivt mot extremt stora data i en distribuerad miljö.
SageMaker kräver att träningsdata för en ML-modell finns antingen i Amazon Simple Storage Service (Amazon S3), Amazon Elastic File System (Amazon EFS) eller Amazon FSx for Luster (för mer information, se Access Training Data). För att träna en modell med data som lagras utanför de tre lagringstjänsterna som stöds, måste data först tas in i en av dessa tjänster (vanligtvis Amazon S3). Detta kräver att man bygger en datapipeline (med hjälp av verktyg som t.ex Amazon SageMaker Data Wrangler) för att flytta data till Amazon S3. Detta tillvägagångssätt kan dock skapa en utmaning för datahantering när det gäller att hantera livscykeln för detta datalagringsmedium, skapa åtkomstkontroller, datagranskning och så vidare, allt i syfte att iscensätta träningsdata under utbildningsjobbets varaktighet. I sådana situationer kan det vara önskvärt att ha data tillgänglig för SageMaker i de kortvariga lagringsmedierna kopplade till de tillfälliga träningsinstanserna utan mellanlagring av data i Amazon S3.
Det här inlägget visar ett sätt att göra detta med Snöflinga som datakälla och genom att ladda ner data direkt från Snowflake till en SageMaker Training-jobbinstans.
Lösningsöversikt
Vi använder California Housing Dataset som en träningsdatauppsättning för det här inlägget och träna en ML-modell för att förutsäga husvärdet i median för varje distrikt. Vi lägger till denna data till Snowflake som en ny tabell. Vi skapar en anpassad träningsbehållare som laddar ner data direkt från Snowflake-tabellen till träningsinstansen istället för att först ladda ner data till en S3-hink. Efter att data har laddats ner till träningsinstansen utför det anpassade träningsskriptet dataförberedande uppgifter och tränar sedan ML-modellen med hjälp av XGBoost Estimator. All kod för detta inlägg finns tillgänglig i GitHub repo.
Följande figur representerar högnivåarkitekturen för den föreslagna lösningen för att använda Snowflake som en datakälla för att träna ML-modeller med SageMaker.
Arbetsflödesstegen är följande:
- Sätt upp en SageMaker-anteckningsbok och en AWS identitets- och åtkomsthantering (IAM) roll med lämpliga behörigheter för att ge SageMaker åtkomst Amazon Elastic Container Registry (Amazon ECR), Secrets Manager och andra tjänster inom ditt AWS-konto.
- Lagra dina Snowflake-kontouppgifter i AWS Secrets Manager.
- Ta in data i en tabell i ditt Snowflake-konto.
- Skapa en anpassad containerbild för ML-modellutbildning och skjut den till Amazon ECR.
- Starta ett SageMaker Training-jobb för att träna ML-modellen. Utbildningsinstansen hämtar Snowflake-uppgifter från Secrets Manager och använder sedan dessa uppgifter för att ladda ner datamängden från Snowflake direkt. Detta är steget som eliminerar behovet av att data först laddas ner till en S3-hink.
- Den tränade ML-modellen förvaras i en S3 hink.
Förutsättningar
För att implementera lösningen som tillhandahålls i det här inlägget bör du ha en AWS-konto, en Snowflake konto och förtrogenhet med SageMaker.
Skapa en SageMaker Notebook- och IAM-roll
Vi använder AWS CloudFormation för att skapa en SageMaker-anteckningsbok som heter aws-aiml-blogpost-sagemaker-snowflake-example
och en IAM-roll kallas SageMakerSnowFlakeExample
. Välj Starta stack för den region du vill distribuera resurser till.
Lagra Snowflake-uppgifter i Secrets Manager
Lagra dina Snowflake-uppgifter som en hemlighet i Secrets Manager. För instruktioner om hur du skapar en hemlighet, se Create an AWS Secrets Manager secret
.
- Namnge hemligheten
snowflake_credentials
. Detta krävs eftersom koden isnowflake-load-dataset.ipynb
förväntar sig att hemligheten ska heta så. - Skapa hemligheten som ett nyckel-värdepar med två nycklar:
- Användarnamn – Ditt Snowflake-användarnamn.
- Lösenord – Lösenordet som är kopplat till ditt Snowflake-användarnamn.
Ta in data i en tabell i ditt Snowflake-konto
Utför följande steg för att mata in data:
- Välj på SageMaker-konsolen bärbara datorer i navigeringsfönstret.
- Välj anteckningsboken aws-aiml-blogpost-sagemaker-snowflake-example och välj Öppna JupyterLab.
- Välja
snowflake-load-dataset.ipynb
för att öppna den i JupyterLab. Den här anteckningsboken kommer att äta California Housing Dataset till ett Snowflake-bord. - I anteckningsboken, redigera innehållet i följande cell för att ersätta platshållarvärdena med det som matchar ditt snöflingakonto:
- Välj på Kör-menyn Kör alla celler för att köra koden i den här anteckningsboken. Detta kommer att ladda ner datasetet lokalt till anteckningsboken och sedan mata in det i Snowflake-tabellen.
Följande kodavsnitt i anteckningsboken matar in datasetet i Snowflake. Se den snowflake-load-dataset.ipynb
anteckningsbok för hela koden.
- Stäng anteckningsboken efter att alla celler körts utan fel. Din data är nu tillgänglig i Snowflake. Följande skärmdump visar
california_housing
bord skapat i Snowflake.
Kör sagemaker-snowflake-example.ipynb
anteckningsbok
Den här anteckningsboken skapar en anpassad träningsbehållare med en Snowflake-anslutning, extraherar data från Snowflake till träningsinstansens tillfälliga lagring utan att iscensätta den i Amazon S3, och utför Distribuerad Data Parallel (DDP) XGBoost-modellträning på data. DDP-utbildning krävs inte för modellträning på en så liten datamängd; den ingår här för att illustrera ännu en nyligen släppt SageMaker-funktion.
Skapa en anpassad behållare för utbildning
Vi skapar nu en anpassad behållare för ML-modellutbildningsjobbet. Observera att root-åtkomst krävs för att skapa en Docker-behållare. Den här SageMaker-anteckningsboken distribuerades med root-åtkomst aktiverad. Om din företagsorganisationspolicy inte tillåter root-åtkomst till molnresurser, kanske du vill använda följande Docker-fil- och skalskript för att bygga en Docker-behållare någon annanstans (till exempel din bärbara dator) och sedan skicka den till Amazon ECR. Vi använder behållaren baserad på SageMaker XGBoost-behållarebilden 246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.5-1
med följande tillägg:
- Smakämnen Snowflake Connector för Python för att ladda ner data från Snowflake-tabellen till träningsinstansen.
- Ett Python-skript för att ansluta till Secrets Manager för att hämta Snowflake-uppgifter.
Att använda Snowflake-anslutningen och Python-skriptet säkerställer att användare som använder den här behållarbilden för ML-modellutbildning inte behöver skriva den här koden som en del av sitt träningsskript och kan använda den här funktionaliteten som redan är tillgänglig för dem.
Följande är Dockerfilen för utbildningsbehållaren:
Behållarbilden byggs och skickas till Amazon ECR. Den här bilden används för att träna ML-modellen.
Träna ML-modellen med ett SageMaker Training-jobb
När vi har skapat behållarbilden och skickat den till Amazon ECR kan vi börja använda den för modellträning.
- Vi skapar en uppsättning Python-skript för att ladda ner data från Snowflake med hjälp av Snowflake Connector för Python, förbered data och använd sedan
XGBoost Regressor
att träna ML-modellen. Det är steget att ladda ner data direkt till träningsinstansen som slipper använda Amazon S3 som mellanlagring för träningsdata. - Vi underlättar parallellträning med distribuerad data genom att låta träningskoden ladda ner en slumpmässig delmängd av data så att varje träningsinstans laddar ner lika mycket data från Snowflake. Till exempel, om det finns två träningsnoder, laddar varje nod ner ett slumpmässigt urval av 50 % av raderna i Snowflake-tabellen. Se följande kod:
- Vi tillhandahåller sedan utbildningsskriptet till SageMaker SDK
Estimator
tillsammans med källkatalogen så att alla skript vi skapar kan tillhandahållas till utbildningsbehållaren när utbildningsjobbet körs med hjälp avEstimator.fit
metod:Mer information finns i Förbered ett Scikit-Learn Training Script.
- Efter att modellutbildningen är klar finns den utbildade modellen tillgänglig som en
model.tar.gz
fil i den förinställda SageMaker-hinken för regionen:
Du kan nu distribuera den tränade modellen för att få slutsatser om nya data! För instruktioner, se Skapa din slutpunkt och distribuera din modell.
Städa upp
Ta bort resurserna för att undvika framtida avgifter. Du kan göra detta genom att ta bort CloudFormation-mallen som används för att skapa IAM-rollen och SageMaker-anteckningsboken.
Du måste ta bort Snowflake-resurserna manuellt från Snowflake-konsolen.
Slutsats
I det här inlägget visade vi hur man laddar ner data lagrad i en Snowflake-tabell till en SageMaker Training-jobbinstans och tränar en XGBoost-modell med hjälp av en anpassad träningsbehållare. Detta tillvägagångssätt tillåter oss att direkt integrera Snowflake som en datakälla med en SageMaker-anteckningsbok utan att ha data iscensatt i Amazon S3.
Vi uppmuntrar dig att lära dig mer genom att utforska Amazon SageMaker Python SDK och bygga en lösning med hjälp av exempelimplementeringen som tillhandahålls i det här inlägget och en datauppsättning som är relevant för ditt företag. Om du har frågor eller förslag, lämna en kommentar.
Om författarna
Amit Arora är en AI- och ML-specialistarkitekt på Amazon Web Services, som hjälper företagskunder att använda molnbaserade maskininlärningstjänster för att snabbt skala sina innovationer. Han är också adjungerad lektor i MS datavetenskap och analysprogrammet vid Georgetown University i Washington DC
Divya Muralidharan är en lösningsarkitekt på Amazon Web Services. Hon brinner för att hjälpa företagskunder att lösa affärsproblem med teknik. Hon har en magisterexamen i datavetenskap från Rochester Institute of Technology. Utanför kontoret ägnar hon tid åt att laga mat, sjunga och odla växter.
Sergey Ermolin är Principal AIML Solutions Architect på AWS. Tidigare var han arkitekt för mjukvarulösningar för djupinlärning, analys och big data-teknik på Intel. En Silicon Valley-veteran med en passion för maskininlärning och artificiell intelligens, Sergey har varit intresserad av neurala nätverk sedan pre-GPU dagar, när han använde dem för att förutsäga åldrande beteende hos kvartskristaller och cesium atomklockor på Hewlett-Packard. Sergey har ett MSEE och ett CS-certifikat från Stanford och en BS-examen i fysik och maskinteknik från California State University, Sacramento. Utanför jobbet tycker Sergey om vintillverkning, skidåkning, cykling, segling och dykning. Sergey är också frivillig pilot för Ängelflyg.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/use-snowflake-as-a-data-source-to-train-ml-models-with-amazon-sagemaker/
- :är
- $UPP
- 1
- 10
- 7
- 8
- a
- Om Oss
- tillgång
- tillgänglig
- Konto
- tillsatser
- Efter
- mot
- Åldrande
- AI
- AIML
- algoritmer
- Alla
- tillåter
- redan
- amason
- Amazon FSx
- Amazon SageMaker
- Amazon Web Services
- mängd
- analys
- analytics
- och
- Annan
- tillvägagångssätt
- lämpligt
- arkitektur
- ÄR
- konstgjord
- artificiell intelligens
- AS
- associerad
- At
- revision
- författarskap
- tillgänglig
- AWS
- AWS molnformation
- bas
- baserat
- BE
- därför att
- Stor
- Stora data
- SLUTRESULTAT
- Byggnad
- byggt
- företag
- by
- kalifornien
- kallas
- KAN
- Celler
- certifikat
- utmanar
- avgifter
- Välja
- Rengöring
- Klockor
- cloud
- koda
- Kolumn
- Kolonner
- kommentar
- Gemensam
- fullborda
- dator
- Datavetenskap
- Kontakta
- anslutning
- Konsol
- Behållare
- innehåller
- innehåll
- kontroller
- skapa
- skapas
- skapar
- Skapa
- referenser
- beställnings
- Kunder
- datum
- datahantering
- Förberedelse av data
- datavetenskap
- datalagring
- datum Tid
- Dagar
- DDP
- Avgörande
- djup
- djupt lärande
- Standard
- Examen
- distribuera
- utplacerade
- utvecklare
- direkt
- distribueras
- distrikt
- Hamnarbetare
- inte
- ladda ner
- Nedladdningar
- varje
- lätt
- effektivt
- antingen
- eliminerar
- annorstädes
- aktiverad
- uppmuntra
- Slutpunkt
- Teknik
- säkerställer
- Företag
- Miljö
- fel
- exempel
- exekvera
- finns
- förväntar
- utforskning
- Utforska
- extrakt
- extremt
- främja
- verkligt
- Förtrogenhet
- Leverans
- Figur
- Fil
- slutlig
- Förnamn
- passa
- efter
- följer
- För
- från
- full
- fullständigt
- funktionalitet
- framtida
- skaffa sig
- få
- GitHub
- kommer
- Odling
- Har
- har
- hjälpa
- här.
- högnivå
- innehar
- värd
- värdar
- Huset
- bostäder
- Hur ser din drömresa ut
- How To
- Men
- html
- HTTPS
- Identitet
- bild
- genomföra
- genomförande
- importera
- in
- innefattar
- ingår
- index
- informationen
- innovationer
- installera
- exempel
- Institute
- instruktioner
- integrera
- integrerade
- Intel
- Intelligens
- intresserad
- IT
- Jobb
- nycklar
- laptop
- Large
- Efternamn
- LÄRA SIG
- inlärning
- Lämna
- livscykel
- ln
- lokalt
- Maskinen
- maskininlärning
- hantera
- förvaltade
- ledning
- chef
- hantera
- manuellt
- matchande
- mekanisk
- Media
- Medium
- Meny
- metod
- ML
- modell
- modeller
- mer
- flytta
- MS
- namn
- Navigering
- Behöver
- behov
- nätverk
- neurala nätverk
- Nya
- Nästa
- nod
- noder
- anteckningsbok
- antal
- objektet
- of
- Office
- on
- ONE
- öppet
- optimerad
- beställa
- organisation
- Övriga
- utanför
- paket
- pandor
- panelen
- Parallell
- del
- brinner
- brinner
- Lösenord
- utför
- behörigheter
- Fysik
- Föraren
- rörledning
- platshållare
- Växter
- plato
- Platon Data Intelligence
- PlatonData
- Strategier
- befolkad
- Inlägg
- förutse
- Förbered
- presentera
- tidigare
- Principal
- problem
- Program
- föreslagen
- ge
- förutsatt
- ger
- Syftet
- Tryck
- sköt
- Python
- frågor
- snabbt
- slumpmässig
- snabbt
- snarare
- Läsa
- nyligen
- register
- minskar
- region
- frigörs
- relevanta
- ersätta
- representerar
- Obligatorisk
- Kräver
- Resurser
- avkastning
- Roll
- rot
- RAD
- Körning
- Sacramento
- sagemaker
- segling
- Save
- Skala
- Vetenskap
- vetenskapsmän
- scikit lära
- skript
- sDK
- Secret
- Servrar
- service
- Tjänster
- in
- Forma
- Shell
- skall
- Visar
- signifikant
- Kisel
- Silicon Valley
- Enkelt
- eftersom
- situationer
- Small
- So
- Mjukvara
- lösning
- Lösningar
- LÖSA
- Källa
- Källor
- Utrymme
- specialist
- staging
- starta
- Ange
- .
- Steg
- Steg
- förvaring
- lagras
- subnät
- Framgångsrikt
- sådana
- stödja
- Som stöds
- system
- bord
- uppgifter
- Tekniken
- Teknologi
- mall
- villkor
- den där
- Smakämnen
- källan
- deras
- Dem
- Dessa
- tre
- Genom
- tid
- till
- verktyg
- Totalt
- Tåg
- tränad
- Utbildning
- tåg
- typiskt
- universitet
- Uppdatering
- us
- användning
- Användare
- användare
- Dal
- värde
- Värden
- veteran-
- volontär
- washington
- Sätt..
- webb
- webbservice
- som
- VEM
- kommer
- med
- inom
- utan
- Arbete
- skriva
- XGBoost
- Om er
- Din
- zephyrnet