Ieguvumi:
- Spēja atpazīt ML īpašos izaicinājumus, kas saistīti ar koda-datu-modeļa trio un pakotni un prezentēt modeli tiešsaistē vai pakešu veidā atbilstoši biznesa vajadzībām.
- Iespēja ieviest pakāpeniskas un atcelšanas izvietošanas modeļus (ēna, kanārijputniņš, A/B, atcelšana) un katrai izvietošanai pievienot pārbaudītu atcelšanas plānu
- Spēja saglabāt ražošanā nodotā modeļa datu-koda-metrisko saiti ar novērtējuma sliekšņa kontrolētu CI/CD un modeļu reģistru.
Modeļa iegūšana, lai piezīmjdatorā sasniegtu 95% precizitāti, ir tikai puse no stāsta. Otra puse — bieži vien grūtākā — ir šī modeļa nodošana reāliem lietotājiem uzticamā, mērogojamā un uzturējamā veidā. MLOps (Machine Learning Operations: ML modeļu ieviešanas, darbības un uzturēšanas disciplīna ražošanā) apvieno programmatūras inženierijas DevOps praksi ar unikālajiem ML izaicinājumiem. Šajā nodaļā mēs aplūkojam modeļa pārvietošanas uz ražošanu un to, kā mākslīgais intelekts palīdz šajā procesā.
Kāpēc ML atšķiras no parastās programmatūras?
Parastā programmatūrā darbība ir kodā; Ja kods nemainās, darbība nemainās. ML izturēšanās ir atkarīga gan no koda, gan datiem, gan modeļa. Šīs trīs dimensijas rada papildu izaicinājumus MLOps:
- Datu novirze: dati ražošanā laika gaitā attālinās no datiem apmācībā; modelis kļūst novecojis.
- Jums ir jāversē trīs lietas: kods, dati un modelis — visas trīs.
- Klusa atteice: modelis var neizdoties bez avārijas, nedodot kļūdas, vienkārši radot nepareizas prognozes. Lai to panāktu, ir nepieciešama uzraudzība.
Tāpēc ir liela atšķirība starp "darba modeli" un "ražošanai gatavu modeli".
Modeļu iepakošana un prezentēšana
Pirmais solis modeļa ieviešanā ražošanā ir tā iepakošana: modeļa fails, nepieciešamās bibliotēkas, pirmapstrādes kods un versijas informācija kopā kā reproducējams veselums. Konteinerizācija (piemēram, Docker: lietojumprogrammas ievietošana izolētā kastē ar visām tās atkarībām) šeit ir standarta; Tas novērš problēmu "tas darbojās ar manu mašīnu".
Divi modeļa apkalpošanas pamata modeļi:
- Tiešsaistē/reāllaikā (tiešsaistē): modelis atrodas aiz API, atgriežot tūlītēju prognozi par katru ienākošo pieprasījumu. Zems latentums ir kritisks.
- Pakete: modelis periodiski apstrādā lielas datu kopas (piemēram, naktī ģenerē punktu skaitu visiem klientiem). Latentumam nav nozīmes, svarīga ir efektivitāte.
Kurš no tiem ir pareizais, ir atkarīgs no uzņēmuma vajadzībām: tūlītējs ieteikums tiešsaistē, ikmēneša riska rādītājs partijās.
Padoms. “Reāllaika” ir maksa, nevis noklusējuma vērtība. Partija ir daudz lētāka un vienkāršāka, ja rezultāts tiks izmantots dažu stundu laikā. Vai jums tiešām ir nepieciešama tūlītēja atbilde? Pajautājiet to vispirms.
Drošas izplatīšanas stratēģijas
Jauna modeļa atvēršana tieši visai satiksmei ir riskanti; Ja tas ir nepareizi, tas ietekmē visus. Drošas izplatīšanas modeļi:
- Ēnu izvietošana: jaunais modelis saņem ražošanas trafiku, bet tā prognozes lietotājam netiek rādītas, tikai tiek reģistrētas. Tas tiek salīdzināts ar veco modeli, lai noskaidrotu, vai tas ir drošs reālos datos.
- Kanāriju izvietošana: jaunais modelis vispirms tiek ieviests nelielai daļai datplūsmas (piemēram, 5%); Ja problēmu nav, to pakāpeniski palielina.
- A/B testēšana: reālajam lietotājam paralēli tiek prezentēti divi modeļi un tiek salīdzināti biznesa rādītāji (reklāmguvumi, klikšķi).
- Atcelšana: iespēja ātri atgriezties pie vecās versijas, ja jaunais modelis izrādās slikts. Katrai izvietošanai ir jābūt atcelšanas plānam.
Uzmanību! Izvietošana bez atcelšanas plāna nav pabeigta. Iespēja dažu minūšu laikā atgriezties pie vecās versijas aizsargā lietotāju, ja jaunais modelis neparedzēti uzvedas ražošanā. Pārbaudiet to pirms izvietošanas.
Vāja pieeja / spēcīga pieeja
Vāji: "Modelis testēšanā bija labs, mēs sākām tiešraidi, mēs to atvērām visiem."
Güçlü: "Mēs ievietojām modeli konteineros, atzīmējām to kā versiju. Pirmkārt, mēs to palaidām ēnu režīmā ar ražošanas trafiku 3 dienas, salīdzinot prognozes ar veco modeli — novirze bija pieņemama. Pēc tam mēs to atvērām ar 5% kanārijputnu, uzraudzījām caurlaidspējas metriku un latentumu. Kad nebija problēmu, mēs to pakāpeniski palielinājām līdz 100%. Pirms tam tika pārbaudīta atgriešana."
Atšķirība: spēcīga pieeja ir pakāpeniska, izmērīta un atgriezeniska. Risks ir ierobežots katrā solī.
CI/CD un automatizācija
CI/CD (Continuous Integration / Continuous Deployment: automātiskās testēšanas un koda izmaiņu izlaišanas konveijers) ML ietver ne tikai kodu, bet arī datu un modeļa darbības. Labs ML CI/CD konveijers: veic testus, kad kods mainās, veic datu validāciju, pārkvalificē modeli (ja nepieciešams), pārbauda novērtēšanas sliekšņus un tikai tad, ja sliekšņi ir spēkā, veic izvietošanu. Princips "apmācība ir automātiska, izvietošana ir balstīta uz slieksni" novērš slikta modeļa klusu noplūdi ražošanā.
AI ir ļoti noderīgs, iestatot šos cauruļvadus: rakstot konfigurācijas faila (YAML) melnrakstus, testa gadījumus, izvietošanas skriptus. Bet jūs nosakāt izplatīšanas sliekšņus (jebkura metrika pārsniedz publicēto vērtību) un atcelšanas politiku; tie ir biznesa riska lēmumi.
Reproducējamības infrastruktūra
Lai reproducētu modeļa uzvedību ražošanā, modeļu reģistrs: ieraksts, kurā tiek saglabāts, kurš modelis tika apmācīts ar kādiem datiem un kodiem un kādus rādītājus tas saņēma. Katram ražošanas modelim ir jābūt izsekojamam: apmācības datu versijai, koda versijai (git commit), hiperparametriem, novērtēšanas rādītājiem un izvietošanas datumam. Ja rodas problēma, jums vajadzētu būt iespējai atbildēt uz jautājumu "kurš modelis radīja šo prognozi, ar kādiem datiem?" minūšu laikā. Mēs to padziļināsim 11. nodaļā.
trīs mini futrāļi
1. gadījums — ēnu izplatīšanas rezultātā radusies problēma. Ieteikuma modelis testēšanā pārspēja veco. Tika konstatēts, ka tās palaišana ar ražošanas trafiku ēnu režīmā sniedz ļoti sliktus ieteikumus noteiktam lietotāju segmentam (jauniem lietotājiem) — testa dati nebija pietiekami reprezentatīvi šim segmentam. Modelis tika labots, lietotājam to nekad nerādījot. Ja tas tiktu atvērts tieši, jaunā lietotāja pieredze tiktu traucēta.
2. gadījums — neatsaucama izplatīšana. Komanda ieviesa jaunu cenu noteikšanas modeli visai satiksmei bez atcelšanas plāniem. Modelis dažus produktus negaidīti noteica ļoti lēti. Atgriešanās pie vecās versijas ilga stundas, jo process nebija gatavs. Bija nopietni zaudēti ienākumi. Pēc tam katrai izvietošanai tika pievienota obligāta atcelšanas pārbaude.
3. gadījums — klusa datu novirze. Krāpšanas modelis parādījās vairākus mēnešus bez kļūdām. Taču krāpnieku taktika mainījās (datu dreifēšana), un modeļa atsaukšana klusībā samazinājās. Neviens nepamanīja, jo nebija uzraudzības. Kad tika izveidots prognožu izplatīšanas uzraudzības panelis, novirze kļuva redzama agri. Mēs apskatīsim monitoringu 8. nodaļā.
Kopējamas veidnes
Uzrakstiet šī modeļa izvietošanas plāna projektu. Modelis: [ko tas dara], lietojums: [tiešsaistē vai pakešu?] Jāiekļauj: 1) iesaiņojums (konteiners, versiju izveide) 2) pakāpeniska izvietošanas stratēģija (ēna/kanārijputniņš/A-B) un kāpēc3) izsekojamā metrika (biznesa + tehniskais + latentums) 4) atcelšanas plāns un kā pārbaudīt5) Izvietojumam vajadzētu pārsniegt slieksni.
Pārbaudiet šo ML CI/CD konveijeru:1) Vai rindā ir datu validācija?2) Vai izvietošana var turpināties, neievērojot novērtēšanas slieksni (vai nevajadzētu)?3) Vai atcelšana ir automātiska?4) Vai modeļa reģistrā tiek izsekoti dati+kods+metrika?Plīnes konfigurācija: [config]
Palīdziet man izlemt, vai tiešsaistes vai partijas prezentācija ir piemērota šim modelim. Cik ilgi tiks izmantots rezultāts: [tūlītēja / minūte / stunda / diena]Paredzamais pieprasījuma apjoms: [skaitlis]Vai pastāv aizkaves ierobežojums: [ms]Kuru jūs ieteiktu izmaksu un sarežģītības ziņā un kāpēc?
Uzrakstiet atcelšanas procedūru šim modelim.- Kāda metrika/slieksnis izraisa sliktu veiktspēju?- Kādas ir atcelšanas darbības?- Cik ilgam vajadzētu būt atcelšanai (mērķim)?- Kā pārbaudīt šo procedūru pirms ražošanas?
Prezentācijas paraugu tabula
kritērijs
Tiešsaistē (reālā laikā)
Partija
kavēšanās
Kritiskais (ms)
nenozīmīgs
Lietošana
Nepieciešama tūlītēja atbilde
Periodiskais rādītājs
Izmaksas
augsts
zems
sarežģītība
augsts
zems
piemērs
Tiešsaistes ieteikums, krāpniecība
Mēneša riska rādītājs
Biežas kļūdas
- Izplatiet bez izguves plāna. Nepareizs modelis skar visu lietotāju.
- Atvērts tieši 100% satiksmei. Ierobežojiet risku ar pakāpenisku izplatīšanu.
- Nav izveidota uzraudzība. Modelis rada kļūdas klusi, bez kļūdām.
- Lieka reāllaika prezentācija. Lai gan partiju komplektēšana ir pietiekama, izmaksas un sarežģītība palielinās.
- Nesaista modeļa-datu-koda versijas. Jūs nevarat atveidot problēmu.
- Automātiska izlaišana bez izplatīšanas sliekšņa. Sliktā modele klusībā ielīst.
Rezumējot
Modeļa pārvietošana uz ražošanu ir atšķirīgs un bieži vien grūtāks inženierijas uzdevums nekā tā apmācība. ML prasa papildu disciplīnu, jo tas ir atkarīgs no koda-datu-modeļa trio: iepakojuma un versiju veidošanas, piegādes modeļa (tiešsaistē/paketē), kas atbilst biznesa vajadzībām, pakāpeniska un atgriezeniska izvietošana, sliekšņa kontrolēta CI/CD un modeļa reģistrācija. Mākslīgais intelekts ir spēcīgs palīglīdzeklis šīs infrastruktūras koda un konfigurācijas ģenerēšanā; bet izplatīšanas sliekšņi, atgūšanas politika un lēmumi par risku ir jūsu ziņā. Izplatīšana bez atcelšanas plāna nav pabeigta.
Lietojumprogrammas uzdevums
Ievietojiet modeli konteineros (Docker) un marķējiet tā versiju. Izlemiet, vai piedāvāsit tiešsaistē vai sērijveidā, pamatojoties uz jūsu uzņēmuma vajadzībām, un uzrakstiet savu pamatojumu. Dokumentējiet pakāpenisku izvietošanas plānu (ēnu vai kanārijputnu) un pārbaudītu atcelšanas procedūru. Noteikti ierakstiet datu versiju, koda apstiprināšanu un novērtēšanas punktus modeļu reģistrā.
kontrolsaraksts
- [ ] Modelis ir iepakots un komplektēts (konteiners + etiķete).
- [ ] Prezentācijas modelis (tiešsaistē/paketē) tika izvēlēts atbilstoši biznesa vajadzībām.
- [ ] Īstenota pakāpeniskas izvietošanas stratēģija (ēnu/kanārijputniņš).
- [ ] Atcelšanas procedūra ir uzrakstīta un pārbaudīta.
- [ ] CI/CD neveicina izvietošanu, pirms nav sasniegts novērtēšanas slieksnis.
- [ ] Modeļu reģistrā ir datu+kods+metriskā saite.