Anonim

TensorFlow er en open source-maskinelæringsramme. Det er dybest set et bibliotek til numeriske beregninger ved hjælp af datastrømgrafer. Grafknudepunkterne repræsenterer matematiske operationer, mens kanterne af grafen repræsenterer flerdimensionelle datarrays (tsorer), der flyder mellem dem.

Machine-Learning-Spezialisten steht ein ganzer Werkzeugkasten an Tools für das TensorFlow-Framework zur Verfügung. Wir verraten, welches wofür gut ist.
Maskinlæringsspecialister råder over en værktøjskasse med værktøjer til TensorFlow-rammen. Vi afslører, hvad der er godt for hvad.
Foto: Andrey_Popov - shutterstock.com

Værktøjer i TensorFlow

Denne fleksible arkitektur gør det muligt at levere beregninger på en eller flere CPU'er eller GPU'er på en stationær pc, server eller mobil enhed uden at omskrive kode. TensorFlow inkluderer også TensorBoard, et værktøj til datavisualisering .

Mens TensorFlow stadig kan oprette dataflowgrafer og køre dem senere i sessioner, understøtter det i version 2.0 fuldstændigt Eager Execution-tilstand . Dette er et nødvendigt definere-for-køre-interface, der øjeblikkeligt beregner operationer uden at opbygge en graf. Eager Execution-tilstand understøtter automatisk differentiering via tf.GradientTape API. En af forbedringerne i tf.keras (se Keras nedenfor) er støtte til ivrig henrettelse.

Mens nogle andre API'er er blevet droppet i TensorFlow 2.0, er et eksisterende værktøj til kodekonvertering tilføjet ud over et kompatibilitetsbibliotek.

Estimatorer er TensorFlows mest skalerbare og produktionsorienterede modeller for maskinlæring. Virksomheder kan enten bruge Googles forudbyggede estimater eller skrive deres egne. Estimatorerne er selv bygget på tf.keras.layers, hvilket forenkler tilpasning. Det er normalt mere praktisk at opbygge modeller med Estimators end med TensorFlow's API'er på lavt niveau. Prebuilt estimators giver dig mulighed for at arbejde på et højere konceptuelt niveau end med de grundlæggende TensorFlow API'er

Keras

TensorFlow understøtter stadig sit originale API på lavt niveau. Imidlertid er tf.keras nu det foretrukne API på højt niveau, en implementering af Keras API-standarden, der indeholder TensorFlow-specifikke forbedringer. "Høj" og "Lav" henviser til, hvor dyb og "hardware-nær" API'en fastgøres. Lavt niveau betyder, at der kan foretages mere detaljerede, men mere komplekse indstillinger. På det høje niveau abstraheres funktionerne, så mens færre indstillinger er tilgængelige, er API'en lettere at bruge.

Keras er et API på højt niveau for neurale netværk. Det er skrevet i Python og kan køre på TensorFlow, CNTK eller Theano. Ekstra backends såsom MXNet eller PlaidML understøttes af tredjepartsleverandører.

Keras var designet til brugervenlighed. Det skal være modulopbygget og let at opbygge og skrive i Python. API'et er til "mennesker og ikke maskiner designet" og følger bedste praksis, der skal reducere den kognitive belastning i operationen.

Neurale lag, omkostningsfunktioner, optimeringsprogrammer, initialiseringsskemaer, aktiveringsfunktioner og reguleringsordninger er alle selvstændige moduler i Keras. De kan kombineres for at skabe nye modeller. Igen kan nye modeller let tilføjes som nye klasser og funktioner. Modeller er defineret i Python-kode i stedet for som separate modelkonfigurationsfiler.

De vigtigste grunde til brugen af ​​Keras ligger i de forfulgte designprincipper, især fokus på brugervenlighed. Det er let at lære, og modeller er lette at opbygge. Derudover tilbyder Keras fordelene ved en stor brugerbase, der understøtter en bred vifte af implementeringsmuligheder, flere GPU'er og distribueret træning. Google, Microsoft, Amazon, Apple, Nvidia, Uber og mange andre understøtter værktøjet.

beskæring API

Google Pruning API Optimizer er teknisk baseret på Keras. Derfor bør det være let at integrere i eksisterende Keras-projekter. Værktøjet er beregnet til at optimere maskinlæringsmodeller i træningsfasen.

I henhold til navnet trimmes API-modellerne ML. Den evaluerer i træning forbindelserne mellem de forskellige niveauer i modellen. Uvigtige eller irrelevante forbindelser fjernes fra netværket. Dette reducerer både den hukommelse, der kræves for at gemme modellen og den hukommelse, der kræves for at køre modellen, såvel som de krævede CPU-operationer.

