Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

ho kena

Lumela!

Sehloohong sena ke tla arolelana phihlelo ea ka ea ho haha ​​​​mohaho oa microservice bakeng sa morero o sebelisang marang-rang a neural.

Ha re bue ka litlhoko tsa meralo, sheba lits'oants'o tse fapaneng tsa meralo, re hlahlobe e 'ngoe le e' ngoe ea likarolo tsa moaho o felileng, hape re hlahlobe metrics ea tharollo.

Thabela ho bala!

Mantsoe a seng makae ka bothata le tharollo ea bona

Maikutlo a ka sehloohong ke ho hlahloba khahleho ea motho ka tekanyo ea lintlha tse leshome e thehiloeng setšoantšong.

Sengoliloeng sena re tla tloha hole le ho hlalosa marang-rang a neural a sebelisitsoeng le mokhoa oa ho lokisa le ho koetlisa data. Leha ho le joalo, ho e 'ngoe ea likhatiso tse latelang, ka sebele re tla khutlela ho sekasekeng phaephe ea tekolo ka mokhoa o tebileng.

Joale re tla shebana le lipeipi tsa tlhahlobo maemong a holimo, 'me re tla shebana le tšebelisano ea li-microservices molemong oa moralo oa projeke ka kakaretso. 

Ha ho etsoa lipeipi tsa tlhahlobo ea khahleho, mosebetsi o ile oa aroloa ka likarolo tse latelang:

  1. Ho khetha lifahleho linepe
  2. Lintlha tsa motho ka mong
  3. Fana ka sephetho

Ea pele e rarolloa ke matla a koetliso ea pele MTCNN. Ea bobeli, marang-rang a convolutional neural a koetliselitsoe PyTorch, a sebelisa ResNet34 - ho tloha ho leka-lekana "boleng / lebelo la inference ho CPU"

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Setšoantšo se sebetsang sa phaephe ea tlhahlobo

Tlhahlobo ea litlhoko tsa moralo oa merero

Ka potoloho ea bophelo ML mekhahlelo ea morero oa mosebetsi oa ho aha le ho iketsetsa mekhoa ea ho tsamaisa mohlala hangata ke e 'ngoe ea tse jang nako e ngata le tse jang lisebelisoa.

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Phetoho ea bophelo ba morero oa ML

Morero ona ha se mokhelo - ho entsoe qeto ea ho phuthela lipeipi tsa tlhahlobo hore e be ts'ebeletso ea inthanete, e neng e hloka ho ikakhela ka setotsoana moahong. Ho ile ha hlokomeloa litlhoko tse latelang tsa motheo:

  1. Polokelo e kopaneng ea li-log - lits'ebeletso tsohle li lokela ho ngola lits'oants'o sebakeng se le seng, li lokela ho ba bonolo ho li sekaseka
  2. Monyetla oa ho theola sekala sa ts'ebeletso ea tlhahlobo - joalo ka Bottleneck e ka bang teng
  3. Chelete e ts'oanang ea lisebelisoa tsa processor e lokela ho abeloa ho lekola setšoantšo se seng le se seng e le ho qoba li-outlet kabong ea nako bakeng sa tlhahiso.
  4. Phatlalatso e potlakileng (bocha) ea lits'ebeletso tse ikhethileng le stack ka kakaretso
  5. Bokhoni, haeba ho hlokahala, ho sebelisa lintho tse tloaelehileng litšebeletsong tse fapaneng

mehaho

Kamora ho sekaseka litlhoko, ho ile ha totobala hore meralo ea microservice e lumellana hantle.

E le ho tlosa hlooho e sa hlokahaleng, Telegram API e ile ea khethoa e le sebaka se ka pele.

Ntlha ea pele, a re shebeng setšoantšo sa sebopeho sa mohaho o phethiloeng, ebe re fetela tlhaloso ea karolo e 'ngoe le e' ngoe ea likarolo, hape re hlophise mokhoa oa ho sebetsana ka katleho le setšoantšo.

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Setšoantšo sa sebopeho sa mohaho o phethiloeng

