Présentation générale de l'architecture du service d'évaluation de l'apparence à partir des réseaux de neurones



introduction



salut!



Dans cet article, je partagerai mon expérience dans la construction d'une architecture de microservice pour un projet utilisant des réseaux de neurones.



Parlons des exigences de l'architecture, examinons divers schémas structurels, analysons chacun des composants de l'architecture finie et évaluons les métriques techniques de la solution.



Bonne lecture!





– .



, , . , , .



, . 



, :





MTCNN. PyTorch, backbone ResNet34 – « / CPU»









ML , , .





ML



– -, . :



  1. – ,
  2. — Bottleneck
  3. - —
  4. () ,
  5. , ,




, .



, , Telegram API.



, , .







, Single Responsibility .



«attrai-telegram-bot»



Telegram API. 2 – . .



:



  1. , :

    • ,
  2. docker volume
  3. “to_estimate” , , , , volume
  4. – , . – , .


, , celery worker, «after_estimate», , .



“after_estimate”:



  1. – , –
  2. ,


«attrai-estimator»



celery worker , . – .



“to_estimate”:



  1. :

    1. (MTCNN)
    2. ( ResNet34)


      1. bounding boxes
  2. ()
  3. “after_estimate”, “attrai-telegram-bot”


Graylog (+ mongoDB + Elasticsearch)



Graylog — . , .



, ELK , Python. , Graylog, GELFTCPHandler graypy root logger handlers python-.



, , ELK , , Graylog. , – Kibana - Graylog.



RabbitMQ



RabbitMQ — AMQP.



Celery durable .



Redis



Redis — NoSQL , « — »



python- , - .



, Redis hashmap «telegram_user_id => », , , DoS-.





  1. Telegram
  2. «attrai-telegram-bot» Telegram API
  3. «to_estimate»
  4. «attrai-estimator» «to_estimate», «after_estimate»
  5. «attrai-telegram-bot», «after_estimate»,


DevOps



, , — DevOps



Docker Swarm



 





Docker Swarm  - , Docker Engine .



«», 2 – worker manager. (), , . .





leader manager worker



– 1 , leader manager worker. , .



, , production-, , , , ( , - - , ).



Docker Stack



«» ( docker services) docker stack



docker-compose , deploy .  



, ( N N , - , PyTorch`, )



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


, Redis, RabbitMQ Graylog — stateful , «attrai-estimator»,



— Kubernetes?



, Kubernetes – , Docker Swarm, user friendly , .





VDS :



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


, , , .



, , (, ), . CPU RAM .









, ,











, , — . 



, , CPU, , .



J'ajouterai qu'au départ l'article était plus volumineux, mais afin de ne pas publier une longue lecture, j'ai décidé d'omettre certains points de cet article - nous y reviendrons dans les prochaines publications.



Vous pouvez piquer le bot dans Telegram - @AttraiBot, cela fonctionnera au moins jusqu'à la fin de l'automne 2020. Laissez-moi vous rappeler - aucune donnée utilisateur n'est stockée - ni les images d'origine, ni les résultats du pipeline d'évaluation - tout est démoli aprÚs le traitement.




All Articles