Programmering

Hvordan velge en plattform for maskinlæring

For å skape effektive maskinlærings- og dyplæringsmodeller, trenger du store mengder data, en måte å rense dataene og utføre funksjonsteknikk på, og en måte å trene modeller på dataene dine på rimelig tid. Da trenger du en måte å distribuere modellene dine, overvåke dem for drift over tid, og omskole dem etter behov.

Du kan gjøre alt dette lokalt hvis du har investert i beregningsressurser og akseleratorer som GPUer, men du vil kanskje oppdage at hvis ressursene dine er tilstrekkelige, er de også inaktive mye av tiden. På den annen side kan det noen ganger være mer kostnadseffektivt å kjøre hele rørledningen i skyen ved å bruke store mengder beregningsressurser og akseleratorer etter behov, og deretter slippe dem.

Tech Spotlight: AI og maskinlæring

  • 5 suksesshistorier for maskinlæring: Et innvendig utseende (CIO)
  • AI på jobb: Din neste medarbeider kan være en algoritme (Computerworld)
  • Hvor sikre er AI- og maskinlæringsprosjektene dine? (CSO)
  • Hvordan velge en Cloud Machine Learning Platform ()
  • Hvordan AI kan opprette selvkjørende datasentre (Network World)

De store skyleverandørene - og et antall mindre skyer også - har lagt betydelig vekt på å bygge ut maskinlæringsplattformene for å støtte hele maskinlæringssyklusen, fra planlegging av et prosjekt til å opprettholde en modell i produksjonen. Hvordan bestemmer du hvilke av disse skyene som vil tilfredsstille dine behov? Her er 12 muligheter hver ende-til-ende maskinlæringsplattform skal tilby.

Vær nær dataene dine

Hvis du har store mengder data som trengs for å bygge presise modeller, vil du ikke sende den halvveis rundt om i verden. Problemet her er ikke avstand, men det er på tide: Dataoverføringshastigheten er til slutt begrenset av lysets hastighet, selv på et perfekt nettverk med uendelig båndbredde. Lange avstander betyr ventetid.

Det ideelle tilfellet for veldig store datasett er å bygge modellen der dataene allerede ligger, slik at det ikke er behov for massedataoverføring. Flere databaser støtter det i begrenset grad.

Det nest beste tilfellet er at dataene skal være på samme høyhastighetsnettverk som modellbyggingsprogramvaren, som vanligvis betyr i samme datasenter. Selv å flytte dataene fra ett datasenter til et annet innenfor en skytilgjengelighetssone kan føre til en betydelig forsinkelse hvis du har terabyte (TB) eller mer. Du kan redusere dette ved å utføre trinnvise oppdateringer.

Det verste tilfellet ville være hvis du må flytte store data lange avstander over stier med begrenset båndbredde og høy ventetid. Trans-Pacific-kablene som går til Australia er spesielt uhyggelige i denne forbindelse.

Støtt en ETL- eller ELT-rørledning

ETL (eksport, transformasjon og belastning) og ELT (eksport, belastning og transformasjon) er to datarørledningskonfigurasjoner som er vanlige i databaseverdenen. Maskinlæring og dyp læring forsterker behovet for disse, spesielt transformasjonsdelen. ELT gir deg mer fleksibilitet når transformasjonene dine må endres, da belastningsfasen vanligvis er den mest tidkrevende for store data.

Generelt er data i naturen støyende. Det må filtreres. I tillegg har data i naturen varierende områder: En variabel kan ha et maksimum i millioner, mens en annen kan ha et område på -0,1 til -0,001. For maskinlæring må variabler transformeres til standardiserte områder for å hindre at de med store områder dominerer modellen. Nøyaktig hvilket standardisert område avhenger av algoritmen som brukes til modellen.

Støtt et online miljø for modellbygging

Den vanlige visdommen pleide å være at du skulle importere dataene dine til skrivebordet ditt for modellbygging. Den store mengden data som trengs for å bygge gode maskinlærings- og dyplæringsmodeller endrer bildet: Du kan laste ned et lite utvalg data til skrivebordet ditt for utforskende dataanalyse og modellbygging, men for produksjonsmodeller må du ha tilgang til hele data.

Nettbaserte utviklingsmiljøer som Jupyter Notebooks, JupyterLab og Apache Zeppelin er godt egnet for modellbygging. Hvis dataene dine er i samme sky som det bærbare miljøet, kan du bringe analysen til dataene, og minimere den tidkrevende bevegelsen av data.

Støtt oppskalering og oppskalering

Beregnings- og minnekravene til bærbare datamaskiner er generelt minimale, bortsett fra treningsmodeller. Det hjelper mye hvis en bærbar PC kan gyte treningsjobber som kjører på flere store virtuelle maskiner eller containere. Det hjelper også mye hvis treningen har tilgang til akseleratorer som GPUer, TPUer og FPGAer; disse kan gjøre dager med trening til timer.

Støtte AutoML og automatisk funksjonsteknikk

