Омӯзиши мошинҳои саноатӣ: 10 Принсипҳои тарҳрезӣ

Омӯзиши мошинҳои саноатӣ: 10 Принсипҳои тарҳрезӣ

Имрӯзҳо ҳамарӯза хидматҳо, замимаҳо ва дигар барномаҳои муҳими нав эҷод мешаванд, ки имкон медиҳанд чизҳои аҷоибро эҷод кунанд: аз нармафзор барои идоракунии мушаки SpaceX то ҳамкорӣ бо чойник дар ҳуҷраи ҳамсоя тавассути смартфон.

Ва баъзан, ҳар як барномасози навкор, хоҳ ӯ як стартапи дилчасп бошад, хоҳ Full Stack ё Data Scientist, дер ё зуд дарк мекунад, ки қоидаҳои муайяни барномасозӣ ва эҷоди нармафзор мавҷуданд, ки ҳаётро хеле содда мекунанд.

Дар ин мақола, ман ба таври мухтасар 10 принсипи барномасозии омӯзиши мошинҳои саноатиро тавсиф мекунам, то он ба осонӣ ба барнома/хизмат дар асоси методологияи 12-омили App ворид карда шавад. аз ҷониби дастаи Ҳероку пешниҳод шудааст. Ташаббуси ман баланд бардоштани огоҳии ин техника аст, ки метавонад ба бисёр таҳиягарон ва одамони илми маълумот кӯмак расонад.

Ин мақола як муқаддимаи як қатор мақолаҳо дар бораи омӯзиши мошинҳои саноатӣ мебошад. Дар онҳо ман минбаъд дар бораи чӣ гуна воқеан модел сохтан ва ба истеҳсолот роҳ додан, API барои он эҷод кардан, инчунин мисолҳо аз соҳаҳо ва ширкатҳое, ки дар системаҳои худ ML-и дарунсохт доранд, сӯҳбат хоҳам кард.

Принсипи 1: Як пойгоҳи код

Баъзе барномасозон дар марҳилаҳои аввал аз танбалӣ барои фаҳмидани он (ё бо ягон сабаби худ) Git-ро фаромӯш мекунанд. Онҳо ё калимаро комилан фаромӯш мекунанд, яъне файлҳоро дар диск ба ҳамдигар мепартоянд/танҳо матн мепартоянд/аз ҷониби кабӯтарҳо мефиристанд, ё ҷараёни кори худро фикр намекунанд ва ҳар якеро ба филиали худ ва сипас ба устод.

Ин принсип мегӯяд: як базаи рамзӣ ва бисёр ҷойгиркунӣ доранд.

Git метавонад ҳам дар истеҳсолот ва ҳам дар тадқиқот ва коркард (R&D) истифода шавад, ки дар он он чандон зиёд истифода намешавад.

Масалан, дар марҳилаи R&D шумо метавонед ӯҳдадориҳоро бо усулҳо ва моделҳои гуногуни коркарди додаҳо гузоред, то беҳтаринашро интихоб кунед ва ба осонӣ кор бо он идома диҳед.

Сониян, дар истеҳсолот ин чизи ивазнашаванда аст - ба шумо лозим меояд, ки доимо ба он назар андозед, ки коди шумо чӣ гуна тағир меёбад ва бидонед, ки кадом модел натиҷаҳои беҳтарин дод, кадом код дар ниҳоят кор кард ва чӣ ҳодиса рӯй дод, ки он корро қатъ кард ё ба истеҳсоли натиҷаҳои нодуруст шурӯъ кард. . Ухдадорихо барои хамин аст!

Шумо инчунин метавонед як бастаи лоиҳаи худро эҷод карда, онро, масалан, дар Gemfury ҷойгир кунед ва сипас танҳо аз он функсияҳоро барои лоиҳаҳои дигар ворид кунед, то онҳоро 1000 маротиба аз нав нанависед, балки дар ин бора баъдтар.

Принсипи 2: Возеҳу возеҳ эълон ва ҷудо кардани вобастагӣ

