Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

entry

Hello!

Maqaalkan waxaan ku wadaagi doonaa waayo-aragnimadayda dhismaha qaab-dhismeedka microservice ee mashruuca isticmaalaya shabakadaha neerfaha.

Aynu ka hadalno shuruudaha dhismaha, eegno jaantusyada qaabdhismeedyada kala duwan, falanqaynta mid kasta oo ka mid ah qaybaha dhismaha la dhammeeyey, iyo sidoo kale qiimeynta farsamooyinka farsamada ee xalka.

Ku raaxeyso akhriska!

Dhowr eray oo ku saabsan dhibaatada iyo xalkeeda

Fikradda ugu weyn waa in lagu qiimeeyo soo jiidashada qofka ee miisaanka toban dhibcood oo ku salaysan sawir.

Maqaalkan waxaan ka guuri doonaa inaan sharaxno shabakadaha neerfaha ee la isticmaalo iyo habka diyaarinta xogta iyo tababarka labadaba. Si kastaba ha ahaatee, mid ka mid ah daabacadaha soo socda, waxaanu si hubaal ah ugu laaban doonaa falanqaynta dhuumaha qiimaynta ee heer qotodheer.

Hadda waxaan mari doonaa dhuumaha qiimeynta ee heerka ugu sarreeya, waxaanan diiradda saari doonaa isdhexgalka adeegyada yaryar ee macnaha guud ee dhismaha mashruuca. 

Marka laga shaqaynayo dhuumaha qiimaynta soo jiidashada, hawshu waxay u kala jajabtay qaybaha soo socda:

  1. Doorashada wejiyada sawirada
  2. Qiimaynta qof kasta
  3. Soo bandhig natiijada

Midka koowaad waxaa xalliya ciidamada horay loo tababaray MTCNN. Midda labaad, isku-xidhka neerfaha is-waafajinta ayaa lagu tababaray PyTorch, iyadoo la isticmaalayo ResNet34 - laga soo bilaabo dheelitirka "tayada / xawaaraha fikradda CPU"

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Shaxda shaqaynaysa ee dhuumaha qiimaynta

Falanqaynta shuruudaha dhismaha mashruuca

In meertada nolosha ML Marxaladaha mashruuca ee dhismaha iyo automation-ka ee dejinta moodeelka ayaa inta badan ka mid ah kuwa ugu waqti-qaadka badan iyo kheyraadka-qaadka.

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Meertada nolosha ee mashruuca ML

Mashruucani maaha mid ka reeban - waxaa la go'aamiyay in lagu duubo dhuumaha qiimeynta adeegga internetka, kaas oo u baahan in aan nafteena ku galno dhismaha. Shuruudaha aasaasiga ah ee soo socda ayaa la aqoonsaday:

  1. Kaydinta log midaysan - dhammaan adeegyadu waa inay ku qoraan diiwaannada hal meel, waa inay ku habboon yihiin in la falanqeeyo
  2. Suurtagalnimada miisaan toosan ee adeegga qiimeynta - sida ugu macquulsan ee dhalada
  3. Isla qadarka agabka processor-ka waa in loo qoondeeyaa si loo qiimeeyo sawir kasta si looga fogaado wax ka baxsan qaybinta waqtiga fikradda.
  4. Si degdeg ah (dib u) u dirida adeegyada gaarka ah iyo guud ahaan ba
  5. Awoodda, haddii loo baahdo, in loo isticmaalo walxaha caadiga ah adeegyada kala duwan

naqshadaha

Ka dib markii la falanqeeyay shuruudaha, waxaa caddaatay in nashqadaynta adeeg-yaraha ay si fiican ugu habboon tahay.

Si looga takhaluso madax-xanuunnada aan loo baahnayn, Telegram API ayaa loo doortay inuu yahay safka hore.

Marka hore, aynu eegno jaantuska qaab dhismeedka dhismaha dhammaatay, ka dibna u gudub sharaxaad mid kasta oo ka mid ah qaybaha, iyo sidoo kale qaabaynta habka sawir-qaadista guusha leh.

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Jaantuska qaab dhismeedka qaab dhismeedka la dhameeyay