Ha re bue ka ho qaqileng haholoanyane ka e 'ngoe le e' ngoe ea likarolo tsa setšoantšo, re li bonts'a Boikarabello bo le Mong ha ho etsoa tlhahlobo ea litšoantšo.

Microservice "attrai-telegram-bot"

Microservice ena e kenyelletsa litšebelisano tsohle le Telegraph API. Ho na le maemo a 2 a mantlha: ho sebetsa ka setšoantšo sa tloaelo le ho sebetsa ka sephetho sa phaephe ea tlhahlobo. Ha re shebeng maemo a mabeli ka kakaretso.

Ha u amohela molaetsa o iketselitsoeng o nang le setšoantšo:

  1. Filtration e etsoa, ​​​​e kenyelletsang licheke tse latelang:
    • Ho fumaneha ha boholo bo nepahetseng ba setšoantšo
    • Palo ea litšoantšo tsa basebelisi tse seng li le moleng
  2. Ha o fetisa filtara ea pele, setšoantšo se bolokoa ka molumo oa docker
  3. Mosebetsi o hlahisoa moleng oa "ho_estimate", o kenyelletsang, har'a lintho tse ling, tsela e eang setšoantšong se fumanehang bolumong ea rona.
  4. Haeba mehato e ka holimo e phethoa ka katleho, mosebedisi o tla fumana molaetsa o nang le nako e ka bang teng ea ho sebetsana le setšoantšo, e baloang ho latela palo ea mesebetsi e teng moleng. Haeba phoso e etsahala, mosebelisi o tla tsebisoa ka ho hlaka ka ho romella molaetsa o nang le tlhaiso-leseling mabapi le se ka beng se fositse.

Hape, microservice ena, joalo ka mosebeletsi oa celery, e mamela "after_estimate" queue, e reretsoeng mesebetsi e fetileng phaepheng ea tlhahlobo.

Ha o amohela mosebetsi o mocha ho tsoa ho "after_estimate":

  1. Haeba setšoantšo se sebetsoa ka katleho, re romela sephetho ho mosebelisi; haeba ho se joalo, re tsebisa ka phoso.
  2. Ho tlosa setšoantšo seo e leng sephetho sa phaephe ea tlhahlobo

Evaluation microservice "attrai-estimator"

Microservice ena ke mosebeletsi oa celery mme e kenyelletsa ntho e 'ngoe le e' ngoe e amanang le phaephe ea tlhahlobo ea litšoantšo. Ho na le algorithm e le 'ngoe feela e sebetsang mona - a re e hlahlobeng.

Ha u amohela mosebetsi o mocha ho tsoa ho "to_estimate":

  1. Ha re tsamaise setšoantšo ka mokhoa oa tlhahlobo:
    1. Ho kenya setšoantšo mohopolong
    2. Re tlisa setšoantšo ka boholo bo hlokahalang
    3. Ho fumana lifahleho tsohle (MTCNN)
    4. Re lekola lifahleho tsohle (re thatela lifahleho tse fumanoeng mohatong oa ho qetela ho ba batch le inference ResNet34)
    5. Fana ka setšoantšo sa ho qetela
      1. Ha re takang mabokose a tlamang
      2. Ho taka lintlha
  2. Ho hlakola setšoantšo sa tloaelo (sa pele).
  3. Ho boloka tlhahiso ho tsoa ho phaephe ea tlhahlobo
  4. Re beha mosebetsi moleng oa "after_estimate", o mameloa ke "attrai-telegram-bot" microservice e boletsoeng ka holimo.

Graylog (+ mongoDB + Elasticsearch)

Greylog ke tharollo bakeng sa tsamaiso e bohareng ea log. Morerong ona, e ne e sebelisetsoa morero oa eona.

