Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Gabatarwa

Sannu!

A cikin wannan labarin zan raba gwaninta na gina gine-ginen microservice don aikin ta amfani da cibiyoyin sadarwa.

Bari mu yi magana game da buƙatun gine-gine, duba zane-zane daban-daban, bincika kowane ɓangaren gine-ginen da aka gama, da kuma kimanta ma'aunin fasaha na mafita.

Ji dadin karantawa!

Kalmomi kadan game da matsalar da maganinta

Babban ra'ayi shine kimanta sha'awar mutum akan ma'auni goma bisa ga hoto.

A cikin wannan labarin za mu ƙaura daga bayanin duka hanyoyin sadarwa na jijiyoyi da aka yi amfani da su da kuma tsarin shirye-shiryen bayanai da horo. Koyaya, a cikin ɗaya daga cikin wallafe-wallafen masu zuwa, tabbas za mu dawo kan nazarin bututun tantancewa a matakin zurfi.

Yanzu za mu bi ta bututun kimantawa a matakin sama, kuma za mu mai da hankali kan hulɗar microservices a cikin mahallin gine-ginen aikin gabaɗaya. 

Lokacin aiki akan bututun kimanta kyan gani, aikin ya lalace cikin abubuwa masu zuwa:

  1. Zabar fuskoki a hotuna
  2. Rating na kowane mutum
  3. Ba da sakamakon

Na farko yana warware ta sojojin da aka riga aka horar MTCNN. Na biyu, an horar da hanyar sadarwa ta jijiyoyi akan PyTorch, ta amfani da ResNet34 - daga ma'auni "inganci / saurin ra'ayi akan CPU"

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Tsarin aiki na bututun kimantawa

Binciken buƙatun gine-ginen aikin

A cikin tsarin rayuwa ML matakan aikin aiki akan gine-gine da sarrafa kansa na ƙaddamar da samfuri galibi suna cikin mafi yawan cin lokaci da amfani da albarkatu.

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Zagayowar rayuwa na aikin ML

Wannan aikin ba banda ba - an yanke shawarar sanya bututun kimantawa cikin sabis na kan layi, wanda ke buƙatar nutsar da kanmu a cikin gine-gine. An gano mahimman buƙatun masu zuwa:

  1. Haɗin log ɗin ajiya - duk ayyuka yakamata su rubuta rajistan ayyukan a wuri ɗaya, yakamata su dace don tantancewa
  2. Yiwuwar sikeli a kwance na sabis ɗin kima - azaman mafi yuwuwar ƙoƙon kwalba
  3. Ya kamata a ware adadin albarkatun sarrafawa iri ɗaya don kimanta kowane hoto don guje wa ɓarna a cikin rarraba lokaci don ƙididdigewa.
  4. Saurin (sake) aika takamaiman ayyuka biyu da tari gaba ɗaya
  5. Ikon, idan ya cancanta, don amfani da abubuwa gama gari a cikin ayyuka daban-daban

gine

Bayan nazarin abubuwan da ake buƙata, ya zama a bayyane cewa gine-ginen microservice ya dace da kusan daidai.

Don kawar da ciwon kai mara amfani, an zaɓi API ɗin Telegram a matsayin gaba.

Da farko, bari mu kalli tsarin tsarin gine-ginen da aka gama, sannan mu ci gaba zuwa bayanin kowane bangare, sannan mu tsara tsarin sarrafa hoto mai nasara.

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Tsarin tsarin gine-ginen da aka gama

Bari mu yi magana dalla-dalla game da kowanne daga cikin abubuwan da ke cikin zanen, tare da nuna su Nauyi Guda ɗaya a cikin aikin tantance hoto.

Microservice "attrai-telegram-bot"

Wannan microservice yana ɗaukar duk hulɗa tare da API na Telegram. Akwai manyan yanayi guda 2: aiki tare da hoton al'ada da aiki tare da sakamakon bututun kima. Bari mu kalli yanayin duka biyun gaba ɗaya.

Lokacin karɓar saƙon al'ada tare da hoto:

  1. Ana yin tacewa, wanda ya ƙunshi cak kamar haka:
    • Samuwar mafi kyawun girman hoto
    • Adadin hotunan mai amfani da ke cikin layi
  2. Lokacin wucewa da tacewa na farko, ana ajiye hoton a ƙarar docker
  3. Ana samar da ɗawainiya a cikin jerin gwano na "to_estimate", wanda ya haɗa da, a tsakanin sauran abubuwa, hanyar zuwa hoton da ke cikin ƙarar mu.
  4. Idan an kammala matakan da ke sama cikin nasara, mai amfani zai karɓi saƙo tare da kusan lokacin sarrafa hoto, wanda aka ƙididdige shi bisa adadin ayyuka a cikin layi. Idan kuskure ya faru, za a sanar da mai amfani ta hanyar aika saƙo tare da bayani game da abin da ka iya faruwa ba daidai ba.