Ҳар як лоиҳа китобхонаҳои гуногун дорад, ки шумо аз берун ворид мекунед, то онҳоро дар ҷое татбиқ кунед. Новобаста аз он ки он китобхонаҳои Python ё китобхонаҳои забонҳои дигар барои мақсадҳои гуногун ё асбобҳои системавӣ - вазифаи шумо ин аст:

  • Возеҳу равшан эълон кардани вобастагӣ, яъне файле, ки дорои тамоми китобхонаҳо, асбобҳо ва версияҳои онҳо дар лоиҳаи шумо истифода мешаванд ва бояд насб карда шаванд (масалан, дар Python ин метавонад бо истифода аз Pipfile ё requirements.txt анҷом дода шавад. A. пайванде, ки барои фаҳмидани хуб имкон медиҳад: realpython.com/pipenv-guide)
  • Вобастагиҳоро махсусан барои барномаи шумо ҳангоми таҳия ҷудо кунед. Шумо намехоҳед доимо версияҳоро тағир диҳед ва аз нав насб кунед, масалан, Tensorflow?

Бо ин роҳ, таҳиягароне, ки дар оянда ба дастаи шумо ҳамроҳ мешаванд, метавонанд зуд бо китобхонаҳо ва версияҳои онҳо, ки дар лоиҳаи шумо истифода мешаванд, шинос шаванд ва шумо инчунин имкон доред, ки версияҳо ва китобхонаҳои худи барои як барномаи мушаххас насбшударо идора кунед. лоиҳа, ки ба шумо кӯмак мекунад, ки аз номувофиқатии китобхонаҳо ё версияҳои онҳо канорагирӣ кунед.

Барномаи шумо инчунин набояд ба абзорҳои системае, ки метавонанд дар ОС мушаххас насб карда шаванд, такя кунад. Ин воситаҳо инчунин бояд дар манифести вобастагӣ эълон карда шаванд. Ин барои пешгирӣ кардани ҳолатҳое зарур аст, ки версияи асбобҳо (инчунин мавҷудияти онҳо) ба асбобҳои системаи ОС-и мушаххас мувофиқат намекунад.

Ҳамин тариқ, ҳатто агар curl қариб дар ҳама компютерҳо истифода шавад ҳам, шумо бояд онро дар вобастагӣ эълон кунед, зеро ҳангоми гузаштан ба платформаи дигар он метавонад вуҷуд надошта бошад ё версия онест, ки ба шумо дар ибтидо лозим нест.

Масалан, requirements.txt-и шумо метавонад чунин бошад:

# Model Building Requirements
numpy>=1.18.1,<1.19.0
pandas>=0.25.3,<0.26.0
scikit-learn>=0.22.1,<0.23.0
joblib>=0.14.1,<0.15.0

# testing requirements
pytest>=5.3.2,<6.0.0

# packaging
setuptools>=41.4.0,<42.0.0
wheel>=0.33.6,<0.34.0

# fetching datasets
kaggle>=1.5.6,<1.6.0

Принсипи 3: Конфигуратсияҳо

Бисёриҳо шуниданд, ки бачаҳои гуногуни таҳиягарон тасодуфан кодро ба GitHub ба анбори ҷамъиятӣ бо паролҳо ва калидҳои дигари AWS бор карда, рӯзи дигар бо қарзи $6000 ё ҳатто $50000 бедор мешаванд.

Омӯзиши мошинҳои саноатӣ: 10 Принсипҳои тарҳрезӣ

Албатта, ин ҳолатҳо шадиданд, аммо хеле муҳиманд. Агар шумо эътимоднома ё маълумоти дигареро, ки барои конфигуратсия дар дохили код лозим аст, нигоҳ доред, шумо хато мекунед ва ман фикр мекунам, ки ҳоҷат ба тавзеҳ додани сабаб нест.

Алтернатива ба ин нигоҳ доштани конфигуратсияҳо дар тағирёбандаҳои муҳити зист мебошад. Шумо метавонед дар бораи тағирёбандаҳои муҳити зист бештар хонед дар ин ҷо.

Намунаҳои маълумоте, ки одатан дар тағирёбандаҳои муҳити зист нигоҳ дошта мешаванд:

  • Номҳои доменҳо
  • URL-ҳои API/URI
  • Калидҳои ҷамъиятӣ ва хусусӣ
  • Тамосҳо (почта, телефонҳо ва ғ.)

