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šį.