Fêrbûna Makîneya Pîşesaziyê: 10 Prensîbên Sêwiranê

Fêrbûna Makîneya Pîşesaziyê: 10 Prensîbên Sêwiranê

Naha, karûbarên nû, serîlêdan û bernameyên din ên girîng her roj têne afirandin ku gengaz e ku meriv tiştên bêhempa biafirîne: ji nermalava ji bo kontrolkirina roketek SpaceX bigire heya danûstendina bi kelekek li jûreya din re bi riya smartphone.

Û, carinan, her bernamesazek ​​nûjen, çi ew destpêkek dilşewat be an jî Full Stack an Zanyarek Danezanek asayî be, zû an dereng tê fêhm kirin ku ji bo bernamekirin û çêkirina nermalava hin rêzikên ku jiyanê pir hêsan dikin hene.

Di vê gotarê de, ez ê bi kurtasî 10 prensîbên ku meriv fêrbûna makîneya pîşesaziyê bername dike da ku ew bi hêsanî di serîlêdanek / karûbarek de, li ser bingeha metodolojiya App-a 12-faktorî were yek kirin, bi kurtî vebêjim. ji hêla tîmê Heroku ve hatî pêşniyar kirin. Însiyatîfa min zêdekirina hişmendiya vê teknîkê ye, ku dikare alîkariya gelek pêşdebiran û mirovên zanistiya daneyê bike.

Ev gotar pêşgotinek ji rêzek gotarên li ser Fêrbûna Makîneya Pîşesaziyê ye. Di wan de ez ê bêtir bipeyivim ka meriv çawa bi rastî modelek çêdike û wê di hilberînê de vedihewîne, jê re API-yek biafirîne, û her weha mînakên ji dever û pargîdaniyên cihêreng ên ku di pergalên xwe de ML-yê çêkirî ne.

Prensîb 1: Bingeha yek kod

Hin bernamenûs di qonaxên yekem de, ji ber tembeliya ku wê fêm bikin (an ji ber hin sedemên xwe), Git ji bîr dikin. Ew an peyvê bi tevahî ji bîr dikin, ango di ajotinê de pelan diavêjin hevdu/tenê nivîsê diavêjin/bi kevokan dişînin, an jî di xebata xwe de nafikire û her yekî bi şaxê xwe ve girêdide û dû re mamoste.

Ev prensîb dibêje: xwedan yek bingehek kod û gelek sazkirin hene.

Git hem di hilberînê de hem jî di lêkolîn û pêşkeftinê de (R&D) dikare were bikar anîn, ku tê de ew qas caran nayê bikar anîn.

Mînakî, di qonaxa R&D de hûn dikarin bi rê û modelên cuda yên hilberandina daneyan re peymanan bihêlin, da ku dûv re ya çêtirîn hilbijêrin û bi hêsanî pê re xebata xwe bidomînin.

Ya duyemîn, di hilberînê de ev tiştek neguhêzbar e - hûn ê hewce bikin ku hûn bi berdewamî binihêrin ka koda we çawa diguhezîne û zanibin ka kîjan model encamên çêtirîn çêkir, kîjan kod di dawiyê de xebitî û çi qewimî ku bû sedem ku ew kar raweste an dest bi hilberîna encamên nerast bike. . Peyman ji bo vê yekê ne!

Her weha hûn dikarin pakêtek projeya xwe biafirînin, wê bi cîh bikin, mînakî, li ser Gemfury, û dûv re jî ji bo projeyên din fonksiyonan ji wê bi tenê derxînin, da ku hûn wan 1000 carî ji nû ve nenivîsin, lê paşê li ser wê bêtir.

Prensîb 2: Bi zelalî ragihandin û veqetandina girêdanan

Her proje pirtûkxaneyên cihêreng hene ku hûn ji derve derdixin da ku wan li cîhek bicîh bikin. Ka ew pirtûkxaneyên Python, an pirtûkxaneyên zimanên din ên ji bo mebestên cihêreng, an amûrên pergalê ne - karê we ev e:

  • Eşkere pêwendiyan ragihînin, ango pelek ku dê hemî pirtûkxane, amûr û guhertoyên wan ên ku di projeya we de têne bikar anîn û divê bêne saz kirin (wek nimûne, di Python de ev dikare bi karanîna Pipfile an daxwazên.txt were kirin. A girêdana ku dihêle ku baş were fam kirin: realpython.com/pipenv-guide)
  • Di dema pêşkeftinê de bi taybetî ji bo bernameya xwe ve girêdayî veqetînin. Ma hûn naxwazin bi domdarî guhertoyan biguhezînin û, mînakî, Tensorflow ji nû ve saz bikin?