Aynu si faahfaahsan uga hadalno mid kasta oo ka mid ah qaybaha jaantuska, anagoo tilmaamayna Masuuliyadda Keliya ee habka qiimaynta sawirka.

Adeegga yar ee "attrai-telegram-bot"

Adeegga yar-yar wuxuu koobayaa dhammaan isdhexgalka API-ga Telegram. Waxaa jira 2 xaaladood oo waaweyn: ku shaqeynta muuqaal gaar ah iyo ka shaqeynta natiijada dhuumaha qiimeynta. Aynu eegno labada xaaladood si guud.

Markaad hesho fariin khaas ah oo sawir leh:

  1. Sifeynta ayaa la sameeyaa, oo ka kooban hubinta soo socota:
    • Helitaanka cabbirka sawirka ugu fiican
    • Tirada sawirada isticmaalaha mar hore safka ugu jira
  2. Marka la gudbinayo shaandhaynta bilowga ah, sawirka waxa lagu kaydiyaa mugga wax-qabadka
  3. Hawsha ayaa lagu soo saaray safka "si-qiimaynta", oo ay ku jiraan, waxyaabo kale, dariiqa sawirka sawirka ku yaal
  4. Haddii tillaabooyinka kor ku xusan ay si guul leh u dhammaadaan, isticmaaluhu wuxuu heli doonaa farriin leh qiyaastii wakhtiga habaynta sawirka, taas oo lagu xisaabiyo iyadoo lagu saleynayo tirada hawlaha safka ku jira. Haddii uu khalad dhaco, isticmaaluhu si cad ayaa loogu wargelin doonaa isagoo soo diraya farriin xambaarsan macluumaad ku saabsan waxa khaldamay.

Sidoo kale, adeegan yar-yar, sida shaqaalaha celery, waxa uu dhegeystaa safka "ka dib_qiyaasta", kaas oo loogu talagalay hawlihii soo maray dhuumaha qiimaynta.

Markaad hawl cusub ka helayso " after_estimate ":

  1. Haddii sawirka si guul leh loo habeeyey, waxaanu natiijada u diraynaa isticmaalaha, haddii kale, waxaanu ogeysiinaynaa khalad.
  2. Ka saarida sawirka natiijada dhuumaha qiimaynta

Adeegga yar-yar ee qiimaynta “attrai-estimator”

Adeegga yar-yar waa shaqaale celery wuxuuna koobayaa wax kasta oo la xiriira dhuumaha qiimeynta sawirka. Waxaa jira hal algorithm oo shaqeynaya halkan - aan falanqeyno.

Markaad hawl cusub ka helayso "si_qiyaasta":

  1. Aynu ku socodsiinno sawirka marinka qiimaynta:
    1. Ku rarida sawirka xusuusta
    2. Waxaan u keenay sawirka cabbirka loo baahan yahay
    3. Helitaanka wejiyada oo dhan (MTCNN)
    4. Waxaan qiimeynaa dhammaan wejiyada (waxaan ku duubnaa wejiyada laga helay tallaabadii ugu dambeysay oo aan u galno qeyb iyo fikradda ResNet34)
    5. Samee sawirka u dambeeya
      1. Aan sawiro santuuqyada lagu xirayo
      2. Sawiridda qiimaynta
  2. Tirtirka sawirka caadada ah (asalka ah).
  3. Badbaadinta wax soo saarka dhuunta qiimaynta
  4. Hawsha waxa aanu gelinay safka "ka dib_qiimaynta", kaas oo ay dhagaystaan ​​adeega yar ee "attrai-telegram-bot" ee kor looga hadlay.

Graylog (+ mongoDB + Elasticsearch)

Cawil waa xal loogu talagalay maaraynta log-dhexe. Mashruucan, waxa loo adeegsaday ujeedadii loogu talagalay.

Doorashadu waxay ku dhacday isaga, oo kuma dhicin kii caadiga ahaa Elk xirmo, sababtoo ah ku habboonaanta la shaqeynta Python. Waxa kaliya ee aad u baahan tahay inaad sameyso si aad u gasho Graylog waa ku dar GELFTCPHandler ka xirmada cawlan Inta kale ee maamulayaasha xidid-goobka ee adeegeena python microservice.

