MLOps

**MLOps** — парадыгма распрацоўкі праграмнага забеспячэння, накіраваная на надзейнае і эфектыўнае разгортванне і падтрыманне мадэлей машыннага навучання для практычнага выкарыстання. Слова з’яўляецца спалучэннем «машыннага навучання» () і практыкі распрацоўкі DevOps.

MLOs пачынаўся як набор перадавых практык, і цяпер паступова ператвараецца ў незалежны падыход да кіравання жыццёвым цыклам сістэм машыннага навучання. MLOps прымяняецца на ўсіх этапах жыццёвага цыкла — ад распрацоўкі да ,  і маніторынгу мадэлей.

## Гісторыя 
У пачатку 2000-х для распрацоўкі бізнес-рашэнняў на базе машыннага навучання выкарыстоўвалася такое  як ,  і . З пашырэннем адкрытага праграмнага забеспячэння, усё больш распрацоўшчыкаў пачалі выкарыстоўваць бібліятэкі Python і R для трэніроўкі мадэлей. Для разгортвання мадэлей з мэтай іх практычнага выкарыстання ужываліся такія інструменты як Docker і . З цягам часу паўсталі так званыя MLOps-платформы, якія пакрываюць увесь цыкл эксперыментавання, трэніроўкі, разгортвання і маніторынгу мадэлей.

Рост папулярнасці MLOps абумоўлены патрэбнасцю ў стандартызацыі працэсаў распрацоўкі машыннага навучання. Рынак MLOps-інструментаў ацэньваўся ў $1.1 млрд у 2022 годзе, з прагнозам росту да $5.9 млрд да 2027 года, то бок у сярэднім на 41 % штогод.

## Параўнанне з DevOps 
Асаблівасць сістэм з машынным навучаннем заключаецца ў наяўнасці трох узаемазвязаных кампанентаў: даных, мадэлі машыннага навучання і кода. MLOps імкнецца да таго, каб рэсурсы, звязаныя з машынным навучаннем (мадэль, яе параметры і гіперпараметры, код для навучання мадэлі, даныя для навучання і тэставання), разглядаліся нароўні з іншымі рэсурсамі ў  асяроддзі, а мадэлі машыннага навучання разгортваліся ў рамках уніфікаванага працэсу разам з сэрвісамі, што іх выкарыстоўваюць і забяспечваюць выкарыстанне.

### Аўтаматызацыя 
Аўтаматызаванымі могуць быць такія працэсы, як напрыклад навучанне, тэставанне і разгортванне мадэлі. Аўтаматызацыя паскарае распрацоўку мадэлі, а аўтаматызаванае тэставанне дазваляе хутка і своечасова знаходзіць і вырашаць праблемы. Аўтаматычнае навучанне і разгортванне мадэлі могуць быць выкліканы рэгулярна па раскладзе або ў выніку пэўных падзей, напрыклад змяншэння якасці мадэлі да крытычнага значэння ці змены кода мадэлі.

Абмеркаванне дапамагае зразумець сапраўдныя мэты і магчымыя выдаткі. Адным з вынікаў гэтага этапу можа быць рашэнне не распрацоўваць мадэль машыннага навучання, напрыклад таму што працэс не дапускае некарэктных адказаў мадэлі, рашэнне будзе мець нізкую акупнасць, або сістэму не магчыма будзе падтрымліваць.

#### AI Canvas 
Адзін з метадаў аналізу бізнес-задач з пункту гледжання машыннага навучання, AI Canvas, быў прапанаваны  у кнізе «Машыны прагназавання. Простая эканоміка штучнага інтэлекту» (). AI Canvas складаецца з сямі пытанняў, якія павінны дапамагчы ў прыняцці рашэння аб распрацоўцы:
# Прадказанне. У чым заключаецца нявызначанасць, якую можна вырашыць з дапамогай машыннага навучання?
# Ацэнка. Як ацаніць эфект магчымых вынікаў, як станоўчых, так і памылковых?
# Дзеянне. Якія дзеянні могуць быць абраныя?
# Вынік. Як можна зразумець, што задача была выканана карэктна?
# Навучанне. Якія даныя патрэбны для навучання мадэлі?
# Уваход. Якія даныя патрэбны для таго, каб гатовая мадэль магла зрабіць прагноз?
# Зваротная сувязь. Як можна выкарыстаць вынікі для паляпшэння якасці мадэлі?