Ikke alle er flinke til å velge maskinlæringsmodeller, velge funksjoner (variablene som brukes av modellen) og konstruere nye funksjoner fra de rå observasjonene. Selv om du er god til disse oppgavene, er de tidkrevende og kan automatiseres i stor grad.

AutoML-systemer prøver ofte mange modeller for å se hvilke resultater som gir de beste objektive funksjonsverdiene, for eksempel minimum kvadratfeil for regresjonsproblemer. De beste AutoML-systemene kan også utføre funksjonsteknikk, og bruke ressursene sine effektivt for å forfølge best mulig modeller med best mulige sett med funksjoner.

Støtt de beste rammene for maskinlæring og dyp læring

De fleste dataforskere har favorittrammer og programmeringsspråk for maskinlæring og dyp læring. For de som foretrekker Python, er Scikit-learning ofte en favoritt for maskinlæring, mens TensorFlow, PyTorch, Keras og MXNet ofte er toppvalg for dyp læring. I Scala pleier Spark MLlib å være å foretrekke for maskinlæring. I R er det mange native maskinlæringspakker, og et godt grensesnitt til Python. I Java vurderer H2O.ai høyt, det samme gjør Java-ML og Deep Java Library.

Cloud-maskinlærings- og dyplæringsplattformene har en tendens til å ha sin egen samling av algoritmer, og de støtter ofte eksterne rammer på minst ett språk eller som containere med spesifikke inngangspunkter. I noen tilfeller kan du integrere dine egne algoritmer og statistiske metoder med plattformens AutoML-fasiliteter, noe som er ganske praktisk.

Noen skyplattformer tilbyr også sine egne innstilte versjoner av store rammer for dyp læring. For eksempel har AWS en optimalisert versjon av TensorFlow som de hevder kan oppnå nesten lineær skalerbarhet for dyp nevralt nettverksopplæring.

Tilbyr pre-trente modeller og støtte overføring læring

Ikke alle ønsker å bruke tiden og beregne ressurser på å trene sine egne modeller - heller ikke når pre-trente modeller er tilgjengelige. For eksempel er ImageNet-datasettet enormt, og det kan ta flere uker å trene et moderne, dypt nevralt nettverk mot det, så det er fornuftig å bruke en forhåndstrent modell for det når du kan.

På den annen side kan det være at ikke trente modeller alltid identifiserer gjenstandene du bryr deg om. Overføringslæring kan hjelpe deg med å tilpasse de siste lagene i nevrale nettverk for ditt spesifikke datasett uten tid og bekostning av å trene hele nettverket.

Tilbyr innstilte AI-tjenester

De store skyplattformene tilbyr robuste, avstemte AI-tjenester for mange applikasjoner, ikke bare bildeidentifikasjon. Eksempler inkluderer språkoversettelse, tale til tekst, tekst til tale, prognoser og anbefalinger.

Disse tjenestene er allerede opplært og testet på mer data enn det som vanligvis er tilgjengelig for bedrifter. De er også allerede utplassert på tjenestens endepunkter med nok beregningsressurser, inkludert akseleratorer, for å sikre gode responstider under verdensomspennende belastning.

Administrer eksperimentene dine

Den eneste måten å finne den beste modellen for datasettet ditt er å prøve alt, enten manuelt eller ved bruk av AutoML. Det etterlater et annet problem: Administrere eksperimentene dine.

En god plattform for maskinlæring i skyen vil ha en måte at du kan se og sammenligne de objektive funksjonsverdiene til hvert eksperiment for både treningssett og testdata, samt størrelsen på modellen og forvirringsmatrisen. Å være i stand til å tegne alt dette er et klart pluss.

Støtte modellutplassering for prediksjon

Når du har valgt å velge det beste eksperimentet gitt kriteriene dine, trenger du også en enkel måte å distribuere modellen på. Hvis du distribuerer flere modeller for samme formål, trenger du også en måte å fordele trafikk på dem for a / b-testing.

Overvåk prediksjonens ytelse

Dessverre har verden en tendens til å endres, og data endres med det. Det betyr at du ikke kan distribuere en modell og glemme den. I stedet må du overvåke dataene som sendes for spådommer over tid. Når dataene begynner å endres betydelig fra grunnlinjen til det opprinnelige treningsdatasettet ditt, må du omskole modellen din.

Kontrollkostnader

Til slutt trenger du måter å kontrollere kostnadene modellene dine har. Implementering av modeller for produksjonsinferanse utgjør ofte 90% av kostnadene for dyp læring, mens opplæringen kun står for 10% av kostnaden.

Den beste måten å kontrollere prediksjonskostnadene avhenger av belastningen og kompleksiteten til modellen din. Hvis du har høy belastning, kan du kanskje bruke en akselerator for å unngå å legge til flere virtuelle maskinforekomster. Hvis du har variabel belastning, kan du kanskje endre størrelse eller antall forekomster eller containere dynamisk når lasten går opp eller ned. Og hvis du har lav eller sporadisk belastning, kan du kanskje bruke en veldig liten forekomst med en delvis akselerator for å håndtere spådommene.