Comparthing Logo
paslaugų tinklasAPI šliuzasmašininis mokymasisdebesų infrastruktūrakubernetesmikropaslaugos

Paslaugų tinklas ML ir tradiciniams API šliuzams

Mašininio mokymosi darbo krūviams sukurti paslaugų tinklai tvarko dinaminį, didelio masto išvadų srautą, naudodami smulkaus srauto valdymą, o tradiciniai API šliuzai daugiausia dėmesio skiria užklausų nukreipimui, autentifikavimui ir standartinių mikropaslaugų greičio ribojimui. Pasirinkimas priklauso nuo to, ar jūsų pagrindinis rūpestis yra ML specifinis stebimumas ir modelio versijų kūrimas, ar bendrosios paskirties API orkestravimas.

Akcentai

  • Paslaugų tinklai teikia natyvų srauto paskirstymą „canary“ modelio diegimui, o API šliuzams reikalinga pasirinktinė konfigūracija.
  • API šliuzai prideda delsą tik periferijoje, o paslaugų tinklelio šoninės priekabos prideda papildomų išlaidų kiekvienam vidiniam šuoliui.
  • Paslaugų tinklai siūlo paskirstytą sekimą ML vamzdynuose, suteikdami matomumą, kurio negali pasiūlyti API šliuzai.
  • GPU pagrįstas maršrutizavimas yra įmanomas naudojant paslaugų tinklus, bet ne tradicinių API šliuzų funkcija.

Kas yra Paslaugų tinklas mašininiam mokymuisi (ML)?

Infrastruktūros sluoksnis, skirtas valdyti ryšį tarp ML paslaugų, tvarkyti išvadų srautą, modelių versijavimą ir GPU pagrįstą maršrutizavimą.

  • Paslaugų tinklus, tokius kaip „Istio“ ir „Linkerd“, galima išplėsti naudojant ML specifinius komponentus, tokius kaip „KServe“, skirtus išvadų maršrutizavimui.
  • Jie palaiko pažangų srauto paskirstymą, įgalindami „canary“ diegimus ir naujų modelių versijų A/B testavimą gamyboje.
  • Integruotas abipusis TLS (mTLS) apsaugo ryšį tarp mikropaslaugų nereikalaujant kodo pakeitimų programoje.
  • Šalutiniai tarpiniai serveriai, tokie kaip „Envoy“, kiekvienos užklausos metu renka išsamią telemetrijos informaciją, įskaitant delsą, klaidų dažnį ir naudingosios apkrovos dydžius ML išvadų skambučiams.
  • Paslaugų tinklai integruojami su „Kubernetes“ pagrindu sukurtomis mašininio mokymosi platformomis, todėl jie puikiai tinka debesijos pagrindu veikiančioms modelių aptarnavimo aplinkoms.

Kas yra Tradiciniai API šliuzai?

Centralizuotas įėjimo taškas, kuris nukreipia API užklausas, vykdo autentifikavimą, taiko greičio apribojimus ir transformuoja naudingąją apkrovą vidinėms paslaugoms.

  • Populiarūs API šliuzai yra „Kong“, „Apigee“, „AWS API Gateway“ ir „NGINX“, plačiai naudojami įmonių aplinkoje.
  • Paprastai jie veikia tinklo pakraštyje, tvarkydami šiaurės–pietų krypties srautą tarp klientų ir vidinių paslaugų.
  • API šliuzai teikia protokolo vertimą, konvertuodami REST, gRPC arba „WebSocket“ užklausas į su serveriu suderinamus formatus.
  • Dauguma palaiko „OAuth 2.0“, JWT patvirtinimą ir API raktų valdymą iš karto, kad būtų apsaugoti viešieji galiniai taškai.
  • Jie paprastai yra be būsenos ir optimizuoti užklausų-atsakų šablonams, o ne ilgai gyvuojantiems srautiniams ryšiams, būdingiems ML išvadose.

Palyginimo lentelė

