Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Iontráil

Dia duit!

San Airteagal seo, roinnfidh mé mo thaithí ar ailtireacht microservice a thógáil do thionscadal ag baint úsáide as líonraí néaracha.

Déanfaimid labhairt faoi na ceanglais don ailtireacht, féachfaimid ar léaráidí struchtúracha éagsúla, anailís a dhéanamh ar gach ceann de na comhpháirteanna den ailtireacht chríochnaithe, agus déan measúnú ar mhéadracht theicniúil an réitigh.

Bíodh léamh deas agat!

Cúpla focal faoin bhfadhb agus an réiteach atá uirthi

Is é an príomh-smaoineamh ná tarraingteacht duine a mheas ar scála deich bpointe bunaithe ar ghrianghraf.

San Airteagal seo, imeoidh muid ón gcur síos ar na líonraí neural a úsáidtear agus ar an bpróiseas ullmhúcháin agus oiliúna sonraí. I gceann de na foilseacháin seo a leanas, áfach, is cinnte go bhfillfimid ar an anailís ar an bpíblíne meastóireachta ag leibhéal domhain.

Anois, rachaidh muid tríd an bpíblíne meastóireachta ar an leibhéal is airde, agus beidh an bhéim ar idirghníomhaíocht na micrisheirbhísí i gcomhthéacs ailtireacht iomlán an tionscadail. 

Agus an obair á déanamh ar an bpíblíne measúnaithe tarraingteachta, rinneadh an tasc a dhianscaoileadh sna comhpháirteanna seo a leanas:

  1. Roghnú aghaidheanna i ngrianghraf
  2. Measúnú ar gach ceann de na aghaidheanna
  3. Rindreáil torthaí

Is é an chéad réiteach ag na fórsaí de réamh-oilte MTCNN. Ar an dara dul síos, cuireadh oiliúint ar líonra néarúil chomhtháite ar PyTorch, mar chnámh droma ResNet34 - ón iarmhéid "cáilíocht / luas na tátail ar an LAP"

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Léaráid píblíne meastóireachta feidhme

Anailís ar riachtanais ailtireachta tionscadail

Sa saolré ML céimeanna tionscadail na hoibre ar ailtireacht agus uathoibriú imscaradh na samhla, go minic ar cheann de na cinn is mó ama agus acmhainní-íditheach.

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Saolré tionscadail ML

Ní haon eisceacht é an tionscadal seo - socraíodh an phíblíne measúnaithe a fhilleadh isteach i seirbhís ar líne, le haghaidh seo bhí sé riachtanach tú féin a thumadh san ailtireacht. Aithníodh na bunriachtanais seo a leanas:

  1. Stóráil logáil aontaithe - ba chóir do gach seirbhís logaí a scríobh in aon áit amháin, ba cheart go mbeadh siad áisiúil anailís a dhéanamh
  2. Féidearthacht scálú cothrománach na seirbhíse measúnaithe - mar an Scragall is dóichí
  3. Ba cheart an méid céanna acmhainní próiseálaithe a leithdháileadh chun gach íomhá a mheas - chun spící a sheachaint i ndáileadh an ama tátail.
  4. (ath)imscaradh tapa seirbhísí sonracha agus an chairn ina iomláine
  5. Deis, más gá, rudaí coitianta a úsáid i seirbhísí éagsúla

ailtireacht

Tar éis anailís a dhéanamh ar na ceanglais, ba léir go n-oireann an ailtireacht microservice beagnach foirfe.

D'fhonn fáil réidh le tinneas cinn gan ghá, roghnaíodh an Telegram API mar an tosaigh.

Gcéad dul síos, déanaimis féachaint ar an léaráid struchtúrach den ailtireacht chríochnaithe, ansin téigh ar aghaidh go dtí an cur síos ar gach ceann de na comhpháirteanna, agus freisin an próiseas próiseála íomhá rathúil a fhoirmiú.

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Léaráid struchtúrach den ailtireacht chríochnaithe

