Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Clàrachadh

Hello!

Anns an artaigil seo roinnidh mi m ’eòlas air a bhith a’ togail ailtireachd microservice airson pròiseact a ’cleachdadh lìonraidhean neural.

Bruidhnidh sinn mu na riatanasan ailtireachd, thoir sùil air diofar dhiagraman structarail, dèan sgrùdadh air gach aon de na pàirtean den ailtireachd chrìochnaichte, agus cuideachd dèan measadh air tomhasan teicnigeach an fhuasglaidh.

Feuch ri leughadh!

Beagan fhaclan mun duilgheadas agus a fuasgladh

Is e am prìomh bheachd measadh a dhèanamh air tarraingeachd neach air sgèile deich puingean stèidhichte air dealbh.

San artaigil seo gluaisidh sinn air falbh bho bhith a’ toirt cunntas air an dà chuid na lìonraidhean neural a thathas a’ cleachdadh agus am pròiseas ullachaidh agus trèanaidh dàta. Ach, ann an aon de na foillseachaidhean a leanas, tillidh sinn gu cinnteach gu bhith a’ dèanamh anailis air an loidhne-phìoban measaidh aig ìre dhomhainn.

A-nis thèid sinn tron ​​​​loidhne-phìoban measaidh aig an ìre as àirde, agus cuiridh sinn fòcas air eadar-obrachadh meanbh-sheirbheisean ann an co-theacsa ailtireachd iomlan a’ phròiseict. 

Nuair a bha e ag obair air an loidhne-phìob measaidh tarraingeachd, chaidh an obair a roinn anns na pàirtean a leanas:

  1. A 'taghadh aghaidhean ann an dealbhan
  2. Rangachadh de gach neach
  3. Thoir seachad an toradh

Tha a 'chiad fhear air a rèiteachadh le feachdan ro-thrèanadh MTCNN. Airson an dàrna fear, chaidh lìonra neural convolutional a thrèanadh air PyTorch, a’ cleachdadh Ruigsinneachd34 - bhon chothromachadh “càileachd / astar co-dhùnadh air an CPU”

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Diagram gnìomh den loidhne-phìob measaidh

Mion-sgrùdadh air riatanasan ailtireachd pròiseict

Ann an cearcall-beatha ML tha ìrean pròiseict de dh'obair air ailtireachd agus fèin-ghluasad cleachdadh mhodail gu tric am measg an fheadhainn as motha a tha a' caitheamh ùine agus a' caitheamh ghoireasan.

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Cearcall-beatha pròiseact ML

Tha am pròiseact seo mar eisgeachd - chaidh co-dhùnadh an loidhne-phìoban measaidh a phasgadh a-steach do sheirbheis air-loidhne, a dh’ fheumadh sinn fhèin a bhogadh san ailtireachd. Chaidh na riatanasan bunaiteach a leanas a chomharrachadh:

  1. Stòradh log aonaichte - bu chòir do gach seirbheis logaichean a sgrìobhadh ann an aon àite, bu chòir dhaibh a bhith goireasach airson mion-sgrùdadh
  2. Comasach air sgèileadh còmhnard na seirbheis measaidh - mar an cnap-starra as coltaiche
  3. Bu chòir an aon uiread de ghoireasan pròiseasar a bhith air a riarachadh gus gach ìomhaigh a mheasadh gus nach bi taobh a-muigh ann an cuairteachadh ùine airson co-dhùnadh.
  4. Cleachdadh luath (ath) an dà chuid seirbheisean sònraichte agus a’ chruach gu h-iomlan
  5. An comas, ma tha sin riatanach, stuthan cumanta a chleachdadh ann an diofar sheirbheisean

ailtireachd

Às deidh mion-sgrùdadh air na riatanasan, dh’ fhàs e follaiseach gu bheil an ailtireachd microservice a ’freagairt cha mhòr gu foirfe.

Gus faighinn cuidhteas cinn-cinn neo-riatanach, chaidh an Telegram API a thaghadh mar an aghaidh.

An toiseach, leig dhuinn sùil a thoirt air an diagram structarail den ailtireachd chrìochnaichte, an uairsin gluais air adhart gu tuairisgeul air gach aon de na pàirtean, agus cuideachd foirmeil a dhèanamh air a 'phròiseas airson giullachd dhealbhan soirbheachail.

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Sgeama structarail den ailtireachd chrìochnaichte