Funkcija Paslaugų tinklas mašininiam mokymuisi (ML) Tradiciniai API šliuzai
Pagrindinis naudojimo atvejis ML išvados srauto valdymas ir modelių versijų kūrimas Bendras API užklausų maršrutizavimas ir orkestravimas
Eismo schema Rytų–vakarų (tarpusavio) ir didelio masto išvadų skambučiai Šiaurės–pietų (kliento–paslaugos) užklausos ir atsakymo sistema
Diegimo modelis Šalutinis tarpinis serveris šalia kiekvienos paslaugos (pvz., „Envoy“, „Linkerd-proxy“) Centralizuotas šliuzas, įrengtas tinklo krašte
Modelių versijų palaikymas Gimtoji srauto padalijimo sistema, skirta „canarry“ ir „Blue-Green“ modelių diegimui Ribotas; paprastai reikalingos pasirinktinės maršruto parinkimo taisyklės
Stebimumas Užklausos metrika, paskirstytas sekimas ir mašininio mokymosi telemetrija Apibendrinta metrika, pagrindinis registravimas ir užklausų skaičius
Apsaugos funkcijos Automatinis mTLS tarp paslaugų, išsamios autorizacijos politikos API rakto patvirtinimas, „OAuth 2.0“, JWT ir IP adresų įtraukimas į baltąjį sąrašą
GPU-apsaugotas maršrutizavimas Galima maršrutizuoti pagal GPU prieinamumą ir išteklių naudojimą Nepalaikoma iš pradžių
Vėlavimo pridėtinės išlaidos Paprastai 1–3 ms per šuolį dėl šalutinio apdorojimo Paprastai mažesnis vieno šuolio šliuzo skambučiams
Geriausiai tinka Kubernetes pagrįstos ML platformos su mikropaslaugomis Viešos API, mobiliosios serverių sistemos ir monolitinių paslaugų prieinamumas

Išsamus palyginimas

Eismo valdymas ir modelių diegimas

Paslaugų tinklai puikiai valdo sudėtingus srauto modelius, kuriuos generuoja mašininio mokymosi sistemos, ypač kai komandoms reikia palaipsniui diegti naujas modelio versijas. Jie leidžia padalinti srautą tarp modelio versijų infrastruktūros lygmeniu, todėl galite paleisti naują modelį 5 % užklausų, o senasis modelis tvarko likusią dalį. Tradiciniai API šliuzai gali pasiekti panašų padalinimą naudodami pasirinktines maršruto parinkimo taisykles, tačiau jie nebuvo sukurti atsižvelgiant į modelio versijavimą, todėl konfigūracija yra trapesnė ir sunkiau prižiūrima dideliu mastu.

Stebimumas ir derinimas

Kai kas nors nepavyksta su ML išvadų srautu, reikia žinoti, ar problema susijusi su modeliu, duomenimis ar tinklu. Paslaugų tinklai teikia paskirstytą sekimą, kuris seka užklausą keliose paslaugose, fiksuodamas kiekvieno šuolio delsą ir susiedamas ją su konkrečiomis modelio versijomis. API šliuzai siūlo tinkamą registravimą ir metriką, tačiau jie paprastai sustoja ties šliuzo riba, todėl jums tereikia sudėlioti, kas nutiko jūsų paslaugų tinklelio arba mikropaslaugų aplinkoje.

Saugumo architektūra

Abu metodai rimtai žiūri į saugumą, tačiau sprendžia skirtingas problemas. Paslaugų tinklai užtikrina nulinio pasitikėjimo tinklą, automatiškai šifruodami visą paslaugų tarpusavio ryšį naudojant mTLS, o tai svarbu, kai tarp dešimčių mikropaslaugų teka jautrūs išvadų duomenys. API šliuzai sutelkia dėmesį į perimetro saugumą, patvirtindami, kad gaunamos užklausos yra teisėtos, dar prieš joms pasiekiant jūsų vidinę sistemą. ML sistemoms, tvarkančioms reguliuojamus duomenis, pvz., sveikatos priežiūros ar finansinę informaciją, dažnai prasmingiausia derinti abu sluoksnius.

Išteklių suvokimas ir GPU optimizavimas

ML darbo krūviai elgiasi kitaip nei įprastos žiniatinklio paslaugos, nes jie dažnai yra apriboti GPU ir naudoja daug atminties. Kai kuriuos paslaugų tinklo diegimus galima sukonfigūruoti taip, kad užklausos būtų nukreipiamos pagal GPU prieinamumą, siunčiant srautą į mazgus su laisva greitintuvo talpa. Tradiciniai API šliuzai neturi sąvokos apie pagrindinius aparatinės įrangos išteklius, todėl kiekvienas serveris laikomas juodąja dėže. Dėl to jie yra mažiau efektyvūs, kai reikia maksimaliai padidinti brangaus GPU panaudojimą visame išvadų serverių parke.

Veiklos sudėtingumas

