Opret en batch-anbefalingspipeline ved hjælp af Amazon Personalize uden kode PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Opret en batchanbefalingspipeline ved hjælp af Amazon Personalize uden kode

Med personligt tilpasset indhold, der er mere tilbøjelige til at fremme kundernes engagement, søger virksomheder løbende at levere skræddersyet indhold baseret på deres kundes profil og adfærd. Anbefalingssystemer søger især at forudsige den præference, en slutbruger vil give til en vare. Nogle almindelige brugstilfælde omfatter produktanbefalinger på onlinebutikker, personalisering af nyhedsbreve, generering af anbefalinger til musikafspilningslister eller endda opdagelse af lignende indhold på onlinemedietjenester.

Det kan dog være udfordrende at skabe et effektivt anbefalingssystem på grund af kompleksitet i modeltræning, algoritmevalg og platformsstyring. Amazon Tilpas gør det muligt for udviklere at forbedre kundeengagementet gennem personaliserede produkt- og indholdsanbefalinger uden behov for maskinlæringsekspertise (ML). Udviklere kan begynde at engagere kunder med det samme ved at bruge registrerede brugeradfærdsdata. Bag kulisserne undersøger Amazon Personalize disse data, identificerer, hvad der er meningsfuldt, vælger de rigtige algoritmer, træner og optimerer en personaliseringsmodel, der er tilpasset dine data, og giver anbefalinger via et API-slutpunkt.

Selvom det at give anbefalinger i realtid kan hjælpe med at øge engagement og tilfredshed, er det nogle gange måske ikke nødvendigt, og at udføre dette i batch på en planlagt basis kan simpelthen være en mere omkostningseffektiv og overskuelig mulighed.

Dette indlæg viser dig, hvordan du bruger AWS-tjenester til ikke kun at oprette anbefalinger, men også operationalisere en batch-anbefalingspipeline. Vi går igennem end-to-end-løsningen uden en enkelt kodelinje. Vi diskuterer to emner i detaljer:

Løsningsoversigt

I denne løsning bruger vi MovieLens datasæt. Dette datasæt indeholder 86,000 vurderinger af film fra 2,113 brugere. Vi forsøger at bruge disse data til at generere anbefalinger til hver af disse brugere.

Dataforberedelse er meget vigtig for at sikre, at vi får kundeadfærdsdata i et format, der er klar til Amazon Personalize. Arkitekturen beskrevet i dette indlæg bruger AWS Glue, en serverløs dataintegrationstjeneste, til at udføre transformationen af ​​rådata til et format, der er klar til at Amazon Personalize kan bruge. Løsningen bruger Amazon Personalize til at oprette batch-anbefalinger til alle brugere ved at bruge en batch-inferens. Vi bruger derefter en Step Functions-arbejdsgang, så den automatiserede arbejdsgang kan køres ved at kalde Amazon Personalize API'er på en gentagelig måde.

Følgende diagram viser denne løsning.Arkitektur diagram

Vi bygger denne løsning med følgende trin:

  1. Byg et datatransformationsjob for at transformere vores rådata ved hjælp af AWS Glue.
  2. Byg en Amazon Personalize-løsning med det transformerede datasæt.
  3. Byg et Step Functions-arbejdsforløb for at orkestrere genereringen af ​​batch-slutninger.

Forudsætninger

Du skal bruge følgende til denne gennemgang:

Byg et datatransformationsjob for at transformere rådata med AWS Glue

Med Amazon Personalize skal inputdata have et specifikt skema og filformat. Data fra interaktioner mellem brugere og elementer skal være i CSV-format med specifikke kolonner, hvorimod listen over brugere, som du vil generere anbefalinger til, skal være i JSON-format. I dette afsnit bruger vi AWS Glue Studio til at transformere rå inputdata til de nødvendige strukturer og formater til Amazon Personalize.

AWS Glue Studio leverer en grafisk grænseflade, der er designet til nem oprettelse og afvikling af udtrække, transformere og indlæse (ETL) job. Du kan visuelt oprette datatransformationsarbejdsbelastninger gennem simple træk-og-slip-handlinger.