Напрыклад разгледзім праблему лжывых спрацоўванняў . Калі доля лжывых спрацоўванняў высокая, шмат рэсурсаў паліцыі або аховы марнуецца. Пры разгляданні магчымасці вырашыць гэтую праблему з дапамогай машыннага навучання, адказы на пытанні AI Canvas могуць гучаць наступным чынам. Зыходнае і прамежкавае захоўванне звычайна ажыццяўляецца ў азёрах даных на базе аб'ектных сховішчаў кшталту AWS S3, Google Cloud Storage і іншых.

Інжынірынг даных падзяляецца на наступныя элементы:
# Прыём даных — збор  у розных фарматах. Можа таксама ўключаць генерацыю  і ўзбагачэнне даных.
# Даследаванне і валідацыя — , неабходнае для разумення іх структуры і зместу. Валідацыя можа праводзіцца з дапамогай , якія правяраюць даныя на прадмет памылак і анамалій.
#  і першасная апрацоўка даных — працэс выпраўлення памылак, выдалення ,  у даных.
#  — прысваенне элементам даных пэўных метак у залежнасці ад задачы, напрыклад аднясенне іх да той ці іншай .
# Падзел даных — раздзяленне даных на  мадэлі.

### Распрацоўка мадэлі 
Распрацоўка мадэлі складаецца з некалькі этапаў, у выніку якіх ствараецца мадэль, гатовая да інтэграцыі:
# Навучанне мадэлі — працэс прымянення алгарытму машыннага навучання да набору навучальных даных. Сюды ж уваходзяць стварэнне прыкмет для мадэлі і .
# Ацэнка мадэлі — валідацыя мадэлі з падлікам метрык, што ацэньваюць якасць яе работы.
# Тэставанне мадэлі — фінальная праверка мадэлі на .
# Пакетызацыя мадэлі — перавод мадэлі ў патрэбны для прымянення фармат (напрыклад , ,  і інш.)

### Інтэграцыя мадэлі 
Распрацаваная мадэль інтэгруецца ў гатовы прадукт, напрыклад мабільную або настольную праграму. Інтэграцыя ўключае ў сябе наступныя этапы:
# Разгортванне мадэлі — прыстасаванне мадэлі да .
# Маніторынг мадэлі — назіранне за дзейнасцю і якасцю мадэлі ў працэсе яе выкарыстання. Вынікі маніторынгу могуць дапамагчы зразумець, калі патрабуецца паўторнае навучанне мадэлі на абноўленых даных.
#  — запіс і захоўванне ўсіх запытаў да мадэлі.

## Шаблоны архітэктуры 
Архітэктура сістэмы машыннага навучання залежыць ад спосабу навучання і генерацыі прадказанняў мадэлі.

Існуюць два віды навучання:
* Афлайнавае (навучанне батчамі, статычнае навучанне), пры якім мадэль навучаецца на загадзя сабраным наборы даных. Такая мадэль застаецца нязменнай пасля разгортвання, таму з часам можа страціць актуальнаць. Зніжэнне якасці можна адсачыць з дапамогай маніторынгу, і паўторна навучыць мадэль як толькі яно адбудзецца.
*  (дынамічнае) навучанне мае месца, калі працэс перанавучання запускаецца рэгулярна з прыходам новых данных, напрыклад у .

Генерацыя прадказанняў таксама падзяляецца на два тыпы:
* Прадказванне батчамі адбываецца раз на некаторы прамежак часу для сабраных за гэты час даных.
* Прадказванне ў рэальным часе праводзіцца тады, калі адказ мадэлі патрэбен у той самы момант, калі быў атрыманы запыт.

Камбінацыя відаў навучання і прадказвання вызначае архітэктуру сістэмы і ступень яе аўтаматызацыі.