Hakanan, wannan microservice, kamar ma'aikacin seleri, yana sauraron layin "bayan_estimate", wanda aka yi niyya don ayyukan da suka wuce ta bututun kimantawa.

Lokacin karɓar sabon ɗawainiya daga "bayan_estimate":

  1. Idan an sarrafa hoton cikin nasara, muna aika da sakamakon ga mai amfani, idan ba haka ba, muna sanar da wani kuskure.
  2. Cire hoton wanda shine sakamakon bututun kimantawa

Ƙimar microservice "attrai-estimator"

Wannan microservice ma'aikacin seleri ne kuma yana tattara duk abin da ke da alaƙa da bututun kimanta hoto. Akwai algorithm aiki guda ɗaya kawai a nan - bari mu bincika shi.

Lokacin karɓar sabon ɗawainiya daga "to_estimate":

  1. Bari mu gudanar da hoton ta bututun kimantawa:
    1. Ana loda hoton zuwa ƙwaƙwalwar ajiya
    2. Muna kawo hoton zuwa girman da ake bukata
    3. Nemo duk fuskoki (MTCNN)
    4. Muna kimanta duk fuskoki (muna nannade fuskokin da aka samo a mataki na ƙarshe a cikin tsari da ƙima ResNet34)
    5. Sanya hoton ƙarshe
      1. Bari mu zana akwatunan ɗaure
      2. Zana kima
  2. Share hoto na al'ada (na asali).
  3. Ajiye fitarwa daga bututun kimantawa
  4. Mun sanya aikin a cikin layi na "bayan_estimate", wanda microservice na "attrai-telegram-bot" ke saurare.

Graylog (+ mongoDB + Elasticsearch)

Girki shine mafita don sarrafa log ɗin tsakiya. A cikin wannan aikin, an yi amfani da shi don manufar da aka yi niyya.

Zabin ya fado masa, ba akan wanda aka saba ba ELK tari, saboda dacewar aiki da ita daga Python. Duk abin da kuke buƙatar yi don shiga Graylog shine ƙara GELFTCPHandler daga fakitin launin toka zuwa ga sauran masu kula da tushen logger na python microservice.

A matsayina na wanda ya taɓa yin aiki tare da tarin ELK kawai, Ina da kyakkyawar gogewa gabaɗaya yayin aiki tare da Graylog. Abinda kawai ke damun kai shine fifiko a cikin fasalulluka na Kibana akan mahaɗin yanar gizo na Graylog.

RabbitMQ

RabbitMQ dillalin saƙo ne bisa ka'idar AMQP.

A cikin wannan aikin an yi amfani da shi azaman mafi kwanciyar hankali kuma an gwada lokaci dillali don Celery kuma yayi aiki a cikin yanayi mai dorewa.

Redis

Redis NoSQL DBMS ne wanda ke aiki tare da tsarin bayanai masu ƙima

Wani lokaci ana buƙatar yin amfani da abubuwa gama gari waɗanda ke aiwatar da wasu tsarin bayanai a cikin microservices na Python daban-daban.

Misali, Redis yana adana hashmap na nau'in "telegram_user_id => adadin ayyuka masu aiki a cikin jerin gwano," wanda ke ba ku damar iyakance adadin buƙatun daga mai amfani ɗaya zuwa wata ƙima kuma, ta haka, hana harin DoS.

Bari mu tsara tsarin sarrafa hoto mai nasara

  1. Mai amfani yana aika hoto zuwa Telegram bot
  2. "attrai-telegram-bot" yana karɓar saƙo daga Telegram API kuma yana rarraba shi
  3. Ana ƙara aikin tare da hoton zuwa layin asynchronous "don_estimate"
  4. Mai amfani yana karɓar saƙo tare da lokacin kimantawa da aka tsara
  5. "attrai-estimator" yana ɗaukar ɗawainiya daga jerin gwanon "don_estimate", yana gudanar da ƙididdiga ta cikin bututun kuma ya samar da aikin a cikin jerin gwanon "bayan_estimate".
  6. "attrai-telegram-bot" yana sauraron layin "bayan_estimate", yana aika da sakamakon ga mai amfani.

DevOps

A ƙarshe, bayan nazarin gine-ginen, zaku iya ci gaba zuwa ɓangaren ban sha'awa daidai - DevOps

Ckerungiyar Docker

 

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Ckerungiyar Docker  - tsarin tari, wanda ake aiwatar da ayyukansa a cikin Injin Docker kuma yana samuwa daga cikin akwatin.