Paslaugų tinklai sukuria papildomas operacines išlaidas, nes kiekviena paslauga gauna šalutinį tarpinį serverį, kurį reikia diegti, stebėti ir atnaujinti. Komandai, kuri jau yra susipažinusi su „Kubernetes“, tai yra įveikiama, tačiau tai prideda mokymosi kreivę. API šliuzai paprastai yra paprastesni valdyti, nes jie yra vienas komponentas, nors įmonių šliuzai, tokie kaip „Apigee“, yra sudėtingi kūrėjų portalų ir API produktų valdymo srityje.

Kainos ir našumo kompromisai

Paslaugų tinklelių šalutinis modelis prideda delsą kiekviename šuolyje, paprastai kelias milisekundes, o tai gali padidinti deficitą giliose mikropaslaugų grandinėse. ML programoms, tokioms kaip realaus laiko rekomendavimo sistemos, šios pridėtinės išlaidos yra svarbios. API šliuzai prideda delsą tik vieną kartą krašte, todėl jie yra labiau nuspėjami paprastiems užklausų ir atsakymų modeliams. Tačiau paslaugų tinklelio paleidimo dideliu mastu eksploatavimo išlaidas galima kompensuoti sutrumpintu derinimo laiku ir geresniu ML modelių diegimo saugumu.

Privalumai ir trūkumai

Paslaugų tinklas mašininiam mokymuisi (ML)

Privalumai

  • + Gimtoji modelio versijavimas
  • + Smulkiagrūdis eismo valdymas
  • + Automatinis mTLS šifravimas
  • + Gilus stebimumas
  • + GPU apdorojamas maršrutizavimas

Pasirinkta

  • Didesnis operacinis sudėtingumas
  • Pridėta delsa vienam šuoliui
  • Staigesnė mokymosi kreivė
  • Šalutinių priekabų išteklių pridėtinės išlaidos

Tradiciniai API šliuzai

Privalumai

  • + Paprastesnis diegimas
  • + Mažesnis delsos laikas
  • + Subrendusi ekosistema
  • + Stiprios autentifikavimo funkcijos

Pasirinkta

  • Ribotas modelio versijų kūrimas
  • Nėra GPU suvokimo
  • Silpnesnis vidinis stebimumas
  • Mažiau tinka rytų-vakarų eismui

Dažni klaidingi įsitikinimai

Mitas

Paslaugų tinklai ir API šliuzai atlieka tą patį veiksmą, ir jums reikia tik vieno.

Realybė

Jie atlieka skirtingus tikslus. API šliuzai valdo šiaurės–pietų srautą tinklo krašte, o paslaugų tinklai tvarko rytų–vakarų srautą tarp paslaugų. Daugelis organizacijų veikia abu vienu metu, kiekviena tvarkydama tai, ką geriausiai išmano.

Mitas

API šliuzai gali apdoroti ML modelio versijavimą taip pat gerai, kaip ir paslaugų tinklas.

Realybė

API šliuzai gali nukreipti pagal antraštes arba kelius, tačiau jiems trūksta gilios integracijos su diegimo sistemomis, kurias siūlo paslaugų tinklai. Probleminės modelio versijos atšaukimas yra greitesnis ir saugesnis naudojant paslaugų tinklą, nes srauto paskirstymą galima dinamiškai koreguoti neperdiegiant šliuzo konfigūracijų.

Mitas

Paslaugų tinklai sukuria per daug delsos gamybinėms mašininio mokymosi sistemoms.

Realybė

Šiuolaikiniai šalutiniai tarpiniai serveriai, tokie kaip „Envoy“ ir „Linkerd“ tarpiniai serveriai, daugumoje lyginamųjų testų prideda tik 1–3 milisekundes vienam šuoliui. Daugumai ML išvadų darymo darbo krūvių šios pridėtinės išlaidos yra nereikšmingos, palyginti su faktiniu modelio išvadų darymo laiku, kuris dažnai yra 10–100 milisekundžių ar daugiau.

Mitas

Jums nereikia paslaugų tinklo, jei jau turite API šliuzą.

Realybė

API šliuzas apsaugo jūsų perimetrą, tačiau jis neapsaugo ir nestebi srauto tarp vidinių paslaugų. Mikropaslaugų architektūroje su dešimtimis paslaugų paslaugų tinklas užtikrina nulinio pasitikėjimo saugumą ir stebimumą, kurio API šliuzas tiesiog negali suteikti.

Mitas

Paslaugų tinklai naudingi tik „Kubernetes“ aplinkose.