Bruidhnidh sinn nas mionaidiche mu gach aon de na pàirtean den diagram, gan comharrachadh Uallach Singilte ann am pròiseas measadh ìomhaigh.

Microservice “attrai-telegram-bot”

Bidh am microservice seo a’ toirt a-steach a h-uile eadar-obrachadh leis an Telegram API. Tha 2 phrìomh shuidheachadh ann: ag obair le ìomhaigh àbhaisteach agus ag obair le toradh an loidhne-phìoban measaidh. Bheir sinn sùil air an dà shuidheachadh san fharsaingeachd.

Nuair a gheibh thu teachdaireachd àbhaisteach le ìomhaigh:

  1. Tha sìoladh air a dhèanamh, anns a bheil na sgrùdaidhean a leanas:
    • Ri fhaighinn den mheud ìomhaigh as fheàrr
    • An àireamh de dhealbhan cleachdaiche a tha san ciudha mu thràth
  2. Nuair a thèid thu seachad air a’ chiad sìoladh, thèid an ìomhaigh a shàbhaladh ann an tomhas-lìonaidh an docker
  3. Tha gnìomh air a thoirt a-mach anns a’ chiudha “to_estimate”, a tha a’ toirt a-steach, am measg rudan eile, an t-slighe chun ìomhaigh a tha san leabhar againn
  4. Ma thèid na ceumannan gu h-àrd a choileanadh gu soirbheachail, gheibh an neach-cleachdaidh teachdaireachd leis an ùine giullachd dhealbhan tuairmseach, a thèid a thomhas a rèir an àireamh de ghnìomhan anns a ’chiudha. Ma thachras mearachd, thèid fios a chuir chun neach-cleachdaidh gu soilleir le bhith a’ cur teachdaireachd le fiosrachadh mu na dh’ fhaodadh a bhith air a dhol ceàrr.

Cuideachd, bidh am meanbh-sheirbheis seo, mar neach-obrach soilire, ag èisteachd ris a’ chiudha “after_estimate”, a tha an dùil airson gnìomhan a tha air a dhol tron ​​​​loidhne-phìoban measaidh.

Nuair a gheibh thu gnìomh ùr bho “after_estimate”:

  1. Ma thèid an ìomhaigh a phròiseasadh gu soirbheachail, cuiridh sinn an toradh chun neach-cleachdaidh; mura h-eil, cuiridh sinn fios mu mhearachd.
  2. A 'toirt air falbh an ìomhaigh a tha mar thoradh air a' phìob measaidh

Mion-seirbheis measaidh “attrai-estimator”

Tha am microservice seo na neach-obrach soilire agus bidh e a’ toirt a-steach a h-uile càil co-cheangailte ris an loidhne-phìoban measadh ìomhaigh. Chan eil ach aon algairim obrach an seo - dèanamaid sgrùdadh air.

Nuair a gheibh thu gnìomh ùr bho “to_estimate”:

  1. Feuch an ruith sinn an ìomhaigh tron ​​​​loidhne-phìoban measaidh:
    1. A luchdadh a-nuas dealbh gu cuimhne
    2. Bheir sinn an ìomhaigh chun mheud riatanach
    3. A’ lorg a h-uile aghaidh (MTCNN)
    4. Bidh sinn a’ measadh a h-uile aghaidh (bidh sinn a’ cuairteachadh na h-aghaidhean a lorgar sa cheum mu dheireadh ann am baidse agus a’ co-dhùnadh ResNet34)
    5. Luchdaich a-nuas an dealbh mu dheireadh
      1. Tarraingidh sinn na bogsaichean crìche
      2. A 'tarraing nan rangachadh
  2. A' sguabadh às ìomhaigh àbhaisteach (tùsail).
  3. A’ sàbhaladh toradh bhon loidhne-phìoban measaidh
  4. Chuir sinn a’ ghnìomh anns a’ chiudha “after_estimate”, ris an èist am meanbh-sheirbheis “attrai-telegram-bot” air a bheilear a’ beachdachadh gu h-àrd.

Graylog (+ mongoDB + Elasticsearch)

