Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering

I dag etablerer selskaper funksjonsbutikker for å tilby et sentralt depot for å skalere ML-utvikling på tvers av forretningsenheter og datavitenskapsteam. Ettersom funksjonsdata vokser i størrelse og kompleksitet, må dataforskere effektivt kunne spørre disse funksjonslagrene for å trekke ut datasett for eksperimentering, modelltrening og batch-scoring.

Amazon SageMaker Feature Store er en spesialbygd funksjonsadministrasjonsløsning som hjelper dataforskere og ML-ingeniører med å lagre, oppdage og dele kuraterte data som brukes i opplærings- og prediksjonsarbeidsflyter på en sikker måte. SageMaker Feature Store støtter nå Apache isfjell som et tabellformat for lagring av funksjoner. Dette akselererer modellutviklingen ved å muliggjøre raskere spørringsytelse når du trekker ut ML-treningsdatasett, og drar fordel av Iceberg-tabellkomprimering. Avhengig av utformingen av funksjonsgruppene dine og deres skala, kan du oppleve ytelsesforbedringer på treningssøk på 10x til 100x ved å bruke denne nye funksjonen.

På slutten av dette innlegget vil du vite hvordan du oppretter funksjonsgrupper ved å bruke Iceberg-formatet, utfører Icebergs tabellbehandlingsprosedyrer ved å bruke Amazonas Athena, og planlegg disse oppgavene til å kjøre autonomt. Hvis du er en Spark-bruker, vil du også lære hvordan du utfører de samme prosedyrene ved å bruke Spark og integrerer dem i ditt eget Spark-miljø og automatisering.

SageMaker Feature Store og Apache Iceberg

Amazon SageMaker Feature Store er en sentralisert butikk for funksjoner og tilhørende metadata, slik at funksjoner enkelt kan oppdages og gjenbrukes av dataforskerteam som jobber med forskjellige prosjekter eller ML-modeller.

SageMaker Feature Store består av en online- og en offline-modus for å administrere funksjoner. Nettbutikken brukes til brukssaker med lav latens i sanntid. Offline-butikken brukes først og fremst til batch-prediksjoner og modellopplæring. Den frakoblede butikken er en bare vedleggsbutikk og kan brukes til å lagre og få tilgang til historiske funksjonsdata. Med offline-butikken kan brukere lagre og betjene funksjoner for utforskning og batch-scoring og trekke ut riktige datasett for modellopplæring.

Frakoblet butikkdata lagres i en Amazon Simple Storage Service (Amazon S3)-bøtte i AWS-kontoen din. SageMaker Feature Store bygger automatisk en AWS Glue Data Catalog under opprettelse av funksjonsgruppe. Kunder kan også få tilgang til offline butikkdata ved å bruke en Spark-runtime og utføre big data-behandling for ML-funksjonsanalyse og funksjonsteknikker.

Tabellformater gir en måte å abstrahere datafiler som en tabell. Gjennom årene har mange tabellformater dukket opp for å støtte ACID-transaksjoner, styring og katalogbruk. Apache isfjell er et åpent tabellformat for svært store analytiske datasett. Den administrerer store samlinger av filer som tabeller, og den støtter moderne analytiske datainnsjøoperasjoner som innsetting, oppdatering, sletting og tidsreisespørringer på rekordnivå. Iceberg sporer individuelle datafiler i en tabell i stedet for i kataloger. Dette lar forfattere lage datafiler på plass (filer blir ikke flyttet eller endret) og bare legge til filer i tabellen i en eksplisitt commit. Tabelltilstanden opprettholdes i metadatafiler. Alle endringer i tabelltilstanden oppretter en ny metadatafilversjon som atomisk erstatter de eldre metadataene. Tabellmetadatafilen sporer tabellskjemaet, partisjoneringskonfigurasjonen og andre egenskaper.

Iceberg har integrasjoner med AWS-tjenester. Du kan for eksempel bruke AWS Lim Datakatalog som metalager for Iceberg-tabeller, og Athena støtter lese-, tidsreise-, skrive- og DDL-spørringer for Apache Iceberg-tabeller som bruker Apache Parquet-formatet for data og AWS Glue-katalogen for deres metastore.

Med SageMaker Feature Store kan du nå opprette funksjonsgrupper med Iceberg-tabellformat som et alternativ til standard standard Glue-format. Med det kan kundene utnytte det nye tabellformatet til å bruke Icebergs filkomprimerings- og databeskjæringsfunksjoner for å møte deres brukstilfeller og optimaliseringskrav. Iceberg lar også kunder utføre sletting, tidsreisespørringer, transaksjoner med høy samtidighet og forespørsler med høyere ytelse.