Realybė

Nors paslaugų tinklai dažniausiai siejami su „Kubernetes“, tokios implementacijos kaip „Consul Connect“ ir „Linkerd“ gali veikti virtualiose mašinose ir „bare metal“ aplinkoje. Šalutinės mašinos modelis veikia bet kur, kur galite diegti tarpinį serverį kartu su programa.

Dažnai užduodami klausimai

Ar paslaugų tinklas gali visiškai pakeisti API šliuzą?
Teoriškai taip, bet tai retai kada praktiška. Paslaugų tinklai gali apdoroti periferinį srautą su įėjimo šliuzais, tačiau jiems trūksta tokių funkcijų kaip kūrėjų portalai, API produktų valdymas ir prenumeratos atsiskaitymas, kurias teikia įmonių API šliuzai. Dauguma komandų naudoja paslaugų tinklą vidiniam srautui ir API šliuzą išoriniams API.
Kas geriau tinka ML modelio diegimui – paslaugų tinklas ar API šliuzas?
Paslaugų tinklai paprastai geriau tinka ML modelių diegimui, nes jie palaiko srauto skaidymą, „canary releases“ ir automatinį atšaukimą infrastruktūros lygmeniu. API šliuzai gali nukreipti į skirtingas modelio versijas, tačiau jiems reikia rankinio konfigūracijos keitimo ir jie nėra taip glaudžiai integruojami su ML diegimo srautais.
Kiek delsos prideda paslaugų tinklas, palyginti su API šliuzu?
Paslaugų tinklo šoniniai vagonai paprastai prideda 1–3 milisekundes vienam šuoliui, o kadangi srautas mikropaslaugų grandinėje gali pereiti per kelis šoninius vagonus, bendros pridėtinės išlaidos gali siekti 5–15 milisekundžių. API šliuzai prideda delsą tik vieną kartą krašte, paprastai iš viso 1–5 milisekundes. Šis skirtumas yra svarbus programoms, kurioms būdingas kritinis delsos laikas.
Ar mano ML platformai reikia ir paslaugų tinklo, ir API šliuzo?
Jei jūsų ML platforma API pateikia išoriniams klientams ir taip pat turi vidinių mikropaslaugų, kurios bendrauja, naudoti abu yra įprasta ir rekomenduojama. API šliuzas tvarko išorinio srauto autentifikavimą ir greičio ribojimą, o paslaugų tinklas valdo vidinį paslaugų tarpusavio ryšį, mTLS ir stebimumą.
Kokios yra populiariausios paslaugų tinklo implementacijos ML darbo krūviams?
„Istio“, „Linkerd“ ir „Consul Connect“ yra plačiausiai naudojami paslaugų tinklai. ML specifiniams darbo krūviams „KServe“ ir „Seldon Core“ integruojasi su šiais tinklais, kad užtikrintų modelių aptarnavimą su srauto valdymu. „NVIDIA“ išvadų platforma taip pat naudoja paslaugų tinklelio modelius GPU pagrįstam maršrutizavimui.
Ar API šliuzai gali apdoroti gRPC srautą ML išvadai?
Taip, dauguma šiuolaikinių API šliuzų, įskaitant „Kong“, „Envoy“ pagrindu sukurtus šliuzus ir AWS API šliuzus, palaiko gRPC. Tačiau paslaugų tinklai dažnai tvarko gRPC natūraliau, nes jie buvo sukurti atsižvelgiant į HTTP/2 ir dvikryptį srautinį perdavimą, o tai dažnai pasitaiko ML išvadose.
Kaip paslaugų tinklas padeda užtikrinti ML modelio stebimumą?
Paslaugų tinklai automatiškai renka tokius rodiklius kaip užklausos delsa, klaidų dažnis ir srauto kiekis kiekvienai paslaugos sąveikai. Kartu su tokiais įrankiais kaip „Prometheus“ ir „Jaeger“ galite atsekti vieną išvados užklausą keliose paslaugose ir nustatyti kliūtis, o tai neįkainojama derinant mašininio mokymosi srautus.
Ar brangu dideliu mastu valdyti paslaugų tinklą?
Paslaugų tinklai padidina procesoriaus ir atminties apkrovą, nes kiekvienas šalutinis tarpinis serveris eikvoja išteklius. Diegimui su 100 paslaugų gali prireikti 2–4 papildomų procesoriaus branduolių ir 1–2 GB RAM kiekvienam mazgui vien tik tinklui. Tačiau šias išlaidas dažnai atsveria trumpesnis derinimo laikas ir saugesni diegimai.
Kas lengviau nustatoma – paslaugų tinklelis ar API šliuzas?
API šliuzus paprastai lengviau nustatyti, nes jie yra vienas komponentas su aiškia konfigūracijos sąsaja. Paslaugų tinklams reikia įdiegti valdymo plokštumas, įterpti šalutinius komponentus ir konfigūruoti abipusį TLS, o tai užima daugiau laiko, bet suteikia gilesnių funkcijų, kai jie pradeda veikti.
Ar paslaugų tinklai veikia su serverių neturinčiomis ML išvadų platformomis?
Paslaugų tinklai pirmiausia skirti ilgai veikiančioms paslaugoms, todėl jie sunkiai integruojami su serverių neturinčiomis funkcijomis, kurios dažnai sukasi ir išsijungia. Serverių neturinčioms mašininio mokymosi išvadoms tokiose platformose kaip „AWS Lambda“ ar „Google Cloud Run“ srautui valdyti paprastai geresnis pasirinkimas yra API šliuzas.