### Прагноз 
Такі тып архітэктуры прадугледжвае аднаразовае навучанне мадэлі на гістарычных даных і генерацыю прагнозу на іншым, але таксама гістарычным наборы даных. Гэта самы просты тып архітэктуры, які выкарыстоўваецца ў даследаваннях і ў адукацыйных мэтах пры вывучэнні машыннага навучання, але яго часта бывае недастаткова для выкарыстання на практыцы.

### Вэб-сэрвіс 
Архітэктура вэб-сэрвісу (або ) гэта камбінацыя афлайнавага навучання з прадказваннем у рэальным часе. У гэтым падыходзе мадэль працуе з кожным запытам асобна, атрымлівае на ўваход даныя запыту і вяртае прадказанне для гэтага запыту на выхадзе. Пры гэтым сама мадэль не змяняецца да той пары, пакуль не будзе паўторна навучана і разгорнута. Архітэктура сэрвісу падзяляецца, адпаведна, на дзве часткі: навучанне і прадказванне.  навучання выступае гатовая мадэль, якая на этапе прадказвання ўзаемадзейнічае з кліентам, напрыклад праз .

### Анлайнавае навучанне 
У архітэктуры анлайнавага навучання мадэль абнаўляецца як толькі новыя даныя прыходзяць у сістэму. Звычайна даныя арганізаваны ў выглядзе патоку, які можа складацца з індывідуальных назіранняў або міні-батчаў (невялікіх груп). Як правіла, першаснае навучанне мадэлі праводзіцца на гістарычных даных асобна ад анлайн-сістэмы, у якой праходзіць толькі інкрэментнае паляпшэнне мадэлі з дапамогай новых даных. Мадэль можа быць разгорнута як сэрвіс на Kubernetes кластары або падобным чынам.

Загана анлайнавага навучання ў тым, што якасць мадэлі можа хутка сапсавацца, калі ў сістэму будуць прыходзіць няякасныя даныя.

## Серыялізацыя мадэлі 
Часта бывае так, што навучанне і выкарыстанне мадэлі машыннага навучання адбываюцца ў розных асяроддзях. Напрыклад, калі мадэль, навучаную з дапамогай бібліятэкі  трэба запусціць у выглядзе  задачы. У такіх выпадках мадэль пераводзіцца ў адзін з адмысловых фарматаў, прыгодных для распаўсюджання. Фарматы серыялізацыі бываюць як універсальнымі, так і спецыфічнымі для пэўнай платформы або інструмента.

Амальгамацыяй называецца спосаб экспарту мадэлі праз аб’яднанне ў адзін пакет параметраў мадэлі і ўсяго неабходнага коду для яе запуску. Такі пакет потым можа быць скампіляваны на патрэбнай платформе як асобная праграма. Гэты спосаб найбольш прыдатны для невялікіх і простых мадэлей, такіх як  або . Напрыклад, для scikit-learn мадэлей такі пакет можна згенерыраваць з дапамогай бібліятэкі SKompiler. Пасля гэтага ён можа быць трансліраваны ў код на такіх мовах праграмавання як C, Javascript, Rust,  і г.д.

### Універсальныя фарматы 
*  — фармат на аснове XML, файлы захоўваюцца з пашырэннем .pmml. Падтрымлівае толькі частку алгарытмаў машыннага навучання.
*  (Portable Format for Analytics) — мадэль захоўваецца ў JSON фармаце. Распрацоўваўся як замена PMML.
*  (Open Neural Network eXchange) — фармат, які дазваляе запускаць мадэль незалежна ад  распрацоўкі. Серыялізаваная з дапамогай ONNX мадэль можа рабіць прадказанні ў асяроддзях з адмысловымі бібліятэкамі. Сумяшчальны з большасцю інструментаў для . Падтрыманы шэрагам вялікіх кампаній, такіх як Microsoft, Facebook і Amazon.

## Разгортванне мадэлі 
Разгортванне сістэмы машыннага навучання складаецца з разгортвання пайплайна для навучання мадэлі і забеспячэння API, праз які мадэллю можна карыстацца для атрымання прадказанняў для новых даных. Працэс ператварэння запыта да мадэлі ў прадказанне завецца вывядзеннем. Вывядзенне патрабуе наяўнасці мадэлі,  для выканання кода і ўваходных даных.