Vi forbereder først vores kildedata ind Amazon Simple Storage Service (Amazon S3), så transformerer vi dataene uden kode.

  1. På Amazon S3-konsollen skal du oprette en S3-bøtte med tre mapper: rå, transformeret og kureret.
  2. Download MovieLens datasæt og upload den ukomprimerede fil med navnet user_ratingmovies-timestamp.dat til din bucket under den rå mappe.
  3. På AWS Glue Studio-konsollen skal du vælge Karriere i navigationsruden.
  4. Type Visuel med en kilde og mål, Og vælg derefter Opret.
  5. Vælg den første node kaldet Datakilde – S3-spand. Det er her, vi angiver vores inputdata.
  6. Datakildeegenskaber fanebladet, vælg S3 placering og browse til din uploadede fil.
  7. Til Dataformat, vælg CSV, Og Afgrænser, vælg Tab.
    AWS Glue Studio - S3
  8. Vi kan vælge fanen Output skema for at bekræfte, at skemaet har udledt kolonnerne korrekt.
  9. Hvis skemaet ikke svarer til dine forventninger, skal du vælge Redigere for at redigere skemaet.
    AWS Glue Studio - Fields

Dernæst transformerer vi disse data for at følge skemakravene til Amazon Personalize.

  1. Vælg den Transformer – Anvend kortlægning node og på Transform fanen, skal du opdatere målnøglen og datatyperne.
    Amazon Personalize forventer som minimum følgende struktur for interaktionsdatasæt:
    • user_id (snor)
    • item_id (snor)
    • timestamp (lang, i Unix-epoketidsformat)
      AWS Glue Studio - Feltkortlægning

I dette eksempel ekskluderer vi de dårligt vurderede film i datasættet.

  1. For at gøre det skal du fjerne den sidste node kaldet S3-spand og tilføje en filterknude på Transform fane.
  2. Vælg Tilføj betingelse og filtrer data fra, hvor rating < 3.5.
    AWS Glue Studio - Output

Vi skriver nu output tilbage til Amazon S3.

  1. Udvid mål menuen og vælg Amazon S3.
  2. Til S3 Målplacering, vælg mappen med navnet transformed.
  3. Vælg CSV som formatet og suffikset Målplacering med interactions/.

Dernæst udsender vi en liste over brugere, som vi ønsker at få anbefalinger til.

  1. Vælg den Anvend kortlægning node igen, og udvid derefter Transform menuen og vælg Anvend kortlægning.
  2. Slip alle felter undtagen user_id og omdøb det felt til userId. Amazon Personalize forventer, at feltet bliver navngivet bruger ID.
  3. Udvid mål menu igen og vælg Amazon S3.
  4. Vælg denne gang JSON som formatet, og vælg derefter den transformerede S3-mappe og suffiks den med batch_users_input/.

Dette frembringer en JSON liste over brugere som input til Amazon Personalize. Vi skulle nu have et diagram, der ser ud som følgende.

AWS Glue Studio - Hele arbejdsgangen

Vi er nu klar til at køre vores transformationsjob.

  1. På IAM-konsollen skal du oprette en rolle kaldet glue-service-role og vedhæfte følgende administrerede politikker:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

For mere information om, hvordan man opretter IAM-serviceroller, se Oprettelse af en rolle til at uddelegere tilladelser til en AWS-tjeneste.

  1. Naviger tilbage til dit AWS Glue Studio-job, og vælg Joboplysninger fane.
  2. Indstil jobnavnet som batch-personalize-input-transform-job.
  3. Vælg den nyoprettede IAM-rolle.
  4. Behold standardværdierne for alt andet.
    AWS Glue Studio - Jobdetaljer
  5. Vælg Gem.
  6. Når du er klar, skal du vælge Kør og overvåge jobbet i Kører fane.
  7. Når jobbet er fuldført, skal du navigere til Amazon S3-konsollen for at validere, at din outputfil er blevet oprettet.

Vi har nu formet vores data til det format og den struktur, som Amazon Personalize kræver. Det transformerede datasæt skal have følgende felter og format:

  • Interaktionsdatasæt – CSV-format med felter USER_ID, ITEM_ID, TIMESTAMP
  • Brugerinputdatasæt – JSON-format med element userId

Byg en Amazon Personalize-løsning med det transformerede datasæt