Déanaimis labhairt níos mine faoi gach ceann de na comhpháirteanna den léaráid, cuir in iúl iad mar Fhreagracht Aonair sa phróiseas chun an íomhá a mheas.

Micreasheirbhís "attrai-telegram-bot"

Cuimsíonn an microservice seo gach idirghníomhaíocht leis an Telegram API. Tá 2 phríomh-chásanna ann - ag obair le híomhá saincheaptha agus ag obair le toradh an phíblíne meastóireachta. Breathnaímis ar an dá chás.

Agus teachtaireacht shaincheaptha á fáil le híomhá:

  1. Déantar scagadh, ina bhfuil na seiceálacha seo a leanas:
    • Ag an méid íomhá is fearr is féidir
    • Líon na n-íomhánna úsáideora atá sa scuaine cheana féin
  2. Agus an príomhscagadh á rith, stóráiltear an íomhá sa toirt docker
  3. Déanfar tasc a tháirgeadh sa scuaine “to_meastachán”, ina bhfeicfear, i measc rudaí eile, an cosán chuig an íomhá inár n-imleabhar
  4. Má chuirtear na céimeanna thuas i gcrích go rathúil, gheobhaidh an t-úsáideoir teachtaireacht le ham próiseála íomhá measta, a ríomhtar bunaithe ar líon na dtascanna sa scuaine. I gcás earráide, cuirfear an t-úsáideoir ar an eolas go sainráite faoi seo - trí theachtaireacht a sheoladh le faisnéis faoi na rudaí a d'fhéadfadh a bheith mícheart.

Chomh maith leis sin, éisteann an micreasheirbhís seo, mar oibrí soilire, leis an scuaine “iar-mheastachán”, atá beartaithe le haghaidh tascanna a chuaigh tríd an bpíblíne meastóireachta.

Agus tasc nua á fháil ó “after_estimate”:

  1. Má dhéantar an íomhá a phróiseáil go rathúil, cuirimid an toradh chuig an úsáideoir; mura bhfuil, cuirimid earráid in iúl don úsáideoir.
  2. An íomhá atá mar thoradh ar an bpíblíne meastóireachta a scriosadh

Micreaseirbhís meastóireachta Attrai-meastóir

Is oibrí soilire é an microservice seo agus cuimsíonn sé gach rud a bhaineann leis an bpíblíne meastóireachta íomhá. Níl ach algartam oibre amháin anseo - déanfaimid anailís air.

Agus tasc nua á fháil ó “to_estimate”:

  1. Rith an íomhá tríd an bpíblíne meastóireachta:
    1. Íoslódáil an pictiúr i gcuimhne
    2. Cuirimid an íomhá ar an méid atá ag teastáil
    3. Aimsigh gach aghaidh (MTCNN)
    4. Déanaimid na aghaidheanna go léir a mheas (cuimeoimid na héadain a fuarthas sa mhír dheireanach i mbaisc ResNet34 agus inferensim)
    5. Rindreáil an íomhá deiridh
      1. Tarraing boscaí teorann
      2. Ag tarraingt na ngrád
  2. An íomhá saincheaptha (bunaidh) a bhaint
  3. Sábháil an t-aschur ón bpíblíne meastóireachta
  4. Chuireamar an tasc sa scuaine “after_estimate”, a n-éisteann an micreasheirbhís “attrai-telegram-bot” atá parsáilte thuas leis an tasc

Log liath (+ mongoDB + Elasticsearch)

Log Liath is réiteach é do bhainistíocht láraithe loga. Sa tionscadal seo, úsáideadh é chun na críche a bhí beartaithe dó.

Thit an rogha air, agus ní ar an ngnáth ELK stack, mar gheall ar an áisiúlacht a bhaineann le bheith ag obair leis ó faoi Python. Níl le déanamh ach logáil isteach chuig Graylog ná an GELFTCPHandler a chur leis ón bpacáiste liathroid leis an gcuid eile de láimhseálaithe logálaithe fréamhacha ár micrseirbhíse python.