Liath-log na fhuasgladh airson riaghladh logaichean meadhanaichte. Anns a 'phròiseact seo, chaidh a chleachdadh airson an adhbhair a bha san amharc.

Thuit an roghainn air, agus chan ann air an fhear àbhaisteach ELK: stac, air sgàth goireasachd a bhith ag obair leis bho Python. Chan eil agad ach a dhèanamh gus logadh a-steach gu Graylog ach cuir an GELFTCPHandler bhon phacaid liath-bhreac don chòrr de luchd-làimhseachaidh root logger ar microservice python.

Mar chuideigin nach robh air a bhith ag obair ach leis a’ chruach ELK roimhe seo, bha eòlas adhartach iomlan agam fhad ‘s a bha mi ag obair le Graylog. Is e an aon rud a tha dubhach an ìre as àirde ann am feartan Kibana thairis air eadar-aghaidh lìn Graylog.

CoineanachMQ

CoineanachMQ na broker teachdaireachd stèidhichte air protocol AMQP.

Anns a 'phròiseact seo chaidh a chleachdadh mar an fheadhainn as seasmhaiche agus le deuchainn ùine broker airson Celery agus dh’ obraich e ann am modh seasmhach.

Redis

Redis na DBMS NoSQL a bhios ag obair le structaran dàta prìomh luach

Uaireannan feumar stuthan cumanta a chleachdadh a bhios a 'cur an gnìomh cuid de structaran dàta ann an diofar microservices Python.

Mar eisimpleir, bidh Redis a’ stòradh hashmap den fhoirm “telegram_user_id => an àireamh de ghnìomhan gnìomhach anns a’ chiudha, ”a leigeas leat an àireamh de dh’ iarrtasan bho aon neach-cleachdaidh a chuingealachadh gu luach sònraichte agus, mar sin, casg a chuir air ionnsaighean DoS.

Leig leinn am pròiseas giullachd dhealbhan soirbheachail a dhèanamh foirmeil

  1. Bidh an neach-cleachdaidh a’ cur ìomhaigh chun bot Telegram
  2. Bidh "attrai-telegram-bot" a' faighinn teachdaireachd bhon Telegram API agus ga pharsadh
  3. Tha an obair leis an ìomhaigh air a chur ris a’ chiudha asyncronach “to_estimate”
  4. Gheibh an neach-cleachdaidh teachdaireachd leis an ùine measaidh a tha san amharc
  5. Bidh “attrai-estimator” a’ gabhail gnìomh bhon ciudha “to_estimate”, a’ ruith na tuairmsean tron ​​loidhne-phìoban agus a’ toirt a’ ghnìomh a-steach don ciudha “after_estimate”
  6. "attrai-telegram-bot" ag èisteachd ris a 'chiudha "after_estimate", cuiridh e an toradh chun neach-cleachdaidh

DevOps

Mu dheireadh, às deidh dhut an ailtireachd ath-sgrùdadh, faodaidh tu gluasad air adhart chun phàirt a cheart cho inntinneach - DevOps

Swarm Docker

 

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Swarm Docker  - siostam cruinneachadh, a tha comasach air a chuir an gnìomh taobh a-staigh an Docker Engine agus a tha ri fhaighinn a-mach às a’ bhogsa.

A’ cleachdadh “swarm”, faodar a h-uile nod sa bhuidheann againn a roinn ann an 2 sheòrsa - neach-obrach agus manaidsear. Air innealan den chiad sheòrsa, thathas a’ cleachdadh buidhnean de shoithichean (cruachan), tha uallach air innealan den dàrna seòrsa airson sgèileadh, cothromachadh agus feartan fionnar eile. Tha manaidsearan cuideachd nan luchd-obrach gu bunaiteach.

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Buidheann le aon mhanaidsear stiùiridh agus triùir luchd-obrach

Is e 1 nód an ìre as lugha de chruinneachadh; bidh aon inneal ag obair mar stiùiriche stiùiridh agus neach-obrach aig an aon àm. Stèidhichte air meud a 'phròiseict agus na riatanasan as ìsle airson fulangas sgàinidhean, chaidh co-dhùnadh an dòigh-obrach seo a chleachdadh.