Bi vî rengî, pêşdebirên ku dê di pêşerojê de beşdarî tîmê we bibin, dê karibin zû bi pirtûkxane û guhertoyên wan ên ku di projeya we de têne bikar anîn nas bikin, û her weha hûn ê xwedî derfet bin ku hûn guherto û pirtûkxaneyên xwe yên ku ji bo cîhek taybetî hatine saz kirin îdare bikin. proje, ku dê ji we re bibe alîkar ku hûn ji hevnegirtina pirtûkxaneyan an guhertoyên wan dûr bixin.

Pêdivî ye ku serîlêdana we di heman demê de bi amûrên pergalê yên ku dibe ku li ser OS-ya taybetî were saz kirin venebe. Divê ev amûr jî di diyardeya pêwendiyan de bêne diyar kirin. Ev pêdivî ye ku ji rewşên ku guhertoya amûran (û her weha hebûna wan) bi amûrên pergalê yên OS-ya taybetî re hevûdu nagirin dûr bikevin.

Ji ber vê yekê, her çend curl hema hema li ser hemî komputeran were bikar anîn, divê hûn dîsa jî wê di pêwendiyan de ragihînin, ji ber ku gava ku hûn berbi platformek din ve diçin dibe ku ew ne li wir be an jî guhertoya ku we di destpêkê de hewce dike nebe.

Mînakî, pêdiviyên we.txt dibe ku wiha xuya bike:

# 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

Prensîb 3: Veavakirin

Piran bihîstiye çîrokên xortên pêşdebiran ku bi xeletî kodê li GitHub barkirine nav depoyên giştî yên bi şîfre û bişkokên din ên ji AWS, roja din bi deynek $6000, an jî 50000 $ şiyar dibin.

Fêrbûna Makîneya Pîşesaziyê: 10 Prensîbên Sêwiranê

Bê guman, ev rewşên giran in, lê pir girîng in. Ger hûn pêbaweriyên xwe an daneyên din ên ku ji bo veavakirinê hewce ne di hundurê kodê de hilînin, hûn xeletiyek dikin, û ez difikirim ku hewcedariya ravekirina çima tune ye.

Alternatîfek ji bo vê ew e ku mîhengan di guherbarên jîngehê de hilîne. Hûn dikarin li ser guhêrbarên jîngehê bêtir bixwînin vir.

Nimûneyên daneyên ku bi gelemperî di guhêrbarên jîngehê de têne hilanîn:

  • Navên domain
  • URLên API / URI's
  • Mifteyên giştî û taybet
  • Têkilî (name, telefon, hwd.)

Bi vî awayî hûn ne hewce ne ku hûn bi berdewamî kodê biguherînin ger guhêrbarên veavakirina we biguhezin. Ev ê ji we re bibe alîkar ku hûn dem, hewl û drav xilas bikin.

Mînakî, heke hûn API-ya Kaggle bikar tînin da ku ceribandinan bikin (mînak, nermalavê dakêşin û modelê bi rê ve bibin da ku dema ku modêl baş dixebite biceribînin), wê hingê divê kilîtên taybet ên Kaggle, wek KAGGLE_USERNAME û KAGGLE_KEY, bibin. di guherbarên jîngehê de hilanîn.

Prensîb 4: Xizmetên Partiya Sêyem

Fikir li vir ev e ku meriv bernameyê bi vî rengî biafirîne ku di warê kodê de di navbera çavkaniyên herêmî û yên sêyemîn de cûdahî tune. Mînakî, hûn dikarin hem MySQL-yên herêmî û hem jî yên sêyemîn ve girêdin. Heman tişt ji bo API-yên cihêreng ên wekî Google Maps an Twitter API jî derbas dibe.

Ji bo ku hûn karûbarek sêyemîn neçalak bikin an yekî din ve girêbidin, hûn tenê hewce ne ku bişkojkên di veavakirinê de di guhêrbarên hawîrdorê de, ya ku min di paragrafa jor de qala wan kir, biguhezînin.

Ji ber vê yekê, wek nimûne, li şûna ku hûn her carê rêça pelên bi danûstendinan di hundurê kodê de diyar bikin, çêtir e ku hûn pirtûkxaneya pathlib bikar bînin û riya danehevan di config.py de diyar bikin, da ku hûn çi karûbar bikar bînin (ji bo mînak, CircleCI), bernameyê karîbû rêça danehevan bibîne ku di karûbarê nû de strukturên pergala pelan a nû hesab dike.

Prensîp 5. Avakirin, berdan, dema xebatê