Khetho e ile ea oela ho eena, eseng ho e tloaelehileng Elk stack, ka lebaka la boiketlo ba ho sebetsa le eona ho tsoa Python. Sohle seo u lokelang ho se etsa ho kena ho Graylog ke ho eketsa GELFTCPHndler ho tloha sephutheloana bohlooho ho ba bang kaofela ba sebetsanang le metso ea rona ea python microservice.

Joaloka motho ea kileng a sebetsa feela le ELK stack, ke bile le phihlelo e ntle ka kakaretso ha ke ntse ke sebetsa le Graylog. Ntho feela e nyahamisang ke bophahamo ba likarolo tsa Kibana ho feta sebopeho sa websaete sa Graylog.

MmutlaMQ

MmutlaMQ ke morekisi oa melaetsa o ipapisitseng le protocol ea AMQP.

Morerong ona e ne e sebelisoa e le e tsitsitseng ka ho fetisisa le e lekiloeng ka nako broker bakeng sa Celery mme o sebelitse ka mokhoa o tšoarellang.

Redis

Redis ke NoSQL DBMS e sebetsang ka lisebelisoa tsa data tsa bohlokoa

Ka linako tse ling ho na le tlhokahalo ea ho sebelisa lintho tse tloaelehileng tse kenyang ts'ebetsong mekhoa e itseng ea data ho li-microservices tse fapaneng tsa Python.

Ka mohlala, Redis e boloka hashmap ea foromo "telegram_user_id => palo ea mesebetsi e sebetsang moleng," e leng se u lumellang ho fokotsa palo ea likōpo ho tloha ho mosebedisi a le mong ho ea ho boleng bo itseng, ka hona, ho thibela litlhaselo tsa DoS.

Ha re etseng semmuso ts'ebetso ea katleho ea ts'ebetso ea litšoantšo

  1. Mosebelisi o romella setšoantšo ho bot ea Telegraph
  2. "attrai-telegram-bot" e fumana molaetsa ho tsoa ho Telegraph API ebe oa e fetisa
  3. Mosebetsi o nang le setšoantšo o eketsoa moleng o sa tsitsang oa "ho_estimate"
  4. Mosebedisi o fumana molaetsa o nang le nako ya tekolo e rerilweng
  5. "attrai-estimator" e nka mosebetsi ho tsoa letotong la "ho_estimate", e tsamaisa likhakanyo ka mokhoa oa phepelo ebe e hlahisa mosebetsi moleng oa "after_estimate"
  6. "attrai-telegram-bot" e mametseng "after_estimate" queue, e romela sephetho ho mosebedisi.

Li-DevOps

Qetellong, ka mor'a ho hlahloba meralo, u ka fetela karolong e thahasellisang - DevOps

Sesepa sa Docker

 

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Sesepa sa Docker  - sistimi e kopanyang, ts'ebetso ea eona e kengoang kahare ho Enjene ea Docker mme e fumaneha ka ntle ho lebokose.

Ho sebelisa "sehlopha", li-node tsohle sehlopheng sa rona li ka aroloa ka mefuta e 2 - mosebeletsi le mookameli. Mechineng ea mofuta oa pele, lihlopha tsa lijana (li-stacks) li romelloa, mechini ea mofuta oa bobeli e ikarabella bakeng sa ho lekanya, ho leka-lekanya le likarolo tse ling tse monate. Batsamaisi le bona ke basebetsi ka ho sa feleng.

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Sehlopha se nang le moetapele a le mong le basebetsi ba bararo

Bonyane boholo bo ka khonehang ba sehlopha ke node e le 1; mochini o le mong o tla sebetsa ka nako e le 'ngoe e le molaoli oa moetapele le mosebeletsi. Ho itšetlehile ka boholo ba morero le litlhoko tse fokolang tsa ho mamella liphoso, ho ile ha etsoa qeto ea ho sebelisa mokhoa ona.