Ҳамин тавр, ба шумо лозим нест, ки кодро доимо тағир диҳед, агар тағирёбандаҳои конфигуратсияи шумо тағир диҳанд. Ин ба шумо вақт, кӯшиш ва пулро сарфа мекунад.

Масалан, агар шумо API-и Kaggle-ро барои гузаронидани санҷишҳо истифода баред (масалан, нармафзорро зеркашӣ кунед ва моделро тавассути он иҷро кунед, то санҷиши он ки модел хуб кор мекунад), пас калидҳои хусусии Kaggle, ба монанди KAGGLE_USERNAME ва KAGGLE_KEY, бояд бошанд. дар тағирёбандаҳои муҳити зист нигоҳ дошта мешаванд.

Принсипи 4: Хидматҳои тарафи сеюм

Дар ин ҷо идея он аст, ки барнома тавре эҷод карда шавад, ки байни захираҳои маҳаллӣ ва сеюм аз ҷиҳати код фарқият вуҷуд надошта бошад. Масалан, шумо метавонед ҳам MySQL-и маҳаллӣ ва ҳам шахсони сеюмро пайваст кунед. Ҳамин чиз барои API-ҳои гуногун ба монанди Google Maps ё Twitter API меравад.

Барои хомӯш кардани хидмати тарафи сеюм ё пайваст кардани дигар, шумо бояд танҳо калидҳоро дар конфигуратсия дар тағирёбандаҳои муҳити зист иваз кунед, ки ман дар бораи он дар сархати боло гуфта будам.

Ҳамин тавр, масалан, ба ҷои муайян кардани роҳ ба файлҳо бо маҷмӯи додаҳо дар дохили код, беҳтар аст, ки китобхонаи pathlib-ро истифода баред ва роҳро ба маҷмӯи додаҳо дар config.py эълон кунед, то ки новобаста аз кадом хидмате, ки шумо истифода мекунед (барои Масалан, CircleCI), барнома тавонист роҳи маҷмӯи додаҳоро бо назардошти сохтори системаи файлии нав дар хидмати нав пайдо кунад.

Принсипи 5. Сохтан, баровардан, вақти кор

Бисёр одамон дар соҳаи Data Science такмил додани малакаҳои навиштани нармафзори худро муфид медонанд. Агар мо мехоҳем, ки барномаи мо то ҳадди имкон кам кор кунад ва то ҳадди имкон бе нокомӣ кор кунад, мо бояд раванди баровардани версияи навро ба 3 марҳила тақсим кунем:

  1. Давра анҷуманҳо. Шумо рамзи холии худро бо захираҳои инфиродӣ ба як бастаи номдор табдил медиҳед, ки тамоми код ва маълумоти заруриро дар бар мегирад. Ин баста маҷмӯа номида мешавад.
  2. Давра озод кардан — дар ин чо мо конфигуратсияи худро ба ассамблея пайваст мекунем, ки бе он мо барномаи худро бароварда наметавонем. Ҳоло ин як версияи комилан омода аст.
  3. Минбаъд саҳна меояд иҷро. Дар ин ҷо мо барномаро тавассути иҷро кардани равандҳои зарурӣ аз нашри худ озод мекунем.

Чунин система барои баровардани версияҳои нави модел ё тамоми лӯла ба шумо имкон медиҳад, ки нақшҳоро байни маъмурон ва таҳиягарон ҷудо кунед, ба шумо имкон медиҳад, ки версияҳоро пайгирӣ кунед ва боздоштани номатлуби барномаро пешгирӣ кунед.

Барои вазифаи озодкунӣ, хидматҳои зиёди гуногун сохта шудаанд, ки дар онҳо шумо метавонед равандҳоро барои худ дар файли .yml иҷро кунед (масалан, дар CircleCI ин config.yml барои дастгирии худи раванд аст). Wheely дар эҷоди бастаҳо барои лоиҳаҳо бузург аст.

