ulufalega
Привет!
I lenei tusiga o le a ou faʻasoa atu loʻu poto masani i le fausiaina o se microservice architecture mo se poloketi e faʻaaoga ai neural networks.
Sei o tatou talanoa e uiga i mea e manaʻomia ile fausaga, vaʻavaʻai i ata faʻatulagaina eseese, iloilo vaega taʻitasi o le fausaga maeʻa, ma iloilo foʻi metotia faʻapitoa o le fofo.
Fiafia faitau!
O nai upu e uiga i le faafitauli ma lona fofo
O le manatu autu o le iloilo lea o le aulelei o se tagata i luga o se fua e sefulu-faʻavae i luga o se ata.
I totonu o lenei tusiga o le a tatou o ese mai le faʻamatalaina o fesoʻotaʻiga neural na faʻaaogaina ma le faagasologa o sauniuniga ma aʻoaʻoga. Ae ui i lea, i se tasi o faʻasalalauga o loʻo mulimuli mai, o le a mautinoa lava matou toe foʻi i le suʻesuʻeina o le suʻesuʻega paipa i se tulaga loloto.
O le taimi nei o le a tatou ui atu i le paipa o iloiloga i le tulaga pito i luga, ma o le a taulai atu i le fegalegaleaiga o microservices i le tulaga o le fausaga atoa o galuega faatino.
A'o galue i le paipa su'esu'ega matagofie, na fa'avasega le galuega i vaega nei:
- Filifilia o foliga i ata
- Fa'ailoga o tagata ta'ito'atasi
- Tuuina atu le taunuuga
O le mea muamua e foia e le malosi o le muaʻi aʻoaʻoina
Fa'ata'ita'iga fa'atino o le paipa o iloiloga
Su'esu'ega o mana'oga fa'atulagaina o galuega
I le taamilosaga o le olaga
Taamilosaga ola o se poloketi ML
O lenei poloketi e leai se tuusaunoaga - o le faaiuga na faia e afifi le paipa iloiloga i se auaunaga i luga ole laiga, lea e manaʻomia ai le faatofuina oi tatou i le fausaga. O manaoga faavae nei sa faailoaina:
- Tu'ufa'atasi ogalaau teuina - e tatau i au'aunaga uma ona tusia ni ogalaau i se nofoaga e tasi, e tatau ona faigofie ona fa'avasega
- Avanoa o le fa'ata'atiaga fa'ata'amilo o le 'au'aunaga su'esu'e - e pei o le Bottleneck sili ona foliga mai
- Ole aofa'i tutusa o punaoa fa'agaioiga e tatau ona tu'ufa'atasia e iloilo ai ata ta'itasi ina ia 'alo'ese mai fafo i le fa'asoaina o le taimi mo fa'ailoga.
- Fa'anatinati (toe) fa'apipi'iina o 'au'aunaga fa'apitoa ma le fa'aputuga atoa
- Le gafatia, pe a manaʻomia, faʻaaoga mea masani i auaunaga eseese
atiga
Ina ua uma ona suʻesuʻeina manaʻoga, na iloa ai le fetaui lelei o le fausaga o le microservice.
Ina ia faʻaumatia le ulu le manaʻomia, o le Telegram API na filifilia e avea ma pito i luma.
Muamua, seʻi o tatou vaʻavaʻai i le ata faʻatulagaina o le fausaga maeʻa, ona faʻasolosolo atu lea i se faʻamatalaga o vaega taʻitasi, ma faʻamaonia foi le faagasologa o le faʻaogaina o ata manuia.
Ata fa'atulagaina o le fausaga ua mae'a
Sei o tatou talanoa atili e uiga i vaega taʻitasi o le ata, faʻaalia latou Tiute Taʻitasi i le faagasologa o le iloiloga o ata.
Microservice "attrai-telegram-bot"
O lenei microservice e faʻapipiʻi uma fegalegaleaiga ma le Telegram API. E 2 fa'aaliga autu: galue ma se ata fa'aaganu'u ma galulue fa'atasi ma le fa'ai'uga o se paipa su'esu'e. Se'i o tatou va'ai i fa'aaliga uma e lua i tulaga lautele.
Pe a maua se feʻau masani ma se ata:
- O lo'o fa'atinoina le filiga, e aofia ai siaki nei:
- Avanoa o le tele o ata sili ona lelei
- Numera o ata fa'aoga ua iai i le laina
- Pe a pasia le faʻamama muamua, o le ata e faʻasaoina i totonu o le docker volume
- O se galuega e faia i le "to_estimate" queue, lea e aofia ai, faatasi ai ma isi mea, le ala i le ata o loʻo i totonu o la tatou voluma.
- Afai e faʻamaeʻaina lelei laasaga o loʻo i luga, o le a maua e le tagata faʻaoga se feʻau faʻatasi ma le taimi faʻatulagaina ata, lea e fuafua e faʻatatau i le numera o galuega i le laina. Afai e tupu se mea sese, o le a faʻaalia manino le tagata faʻaoga e ala i le tuʻuina atu o se feʻau faʻamatalaga e uiga i le mea e ono tupu.
E le gata i lea, o lenei microservice, e pei o se tagata faigaluega seleni, e faʻalogo i le "after_estimate" queue, lea e faʻamoemoe mo galuega na pasia i le paipa o iloiloga.
Pe a maua se galuega fou mai le "after_estimate":
- Afai e fa'agasolo lelei le ata, matou te tu'uina atu le taunu'uga i le tagata fa'aoga; a leai, matou te logoina se mea sese.
- Aveese le ata o le taunuuga o le paipa o iloiloga
Iloiloga microservice "attrai-estimator"
O lenei microservice o se tagata faigaluega seleni ma faʻapipiʻi mea uma e fesoʻotaʻi ma le paipa o iloiloga o ata. E naʻo le tasi le algorithm galue iinei - seʻi o tatou iloiloina.
Pe a maua se galuega fou mai le "to_estimate":
- Se'i o tatou fa'ata'ita'iina le ata e ala i le paipa o iloiloga:
- Tu'u le ata i le manatua
- Matou te aumaia le ata i le tele e manaʻomia
- Su'e foliga uma (MTCNN)
- Matou te iloiloina foliga uma (matou te afifiina foliga o loʻo maua i le laasaga mulimuli i totonu o se faʻaputuga ma faʻailoga ResNet34)
- Tuuina atu le ata mulimuli
- Sei o tatou tusi pusa fusi
- Tusia o fa'ailoga
- Aveese se ata masani (muamua).
- Fa'asaoina o mea na maua mai le paipa o iloiloga
- Matou te tuʻuina le galuega i le laina "after_estimate", lea e faʻalogo i ai le "attrai-telegram-bot" microservice o loʻo talanoaina i luga.
Graylog (+ mongoDB + Elasticsearch)
O le filifiliga na pa'u ia te ia, ae le o le filifiliga masani
I le avea ai ma se tasi na galue muamua ma le ELK stack, sa ou maua se aafiaga lelei atoa aʻo ou galue ma Graylog. Pau lava le mea e faʻavaivaia ai o le maualuga i Kibana faʻaalia i luga o le upega tafaʻilagi a Graylog.
LapitiMQ
I lenei poloketi sa faʻaaogaina e pei o
Redis
O nisi taimi e manaʻomia le faʻaogaina o mea masani e faʻatino ai faʻamaumauga faʻamaumauga i totonu ole microservices Python eseese.
Mo se faʻataʻitaʻiga, o loʻo teuina e Redis se faʻafanua o le fomu "telegram_user_id => numera o galuega galue i le laina," lea e mafai ai e oe ona faʻatapulaʻa le numera o talosaga mai le tasi tagata faʻaoga i se tau faʻapitoa ma, o le mea lea, puipuia ai osofaʻiga a le DoS.
Sei o tatou aloaia le faagasologa o le faagasologa o ata manuia
- E auina atu e le tagata faʻaoga se ata i le Telegram bot
- "attrai-telegram-bot" maua se fe'au mai le Telegram API ma fa'asalalau
- O le galuega ma le ata ua faʻaopoopoina i le laina faʻatasi "to_estimate"
- E maua e le tagata fa'aoga se fe'au ma le taimi fuafuaina o iloiloga
- "attrai-estimator" e ave se galuega mai le "to_estimate" queue, faʻatautaia le tala faʻatatau i le paipa ma maua le galuega i le "after_estimate" queue
- "attrai-telegram-bot" fa'alogologo i le laina "after_estimate", e tu'u atu le taunu'uga i le tagata fa'aoga
DevOps
Mulimuli ane, a maeʻa ona toe iloilo le fausaga, e mafai ona e alu i le vaega tutusa lelei - DevOps
Faʻapaʻu Docker
I le faʻaaogaina o se "faʻaʻau", o nodes uma i totonu o la tatou fuifui e mafai ona vaevaeina i ituaiga 2 - tagata faigaluega ma le pule. I luga o masini o le ituaiga muamua, vaega o koneteina (faaputuga) o loʻo faʻapipiʻiina, masini o le lona lua ituaiga e nafa ma le faʻavasegaina, paleni ma
Fa'atasi ma le pule ta'ita'i e to'atasi ma le aufaigaluega e to'atolu
Ole la'ititi la'ititi ole lapopo'a ole 1 node; ole masini e tasi o le a galue i le taimi e tasi e avea ma ta'ita'i pule ma se tagata faigaluega. Faʻavae i luga o le tele o le poloketi ma le manaʻoga maualalo mo le faʻapalepale sese, na filifili ai e faʻaoga lenei auala.
I le vaʻavaʻai i luma, o le a ou fai atu talu mai le tuʻuina atu muamua o le gaosiga, lea na i le ogatotonu o Iuni, e leai ni faʻafitauli e fesoʻotaʻi ma lenei faʻalapotopotoga faʻapipiʻi (ae le o lona uiga o sea faʻalapotopotoga e talia i soʻo se auala-tele. galuega faatino, ia e noatia i manaoga faapalepale sese).
Docker Stack
I le 'au'au, o ia e nafa ma le fa'apipi'iina o fa'aputuga (seti o 'au'aunaga tufuga)
E lagolagoina le docker-compose configs, e mafai ai ona e faʻaogaina faʻapipiʻi faʻasologa.
Mo se faʻataʻitaʻiga, o le faʻaaogaina o nei taʻiala, o punaoa mo iloiloga taʻitasi microservice na faʻatapulaʻaina (matou te tuʻuina atu N cores mo N faʻataʻitaʻiga, i totonu o le microservice lava ia matou te faʻatapulaʻaina le numera o cores faʻaaogaina e PyTorch i le tasi)
attrai_estimator:
image: 'erqups/attrai_estimator:1.2'
deploy:
replicas: 4
resources:
limits:
cpus: '4'
restart_policy:
condition: on-failure
…
E taua le maitauina o Redis, RabbitMQ ma Graylog o ni auaunaga faʻapitoa ma e le mafai ona faʻavasegaina faigofie e pei o le "attrai-estimator"
Faʻailoa le fesili - aisea e le Kubernetes?
E foliga mai o le faʻaaogaina o Kubernetes i galuega laiti ma feololo o loʻo i luga; o mea uma e manaʻomia e mafai ona maua mai le Docker Swarm, lea e faʻaoga-faʻafeiloaʻi mo se koneteina tuʻufaʻatasi ma e maualalo foi le pa e ulufale ai.
Aseta
O nei mea uma na faʻapipiʻiina i luga o le VDS ma uiga nei:
- PPU: 4 autu Intel® Xeon® Auro 5120 PPU @ 2.20GHz
- Mamoe poʻa: 8 GB
- SSD: 160GB
Ina ua maeʻa suʻega uta i le lotoifale, e foliga mai o le tele o le faʻaogaina o tagata faʻaoga, o le a lava lenei masini.
Ae, i le taimi lava na maeʻa ai le faʻapipiʻiina, na ou tuʻuina atu se fesoʻotaʻiga i se tasi o ata sili ona lauiloa i le CIS (yup, o le mea lava lea e tasi), ina ua maeʻa ona fiafia tagata ma i ni nai itula na faʻatautaia lelei ai e le auaunaga le fiasefulu afe o ata. I le taimi lava e tasi, i taimi maualuga, CPU ma le RAM punaoa e leʻi faʻaaogaina le afa.
O nisi ata
Numera o tagata fa'aoga tulaga ese ma talosaga su'esu'e talu mai le fa'atulagaina, fa'atatau ile aso
Su'esu'ega paipa fa'asoa taimi fa'asoa
sailiiliga
I le aotelega, e mafai ona ou fai atu o le fausaga ma le auala i le faʻatulagaina o koneteina na faʻamaonia atoatoa ai i latou lava - e oʻo lava i taimi maualuga e leai ni mataua poʻo le faʻafefe i le taimi o gaioiga.
Ou te manatu o poloketi laiti ma feololo e faʻaogaina le taimi moni o fesoʻotaʻiga neural i luga o le PPU i la latou faʻagasologa e mafai ona faʻaaogaina ma le manuia faiga o loʻo faʻamatalaina i lenei tusiga.
Ou te faʻaopopoina o le taimi muamua na umi ai le tusiga, ae ina ia aua neʻi faʻasalalau se faitauga umi, na ou filifili e aveese nisi o manatu i lenei tusiga - matou te toe foʻi atu ia i latou i lomiga i le lumanaʻi.
E mafai ona e tui le bot i luga o Telegram - @AttraiBot, o le a aoga seʻia oʻo i le faaiuga o le autumn 2020. Sei ou faamanatu atu ia te oe e leai se faʻamatalaga faʻaoga e teuina - e le o ata muamua, poʻo faʻaiʻuga o le paipa o iloiloga - e faʻaumatia mea uma pe a uma le gaioiga.
puna: www.habr.com