Hvis du er kjent med dyp læring, har du sannsynligvis hørt uttrykket PyTorch vs. TensorFlow mer enn én gang.
PyTorch og TensorFlow er to av de mest populære rammeverkene for dyp læring. Denne veiledningen presenterer en omfattende oversikt over de fremtredende egenskapene til disse to rammeverkene – for å hjelpe deg med å bestemme hvilket rammeverk du skal bruke – for ditt neste dyplæringsprosjekt.
I denne artikkelen vil vi først introdusere de to rammeverkene: PyTorch og TensorFlow. Og oppsummer deretter funksjonene de tilbyr.
La oss begynne!
Innholdsfortegnelse
Hva er PyTorch?
PyTorch er et åpen kildekode-rammeverk for å bygge maskinlæring og dyplæringsmodeller for ulike applikasjoner, inkludert naturlig språkbehandling og maskinlæring.
Det er et Pythonic-rammeverk utviklet av Meta AI (enn Facebook AI) i 2016, basert på Torch, en pakke skrevet i Lua.
Nylig ga Meta AI ut PyTorch 2.0. Den nye utgivelsen tilbyr blant annet bedre støtte for distribuert trening, modellkompilering og grafiske nevrale nettverk (GNN).
Hva er TensorFlow?
TensorFlow ble introdusert i 2014, og er et ende-til-ende-maskinlæringsrammeverk med åpen kildekode fra Google. Den kommer fullpakket med funksjoner for dataforberedelse, modelldistribusjon og MLOps.
Med TensorFlow får du utviklingsstøtte på tvers av plattformer og klar støtte for alle stadier i livssyklusen for maskinlæring.
PyTorch vs. TensorFlow
Både PyTorch og TensorFlow er superpopulære rammeverk i dyplæringsfellesskapet. For de fleste applikasjoner du ønsker å jobbe med, gir begge disse rammeverkene innebygd støtte.
Bildekilde: star-history.com
Her vil vi oppsummere nøkkelfunksjonene til både PyTorch og TensorFlow og også identifisere brukstilfeller der du kanskje foretrekker ett rammeverk fremfor det andre.
#1. Bibliotek med datasett og forhåndstrente modeller
Et rammeverk for dyp læring bør leveres med batterier inkludert. Ofte vil du ikke kode en modell fra bunnen av. I stedet kan du utnytte forhåndstrente modeller og finjustere dem til ditt bruksområde.
På samme måte ønsker vi at vanlige datasett skal være lett tilgjengelige. Dette vil gjøre oss i stand til å bygge eksperimentelle modeller raskt uten å måtte sette opp en datainnsamlingspipeline eller importere og rense data fra andre kilder.
For dette formål vil vi at disse rammeverkene skal komme med både datasett og forhåndsopplærte modeller, slik at vi kan få en grunnlinjemodell mye raskere.
PyTorch-datasett og modeller
PyTorch har biblioteker som torchtext, torchaudio og torchvision for henholdsvis NLP-, lyd- og bildebehandlingsoppgaver. Så når du jobber med PyTorch, kan du utnytte datasettene og modellene som tilbys av disse bibliotekene, inkludert:
- torchtext.datasets og torchtext.modeller for datasett og prosessering for naturlig språkbehandlingsoppgaver
- torchvision.datasets og torchvision.models gir bildedatasett og forhåndstrente modeller for datasynoppgaver
- torchaudio.datasets og torchaudio.models for datasett og forhåndstrente modellvekter og verktøy for maskinlæring på lyd
TensorFlow-datasett og modeller
I tillegg kan du se etter både PyTorch- og TensorFlow-modeller i HuggingFace Model Hub.
#2. Støtte for distribusjon
I debatten om PyTorch vs. TensorFlow er støtte for distribusjon ofte sentralt.
En maskinlæringsmodell som fungerer utmerket i ditt lokale utviklingsmiljø er et godt utgangspunkt. For å hente verdi fra maskinlæringsmodeller er det imidlertid viktig å distribuere dem til produksjon og overvåke dem kontinuerlig.
I denne delen skal vi ta en titt på funksjoner som både PyTorch og TensorFlow tilbyr for å distribuere maskinlæringsmodeller til produksjon.
TensorFlow Extended (TFX)
TensorFlow Extended, forkortet som tfx, er et distribusjonsrammeverk som er basert på TensorFlow. Den gir funksjonalitet som hjelper deg med å orkestrere og vedlikeholde pipelines for maskinlæring. Den gir blant annet funksjoner for datavalidering og datatransformasjon.
Med TensorFlow Serving kan du distribuere maskinlæringsmodeller i produksjonsmiljøer.
TorchServe
Det er en vanlig oppfatning at PyTorch er populært i forskningsmiljøet mens TensorFlow er populært i bransjen. Imidlertid har begge disse rammeverkene funnet utbredt bruk.
I likhet med TensorFlow Serving, tilbyr PyTorch TorchServe, et brukervennlig rammeverk som gjør det enkelt å betjene PyTorch-modeller i produksjon. I tillegg kan du også bruke TensorFlow Lite for å distribuere maskinlæringsmodeller på mobile og andre avanserte enheter.
Til tross for at begge rammeverkene gir distribusjonsstøtte, støtter TensorFlow modelldistribusjon. Det er derfor det foretrukne valget i produksjonsmiljøer.
#3. Funksjoner for modelltolkbarhet
Du kan bygge dyplæringsmodeller for applikasjoner som brukes i domener som helsevesen og finans. Men hvis modellene er svarte bokser som gir en gitt etikett eller prediksjon, er det en utfordring å tolke modellens spådommer.
Dette førte til tolkbar maskinlæring (eller forklarbar ML) for å komme opp med tilnærminger for å forklare hvordan nevrale nettverk og andre maskinlæringsmodeller fungerer.
Derfor er tolkbarhet superviktig for dyp læring og for bedre å forstå hvordan nevrale nettverk fungerer. Og vi skal se hvilke funksjoner PyTorch og TensorFlow tilbyr for det samme.
PyTorch Captum
PyTorch Captum, modelltolkbarhetsbiblioteket for PyTorch, gir flere funksjoner for modelltolkbarhet.
Disse funksjonene inkluderer attribusjonsmetoder som:
- Integrerte gradienter
- LIME, SHAP
- DeepLIFT
- GradCAM og varianter
- Lagattribusjonsmetoder
TensorFlow Explain (tf-explain)
Tensorflow Explain (tf-explain) er et bibliotek som gir funksjonalitet for tolkning av nevrale nettverk, inkludert:
- Integrerte gradienter
- GradCAM
- SmoothGrad
- Vaniljegradienter og mer.
Så langt har vi sett funksjonene for tolkning. La oss gå videre til et annet viktig aspekt – personvern.
#4. Støtte for personvernbevarende maskinlæring
Nytten av maskinlæringsmodeller er avhengig av tilgang til virkelige data. Dette kommer imidlertid med den ulempen at personvernet til dataene går tapt. Nylig har det vært betydelige fremskritt rundt personvernbevarende maskinlæringsteknikker som differensielt personvern og forent læring.
PyTorch Opacus
Differensielt privat modellopplæring sikrer at individuelle poster mens de fortsatt lærer nyttig informasjon om datasettet som helhet.
Og PyTorch Opacus lar deg trene modeller med differensiert personvern. For å lære hvordan du implementerer differensielt privat modellopplæring, sjekk ut introduksjonen til Opacus.
TensorFlow Federated
Forent læring fjerner behovet for en sentralisert datainnsamlings- og behandlingsenhet. I en forent setting forlater aldri dataene eieren eller stedet. Derfor legger føderert læring til rette for bedre datastyring.
TensorFlow Federated gir funksjonalitet for å trene maskinlæringsmodeller på desentraliserte data.
#5. Enkel læring
PyTorch er et Pythonic dyplæringsrammeverk. Koding komfortabelt i PyTorch krever middels Python-ferdigheter, inkludert et godt grep om objektorienterte programmeringskonsepter som arv.
På den annen side, med TensorFlow, kan du bruke Keras API. Denne API-en på høyt nivå abstraherer bort noen av implementeringsdetaljene på lavt nivå. Som et resultat, hvis du nettopp har begynt med å bygge dyplæringsmodeller, kan det hende at du synes Keras er enklere å bruke.
PyTorch vs. TensorFlow: En oversikt
Så langt har vi diskutert funksjonene til PyTorch og TensorFlow. Her er en omfattende sammenligning:
FunksjonPyTorchTensorFlowDatasett og forhåndstrente modeller i fakkeltekst, berøringslyd og fakkelsynBibliotek med datasett og forhåndstrente modellerDatasett og forhåndstrente modeller i fakkeltekst, fakkellyd og fakkelsynDeploymentTorchServe for betjening av maskinlæringsmodeller TensorFlow-modeller TensorFlow-Personvern Interfeksjon-TensorFlow-Serve Bevarer Machine LearningPyTorch Opacus for differensielt privat modellopplæring TensorFlow Federated for federated machine learning Enkel læring Krever middels ferdigheter i Python Relativt enklere å lære og bruke
Læringsressurser
Til slutt, la oss avslutte diskusjonen vår ved å gå gjennom noen nyttige ressurser for å lære PyTorch og TensorFlow. Dette er ikke en uttømmende liste, men en liste over kirsebærplukkede ressurser som vil få deg raskt i gang med disse rammene.
#1. Deep Learning with PyTorch: A 60-Minute Blitz
Den 60-minutters blitzveiledningen på PyTorchs offisielle nettside er en utmerket nybegynnervennlig ressurs for å lære PyTorch.
Denne opplæringen vil hjelpe deg med å komme i gang med Pytorch-grunnleggende elementer som tensorer og autografer, og bygge et grunnleggende nevralt nettverk for bildeklassifisering med PyTorch.
#2. Deep Learning med PyTorch: Null til GAN-er
Deep Learning with PyTorch: Zero to GANs av Jovian.ai er en annen omfattende ressurs for å lære dyp læring med PyTorch. I løpet av omtrent seks uker kan du lære:
- Grunnleggende PyTorch: tensorer og gradienter
- Lineær regresjon i PyTorch
- Bygge dype nevrale nettverk, ConvNets og ResNets i PyTorch
- Bygging av generative kontradiktoriske nettverk (GAN)
#3. TensorFlow 2.0 komplett kurs
Hvis du ønsker å få taket på TensorFlow, vil TensorFlow 2.0 Complete Course på freeCodeCamps fellesskapskanal være nyttig.
#4. TensorFlow – Python Deep Learning Neural Network API av DeepLizard
Et annet flott TensorFlow-kurs for nybegynnere er fra DeepLizard. I dette nybegynnervennlige TensorFlow-kurset lærer du det grunnleggende om dyp læring, inkludert:
- Laste og forhåndsbehandle datasett
- Bygge vanilje nevrale nettverk
- Bygge konvolusjonelle nevrale nettverk (CNN)
Konklusjon
Oppsummert hjalp denne artikkelen deg med å få en oversikt over PyTorch og TensorFlow på høyt nivå. Valg av det optimale rammeverket vil avhenge av prosjektet du jobber med. I tillegg vil dette kreve at du tar hensyn til støtte for distribusjon, forklarbarhet og mer.
Er du en Python-programmerer som ønsker å lære disse rammene? I så fall kan du vurdere å utforske én eller flere av ressursene som er delt ovenfor.
Og hvis du er interessert i NLP, sjekk ut denne listen over naturlig språkbehandlingskurs du kan ta. God læring!