Шумо метавонед бастаҳоро бо версияҳои гуногуни модели омӯзиши мошинии худ эҷод кунед ва сипас онҳоро бастабандӣ кунед ва ба бастаҳои зарурӣ ва версияҳои онҳо муроҷиат кунед, то функсияҳои аз он ҷо навишташударо истифода баред. Ин ба шумо кӯмак мекунад, ки API барои модели худ эҷод кунед ва бастаи шумо метавонад дар Gemfury ҷойгир карда шавад.

Принсипи 6. Модели худро ҳамчун як ё якчанд раванд иҷро кунед

Ғайр аз он, равандҳо набояд маълумоти муштарак дошта бошанд. Яъне, равандҳо бояд алоҳида вуҷуд дошта бошанд ва ҳама намуди маълумот бояд алоҳида мавҷуд бошанд, масалан, дар хидматҳои тарафи сеюм ба монанди MySQL ё дигарон, вобаста ба он чизе, ки ба шумо лозим аст.

Яъне, бешубҳа нигоҳ доштани маълумот дар дохили системаи файлии раванд бамаврид нест, вагарна ин метавонад боиси тоза кардани ин маълумот дар вақти нашри навбатӣ/тағйири конфигуратсияҳо ё интиқоли системае, ки дар он барнома кор мекунад, оварда расонад.

Аммо як истисно вуҷуд дорад: барои лоиҳаҳои омӯзиши мошин, шумо метавонед кэши китобхонаҳоро нигоҳ доред, то ҳар дафъае, ки шумо версияи навро оғоз мекунед, онҳоро аз нав насб накунед, агар ба версияҳои онҳо китобхонаҳои иловагӣ ё ягон тағйирот ворид нашуда бошанд. Бо ин роҳ, шумо вақти ба кор андохтани модели худро дар саноат кам мекунед.

Барои иҷро кардани модел ҳамчун якчанд раванд, шумо метавонед файли .yml эҷод кунед, ки дар он шумо равандҳои зарурӣ ва пайдарпайии онҳоро муайян мекунед.

Принсипи 7: Истифодаи такрорӣ

Равандҳое, ки дар барномаи намунавии шумо иҷро мешаванд, бояд оғоз ва қатъ кардан осон бошанд. Ҳамин тариқ, ин ба шумо имкон медиҳад, ки тағиротҳои код, тағироти конфигуратсияро зуд ҷобаҷо кунед, миқёси зуд ва чандирро гиред ва вайроншавии эҳтимолии версияи корӣ пешгирӣ кунед.

Яъне, раванди шумо бо модел бояд:

  • Вақти оғозро кам кунед. Идеалӣ, вақти оғозёбӣ (аз лаҳзаи дода шудани фармони оғоз то лаҳзаи ба кор даромадани раванд) набояд аз чанд сония зиёд бошад. Кэшкунии китобхона, ки дар боло тавсиф шудааст, яке аз усулҳои кам кардани вақти оғозёбӣ мебошад.
  • Дуруст анҷом диҳед. Яъне, гӯш кардан дар бандари хидматрасонӣ воқеан боздошта мешавад ва дархостҳои нави ба ин порт ирсолшуда коркард намешаванд. Дар ин ҷо шумо бояд бо муҳандисони DevOps муоширати хуб барқарор кунед ё худ фаҳмед, ки он чӣ гуна кор мекунад (бехтараш, албатта, охирин, аммо дар ҳама гуна лоиҳа муошират бояд ҳамеша нигоҳ дошта шавад!)

Принсипи 8: Ҷойгиркунии доимӣ/Интегратсия

Бисёре аз ширкатҳо ҷудоиро байни гурӯҳҳои таҳия ва густариши барномаҳо истифода мебаранд (барномаро барои корбарони ниҳоӣ дастрас мекунанд). Ин метавонад рушди нармафзор ва пешрафти онро дар такмили он хеле суст кунад. Он инчунин фарҳанги DevOps-ро вайрон мекунад, ки дар он рушд ва ҳамгироӣ, тақрибан гӯем, якҷоя мешаванд.

Аз ин рӯ, ин принсип изҳор мекунад, ки муҳити рушди шумо бояд ба муҳити истеҳсолии шумо то ҳадди имкон наздик бошад.

