Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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:

  1. Filifilia o foliga i ata
  2. Fa'ailoga o tagata ta'ito'atasi
  3. Tuuina atu le taunuuga

O le mea muamua e foia e le malosi o le muaʻi aʻoaʻoina MTCNN. Mo le lona lua, o se fesoʻotaʻiga neural convolutional na aʻoaʻoina ile PyTorch, faʻaaoga ResNet34 - mai le paleni "lelei / saoasaoa o faʻamatalaga ile PPU"

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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 ML galuega fa'atino laasaga o galuega i le fausaga ma le fa'aautomatika o fa'ata'ita'iga fa'ata'ita'iga e masani lava i totonu o le tele o taimi e alu ai ma fa'aalu alagaoa.

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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:

  1. 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
  2. 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
  3. 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.
  4. Fa'anatinati (toe) fa'apipi'iina o 'au'aunaga fa'apitoa ma le fa'aputuga atoa
  5. 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.

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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:

  1. 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
  2. Pe a pasia le faʻamama muamua, o le ata e faʻasaoina i totonu o le docker volume
  3. 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.
  4. 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":

  1. 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.
  2. 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":

  1. Se'i o tatou fa'ata'ita'iina le ata e ala i le paipa o iloiloga:
    1. Tu'u le ata i le manatua
    2. Matou te aumaia le ata i le tele e manaʻomia
    3. Su'e foliga uma (MTCNN)
    4. 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)
    5. Tuuina atu le ata mulimuli
      1. Sei o tatou tusi pusa fusi
      2. Tusia o fa'ailoga
  2. Aveese se ata masani (muamua).
  3. Fa'asaoina o mea na maua mai le paipa o iloiloga
  4. 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)

graylog o se fofo mo le pulea o ogalaau tutotonu. I lenei poloketi, na faʻaaogaina mo lona faʻamoemoega.

O le filifiliga na pa'u ia te ia, ae le o le filifiliga masani ELK stack, ona o le faigofie o le galue ai mai le Python. Pau lava le mea e tatau ona e faia e te ulufale ai i Graylog o le faʻaopoopoina lea o le GELFTCPHandler mai le afifi efuefu i le vaega o totoe o le a'a logger e fa'aaogaina a matou python microservice.

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

LapitiMQ ose fefa'ataua'iga fe'au e fa'atatau i le AMQP protocol.

I lenei poloketi sa faʻaaogaina e pei o sili ona mautu ma su'esu'eina taimi faioloa mo Seleri ma galue i le tulaga umi.

Redis

Redis o se NoSQL DBMS o loʻo galue i faʻamaumauga autu-taua

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

  1. E auina atu e le tagata faʻaoga se ata i le Telegram bot
  2. "attrai-telegram-bot" maua se fe'au mai le Telegram API ma fa'asalalau
  3. O le galuega ma le ata ua faʻaopoopoina i le laina faʻatasi "to_estimate"
  4. E maua e le tagata fa'aoga se fe'au ma le taimi fuafuaina o iloiloga
  5. "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
  6. "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

 

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

Faʻapaʻu Docker  - se faiga faʻapipiʻi, o lona faʻatinoga o loʻo faʻatinoina i totonu o le Docker Engine ma o loʻo avanoa i fafo o le pusa.

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 isi uiga manaia. O pule foi o tagata faigaluega ona o le faaletonu.

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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) fa'aputuga o lo'o fa'atau

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.

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural
Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

O nisi ata

Numera o tagata fa'aoga tulaga ese ma talosaga su'esu'e talu mai le fa'atulagaina, fa'atatau ile aso

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

Su'esu'ega paipa fa'asoa taimi fa'asoa

Va'aiga lautele o le fausaga o auaunaga mo su'esu'ega foliga e fa'avae i luga o feso'ota'iga neural

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

Faaopoopo i ai se faamatalaga