Mar dhuine nár oibrigh ach le cruach ELK roimhe seo, bhí taithí dhearfach agam go ginearálta agus mé ag obair le Graylog. Is é an rud amháin a depresses an superiority i gnéithe de Kibana thar an comhéadan gréasáin Graylog.

Coinín MQ

Coinín MQ Is bróicéir teachtaireachtaí é atá bunaithe ar phrótacal AMQP.

Sa tionscadal seo, baineadh úsáid as mar an ceann is cobhsaí agus is tástáil ama bróicéir Soilire agus d'oibrigh sé i mód buan.

Redis

Redis is DBMS NoSQL é a oibríonn le struchtúir sonraí bunluacha

Uaireanta bíonn sé riachtanach rudaí coitianta a úsáid i micreasheirbhísí python éagsúla a chuireann aon struchtúir sonraí i bhfeidhm.

Mar shampla, stórálann Redis hashmap den fhoirm “telegram_user_id => líon na dtascanna gníomhacha sa scuaine”, a ligeann duit líon na n-iarratas ó úsáideoir amháin a theorannú go luach áirithe agus, ar an gcaoi sin, ionsaithe DoS a chosc.

Déanaimid an próiseas próiseála íomhá rathúil a fhoirmiú

  1. Seolann an t-úsáideoir íomhá chuig Telegram bot
  2. Faigheann "attrai-telegram-bot" teachtaireacht ón Telegram API agus parsálann sé é
  3. Cuirtear an tasc leis an íomhá leis an scuaine asincrónach "to_estimate"
  4. Faigheann an t-úsáideoir teachtaireacht leis an am meastóireachta measta
  5. tógann "attrai-estimator" tasc ón scuaine "to_estimate", ritheann sé na meastacháin tríd an bpíblíne agus táirgeann sé an tasc sa scuaine "tar éis_meastachán"
  6. cuireann "attrai-telegram-bot" éisteacht leis an scuaine "after_estimate" an toradh chuig an úsáideoir

DevOps

Ar deireadh, tar éis athbhreithniú a dhéanamh ar an ailtireacht, is féidir linn bogadh ar aghaidh go dtí an chuid chomh suimiúil - DevOps

Swarm Docker

 

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Swarm Docker  is córas braisle é, a gcuirtear a fheidhmiúlacht i bhfeidhm laistigh den Inneall Docker agus atá ar fáil as an mbosca.

Le cabhair ó "swarm", is féidir nóid uile ár mbraisle a roinnt ina 2 chineál - oibrí agus bainisteoir. Ar mheaisíní den chéad chineál, imscartar grúpaí coimeádán (cruachanna), tá meaisíní den dara cineál freagrach as scálaithe, cothromú agus gnéithe fionnuar eile. Is oibrithe iad bainisteoirí freisin de réir réamhshocraithe.

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Cnuasach le bainisteoir ceannaire amháin agus triúr oibrí

Is é an méid braisle íosta is féidir ná 1 nód, gníomhóidh an t-aon mheaisín ag an am céanna mar bhainisteoir ceannaire agus oibrí. Bunaithe ar mhéid an tionscadail agus na ceanglais íosta maidir le lamháltas lochtanna, socraíodh an cur chuige seo a úsáid.

Ag breathnú amach romhainn, déarfaidh mé, ó rinneadh an chéad léiriú, a bhí i lár mhí an Mheithimh, nach bhfuil aon fhadhbanna ag baint leis an gcnuaseagraíocht seo (ach ní chiallaíonn sé sin go bhfuil a leithéid d’eagraíocht inghlactha ar a laghad in aon mheán-. tionscadail mhóra, atá faoi réir ceanglais lamháltais locht).

Cruach Docker