Med vores interaktionsdatasæt og brugerinputdata i det rigtige format kan vi nu skabe vores Amazon Personalize-løsning. I dette afsnit opretter vi vores datasætgruppe, importerer vores data og opretter derefter et batch-inferensjob. En datasætgruppe organiserer ressourcer i containere til Amazon Personalize-komponenter.

  1. På Amazon Personalize-konsollen skal du vælge Opret datasæt gruppe.
  2. Til Domæne, Vælg Tilpasset.
  3. Vælg Opret datasætgruppe og fortsæt.
    Amazon Personalize - opret datasætgruppe

Opret derefter interaktionsdatasættet.

  1. Indtast et datasætnavn, og vælg Opret nyt skema.
  2. Vælg Opret datasæt og fortsæt.
    Amazon Personalize - opret interaktionsdatasæt

Vi importerer nu de interaktionsdata, som vi havde oprettet tidligere.

  1. Naviger til S3-bøtten, hvori vi oprettede vores interaktions-CSV-datasæt.
  2. Tilladelser fanen, skal du tilføje følgende bucket-adgangspolitik, så Amazon Personalize har adgang. Opdater politikken for at inkludere dit bucket-navn.
    {
       "Version":"2012-10-17",
       "Id":"PersonalizeS3BucketAccessPolicy",
       "Statement":[
          {
             "Sid":"PersonalizeS3BucketAccessPolicy",
             "Effect":"Allow",
             "Principal":{
                "Service":"personalize.amazonaws.com"
             },
             "Action":[
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
             ],
             "Resource":[
                "arn:aws:s3:::<your-bucket-name>",
                "arn:aws:s3:::<your-bucket-name> /*"
             ]
          }
       ]
    }

Naviger tilbage til Amazon Personalize og vælg Opret dit datasætimportjob. Vores interaktionsdatasæt skulle nu importeres til Amazon Personalize. Vent på, at importjobbet er fuldført med statussen Aktiv, før du fortsætter til næste trin. Dette bør tage cirka 8 minutter.

  1. På Amazon Personalize-konsollen skal du vælge Oversigt i navigationsruden og vælg Skab løsning.
    Amazon Personalize - Dashboard
  2. Indtast et løsningsnavn.
  3. Til Løsningstype, vælg Vareanbefaling.
  4. Til Opskrift, Vælg aws-user-personalization opskrift.
  5. Vælg Skab og træne løsning.
    Amazon Personalize - skab løsning

Løsningen træner nu mod interaktionsdatasættet, der blev importeret med brugertilpasningsopskriften. Overvåg status for denne proces under Løsningsversioner. Vent til det er færdigt, før du fortsætter. Dette bør tage cirka 20 minutter.
Amazon Personalize - Status

Vi opretter nu vores batch-inferensjob, som genererer anbefalinger for hver af de brugere, der er til stede i JSON-inputtet.

  1. I navigationsruden under Brugerdefinerede ressourcer, vælg Batch-inferensjob.
  2. Indtast et jobnavn og for Løsning, vælg den løsning, der blev oprettet tidligere.
  3. Vælg Opret batch-inferensjob.
    Amazon Personalize - opret batch-inferensjob
  4. Til Indgangsdatakonfiguration, skal du indtaste S3-stien, hvor batch_users_input filen er fundet.

Dette er JSON-filen, der indeholder userId.

  1. Til Konfiguration af outputdata sti, vælg den kurerede sti i S3.
  2. Vælg Opret batch-inferensjob.

Denne proces tager cirka 30 minutter. Når jobbet er færdigt, gemmes anbefalinger for hver af de brugere, der er angivet i brugerinputfilen, på S3-outputplaceringen.

Vi har med succes genereret et sæt anbefalinger til alle vores brugere. Vi har dog kun implementeret løsningen ved hjælp af konsollen indtil videre. For at sikre, at denne batch-inferencing kører regelmæssigt med det seneste sæt data, er vi nødt til at opbygge en orkestreringsarbejdsgang. I næste afsnit viser vi dig, hvordan du opretter en orkestreringsarbejdsgang ved hjælp af Step Functions.

Byg et Step Functions-arbejdsforløb for at orkestrere batch-inferens-workflowet