Ha ke sheba esale pele, ke tla re ho tloha ha tlhahiso ea pele ea tlhahiso, e neng e le bohareng ba June, ha ho na mathata a amanang le mokhatlo ona oa lihlopha (empa sena ha se bolele hore mokhatlo o joalo o amoheleha ka tsela leha e le efe ho leha e le efe e bohareng-e kholo. merero, e tlas'a litlhoko tsa mamello ea liphoso).

Docker Stack

Ka mokhoa oa ho sesa, o na le boikarabello ba ho tsamaisa mekotla (sete sa lits'ebeletso tsa docker) setlankane sa docker

E ts'ehetsa li-configs tsa docker-compose, tse u lumellang hore u sebelise li-parameter tsa deploy.  

Mohlala, ho sebelisa li-parameter tsena, lisebelisoa bakeng sa ketsahalo e 'ngoe le e' ngoe ea tlhahlobo ea microservice li ne li lekanyelitsoe (re fana ka li-N cores bakeng sa N, ho microservice ka boeona re fokotsa palo ea li-cores tse sebelisoang ke PyTorch ho e le 'ngoe)

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

Ke habohlokoa ho hlokomela hore Redis, RabbitMQ le Graylog ke litšebeletso tsa boemo bo botle 'me li ke ke tsa fokotsoa habonolo joaloka "attrai-estimator"

Ho hlahisa potso - ke hobane'ng ha Kubernetes?

Ho bonahala eka ho sebelisa Kubernetes mererong e nyane le e mahareng ke taba e kholo; ts'ebetso eohle e hlokahalang e ka fumanoa ho Docker Swarm, e bonolo haholo bakeng sa sebini sa 'mino oa lijana hape e na le tšitiso e tlase ea ho kena.

Lisebelisuoa

Tsena tsohle li kentsoe VDS ka litšobotsi tse latelang:

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

Kamora tlhahlobo ea mojaro oa lehae, ho ile ha bonahala eka ka tšubuhlellano e kholo ea basebelisi, mochini ona o tla lekana.

Empa, hang ka mor'a ho romelloa, ke ile ka beha sehokelo ho e 'ngoe ea liboto tsa litšoantšo tse tummeng ka ho fetisisa ho CIS (yup, eona eona eo), ka mor'a moo batho ba ile ba thahasella' me ka lihora tse 'maloa tšebeletso e atlehile ho sebetsana le litšoantšo tse mashome a likete. Ka nako e ts'oanang, ka linako tse phahameng haholo, lisebelisoa tsa CPU le RAM li ne li sa sebelisoe le halofo.

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo
Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Grafiken tse ling hape

Nomoro ea basebelisi ba ikhethileng le likopo tsa tlhahlobo ho tloha ha ba sebelisoa, ho latela letsatsi

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

Kabo ea nako ea lipeipi tsa tlhahlobo

Kakaretso ea kakaretso ea meralo ea litšebeletso bakeng sa tlhahlobo ea ponahalo e thehiloeng ho marang-rang a methapo

fumanoeng ke

Ho akaretsa, nka re meralo le mokhoa oa ho hlophisa lijana li ne li ikemela ka botlalo - leha e le ka nako ea tlhoro ho ne ho se na marotholi kapa ho thella nakong ea ts'ebetso. 

Ke nahana hore merero e menyenyane le e mahareng e sebelisang nako ea sebele ea marang-rang a neural ho CPU ts'ebetsong ea bona e ka atleha ho amohela mekhoa e hlalositsoeng sehloohong sena.

Ke tla eketsa hore qalong sengoloa se ne se le telele, empa e le hore ke se ke ka beha nako e telele, ke ile ka etsa qeto ea ho siea lintlha tse ling sehloohong sena - re tla khutlela ho tsona likhatisong tse tlang.

O ka ts'oara bot ho Telegraph - @AttraiBot, e tla sebetsa bonyane ho fihlela bofelong ba hoetla 2020. E-re ke u hopotse hore ha ho na data ea mosebedisi e bolokiloeng - leha e le litšoantšo tsa pele, kapa liphetho tsa pipeline ea tlhahlobo - ntho e 'ngoe le e' ngoe e senyeha ka mor'a ho sebetsa.

Source: www.habr.com

Eketsa ka tlhaloso