Vi er glade for å kunngjøre åpen kildekode-utgivelsen av GraphStorm 0.1, et lavkodet rammeverk for bedriftsgrafmaskinlæring (ML) for å bygge, trene og distribuere grafiske ML-løsninger på komplekse grafer i bedriftsskala på dager i stedet for måneder. Med GraphStorm kan du bygge løsninger som tar direkte hensyn til strukturen av relasjoner eller interaksjoner mellom milliarder av enheter, som er naturlig innebygd i de fleste data fra den virkelige verden, inkludert scenarier for svindeloppdagelse, anbefalinger, fellesskapsdeteksjon og søk/hentingsproblemer.
Til nå har det vært notorisk vanskelig å bygge, trene og distribuere graf-ML-løsninger for komplekse bedriftsgrafer som enkelt har milliarder av noder, hundrevis av milliarder av kanter og dusinvis av attributter – bare tenk på en graf som fanger Amazon.com-produkter , produktattributter, kunder og mer. Med GraphStorm slipper vi verktøyene som Amazon bruker internt for å bringe storskala grafiske ML-løsninger til produksjon. GraphStorm krever ikke at du er ekspert på graf-ML og er tilgjengelig under Apache v2.0-lisensen på GitHub. For å lære mer om GraphStorm, besøk GitHub repository.
I dette innlegget gir vi en introduksjon til GraphStorm, dens arkitektur, og et eksempel på hvordan du bruker det.
Vi introduserer GraphStorm
Grafalgoritmer og graf ML dukker opp som toppmoderne løsninger for mange viktige forretningsproblemer som å forutsi transaksjonsrisiko, forutse kundepreferanser, oppdage inntrenging, optimalisere forsyningskjeder, sosiale nettverksanalyser og trafikkprediksjon. For eksempel, Amazon Guard Duty, den opprinnelige AWS-trusselsdeteksjonstjenesten, bruker en graf med milliarder av kanter for å forbedre dekningen og nøyaktigheten til trusselintelligensen. Dette gjør at GuardDuty kan kategorisere tidligere usett domener som høyst sannsynlig å være ondsinnet eller godartet basert på deres assosiasjon til kjente ondsinnede domener. Ved å bruke Graph Neural Networks (GNNs), er GuardDuty i stand til å forbedre sin evne til å varsle kunder.
Utvikling, lansering og drift av graf-ML-løsninger tar imidlertid måneder og krever grafisk-ML-ekspertise. Som et første trinn må en grafisk ML-forsker bygge en grafisk ML-modell for en gitt brukssituasjon ved å bruke et rammeverk som Deep Graph Library (DGL). Trening av slike modeller er utfordrende på grunn av størrelsen og kompleksiteten til grafer i bedriftsapplikasjoner, som rutinemessig når milliarder av noder, hundrevis av milliarder av kanter, forskjellige node- og kanttyper og hundrevis av node- og kantattributter. Enterprise-grafer kan kreve terabyte med minnelagring, noe som krever at grafisk ML-forskere bygger komplekse treningspipelines. Til slutt, etter at en modell har blitt trent, må de distribueres for inferens, noe som krever inferensrørledninger som er like vanskelige å bygge som treningsrørledningene.
GraphStorm 0.1 er et lavkodet enterprise graph ML-rammeverk som lar ML-utøvere enkelt velge forhåndsdefinerte graf-ML-modeller som har vist seg å være effektive, kjøre distribuert opplæring på grafer med milliarder av noder, og distribuere modellene i produksjon. GraphStorm tilbyr en samling innebygde grafiske ML-modeller, for eksempel Relational Graph Convolutional Networks (RGCN), Relational Graph Attention Networks (RGAT) og Heterogeneous Graph Transformer (HGT) for bedriftsapplikasjoner med heterogene grafer, som tillater ML-ingeniører med lite graf ML-ekspertise for å prøve ut ulike modellløsninger for deres oppgave og velge den riktige raskt. End-to-end distribuerte opplærings- og inferenspipelines, som skaleres til milliardskala bedriftsgrafer, gjør det enkelt å trene, distribuere og kjøre inferens. Hvis du er ny til GraphStorm eller graph ML generelt, vil du dra nytte av de forhåndsdefinerte modellene og rørledningene. Hvis du er en ekspert, har du alle muligheter for å justere treningsrørledningen og modellarkitekturen for å få best mulig ytelse. GraphStorm er bygget på toppen av DGL, et populært rammeverk for utvikling av GNN-modeller, og tilgjengelig som åpen kildekode under Apache v2.0-lisensen.
"GraphStorm er designet for å hjelpe kunder med å eksperimentere og operasjonalisere grafisk ML-metoder for industriapplikasjoner for å akselerere bruken av grafisk ML," sier George Karypis, senior rektor i Amazon AI/ML-forskning. "Siden lanseringen i Amazon har GraphStorm redusert innsatsen for å bygge grafiske ML-baserte løsninger med opptil fem ganger."
"GraphStorm gjør teamet vårt i stand til å trene GNN-innbygging på en selvovervåket måte på en graf med 288 millioner noder og 2 milliarder kanter," sier Haining Yu, rektor ved Amazon Measurement, Ad Tech og Data Science. «De forhåndstrente GNN-innbyggingene viser en forbedring på 24 % i forhold til en prediksjonsoppgave for shopperaktivitet i forhold til en toppmoderne BERT-basert baseline; den overgår også referanseytelsen i andre annonseapplikasjoner.»
"Før GraphStorm kunne kunder bare skalere vertikalt for å håndtere grafer med 500 millioner kanter," sier Brad Bebee, GM for Amazon Neptune og Amazon Timestream. "GraphStorm gjør det mulig for kunder å skalere GNN-modelltrening på massive Amazon Neptun-grafer med titalls milliarder kanter."
GraphStorm teknisk arkitektur
Følgende figur viser den tekniske arkitekturen til GraphStorm.
GraphStorm er bygget på toppen av PyTorch og kan kjøre på en enkelt GPU, flere GPUer og flere GPU-maskiner. Den består av tre lag (merket i de gule boksene i den foregående figuren):
- Bunnlag (Dist GraphEngine) – Det nederste laget gir de grunnleggende komponentene for å aktivere distribuert graf-ML, inkludert distribuerte grafer, distribuerte tensorer, distribuerte innebygginger og distribuerte samplere. GraphStorm gir effektive implementeringer av disse komponentene for å skalere graf-ML-trening til milliard-node-grafer.
- Mellomlag (GS-trening/inferensrørledning) – Mellomlaget gir trenere, evaluatorer og prediktorer for å forenkle modelltrening og slutninger for både innebygde modeller og tilpassede modeller. I utgangspunktet, ved å bruke API-en til dette laget, kan du fokusere på modellutviklingen uten å bekymre deg for hvordan du skalerer modelltreningen.
- Topplag (GS generell modell zoo) – Det øverste laget er en modelldyrehage med populære GNN- og ikke-GNN-modeller for ulike graftyper. Når dette skrives, gir det RGCN, RGAT og HGT for heterogene grafer og BERTGNN for tekstgrafer. I fremtiden vil vi legge til støtte for temporale grafmodeller som TGAT for temporale grafer samt TransE og DistMult for kunnskapsgrafer.
Hvordan bruke GraphStorm
Etter å ha installert GraphStorm trenger du bare tre trinn for å bygge og trene GML-modeller for applikasjonen din.
Først forbehandler du dataene dine (potensielt inkludert egendefinerte funksjoner) og transformerer dem til et tabellformat som kreves av GraphStorm. For hver nodetype definerer du en tabell som viser alle noder av den typen og deres funksjoner, og gir en unik ID for hver node. For hver kanttype definerer du på samme måte en tabell der hver rad inneholder kilde- og destinasjonsnode-ID-ene for en kant av den typen (for mer informasjon, se Bruk din egen dataopplæring). I tillegg gir du en JSON-fil som beskriver den generelle grafstrukturen.
For det andre, via kommandolinjegrensesnittet (CLI), bruker du GraphStorms innebygde construct_graph
komponent for noe GraphStorm-spesifikk databehandling, som muliggjør effektiv distribuert opplæring og slutning.
For det tredje konfigurerer du modellen og opplæringen i en YAML-fil (eksempel) og, igjen ved å bruke CLI, påkalle en av de fem innebygde komponentene (gs_node_classification
, gs_node_regression
, gs_edge_classification
, gs_edge_regression
, gs_link_prediction
) som treningsrørledninger for å trene modellen. Dette trinnet resulterer i de trente modellartefaktene. For å gjøre slutninger, må du gjenta de to første trinnene for å transformere slutningsdataene til en graf ved å bruke den samme GraphStorm-komponenten (construct_graph
) som før.
Til slutt kan du påkalle en av de fem innebygde komponentene, den samme som ble brukt til modelltrening, som en slutningspipeline for å generere innbygginger eller prediksjonsresultater.
Den samlede flyten er også avbildet i følgende figur.
I den følgende delen gir vi et eksempel på bruk.
Lag spådommer på rå OAG-data
For dette innlegget demonstrerer vi hvor enkelt GraphStorm kan aktivere graf-ML-trening og inferens på et stort rådatasett. De Åpen akademisk graf (OAG) inneholder fem enheter (artikler, forfattere, arenaer, tilknytninger og studieretning). Rådatasettet er lagret i JSON-filer med over 500 GB.
Vår oppgave er å bygge en modell for å forutsi studieretningen til en oppgave. For å forutsi studieretningen kan du formulere det som en klassifiseringsoppgave med flere etiketter, men det er vanskelig å bruke en-hot-koding for å lagre etikettene fordi det er hundretusenvis av felt. Derfor bør du lage studieretningsnoder og formulere dette problemet som en lenkeprediksjonsoppgave, forutsi hvilke studieretningsnoder en papirnode skal koble seg til.
For å modellere dette datasettet med en grafmetode, er det første trinnet å behandle datasettet og trekke ut enheter og kanter. Du kan trekke ut fem typer kanter fra JSON-filene for å definere en graf, vist i følgende figur. Du kan bruke Jupyter-notisboken i GraphStorm eksempel kode å behandle datasettet og generere fem enhetstabeller for hver enhetstype og fem kanttabeller for hver kanttype. Jupyter-notisboken genererer også BERT-innbygginger på enhetene med tekstdata, for eksempel papirer.
Etter å ha definert enhetene og kantene mellom enhetene, kan du opprette mag_bert.json
, som definerer grafskjemaet, og påkaller den innebygde grafkonstruksjonsrørledningen construct_graph
i GraphStorm for å bygge grafen (se følgende kode). Selv om GraphStorm grafkonstruksjonspipeline kjører i en enkelt maskin, støtter den multiprosessering for å behandle noder og kantfunksjoner parallelt (--num_processes
) og kan lagre enhets- og kantfunksjoner på eksternt minne (--ext-mem-workspace
) for å skalere til store datasett.
For å behandle en så stor graf trenger du en CPU-forekomst med stort minne for å konstruere grafen. Du kan bruke en Amazon Elastic Compute Cloud (Amazon EC2) r6id.32xlarge-forekomst (128 vCPU og 1 TB RAM) eller r6a.48xlarge-forekomster (192 vCPU og 1.5 TB RAM) for å konstruere OAG-grafen.
Etter å ha konstruert en graf, kan du bruke gs_link_prediction
å trene en koblingsprediksjonsmodell på fire g5.48xlarge-forekomster. Når du bruker de innebygde modellene, kaller du bare én kommandolinje for å starte den distribuerte treningsjobben. Se følgende kode:
Etter modellopplæringen lagres modellartefakten i mappen /data/mag_lp_model
.
Nå kan du kjøre koblingsprediksjonsslutning for å generere GNN-innbygginger og evaluere modellytelsen. GraphStorm tilbyr flere innebygde evalueringsmålinger for å evaluere modellens ytelse. For koblingsprediksjonsproblemer, for eksempel, sender GraphStorm automatisk ut den metriske gjennomsnittlige gjensidige rangeringen (MRR). MRR er en verdifull beregning for å evaluere grafkoblingsprediksjonsmodeller fordi den vurderer hvor høyt de faktiske koblingene er rangert blant de predikerte koblingene. Dette fanger opp kvaliteten på spådommer, og sørger for at modellen vår prioriterer sanne forbindelser riktig, som er målet vårt her.
Du kan kjøre inferens med én kommandolinje, som vist i følgende kode. I dette tilfellet når modellen en MRR på 0.31 på testsettet til den konstruerte grafen.
Legg merke til at inferensrørledningen genererer innbygginger fra koblingsprediksjonsmodellen. For å løse problemet med å finne studieretningen for et gitt papir, utfører du ganske enkelt et k-nærmeste nabosøk på innbyggingene.
konklusjonen
GraphStorm er et nytt graf-ML-rammeverk som gjør det enkelt å bygge, trene og distribuere graf-ML-modeller på industrigrafer. Den tar opp noen nøkkelutfordringer i grafisk ML, inkludert skalerbarhet og brukervennlighet. Den har innebygde komponenter for å behandle milliardskalagrafer fra rå inputdata til modelltrening og modellslutninger, og har gjort det mulig for flere Amazon-team å trene toppmoderne graf-ML-modeller i ulike applikasjoner. Sjekk ut vår GitHub repository for mer informasjon.
Om forfatterne
Da Zheng er en senior anvendt vitenskapsmann ved AWS AI/ML research som leder et grafmaskinlæringsteam for å utvikle teknikker og rammeverk for å sette grafmaskinlæring i produksjon. Da tok han sin doktorgrad i informatikk fra Johns Hopkins University.
Florian Saupe er en hovedteknisk produktsjef ved AWS AI/ML-forskning som støtter avanserte vitenskapsteam som grafmaskinlæringsgruppen og forbedrer produkter som Amazon DataZone med ML-funksjoner. Før han begynte i AWS, ledet Florian teknisk produktledelse for automatisert kjøring hos Bosch, var strategikonsulent i McKinsey & Company, og jobbet som kontrollsystem-/robotforsker – et felt hvor han har en doktorgrad.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- EVM Finans. Unified Interface for desentralisert økonomi. Tilgang her.
- Quantum Media Group. IR/PR forsterket. Tilgang her.
- PlatoAiStream. Web3 Data Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/fast-track-graph-ml-with-graphstorm-a-new-way-to-solve-problems-on-enterprise-scale-graphs/
- : har
- :er
- $OPP
- 1
- 1 TB
- 100
- 16
- 31
- 500
- 7
- 8
- 9
- a
- I stand
- Om oss
- akademisk
- akselerere
- Logg inn
- nøyaktighet
- aktivitet
- faktiske
- Ad
- legge til
- tillegg
- adresser
- Adopsjon
- annonser
- avansert
- tilknytning
- Etter
- en gang til
- AI / ML
- Varsle
- algoritmer
- Alle
- tillate
- tillater
- også
- Amazon
- Amazon EC2
- Amazon Neptun
- Amazon Timestream
- Amazon Web Services
- Amazon.com
- blant
- an
- analyse
- og
- Kunngjøre
- forutse
- noen
- Apache
- api
- Søknad
- søknader
- anvendt
- arkitektur
- ER
- AS
- Association
- At
- oppmerksomhet
- attributter
- forfattere
- Automatisert
- automatisk
- tilgjengelig
- AWS
- basert
- Baseline
- grunnleggende
- I utgangspunktet
- BE
- fordi
- vært
- før du
- benchmark
- nytte
- BEST
- mellom
- Milliarder
- milliarder
- både
- Bunn
- bokser
- brad
- bringe
- bygge
- bygget
- innebygd
- virksomhet
- men
- by
- CAN
- evner
- fanger
- fange
- saken
- kjeder
- utfordringer
- utfordrende
- sjekk
- klassifisering
- kode
- samling
- COM
- samfunnet
- Selskapet
- komplekse
- kompleksitet
- komponent
- komponenter
- Beregn
- datamaskin
- informatikk
- Koble
- Tilkoblinger
- består
- konstruere
- konstruere
- konstruksjon
- konsulent
- inneholder
- kontroll
- kunne
- dekning
- skape
- skikk
- kunde
- Kunder
- da
- dato
- databehandling
- datavitenskap
- datasett
- Dager
- dyp
- definerer
- definere
- demonstrere
- utplassere
- utplassert
- designet
- destinasjonen
- Gjenkjenning
- utvikle
- utvikle
- Utvikling
- dgl
- forskjellig
- vanskelig
- direkte
- distribueres
- distribuert opplæring
- do
- ikke
- domener
- dusinvis
- kjøring
- to
- hver enkelt
- lett
- lett
- Edge
- Effektiv
- effektiv
- innsats
- innebygd
- embedding
- Emery
- muliggjøre
- aktivert
- muliggjør
- ende til ende
- Ingeniørarbeid
- Ingeniører
- forbedre
- Enterprise
- enheter
- enhet
- evaluere
- evaluere
- evaluering
- Selv
- eksempel
- stiger
- opphisset
- eksperiment
- Expert
- ekspertise
- utvendig
- trekke ut
- Trekk
- Egenskaper
- felt
- Felt
- Figur
- filet
- Filer
- Endelig
- finne
- Først
- flyten
- Fokus
- etter
- Til
- format
- fire
- Rammeverk
- rammer
- svindel
- svindeloppdagelse
- fra
- framtid
- general
- generere
- genererer
- George
- få
- GitHub
- gitt
- GM
- GPU
- GPU
- graf
- grafer
- Gruppe
- håndtere
- Hard
- Ha
- he
- hjelpe
- her.
- Høy
- svært
- hans
- holder
- Hvordan
- Hvor høyt
- Hvordan
- http
- HTTPS
- Hundrevis
- ID
- ids
- if
- viktig
- forbedre
- forbedring
- bedre
- in
- I andre
- Inkludert
- industri
- informasjon
- iboende
- inngang
- installere
- f.eks
- i stedet
- Intelligens
- interaksjoner
- Interface
- internt
- inn
- Introduksjon
- IT
- DET ER
- Jobb
- Johns Hopkins University
- sammenføyning
- jpg
- JSON
- bare
- nøkkel
- kunnskap
- kjent
- etiketter
- stor
- storskala
- lansere
- lansere
- lag
- lag
- føre
- ledende
- LÆRE
- læring
- Bibliotek
- Tillatelse
- i likhet med
- Sannsynlig
- linje
- LINK
- lenker
- lister
- lite
- maskin
- maskinlæring
- maskiner
- Mai
- gjøre
- GJØR AT
- Making
- ledelse
- leder
- måte
- mange
- merket
- massive
- McKinsey
- McKinsey & Company
- bety
- måling
- Minne
- metode
- metoder
- metrisk
- Metrics
- Middle
- millioner
- ML
- modell
- modeller
- måneder
- mer
- mest
- flere
- innfødt
- Trenger
- Neptune
- nettverk
- nettverk
- nevrale nettverk
- Ny
- node
- noder
- bærbare
- nå
- Målet
- of
- Tilbud
- on
- ONE
- bare
- åpen kildekode
- åpen kildekode
- drift
- optimalisere
- alternativer
- or
- Annen
- vår
- ut
- enn
- samlet
- egen
- Papir
- papirer
- Parallel
- Utfør
- ytelse
- plukke
- rørledning
- plato
- Platon Data Intelligence
- PlatonData
- Populær
- Post
- potensielt
- forutsi
- spådd
- forutsi
- prediksjon
- Spådommer
- preferanser
- tidligere
- Principal
- Problem
- problemer
- prosess
- prosessering
- Produkt
- produktledelse
- Produktsjef
- Produksjon
- Produkter
- utprøvd
- gi
- gir
- gi
- sette
- pytorch
- kvalitet
- raskt
- RAM
- rangert
- Raw
- å nå
- Når
- virkelige verden
- anbefalinger
- Redusert
- Relasjoner
- slipp
- gjenta
- krever
- påkrevd
- Krever
- forskning
- Resultater
- ikke sant
- risikoer
- rutinemessig
- RAD
- Kjør
- samme
- sier
- skalerbarhet
- Skala
- scenarier
- Vitenskap
- Forsker
- forskere
- Søk
- Seksjon
- se
- senior
- tjeneste
- Tjenester
- sett
- bør
- Vis
- vist
- Viser
- på samme måte
- forenkle
- ganske enkelt
- enkelt
- Størrelse
- selskap
- sosiale nettverk
- Solutions
- LØSE
- noen
- kilde
- state-of-the-art
- Trinn
- Steps
- lagring
- oppbevare
- lagret
- Strategi
- struktur
- Studer
- slik
- levere
- Forsyningskjeder
- støtte
- Støtte
- Støtter
- bord
- Ta
- tar
- Oppgave
- lag
- lag
- tech
- Teknisk
- teknikker
- titus
- test
- Det
- De
- Fremtiden
- Grafen
- Kilden
- deres
- Der.
- derfor
- Disse
- de
- tror
- denne
- selv om?
- tusener
- trussel
- tre
- ganger
- til
- verktøy
- topp
- trafikk
- Tog
- trent
- Kurs
- Transaksjonen
- Transform
- transformator
- sant
- prøve
- to
- typen
- typer
- etter
- unik
- universitet
- brukervennlighet
- bruke
- bruk sak
- brukt
- bruker
- ved hjelp av
- Verdifull
- ulike
- arenaer
- vertikalt
- av
- Besøk
- var
- Vei..
- we
- web
- webtjenester
- VI VIL
- når
- hvilken
- allment
- vil
- med
- uten
- arbeidet
- skriving
- yaml
- Du
- Din
- zephyrnet
- ZOO