Ved å kombinere Iceberg som et tabellformat og tabellvedlikeholdsoperasjoner som komprimering, får kundene raskere søkeytelse når de arbeider med offline funksjonsgrupper i stor skala, slik at de raskere kan bygge ML-treningsdatasett.

Følgende diagram viser strukturen til den frakoblede butikken ved å bruke Iceberg som tabellformat.

I de neste avsnittene vil du lære hvordan du oppretter funksjonsgrupper ved å bruke Iceberg-formatet, utfører Icebergs tabellbehandlingsprosedyrer ved å bruke AWS Athena og bruker AWS-tjenester til å planlegge disse oppgavene til å kjøre på forespørsel eller etter en tidsplan. Hvis du er en Spark-bruker, vil du også lære hvordan du utfører de samme prosedyrene ved å bruke Spark.

For trinnvise instruksjoner gir vi også en prøve notatbok, som finnes i GitHub. I dette innlegget vil vi fremheve de viktigste delene.

Opprette funksjonsgrupper med Iceberg-tabellformat

Du må først velge Iceberg som tabellformat når du oppretter nye funksjonsgrupper. En ny valgfri parameter TableFormat kan settes enten interaktivt ved hjelp av Amazon SageMaker Studio eller gjennom kode ved hjelp av API eller SDK. Denne parameteren aksepterer verdiene ICEBERG or GLUE (for gjeldende AWS Glue-format). Følgende kodebit viser deg hvordan du oppretter en funksjonsgruppe ved å bruke Iceberg-formatet og FeatureGroup.create API for SageMaker SDK.

orders_feature_group_iceberg.create(
s3_uri=f"s3://{s3_bucket_name}/{prefix}",
record_identifier_name=record_identifier_feature_name,
event_time_feature_name=event_time_feature_name,
role_arn=role,
enable_online_store=True,
table_format=TableFormatEnum.ICEBERG
)

Tabellen opprettes og registreres automatisk i AWS Glue Data Catalog.

Nå som orders_feature_group_iceberg er opprettet, kan du innta funksjoner ved å bruke den valgte inntakspipeline. I dette eksemplet inntar vi poster ved å bruke FeatureGroup.ingest() API, som inntar poster fra en Pandas DataFrame. Du kan også bruke FeatureGroup().put_record API for å innta individuelle poster eller for å håndtere strømmekilder. Spark-brukere kan også innta Spark-datarammer ved å bruke vår Gnistkobling.

orders_fg = FeatureGroup(name=orders_feature_group_iceberg_name,
sagemaker_session=feature_store_session)
orders_fg.ingest(data_frame=order_data, wait=True)

Du kan bekrefte at postene har blitt innlemmet ved å kjøre en spørring mot frakoblet funksjonslager. Du kan også navigere til S3-plasseringen og se den nye mappestrukturen.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Utføre prosedyrer for behandling av Iceberg-tabellen

Amazonas Athena er en serverløs SQL-spørringsmotor som naturlig støtter Iceberg-administrasjonsprosedyrer. I denne delen vil du bruke Athena til å manuelt komprimere den frakoblede funksjonsgruppen du opprettet. Merk at du må bruke Athena-motorversjon 3. For dette kan du opprette en ny arbeidsgruppe, eller konfigurere en eksisterende arbeidsgruppe, og velge anbefalt Athena-motorversjon 3. For mer informasjon og instruksjoner for endring av Athena-motorversjonen, se Endring av Athena-motorversjoner.

Etter hvert som data samles inn i en Iceberg-tabell, kan spørringer gradvis bli mindre effektive på grunn av den økte behandlingstiden som kreves for å åpne flere filer. Komprimering optimerer den strukturelle layouten til tabellen uten å endre tabellinnholdet.

For å utføre komprimering bruker du OPTIMIZE table REWRITE DATA komprimeringsbord vedlikeholdskommando i Athena. Følgende syntaks viser hvordan du kan optimalisere dataoppsettet til en funksjonsgruppe som er lagret ved bruk av Iceberg-tabellformatet. De sagemaker_featurestore representerer navnet på SageMaker Feature Store-databasen, og orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 er navnet på funksjonsgruppetabellen vår.

OPTIMIZE sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 REWRITE DATA USING BIN_PACK

Etter å ha kjørt optimize-kommandoen, bruker du VACUUM prosedyre, som utfører utløp av øyeblikksbilde og fjerner foreldreløse filer. Disse handlingene reduserer metadatastørrelsen og fjerner filer som ikke er i gjeldende tabelltilstand og som også er eldre enn oppbevaringsperioden som er spesifisert for tabellen.