Yin amfani da "swarm", duk nodes a cikin gungu namu za a iya raba su zuwa nau'ikan 2 - ma'aikaci da manaja. A kan injuna na nau'in farko, ana tura ƙungiyoyin kwantena (tari), injinan nau'in na biyu suna da alhakin ƙima, daidaitawa da daidaitawa. sauran sanyi fasali. Manajoji kuma ma'aikata ne ta tsohuwa.

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Tari mai jagora guda ɗaya da ma'aikata uku

Matsakaicin girman gungu mai yuwuwa shine kumburi 1; injin guda ɗaya zai yi aiki a lokaci guda azaman manajan jagora da ma'aikaci. Dangane da girman aikin da mafi ƙarancin buƙatun don haƙuri da kuskure, an yanke shawarar yin amfani da wannan hanyar.

Idan muka dubi gaba, zan ce tun lokacin da aka fara bayarwa na farko, wanda ya kasance a tsakiyar watan Yuni, ba a sami matsalolin da ke da alaka da wannan kungiyar ta gungu ba (amma wannan ba yana nufin cewa irin wannan kungiya ta kowace hanya ta yarda da kowane matsakaicin matsakaici). ayyukan, waɗanda ke ƙarƙashin buƙatun haƙuri na kuskure).

Docker Stack

A cikin yanayin swarm, shi ke da alhakin tura tari (saitin sabis na docker) docker tari

Yana goyan bayan tsara tsarin docker, yana ba ku damar ƙara amfani da zaɓuɓɓukan turawa.  

Misali, ta amfani da waɗannan sigogi, albarkatun kowane misalan microservice na kimantawa sun iyakance (muna keɓance N cores don N, a cikin microservice kanta muna iyakance adadin muryoyin da PyTorch ke amfani da shi zuwa ɗaya)

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

Yana da mahimmanci a lura cewa Redis, RabbitMQ da Graylog sabis ne na jihar kuma ba za a iya ƙididdige su da sauƙi kamar "attrai-estimator"

Gabatar da tambayar - me yasa ba Kubernetes ba?

Da alama cewa yin amfani da Kubernetes a cikin ƙananan ayyuka da matsakaitan girman girman kai ne; ana iya samun duk ayyukan da suka wajaba daga Docker Swarm, wanda ke da sauƙin amfani don mawaƙan kwantena kuma yana da ƙaramin shinge don shigarwa.

Hanyoyi

Duk waɗannan an jera su akan VDS tare da halaye masu zuwa:

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

Bayan gwajin lodi na gida, da alama cewa tare da kwararar masu amfani da gaske, wannan injin zai isa.

Amma, nan da nan bayan ƙaddamarwa, na sanya hanyar haɗi zuwa ɗaya daga cikin shahararrun hotuna a cikin CIS (yup, waccan ɗaya), bayan haka mutane sun zama masu sha'awar kuma a cikin 'yan sa'o'i kadan sabis ya yi nasarar sarrafa dubban hotuna. A lokaci guda, a lokacin kololuwar, ba a yi amfani da albarkatun CPU da RAM ko da rabi ba.

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya
Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Wasu ƙarin zane-zane

Adadin masu amfani na musamman da buƙatun kimantawa tun lokacin turawa, ya danganta da ranar

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

Rarraba lokacin tantance bututun kimantawa

Gabaɗaya bayyani na gine-ginen sabis don kimanta bayyanar da ke kan hanyoyin sadarwar jijiya

binciken

A taƙaice, zan iya cewa tsarin gine-gine da kuma kusanci ga ƙungiyar kide-kide na kwantena sun tabbatar da kansu sosai - ko da a lokacin kololuwar babu raguwa ko raguwa a lokacin sarrafawa. 

Ina tsammanin cewa ƙananan ayyuka masu girma da matsakaici waɗanda ke amfani da ƙididdigar ainihin lokaci na hanyoyin sadarwar jijiya akan CPU a cikin tsarin su na iya samun nasarar aiwatar da ayyukan da aka bayyana a cikin wannan labarin.

Zan ƙara da cewa da farko labarin ya fi tsayi, amma don kada in buga dogon karantawa, na yanke shawarar barin wasu batutuwa a cikin wannan labarin - za mu koma gare su a cikin wallafe-wallafen gaba.

Kuna iya buga bot akan Telegram - @AttraiBot, zai yi aiki aƙalla har zuwa ƙarshen kaka 2020. Bari in tunatar da ku cewa ba a adana bayanan mai amfani ba - ba hotunan asali, ko sakamakon bututun kimantawa - komai yana rushewa bayan sarrafawa.

source: www.habr.com

Add a comment