Часта мадэлі машыннага навучання разгортваюцца ў , напрыклад з дапамогай Docker.  кантэйнераў ажыццяўляецца такімі інструментамі, як Kubernetes, AWS Fargate і іх альтэрнатывамі. Правайдэры воблачных сэрвісаў часта маюць уласныя платформы машыннага навучання з магчымасцю разгортвання мадэлей, напрыклад , Google Cloud AI Platform, Azure Machine Learning Studio і IBM Watson Machine Learning. Альтэрнатыўна, мадэлі могуць быць разгорнуты як бессерверныя функцыі ў Azure Functions, , Google Cloud Functions і інш. У такім выпадку код для выкарыстання мадэлі можа быць упакаваны ў .zip архіў, што перадаецца ў адпаведны сэрвіс.

### Шаблоны разгортвання 
#### Model-as-Service 
Мадэль можа быць разгорнута як сэрвіс (). У такім выпадку мадэль і інтэрпрэтатар аб’ядноўваюцца ў адзіны вэб-сэрвіс, карыстацца якім можна паводле REST API або .

#### Model-as-Dependency 
У шаблоне Model-as-Dependency мадэль разглядаецца як залежнасць прыкладной праграмы, якая яе выкарыстоўвае. Напрыклад гэта можа быць стандартная , якая мае асобны  для вывядзення, даступны праграме.

#### Precompute 
У некаторых выпадках прадказанні мадэлі для ўваходных даных магчыма падлічыць яшчэ да атрымання гэтых даных, напрыклад калі набор усіх магчымых запытаў адносна невялікі. Тады навучаная мадэль выкарыстоўваецца для такога падліку толькі адзін раз і яе адказы запісваюцца ў базу даных. Пасля гэтага кожны запыт да мадэлі перанакіроўваецца ў базу даных для атрымання адпаведных прадказанняў.

#### Model-on-Demand 
Для мадэлі ў шаблоне Model-on-Demand характэрны ўласны цыкл выпуску, незалежны ад іншых сэрвісаў. Мадэль і яе  аб’ядноўваюцца ў асобны кампанент пад назвай апрацоўшчык падзей. Узаемадзеянне з апрацоўшчыкам адбываецца праз , які мае дзве чаргі: уваходную і выхадную. Сэрвіс, якому неабходныя прадказанні ад мадэлі, запісвае запыты ў уваходную чаргу. Апрацоўшчык падзей забірае запыты з уваходнай чаргі групамі, прымяняе да іх мадэль і запісвае вынікі ў выхадную чаргу. З выхадной чаргі прадказанні перадаюцца назад у той сэрвіс, што пасылаў запыты.

#### Hybrid-Serving (федэратыўнае навучанне) 
Шаблон Hybrid-Serving, вядомы таксама як , прадугледжвае наяўнасць уласнай мадэлі для кожнага карыстальніка, якая захоўваецца лакальна на карыстальніцкай прыладзе, напрыклад на смартфоне. Акрамя лакальных мадэлей існуе навучаная на гістарычных даных глабальная мадэль на серверы, паводле якой ствараюцца лакальныя мадэлі. Лакальныя мадэлі дадаткова навучаюцца на карыстальніцкіх даных без адпраўкі гэтых даных на сервер. Перыядычна параметры лакальных мадэлей адпраўляюцца назад на сервер, глабальная мадэль камбінуе іх і абнаўляецца, а вынікі камбінавання перадаюцца лакальным мадэлям для іх удасканалення. Тэставанне мадэлі адбываецца лакальна на прыладах, дзе захоўваюцца даныя карыстальнікаў.

Перавагі такога метаду ў тым, што ён не патрабуе адпраўкі карыстальніцкіх даных, магчыма канфідэнцыяльных, на сервер, але ўсё адно дазваляе выкарыстоўваць іх для навучання мадэлі. Пры гэтым накладаюцца абмежаванні як на тэхнічныя характарыстыкі лакальных прылад, так і на памер і іншыя тэхнічныя патрабаванні самой мадэлі, таму федэратыўнае навучанне не заўсёды магчыма на практыцы.

## Крыніцы 
Катэгорыя:Машыннае навучанне