Horovod

Horovod er en distribueret træningsramme udviklet af Uber for TensorFlow, Keras og open source-programbiblioteket PyTorch. Horovod er designet til at gøre distribueret dyb læring hurtig og nem at bruge. Det er afhængig af ideer fra Baidus prøveimplementering af TensorFlow Ring-Allreduce-algoritmen.

Uber forsøgte oprindeligt at bruge Distribueret TensorFlow med parameterserver. Ingeniører fandt, at MPI-modellen (Message Passing interface) var mindre kompliceret og krævede mindre kodetilpasning. Uber hævder, at Horovod-systemet gør det muligt at træne en AI-model cirka dobbelt så hurtigt som en traditionel TensorFlow-implementering.

Horovod bruger Open MPI (eller en anden MPI-implementering) til at udveksle meddelelser mellem noder og Nvidia NCCL til sin meget optimerede version af Ring Allreduce. Horovod opnår 90 procent skaleringseffektivitet for Inception-v3 og ResNet-101. For VGG-16 opnår det en skaleringseffektivitet på 68 procent på op til 512 Nvidia Pascal GPU'er.

I december 2018 annoncerede Uber, at det vil starte Horovod-projektet i regi af LF Deep Learning Foundation for Linux Foundation Open Source AI-software.

Tony-projektet

LinkedIn offentliggjorde koden for deres Tony-projekt i slutningen af ​​2018. Ifølge InfoWorlds Serdar Yegulalp bruges open source-værktøjet til at styre og skalere dybe læringsjob i TensorFlow . Det bruger YARN (Yet Another Resource Negotiator) jobplanlægningssystem i Hadoop.

Mens der er flere andre planlægningsværktøjer, har LinkedIn identificeret et par begrænsninger. TensorFlow on Spark kører for eksempel rammen på jobmotoren til Apache Spark, men er meget tæt knyttet til Spark. Selvom TensorFlowOnYARN har de samme grundlæggende funktioner som Tony, opretholdes den ikke og giver ikke fejltolerance.

Tony bruger YARN ressourcer og opgaver planlægningssystem ifølge LinkedIn til at konfigurere TensorFlow-job i en Hadoop-klynge. Derudover skal værktøjet tillade det

  • At planlægge GPU-baserede TensorFlow-job gennem Hadoop;

  • anmode om forskellige typer ressourcer (CPU'er eller GPU'er);

  • Tildel hukommelsen forskelligt til TensorFlow-noder;

  • At med jævne mellemrum gemme jobresultater i Hadoop Distribueret filsystem (HDFS) og genoptage dem på et tidspunkt, hvor de går i stykker eller går ned.

Tony opdeler arbejdet i tre forskellige interne komponenter: en klient, en applikationsmaster og en, der udfører opgaven. Klienten modtager indgående TensorFlow-job. Skibsføreren koordinerer med YARNs ressource manager, hvordan man leverer jobbet i YARN. Den udførende komponent er det, der faktisk kører på YARN-klyngen for at behandle TensorFlow-jobbet.

Ifølge LinkedIn har Tony ikke en betydelig omkostning på TensorFlow, fordi det er i det lag, som orkestrater distribuerede TensorFlow. Derfor påvirker det ikke den faktiske udførelse af TensorFlow-jobbet.

Tony arbejder også med TensorBoard-appen for at visualisere, optimere og debug TensorFlow (debugging).

anelse

Inkling er et kommercielt programmeringssprog på højt niveau fra Bonsai (nu et Microsoft-datterselskab), der gør det lettere at opbygge AI-applikationer. Ifølge Paul Krill fra InfoWorld samler hun sig ned til TensorFlow-biblioteket. Inkling er beregnet til at præsentere AI på en måde, der giver programmører mulighed for at fokusere på at undervise i et system snarere end at fokusere på det lave niveau mekanik.

Inkling abstraherer dynamiske AI-algoritmer, der normalt kræver ekspertise inden for maskinlæring. Ifølge Bonsai er sproget beskrivende og syntaks minder om en blanding af Python og SQL. Målet med sproget er at gøre maskinlæring tilgængelig for udviklere og ingeniører, der ikke har en ML-baggrund, men som ønsker at bruge teknologi inden for deres respektive områder.

Tensor2Tensor

Googles open source-projekt Tensor2Tensor (T2T) sigter mod at reducere den arbejdsbyrde, der kræves for at konfigurere en dyb læringsmodel til træning. Det er et Python-baseret bibliotek til workflow-optimering af TensorFlow-træningsopgaver. Udviklere kan bruge det til at specificere nøgleelementerne i en TensorFlow-model og definere deres forhold til hinanden.