VACUUM sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334

Merk at tabellegenskaper kan konfigureres ved hjelp av Athena's ALTER TABLE. For et eksempel på hvordan du gjør dette, se Athena dokumentasjon. For VACUUM, vacuum_min_snapshots_to_keep og vacuum_max_snapshot_age_seconds kan brukes til å konfigurere beskjæringsparametere for øyeblikksbilder.

La oss ta en titt på ytelseseffekten av å kjøre komprimering på en eksempelfunksjonsgruppetabell. For testformål har vi lagt inn de samme ordrefunksjonspostene i to funksjonsgrupper, orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003 og orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334, ved å bruke en parallellisert SageMaker-behandlingsjobb med Scikit-Learn, som resulterer i 49,908,135 3 106.5 objekter lagret i Amazon SXNUMX og en total størrelse på XNUMX GiB.

Vi kjører en spørring for å velge det siste øyeblikksbildet uten duplikater og uten slettede poster på funksjonsgruppen orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003. Før komprimering tok spørringen 1 time og 27 minutter.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vi kjører så komprimering på orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 ved å bruke Athena OPTIMIZE-spørringen, som komprimerte funksjonsgruppetabellen til 109,851 3 objekter i Amazon S2.5 og en total størrelse på 1 GiB. Hvis vi deretter kjører den samme spørringen etter komprimering, reduseres kjøretiden til 13 min XNUMX sek.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Med Iceberg-filkomprimering ble utføringstiden for spørringen betydelig forbedret. For det samme søket ble kjøretiden redusert fra 1t 27mins til 1min 13sek, som er 71 ganger raskere.

Planlegging av isfjellkomprimering med AWS-tjenester

I denne delen lærer du hvordan du automatiserer tabellbehandlingsprosedyrene for å komprimere din offline funksjonslager. Følgende diagram illustrerer arkitekturen for å lage funksjonsgrupper i Iceberg-tabellformat og en helautomatisert tabelladministrasjonsløsning, som inkluderer filkomprimering og oppryddingsoperasjoner.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

På et høyt nivå oppretter du en funksjonsgruppe ved å bruke Iceberg-tabellformatet og inntar poster i nettbutikken. Funksjonsverdier blir automatisk replikert fra nettbutikken til den historiske frakoblede butikken. Athena brukes til å kjøre isfjell-håndteringsprosedyrene. For å planlegge prosedyrene setter du opp en AWS Lim jobb ved å bruke et Python-skallskript og lag en AWS Glue-jobbplan.

AWS limjobboppsett

Du bruker en AWS-limjobb for å utføre vedlikeholdsoperasjonene for Iceberg-bordet etter en tidsplan. Først må du opprette en IAM-rolle for AWS Glue for å ha tillatelser til å få tilgang til Amazon Athena, Amazon S3 og CloudWatch.

Deretter må du lage et Python-skript for å kjøre Iceberg-prosedyrene. Du kan finne eksempelskript i GitHub. Skriptet vil utføre OPTIMIZE-spørringen ved å bruke boto3.

optimize_sql = f"optimize {database}.{table} rewrite data using bin_pack"

Skriptet er parametrisert ved hjelp av AWS Glue getResolvedOptions(args, options) verktøyfunksjon som gir deg tilgang til argumentene som sendes til skriptet ditt når du kjører en jobb. I dette eksemplet kan AWS-regionen, Iceberg-databasen og tabellen for funksjonsgruppen din, Athena-arbeidsgruppen og Athena-resultatmappen for utdataplassering sendes som parametere til jobben, noe som gjør dette skriptet gjenbrukbart i miljøet ditt.

Til slutt lager du selve AWS Glue-jobben for å kjøre skriptet som et skall i AWS Glue.

  • Naviger til AWS Glue-konsollen.
  • Velg Jobb fanen under AWS Glue Studio.
  • Plukke ut Python Shell script editor.
  • Velg Last opp og rediger et eksisterende skript. Klikk Opprett.
  • De Jobbdetaljer knappen lar deg konfigurere AWS Lim-jobben. Du må velge IAM-rollen du opprettet tidligere. Plukke ut Python 3.9 eller den siste tilgjengelige Python-versjonen.
  • I samme fane kan du også definere en rekke andre konfigurasjonsalternativer, som f.eks Antall nye forsøk or Tidsavbrudd for jobb. i Avanserte egenskaper, kan du legge til jobbparametere for å utføre skriptet, som vist i eksempelskjermbildet nedenfor.
  • Klikk Spar.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Rutetider fanen, kan du definere tidsplanen for å kjøre funksjonsbutikkens vedlikeholdsprosedyrer. For eksempel viser følgende skjermbilde deg hvordan du kjører jobben etter en tidsplan på hver 6. time.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Du kan overvåke jobbkjøringer for å forstå kjøretidsberegninger som fullføringsstatus, varighet og starttid. Du kan også sjekke CloudWatch-loggene for AWS Glue-jobben for å kontrollere at prosedyrene kjører.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Utførelse av Iceberg-tabelladministrasjonsoppgaver med Spark