Anigoo ah qof horey ula soo shaqeeyay kaliya xirmada ELK, waxaan lahaa waayo-aragnimo guud oo togan markii aan la shaqeynayey Graylog. Waxa kaliya ee niyad-jabka ah waa sarraynta ku jirta sifooyinka Kibana ee ka sarreeya interface-ka shabakadda Graylog.

BakayleMQ

BakayleMQ waa dilaal fariin ku salaysan hab-maamuuska AMQP.

Mashruucan waxa loo isticmaalay sidii ugu xasiloon oo waqti la tijaabiyey dilaaliinta Celery oo ku shaqeeyay hab waara.

Redis

Redis waa NoSQL DBMS ka shaqeeya qaab-dhismeedka xogta-qiimaha muhiimka ah

Mararka qaarkood waxaa jira baahi loo qabo in la isticmaalo walxaha caadiga ah ee hirgeliya qaababka xogta qaarkood ee adeegyadda yar yar ee Python ee kala duwan.

Tusaale ahaan, Redis waxay kaydisaa hashmaabka foomka "telegram_user_id => tirada hawlaha firfircoon ee safka ku jira," taas oo kuu ogolaanaysa inaad xaddido tirada codsiyada hal isticmaale qiime gaar ah oo, sidaas darteed,, ka hortagto weerarrada DoS.

Aynu si rasmi ah u dhigno habka sawir-samaynta guusha leh

  1. Isticmaaluhu waxa uu sawir u soo dirayaa botka Telegram
  2. "attrai-telegram-bot" waxay ka heshaa fariinta Telegram API oo kala saartaa
  3. Hawsha sawirka waxa lagu daraa safka asynchronous "si loo_qiyaso"
  4. Isticmaaluhu wuxuu helayaa fariin leh wakhtiga qiimaynta ee la qorsheeyay
  5. "Attrai-estimator" waxay ka qaadataa hawl ka socota "kuyuuga_qiyamka", waxay ku socodsiisaa qiyaasaha dhuumaha oo waxay soo saartaa hawsha safka "ka dib_qiyaasta"
  6. "attrai-telegram-bot" dhageysiga safka "ka dib, wuxuu u soo dirayaa natiijada isticmaalaha

DevOps

Ugu dambeyntii, ka dib markaad dib u eegto dhismaha, waxaad u gudbi kartaa qaybta xiisaha leh - DevOps

Docker raxan

 

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Docker raxan  - nidaam kooxeed, shaqeyntiisa oo laga hirgeliyay gudaha Matoorka Docker oo laga heli karo sanduuqa dhexdiisa.

Isticmaalka "swarm", dhammaan qanjidhada kutladayada waxaa loo qaybin karaa 2 nooc - shaqaale iyo maamule. Mashiinnada nooca koowaad, kooxo weelal ah ayaa la geynayaa, mashiinnada nooca labaad ayaa mas'uul ka ah cabbirka, isku dheelitirka iyo sifooyinka kale ee qabow. Maareeyayaashu sidoo kale waa shaqaale si caadi ah.

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Koox leh hal maamule hogaamiye iyo saddex shaqaale

Cabbirka kooxda ugu yar ee suurtogalka ah waa 1 noode; hal mishiin ayaa isku mar u dhaqmi doona sidii maamulaha iyo shaqaalaha. Iyadoo lagu salaynayo baaxadda mashruuca iyo shuruudaha ugu yar ee loo dulqaadan karo qaladka, waxaa la go'aamiyay in la isticmaalo habkan.

Markaan horay u sii eegayo, waxaan dhihi doonaa tan iyo markii wax soo saarka ugu horreeya, oo ahaa bartamihii Juun, ma jiraan wax dhibaato ah oo la xidhiidha ururkan kooxeed (laakiin tani macnaheedu maaha in ururkan oo kale uu yahay mid la aqbali karo si kasta oo dhexdhexaad ah. mashaariicda, kuwaas oo ku xiran shuruudaha dulqaadashada).