De vigtigste elementer er ifølge InfoWorld-redaktør Serdar Yegulalp:

  • Optegnelser : T2T understøtter allerede mange træningsregistre. Nye poster kan tilføjes til den individuelle arbejdsgang eller trække anmodning til det centrale T2T-projekt.

  • Problemer og modaliteter : Disse beskriver, til hvilken opgave der trænes (f.eks. Talegenkendelse eller oversættelse), og hvilke data der skal modtages for den samt genereres fra den. For eksempel vil et billedgenkendelsessystem modtage billeddata og udsende tekstbeskrivelser.

  • Modeller : Mange populære modeller er allerede registreret med T2T, og andre kan tilføjes.

  • Hyperparametre : En hyperparameter er en parameter, der bruges til at kontrollere ML-træningsalgoritmen, og dens værdi, i modsætning til andre parametre, læres ikke i selve uddannelsen af ​​modellen. I T2T kan der oprettes forskellige sæt indstillinger, der styrer træningsprocessen. Disse kan ændres eller forbindes efter behov.

  • Træner : De parametre, der overføres til den faktiske binære træningsfil, kan specificeres separat.

T2T leverer forudindstillinger for hvert element. Mange populære modeller og datasæt er allerede inkluderet. Dette kan hurtigt starte træning ved at genbruge eller udvide den. Hvad T2T ikke giver er en bredere kontekst ud over TensorFlow om, hvordan Deep Learning-projektet skal organiseres. Det gør det bare lettere at bruge rammen.

Ludwig

Et andet værktøj til at forenkle dyb læringstræning kommer som en open source fra Horovod-producenterne Uber. Med Ludwig ML kan modeller trænes og testes uden nogen programmeringsindsats.

Ifølge Heise følger værktøjet en datatypetilgang til modeludvikling med specifikke kodere og dekodere for hver datatype. For hver type men også forskellige kodere og dekodere skal bruges. Den ønskede indkoder og dens hyperparametre skal kunne defineres direkte i modelkonfigurationsfilen (i YAML-format) uden at skulle skrive nogen kode. I den aktuelle version tilbyder Ludwig kodere og dekodere til almindelige datatyper, såsom binære værdier, flydepunktnumre, kategorier, diskrete sekvenser, billeder, tekster og tidsserier, som om nødvendigt bør suppleres med foruddannede modeller.

TensorWatch

Med TensorWatch frigav Microsoft Research et open source-maskinindlæringsfejlværktøj til at hjælpe med at løse komplekse problemer.

Ofte opretter modeluddannelse ikke logfiler, fordi de kan medføre høje lageromkostninger, afhængigt af størrelsen på posterne. Dette mangler dog en samlet oversigt over fejl i modellen.

TensorWatch er designet til at visualisere interaktiv debugging i realtid i Jupyter Notebook og give brugerdefinerede UI'er og integration med Python-økosystemet. Jupyter Notebook er en open source-webapplikation, der kan oprette og dele dokumenter, der indeholder live-kode, formler, visualiseringer eller tekst. Som understøttede visualiseringstyper specificerer Microsoft streggrafer, histogrammer, cirkeldiagrammer og 3D-variationer blandt andre.

Data og andre objekter i TensorWatch behandles generelt som streams - inklusive filer, konsoller, stikkontakter, cloud-opbevaring og visualiseringerne i sig selv. Disse streams kan "lytte" til andre streams, så for eksempel flere af dem kan flettes til én visualisering eller en strøm flere visualiseringer samtidigt.

Med Lazy Logging Mode kan TensorWatch overvåge variablerne i modellen uden eksplicit logning. Brugere kan lave interaktive forespørgsler i realtid, der kører i sammenhæng med disse variabler og returnerer en strøm som et resultat. Disse kan igen visualiseres, opbevares eller behandles.

MorphNet

Googles open source TensorFlow-udvidelse MorphNet er et værktøj til at forbedre dybe neurale netværk ved at tilpasse netværksarkitekturen til nye krav. For at gøre dette analyserer værktøjet de neurale netværk og optimerer dem derefter ved at ændre deres struktur.

Ifølge JAXenter går værktøjet i to trin:

  • Krympning: MorphNet analyserer strukturen af ​​et mesh og effektiviteten af ​​individuelle neuroner baseret på et kriterium, der skal optimeres. Ineffektivt evaluerede neuroner fjernes fra netværket.

  • Forlængelsen : Efter fjernelse af ineffektive neuroner udvider værktøjet alle lag af masken med en identisk faktor. Effektive lag, hvorfra færre neuroner er fjernet, bliver således større. Udvidelsen er mindre end krympningen og sparer ressourcer, mens effektiviteten øges og opretholdes nøjagtighed.