Sa mhodh “swarm”, tá imscaradh stoic (tacair de sheirbhísí duganna) freagrach cruach duga

Tacaíonn sé le cumraíochtaí cumadóireachta docker, rud a ligeann duit roghanna imlonnaithe a úsáid go roghnach.  

Mar shampla, agus na paraiméadair seo á n-úsáid, bhí acmhainní teoranta do gach ceann de na cásanna meastóireachta micriseirbhíse (leithdháileann muid croíleacáin N do chásanna N, sa mhicriseirbhís féin cuirimid teorainn le líon na gcroíthe a úsáideann PyTorch go ceann amháin)

attrai_estimator:
  image: 'erqups/attrai_estimator:1.2'
  deploy:
    replicas: 4
    resources:
      limits:
        cpus: '4'
    restart_policy:
      condition: on-failure
      …

Tá sé tábhachtach a thabhairt faoi deara gur seirbhísí stáit iad Redis, RabbitMQ agus Graylog agus nach n-oibreoidh sé chun iad a scála chomh simplí le “attrai-estimator”.

Foreshadowing na ceiste - cén fáth nach Kubernetes?

Dealraíonn sé go bhfuil úsáid Kubernetes i dtionscadail bheaga agus mheánmhéide ina forchostais, is féidir an fheidhmiúlacht riachtanach go léir a fháil ó Docker Swarm, atá éasca le húsáid go leor do cheoltóir coimeádán, agus tá tairseach iontrála íseal aige freisin.

Bonneagar

Imscaradh é seo go léir ar VDS leis na tréithe seo a leanas:

  • LAP: 4 cores Intel® Xeon® Gold 5120 CPU @ 2.20GHz
  • RAM: 8 GB
  • SSD: 160GB

Tar éis tástáil ualaigh áitiúil, ba chosúil, le sní isteach tromchúiseach úsáideoirí, gur leor an meaisín seo cúl le cúl.

Ach, díreach tar éis an imscartha, phostáil mé nasc chuig ceann de na cláir íomhá is coitianta sa CIS (tá, an ceann céanna), tar éis a chuir daoine spéis agus i gceann cúpla uair an chloig d'éirigh leis an tseirbhís na mílte íomhánna a phróiseáil. Ag an am céanna, ag buaic-amanna, níor úsáideadh acmhainní LAP agus RAM fiú ag leath.

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural
Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Roinnt grafaicí níos mó

Líon na n-úsáideoirí uathúla agus na hiarratais mheastóireachta, ó imscaradh, de réir an lae

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Píblíne Meastacháin Tátail Dáileadh Ama

Forbhreathnú ginearálta ar an ailtireacht seirbhíse chun cuma a mheas bunaithe ar líonraí neural

Torthaí

Ag achoimre, is féidir liom a rá go raibh údar iomlán ag ailtireacht agus cur chuige ceolfhoirne coimeádán - fiú ag buaic-amanna ní raibh aon titeann agus turnamh san am próiseála. 

Is dóigh liom gur féidir le tionscadail bheaga agus mheánmhéide a úsáideann tátal fíor-ama ar líonraí neural ar an LAP ina bpróiseas na cleachtais a thuairiscítear san Airteagal seo a ghlacadh go rathúil.

Cuirfidh mé leis go raibh an t-alt níos faide ar dtús, ach d'fhonn gan léamh fada a phostáil, chinn mé roinnt pointí san Airteagal seo a fhágáil ar lár - cuirfimid ar ais chucu sna foilseacháin seo a leanas.

Is féidir leat an bot a bhrú i Telegram - @AttraiBot, oibreoidh sé go dtí deireadh an fhómhair 2020 ar a laghad. Lig dom a mheabhrú duit - ní stóráiltear aon sonraí úsáideora - ná na híomhánna bunaidh, ná torthaí na píblíne meastóireachta - scartar gach rud tar éis a phróiseáil.

Foinse: will.com

Add a comment