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:
- Ho khetha lifahleho linepe
- Lintlha tsa motho ka mong
- Fana ka sephetho
Ea pele e rarolloa ke matla a koetliso ea pele
Setšoantšo se sebetsang sa phaephe ea tlhahlobo
Tlhahlobo ea litlhoko tsa moralo oa merero
Ka potoloho ea bophelo
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:
- 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
- Monyetla oa ho theola sekala sa ts'ebeletso ea tlhahlobo - joalo ka Bottleneck e ka bang teng
- 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.
- Phatlalatso e potlakileng (bocha) ea lits'ebeletso tse ikhethileng le stack ka kakaretso
- 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.
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:
- 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
- Ha o fetisa filtara ea pele, setšoantšo se bolokoa ka molumo oa docker
- 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.
- 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":
- Haeba setšoantšo se sebetsoa ka katleho, re romela sephetho ho mosebelisi; haeba ho se joalo, re tsebisa ka phoso.
- 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":
- Ha re tsamaise setšoantšo ka mokhoa oa tlhahlobo:
- Ho kenya setšoantšo mohopolong
- Re tlisa setšoantšo ka boholo bo hlokahalang
- Ho fumana lifahleho tsohle (MTCNN)
- Re lekola lifahleho tsohle (re thatela lifahleho tse fumanoeng mohatong oa ho qetela ho ba batch le inference ResNet34)
- Fana ka setšoantšo sa ho qetela
- Ha re takang mabokose a tlamang
- Ho taka lintlha
- Ho hlakola setšoantšo sa tloaelo (sa pele).
- Ho boloka tlhahiso ho tsoa ho phaephe ea tlhahlobo
- Re beha mosebetsi moleng oa "after_estimate", o mameloa ke "attrai-telegram-bot" microservice e boletsoeng ka holimo.
Graylog (+ mongoDB + Elasticsearch)
Khetho e ile ea oela ho eena, eseng ho e tloaelehileng
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
Morerong ona e ne e sebelisoa e le
Redis
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
- Mosebelisi o romella setšoantšo ho bot ea Telegraph
- "attrai-telegram-bot" e fumana molaetsa ho tsoa ho Telegraph API ebe oa e fetisa
- Mosebetsi o nang le setšoantšo o eketsoa moleng o sa tsitsang oa "ho_estimate"
- Mosebedisi o fumana molaetsa o nang le nako ya tekolo e rerilweng
- "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"
- "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
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
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)
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.
Grafiken tse ling hape
Nomoro ea basebelisi ba ikhethileng le likopo tsa tlhahlobo ho tloha ha ba sebelisoa, ho latela letsatsi
Kabo ea nako ea lipeipi tsa tlhahlobo
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