Descripción general de la arquitectura del servicio para evaluar la apariencia basada en redes neuronales



Introducción



¡Hola!



En este artículo, compartiré mi experiencia en la construcción de una arquitectura de microservicio para un proyecto que utiliza redes neuronales.



Hablemos de los requisitos de la arquitectura, observemos varios diagramas estructurales, analicemos cada uno de los componentes de la arquitectura terminada y evaluemos las métricas técnicas de la solución.



¡Disfruta leyendo!



Algunas palabras sobre el problema y su solución.



– .



, , . , , .



, . 



, :





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, , .



Agregaré que inicialmente el artículo era más grande, pero para no publicar una lectura larga, decidí omitir algunos puntos en este artículo; volveremos a ellos en las próximas publicaciones.



Puedes empujar el bot en Telegram - @AttraiBot, funcionará al menos hasta finales de otoño de 2020. Permítame recordarle: no se almacenan datos de usuario, ni las imágenes originales ni los resultados de la tubería de evaluación, todo se demuele después del procesamiento.




All Articles