A’ coimhead air adhart, canaidh mi, bhon chiad lìbhrigeadh riochdachaidh, a bha ann am meadhan an Ògmhios, nach eil duilgheadasan sam bith air a bhith ann leis a’ bhuidheann brabhsair seo (ach chan eil seo a’ ciallachadh gu bheil a leithid de bhuidheann iomchaidh ann an dòigh sam bith ann am meadhan-mòr sam bith. pròiseactan, a tha fo ùmhlachd riatanasan fulangas lochdan).

Stac Docker

Ann am modh swarm, tha e an urra ri bhith a’ cleachdadh stacan (seata de sheirbheisean docker) cruach docair

Bidh e a’ toirt taic do configs docker-compose, a’ toirt cothrom dhut roghainnean cleachdadh a chleachdadh a bharrachd.  

Mar eisimpleir, a’ cleachdadh nam paramadairean sin, bha na goireasan airson gach suidheachadh microservice measaidh cuibhrichte (bidh sinn a’ riarachadh N cores airson suidheachaidhean N, anns a’ mhicro-sheirbheis fhèin bidh sinn a’ cuingealachadh àireamh nan coraichean a bhios PyTorch a’ cleachdadh gu aon)

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

Tha e cudromach cuimhneachadh gur e seirbheisean stàiteil a th’ ann an Redis, RabbitMQ agus Graylog agus chan urrainnear an sgèile cho furasta ri “attrai-estimator”

A ’toirt sùil air a’ cheist - carson nach Kubernetes?

Tha e coltach gu bheil cleachdadh Kubernetes ann am pròiseactan beaga is meadhanach na rud àrd; gheibhear a h-uile gnìomh riatanach bho Docker Swarm, a tha gu math furasta a chleachdadh airson orchestrator container agus cuideachd aig a bheil cnap-starra ìosal airson faighinn a-steach.

Bun-structar

Chaidh seo uile a chleachdadh air VDS leis na feartan a leanas:

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

Às deidh deuchainn luchdan ionadail, bha e coltach, le fìor luchd-cleachdaidh a-steach, gum biodh an inneal seo gu leòr.

Ach, dìreach às deidh an cleachdadh, chuir mi suas ceangal gu aon de na bùird ìomhaigh as mòr-chòrdte anns an CIS (yup, an aon fhear sin), às deidh sin ghabh daoine ùidh agus ann am beagan uairean a thìde dh ’obraich an t-seirbheis gu soirbheachail deichean de mhìltean de dhealbhan. Aig an aon àm, aig na h-amannan as àirde, cha robh goireasan CPU agus RAM eadhon leth air an cleachdadh.

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural
Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Beagan a bharrachd grafaigean

Àireamh de luchd-cleachdaidh sònraichte agus iarrtasan measaidh bho chaidh an cleachdadh, a rèir an latha

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

Cuairteachadh ùine co-dhùnadh loidhne-phìoban luachaidh

Sealladh farsaing air ailtireachd seirbheis airson measadh coltas stèidhichte air lìonraidhean neural

toraidhean

Gus geàrr-chunntas a dhèanamh, is urrainn dhomh a ràdh gu robh an ailtireachd agus an dòigh-obrach a thaobh orchestration de shoithichean làn fhìreanachadh - eadhon aig amannan as àirde cha robh tuiteam no crìonadh ann an ùine giollachd. 

Tha mi a’ smaoineachadh gum faod pròiseactan beaga is meadhanach a bhios a’ cleachdadh co-dhùnadh fìor-ùine de lìonraidhean neural air an CPU sa phròiseas aca gabhail gu soirbheachail ris na cleachdaidhean a tha air am mìneachadh san artaigil seo.

Cuiridh mi ris gun robh an artaigil nas fhaide an toiseach, ach gus nach post a leughadh fada, chuir mi romhpa cuid de phuingean san artaigil seo fhàgail - tillidh sinn thuca ann am foillseachaidhean san àm ri teachd.

Faodaidh tu am bot a chuir air Telegram - @AttraiBot, obraichidh e co-dhiù gu deireadh an fhoghair 2020. Leig leam do chuimhneachadh nach eil dàta neach-cleachdaidh air a stòradh - no na h-ìomhaighean tùsail, no toraidhean an loidhne-phìoban measaidh - thèid a h-uile càil a leagail às deidh a ghiullachd.

Source: www.habr.com

Cuir beachd ann