Pir kes di Zanistiya Daneyê de kêrhatî dibînin ku jêhatîbûna nivîsandina nermalava xwe baştir bikin. Ger em dixwazin ku bernameya me bi qasî ku kêm kêm dibe têk bibe û heya ku gengaz be bêyî têkçûn bixebite, pêdivî ye ku em pêvajoya berdana guhertoyek nû li 3 qonaxan dabeş bikin:

  1. Şanocî civîn. Hûn koda xweya tazî bi çavkaniyên kesane veguherînin nav pakêtek ku tê de hemî kod û daneyên pêwîst dihewîne. Ji vê pakêtê re meclîs tê gotin.
  2. Şanocî berdan - Li vir em konfigurasyona xwe bi meclîsê ve girêdidin, bêyî ku em ê nikaribin bernameya xwe azad bikin. Naha ev serbestberdanek bi tevahî amade-destpêkê ye.
  3. Piştre qonax tê bicihanînî. Li vir em serîlêdanê bi meşandina pêvajoyên pêwîst ji berdana xwe berdidin.

Pergalek wusa ji bo berdana guhertoyên nû yên modelek an tevahiya boriyê dihêle hûn rolan di navbera rêvebir û pêşdebiran de ji hev veqetînin, dihêle hûn guhertoyan bişopînin û pêşî li rawestana nexwestî ya bernameyê digire.

Ji bo peywira berdanê, gelek karûbarên cihêreng hatine afirandin ku tê de hûn dikarin pêvajoyan binivîsin da ku xwe di pelek .yml de bimeşînin (mînak, di CircleCI de ev config.yml e ku pêvajoyê bixwe piştgirî dike). Wheely di afirandina pakêtên ji bo projeyan de pir xweş e.

Hûn dikarin bi guhertoyên cihêreng ên modela fêrbûna makîneya xwe re pakêtan biafirînin, û dûv re wan pak bikin û li pakêtên pêwîst û guhertoyên wan binihêrin da ku fonksiyonên ku we ji wir nivîsandiye bikar bînin. Ev ê ji we re bibe alîkar ku hûn ji bo modela xwe API-yek biafirînin, û pakêta we dikare wekî mînak li Gemfury were mêvandar kirin.

Prensîb 6. Modela xwe wekî yek an çend pêvajoyên xwe bimeşînin

Wekî din, divê pêvajoyên daneyên hevpar nebin. Ango, pêdivî ye ku pêvajo ji hev cuda hebin, û her cûre daneyî divê ji hev cihê hebin, mînakî, li ser karûbarên sêyemîn ên mîna MySQL an yên din, li gorî tiştê ku hûn hewce ne.

Ango, bê guman ne hêja ye ku daneyan di hundurê pergala pelê pêvajoyê de hilîne, wekî din ev dikare bibe sedema paqijkirina van daneyan di dema berdana/guheztina paşîn de an veguheztina pergala ku bername li ser dimeşe.

Lê îstîsnayek heye: ji bo projeyên fêrbûna makîneyê, hûn dikarin kaşek pirtûkxaneyan hilînin da ku her gava ku hûn guhertoyek nû dest pê dikin, wan ji nû ve saz nekin, heke pirtûkxaneyên zêde an jî guhertinek li guhertoyên wan nehatibe kirin. Bi vî rengî, hûn ê wextê ku ji bo destpêkirina modela xwe di pîşesaziyê de digire kêm bikin.

Ji bo ku hûn modelê wekî çend pêvajoyan bimeşînin, hûn dikarin pelek .yml biafirînin ku tê de hûn pêvajoyên pêwîst û rêza wan diyar dikin.

Prensîp 7: Vezîvirandin

Pêvajoyên ku di serîlêdana modela we de dimeşînin divê destpêkirin û rawestandina hêsan be. Bi vî rengî, ev ê bihêle ku hûn bi lez guheztinên kodê, guheztinên mîhengê, bi lez û bez pîvaz bikin, û pêşî li têkçûnên gengaz ên guhertoya xebatê bigirin.

Ango, pêvajoya we bi modelê re divê:

  • Dema destpêkirinê kêm bikin. Bi îdeal, dema destpêkirinê (ji gava ku fermana destpêkê hate derxistin heya dema ku pêvajo dikeve tevgerê) divê ji çend saniyeyan zêdetir nebe. Veşartina pirtûkxaneyê, ku li jor hatî destnîşan kirin, yek teknîk e ji bo kêmkirina dema destpêkirinê.
  • Rast bi dawî bibe. Ango, guhdarîkirina li porta karûbarê bi rastî tê sekinandin, û daxwazên nû yên ku ji vê portê re têne şandin dê neyên pêvajo kirin. Li vir hûn hewce ne ku pêwendiyek baş bi endezyarên DevOps re saz bikin, an jî fêm bikin ka ew bi xwe çawa dixebite (bi tercîhî, bê guman, ya paşîn, lê divê di her projeyek de têkilî her gav were domandin!)