Docker Stack

Qaabka raxanka, isaga ayaa mas'uul ka ah daad-gureynta xirmooyinka xidhmo xidhmo

Waxay taageertaa isku-habaynta-samaynta-samaynta, taasoo kuu oggolaanaysa inaad sidoo kale adeegsato xulashooyinka hawlgelinta.  

Tusaale ahaan, iyada oo la adeegsanayo cabbirradan, agabka mid kasta oo ka mid ah tusaalooyinka adeegga-yaraha ee qiimayntu way xaddidan yihiin (waxaan u qoondaynnaa N-cores ee tusaale ahaan N, adeeg-yaraha laftiisa waxaan ku xaddidnay tirada koojyada ay adeegsato PyTorch hal)

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

Waxaa muhiim ah in la ogaado in Redis, RabbitMQ iyo Graylog ay yihiin adeegyo dawladeed oo aan si fudud loo cabbiri karin sida "attrai-estimator"

Horudhac su'aasha - waa maxay sababta aan Kubernetes?

Waxay u muuqataa in isticmaalka Kubernetes ee mashaariicda yaryar iyo kuwa dhexdhexaadka ah ay tahay mid ka sarreeya; dhammaan hawlaha lagama maarmaanka ah waxaa laga heli karaa Docker Swarm, taas oo aad u saaxiibtinimo u leh orchestertor weel oo sidoo kale leh caqabad hoose oo gelitaanka.

Infrastructure

Waxaas oo dhan waxaa la geeyey VDS oo leh sifooyinka soo socda:

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

Kadib tijaabinta culeyska maxalliga ah, waxay u muuqatay in qulqulka daran ee isticmaalayaasha, mashiinkani uu ku filnaan doono.

Laakiin, isla markiiba ka dib markii la diray, waxaan dhajiyay xiriirinta mid ka mid ah sawirada sawirada ugu caansan ee CIS (yup, mid la mid ah), ka dib dadku waxay noqdeen kuwo xiiseynaya oo saacado yar gudahood adeeggu si guul leh u farsameeyay tobanaan kun oo sawirro ah. Isla mar ahaantaana, waqtiyada ugu sarreeya, CPU iyo RAM lama isticmaalin xitaa kala badh.

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha
Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Qaar kale oo sawiro

Tirada isticmaalayaasha gaarka ah iyo codsiyada qiimaynta tan iyo markii la diray, iyadoo ku xidhan maalinta

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

Wakhtiga qaybinta qiimaynta dhuunta dhuumaha

Dulmarka guud ee qaab dhismeedka adeegga ee qiimaynta muuqaalka ee ku salaysan shabakadaha neerfaha

natiijooyinka

Si aan u soo koobo, waxaan dhihi karaa in qaab dhismeedka iyo habka loo maro abaabulka weelasha ay si buuxda isu caddeeyeen - xitaa waqtiyada ugu sarreeya ma jirin wax dhibco ah ama hoos u dhac ah oo ku jira wakhtiga farsamaynta. 

Waxaan u maleynayaa in mashaariicda yaryar iyo kuwa dhexdhexaadka ah ee isticmaala wakhtiga dhabta ah ee shabakadaha neerfaha ee CPU ee geeddi-socodkooda ay si guul leh u qaadan karaan dhaqamada lagu qeexay qodobkan.

Waxaan ku dari doonaa in markii hore maqaalku uu dheeraa, laakiin si aanan u dhajin akhrin dheer, waxaan go'aansaday inaan ka tago qodobbada maqaalkan - waxaan dib ugu soo celin doonaa daabacaadyada mustaqbalka.

Waxaad ku dhejin kartaa bot-ka Telegram - @AttraiBot, waxay shaqayn doontaa ugu yaraan ilaa dhamaadka dayrta 2020. Aan ku xasuusiyo in aan xogta isticmaalaha la kaydin - midna sawirada asalka ah, ama natiijooyinka dhuumaha qiimeynta - wax walba waa la burburiyaa ka dib marka la sameeyo.

Source: www.habr.com

Add a comment