Kunder kan også bruke Spark til å administrere komprimeringsjobber og vedlikeholdsmetoder. For mer detaljer om Spark-prosedyrene, se Spark-dokumentasjon.

Du må først konfigurere noen av de vanlige egenskapene.

%%configure -f
{
  "conf": {
    "spark.sql.catalog.smfs": "org.apache.iceberg.spark.SparkCatalog",
    "spark.sql.catalog.smfs.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog",
    "spark.sql.catalog.smfs.warehouse": "",
    "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
    "spark.sql.catalog.smfs.glue.skip-name-validation": "true"
  }
}

Følgende kode kan brukes til å optimalisere funksjonsgruppene via Spark.

spark.sql(f"""CALL smfs.system.rewrite_data_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

Du kan deretter utføre de neste to tabellvedlikeholdsprosedyrene for å fjerne eldre øyeblikksbilder og foreldreløse filer som ikke lenger er nødvendige.

spark.sql(f"""CALL smfs.system.expire_snapshots(table => '{DATABASE}.`{ICEBERG_TABLE}`', older_than => TIMESTAMP '{one_day_ago}', retain_last => 1)""")
spark.sql(f"""CALL smfs.system.remove_orphan_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

Du kan deretter inkludere Spark-kommandoene ovenfor i Spark-miljøet ditt. Du kan for eksempel opprette en jobb som utfører optimaliseringen ovenfor på en ønsket tidsplan eller i en pipeline etter inntak.

For å utforske det komplette kodeeksemplet og prøve det på din egen konto, se GitHub repo.

konklusjonen

SageMaker Feature Store tilbyr en spesialbygd funksjonsadministrasjonsløsning for å hjelpe organisasjoner med å skalere ML-utvikling på tvers av datavitenskapsteam. I dette innlegget forklarte vi hvordan du kan utnytte Apache Iceberg som tabellformat og tabellvedlikeholdsoperasjoner som komprimering for å dra nytte av betydelig raskere spørringer når du arbeider med offline funksjonsgrupper i stor skala, og som et resultat bygge opplæringsdatasett raskere. Prøv det, og la oss få vite hva du synes i kommentarene.


Om forfatterne

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Arnaud Lauer er Senior Partner Solutions Architect i offentlig sektor hos AWS. Han gjør det mulig for partnere og kunder å forstå hvordan man best kan bruke AWS-teknologier for å omsette forretningsbehov til løsninger. Han har mer enn 17 års erfaring med å levere og bygge digitale transformasjonsprosjekter på tvers av en rekke bransjer, inkludert offentlig sektor, energi og forbruksvarer. Arnaud har 12 AWS-sertifiseringer, inkludert ML Specialty Certification.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Ioan Catana er en spesialistløsningsarkitekt for kunstig intelligens og maskinlæring ved AWS. Han hjelper kunder med å utvikle og skalere sine ML-løsninger i AWS Cloud. Ioan har over 20 års erfaring for det meste innen programvarearkitekturdesign og skyutvikling.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Mark Roy er en hovedarkitektlæringsarkitekt for AWS, som hjelper kunder med å designe og bygge AI / ML-løsninger. Marks arbeid dekker et bredt spekter av ML-brukstilfeller, med hovedinteresse i datasyn, dyp læring og skalering av ML over hele virksomheten. Han har hjulpet selskaper i mange bransjer, inkludert forsikring, finansielle tjenester, media og underholdning, helsetjenester, verktøy og produksjon. Mark har seks AWS-sertifiseringer, inkludert ML-spesialitetssertifisering. Før han begynte i AWS, var Mark arkitekt, utvikler og teknologileder i over 25 år, inkludert 19 år innen finansielle tjenester.

Gjør ML-utvikling raskere ved å bruke SageMaker Feature Store og Apache Iceberg offline-butikkkomprimering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Brandon Chatham er programvareingeniør med SageMaker Feature Store-teamet. Han er dypt lidenskapelig opptatt av å bygge elegante systemer som bringer store data og maskinlæring til folks fingertupper.

Tidstempel:

Mer fra AWS maskinlæring