Nuosprendis

Jei jūsų infrastruktūra pagrįsta „Kubernetes“ pagrindu sukurtomis ML platformomis, kuriose dažnai atnaujinami modeliai ir vyksta sudėtinga paslaugų tarpusavio komunikacija, ML darbo krūviams pritaikytas paslaugų tinklas suteiks jums geresnę kontrolę ir stebimumą. Organizacijoms, kurios teikia kelis ML galinius taškus išoriniams klientams arba mobiliosioms programoms, tradicinis API šliuzas yra paprasčiau valdomas ir jo pakanka šiam darbui. Daugelis gamybinių sistemų galiausiai naudoja abu, kai API šliuzas tvarko išorinį srautą, o paslaugų tinklas – vidinį ML paslaugų ryšį.

Susiję palyginimai

„Kafka“ ir „Flink“ palyginti su apdorojimu atmintyje

„Kafka“ ir „Flink“ sudaro paskirstytą srautinio apdorojimo ekosistemą realaus laiko duomenų srautams, o apdorojimas atmintyje pagreitina analizę, nes duomenys saugomi tik RAM atmintyje – kiekvienas iš jų tenkina iš esmės skirtingus architektūrinius greičio, mastelio ir tvarumo poreikius.

„Netflix“ mašininio mokymosi platforma ir nepriklausomi mašininio mokymosi įrankiai

„Netflix“ vidinė mašininio mokymosi platforma siūlo glaudžiai integruotus, didelio masto įrankius, skirtus transliacijų suasmeninimui, o nepriklausomi mašininio mokymosi įrankiai suteikia mažesnėms komandoms lankstumo ir kontrolės. Pasirinkimas priklauso nuo masto, pritaikymo poreikių ir esamų investicijų į infrastruktūrą.

Adaptyvioji infrastruktūra ir statinė infrastruktūros projektavimas

Adaptyvi infrastruktūra dinamiškai prisitaiko prie kintančių darbo krūvių, naudodama automatizavimą ir mastelio keitimą realiuoju laiku, o statinės infrastruktūros projektavimas remiasi fiksuotais, iš anksto sukonfigūruotais ištekliais. Pasirinkimas priklauso nuo darbo krūvio kintamumo, biudžeto nuspėjamumo ir veikimo brandos jūsų debesijos aplinkoje.

Apkrovos balansavimas mašininio mokymosi sistemose ir paprastas API užklausų tvarkymas

Apkrovos balansavimas mašininio mokymosi sistemose valdo GPU reikalaujančius išvadų ir mokymo darbo krūvius specializuotoje įrangoje, o paprastas API užklausų apdorojimas paskirsto nedidelį HTTP srautą bendrosios paskirties serveriuose. Jie labai skiriasi sudėtingumu, išteklių poreikiu ir maršruto parinkimo išmanumu.

Atsparumas gedimams ir sistemos paleidimas iš naujo

Atsparumas gedimams proaktyviai perkelia darbo krūvius į sveikas sistemas, kol vartotojai nepastebi problemų, o sistemos gedimų atveju iš naujo paleidžiamos sistemos reaktyviai atkuria paslaugas po netikėtų gedimų. Abu metodai siekia palaikyti prieinamumą, tačiau iš esmės skiriasi laiku, architektūros sudėtingumu ir poveikiu vartotojams.