For at orkestrere din pipeline skal du udføre følgende trin:

  1. På konsollen Trinfunktioner skal du vælge Opret State Machine.
  2. Type Design din arbejdsgang visuelt, Og vælg derefter Næste.
    AWS Step Funktioner - Opret arbejdsgang
  3. Træk CreateDatasetImportJob node fra venstre (du kan søge efter denne node i søgefeltet) ind på lærredet.
  4. Vælg noden, og du bør se konfigurations-API-parametrene til højre. Optag ARN.
  5. Indtast dine egne værdier i API-parametre tekstboks.

Dette kalder OpretDatasetImportJob API med de parameterværdier, du angiver.

AWS Step Funktioner Workflow

  1. Træk CreateSolutionVersion node på lærredet.
  2. Opdater API-parametrene med ARN for den løsning, du noterede.

Dette skaber en ny løsningsversion med de nyligt importerede data ved at kalde CreateSolutionVersion API.

  1. Træk CreateBatchInferenceJob node på lærredet og på samme måde opdatere API-parametrene med de relevante værdier.

Sørg for at bruge $.SolutionVersionArn syntaks for at hente løsningsversionens ARN-parameter fra det forrige trin. Disse API-parametre sendes til CreateBatchInferenceJob API.

AWS Step Funktioner Workflow

Vi er nødt til at bygge en ventelogik i Step Functions-arbejdsgangen for at sikre, at anbefalingsbatch-inferensjob afsluttes, før workflowet fuldføres.

  1. Find og træk i en Vent-knude.
  2. I konfigurationen til Vent, indtast 300 sekunder.

Dette er en vilkårlig værdi; du bør ændre denne ventetid i henhold til din specifikke brugssituation.

  1. Vælg den CreateBatchInferenceJob node igen og naviger til Fejl ved håndtering fane.
  2. Til brydning fejl, gå ind Personalize.ResourceInUseException.
  3. Til Fallback tilstand, vælg Vent.

Dette trin gør det muligt for os med jævne mellemrum at kontrollere status for jobbet, og det afslutter først løkken, når jobbet er fuldført.

  1. Til Resultatsti, gå ind $.errorMessage.

Dette betyder reelt, at når undtagelsen "ressource i brug" modtages, venter jobbet i x sekunder, før det prøver igen med de samme input.

AWS Step Funktioner Workflow

  1. Vælg Gem, og vælg derefter Start udførelsen.

Vi har med succes orkestreret vores batch-anbefalingspipeline for Amazon Personalize. Som et valgfrit trin kan du bruge Amazon Eventbridge at planlægge en udløser af denne arbejdsgang med jævne mellemrum. For flere detaljer, se EventBridge (CloudWatch-begivenheder) for trinfunktions-udførelsesstatusændringer.

Ryd op

For at undgå fremtidige gebyrer skal du slette de ressourcer, du har oprettet til denne gennemgang.

Konklusion

I dette indlæg demonstrerede vi, hvordan man opretter en batch-anbefalingspipeline ved at bruge en kombination af AWS Glue, Amazon Personalize og Step Functions uden at skulle bruge en enkelt kodelinje eller ML-erfaring. Vi brugte AWS Glue til at forberede vores data til det format, som Amazon Personalize kræver. Derefter brugte vi Amazon Personalize til at importere dataene, oprette en løsning med en brugertilpasningsopskrift og oprette et batch-inferencingsjob, der genererer en standard på 25 anbefalinger for hver bruger, baseret på tidligere interaktioner. Vi orkestrerede derefter disse trin ved hjælp af Step Functions, så vi kan køre disse job automatisk.

For trin at overveje næste, er brugersegmentering en af ​​de nyere opskrifter i Amazon Personalize, som du måske vil udforske for at oprette brugersegmenter for hver række af inputdataene. For flere detaljer, se Få batch-anbefalinger og brugersegmenter.


Om forfatteren

Maxine Wee

Maxine Wee er en AWS Data Lab Solutions Architect. Maxine arbejder med kunder om deres use cases, designer løsninger til at løse deres forretningsproblemer og guider dem gennem opbygning af skalerbare prototyper. Forud for sin rejse med AWS hjalp Maxine kunder med at implementere BI, data warehousing og data lake-projekter i Australien.

Tidsstempel:

Mere fra AWS maskinindlæring