Prensîb 8: Berdewamkirin / Tevlihevkirin

Gelek pargîdan di navbera tîmên pêşkeftina serîlêdanê û bicîhkirinê de veqetînek bikar tînin (serîlêdanê ji bikarhênerên dawîn re peyda dikin). Ev dikare pêşveçûna nermalavê pir hêdî bike û di baştirkirina wê de pêşkeftinê bike. Di heman demê de ew çanda DevOps-ê jî xera dike, ku li wir pêşkeftin û yekbûn, bi gelemperî, bi hev re ne.

Ji ber vê yekê, ev prensîp diyar dike ku hawîrdora pêşkeftina we divê bi qasî ku gengaz nêzî hawîrdora hilberîna we be.

Ev dê destûrê bide:

  1. Dema berdanê bi dehan carî kêm bikin
  2. Ji ber nehevhatina kodê hejmara xeletiyan kêm bikin.
  3. Ev di heman demê de barê karmendan jî kêm dike, ji ber ku pêşdebir û kesên ku serîlêdanê bicîh dikin naha yek tîm in.

Amûrên ku dihêle hûn bi vê re bixebitin CircleCI, Travis CI, GitLab CI û yên din in.

Hûn dikarin bi lez li modelê zêde bikin, wê nûve bikin, û tavilê dest pê bikin, di heman demê de ew ê hêsan be, di rewşek têkçûn de, pir zû vegere guhertoya xebatê, da ku bikarhênerê paşîn jî pê nehese. Heke ceribandinên we yên baş hebin, ev dikare bi taybetî bi hêsanî û zû were kirin.

Cudahiyan kêm bikin!!!

Prensîp 9. Têketinên we

Têketin (an jî "Têket") bûyer in, ku bi gelemperî di forma nivîsê de têne tomar kirin, ku di hundurê sepanê de çêdibin (herikîna bûyerê). Mînakek hêsan: "2020-02-02 - asta pergalê - navê pêvajoyê." Ew bi vî rengî hatine sêwirandin ku pêşdebir dikare bi rastî bibîne ka çi diqewime dema ku bername dimeşe. Ew pêşkeftina pêvajoyan dibîne û fêm dike ka ew wekî ku pêşdebir bixwe armanc dike ye.

Ev prensîb diyar dike ku divê hûn têketinên xwe di hundurê pergala pelê xwe de hilînin - divê hûn tenê wan "dernekevin" li ser ekranê, mînakî, vê yekê li ser hilana standard ya pergalê bikin. Û bi vî awayî dê gengaz be ku di dema pêşkeftinê de herikîna di termînalê de were şopandin.

Ma ev tê vê wateyê ku qet ne hewce ye ku têketin tomar bike? Helbet na. Pêdivî ye ku serîlêdana we tenê vê yekê neke - wê ji karûbarên sêyemîn re bihêle. Serlêdana we tenê dikare têketinên pelan an termînalek taybetî ji bo dîtina rast-demê bişîne, an jî wê berbi pergalek hilanîna daneya gelemperî (wek Hadoop) bişîne. Pêdivî ye ku serîlêdana we bixwe tomaran hilîne an bi têketin re têkilî neke.

Prensîp 10. Ceribandin!

Ji bo fêrbûna makîneya pîşesaziyê, ev qonax pir girîng e, ji ber ku hûn hewce ne ku fêm bikin ku model rast dixebite û tiştê ku we dixwest hildiberîne.

Test dikare bi karanîna pytestê ve were afirandin, û heke we peywirek paşveçûn / dabeşkirinê hebe bi karanîna dataşek piçûk ve were ceribandin.

Ji bîr nekin ku heman tovê ji bo modelên fêrbûna kûr saz bikin da ku ew bi berdewamî encamên cûda dernexin.

Ev ravekek kurt a 10 prensîban bû, û, bê guman, dijwar e ku meriv wan bêyî ceribandin û dîtina ka ew çawa dixebitin bikar bînin, ji ber vê yekê ev gotar tenê pêşgotinek e ji rêzek gotarên balkêş ên ku tê de ez ê eşkere bikim ka meriv çawa diafirîne. Modelên fêrbûna makîneya pîşesaziyê, meriv çawa wan di nav pergalan de yek dike, û çawa ev prensîb dikarin jiyanê ji me hemîyan re hêsantir bikin.

Di heman demê de ez ê hewl bidim ku prensîbên xweş bikar bînim ku her kes heke bixwaze dikare di şîroveyan de bihêle.

Source: www.habr.com

Add a comment