Ин имкон медиҳад:

  1. Вақти озодшавиро даҳҳо маротиба кам кунед
  2. Шумораи хатогиҳоро аз сабаби номувофиқатии код кам кунед.
  3. Ин инчунин сарбории кормандонро коҳиш медиҳад, зеро таҳиягарон ва одамоне, ки барномаро истифода мебаранд, ҳоло як даста мебошанд.

Асбобҳое, ки ба шумо имкон медиҳанд, ки бо ин кор кунед CircleCI, Travis CI, GitLab CI ва дигарон.

Шумо метавонед ба модел зуд иловаҳо ворид кунед, онро навсозӣ кунед ва фавран ба кор андозед, дар ҳоле ки дар сурати нокомиҳо ба версияи корӣ зуд баргаштан осон аст, то корбари ниҳоӣ ҳатто онро пайхас накунад. Инро махсусан ба осонӣ ва зуд анҷом додан мумкин аст, агар шумо санҷишҳои хуб дошта бошед.

Кам кардани фарқиятҳо !!!

Принсипи 9. Журналҳои шумо

Гузоришҳо (ё "Ҷараёнҳо") рӯйдодҳое мебошанд, ки одатан дар формати матнӣ сабт мешаванд, ки дар дохили барнома рух медиҳанд (ҷараёни рӯйдодҳо). Мисоли оддӣ: "2020-02-02 - сатҳи система - номи раванд." Онҳо тавре тарҳрезӣ шудаанд, ки таҳиякунанда аслан бубинад, ки ҳангоми иҷро кардани барнома чӣ рӯй медиҳад. Вай пешрафти равандҳоро мебинад ва мефаҳмад, ки оё ин ҳамон тавре ки худи таҳиякунанда пешбинӣ кардааст.

Ин принсип мегӯяд, ки шумо набояд гузоришҳои худро дар дохили системаи файлии худ нигоҳ доред - шумо бояд онҳоро танҳо ба экран "бароваред", масалан, ин корро дар баромади стандартии система иҷро кунед. Ва бо ин роҳ ҳангоми коркард ҷараёни ҷараёни терминалро назорат кардан мумкин аст.

Оё ин маънои онро дорад, ки умуман ба захира кардани гузоришҳо лозим нест? Албатта на. Аризаи шумо набояд ин корро кунад - онро ба хидматҳои тарафи сеюм гузоред. Замимаи шумо метавонад танҳо гузоришҳоро ба файл ё терминали мушаххас барои дидани вақти воқеӣ интиқол диҳад ё онро ба системаи нигаҳдории маълумоти умумӣ (масалан Hadoop) фиристад. Худи замимаи шумо набояд сабтҳоро нигоҳ дорад ё бо гузоришҳо ҳамкорӣ кунад.

Принсипи 10. Санҷиш!

Барои омӯзиши мошинҳои саноатӣ, ин марҳила хеле муҳим аст, зеро шумо бояд фаҳмед, ки модел дуруст кор мекунад ва он чизеро, ки шумо мехостед, истеҳсол мекунад.

Санҷишҳоро бо истифода аз pytest сохтан мумкин аст ва агар шумо вазифаи регрессия/таснифот дошта бошед, бо истифода аз маҷмӯи додаҳои хурд санҷида шавад.

Фаромӯш накунед, ки як тухмиро барои моделҳои омӯзиши амиқ насб кунед, то онҳо пайваста натиҷаҳои гуногун надиҳанд.

Ин тавсифи мухтасари 10 принсип буд ва, албатта, истифодаи онҳо бидуни кӯшиш ва дидани он, ки чӣ тавр кор мекунанд, душвор аст, бинобар ин ин мақола танҳо як муқаддимаи як қатор мақолаҳои ҷолиб аст, ки дар он ман чӣ гуна эҷод карданро ошкор мекунам. моделҳои омӯзиши мошинҳои саноатӣ, чӣ гуна онҳоро ба системаҳо муттаҳид кардан ва чӣ гуна ин принсипҳо метавонанд ҳаётро барои ҳамаи мо осонтар кунанд.

Ман инчунин кӯшиш мекунам, ки принсипҳои олиҷаноберо истифода барам, ки ҳар кас метавонад дар шарҳҳо, агар бихоҳад, гузорад.

Манбаъ: will.com

Илова Эзоҳ