Visão geral da arquitetura do serviço para avaliar a aparência com base em redes neurais



Introdução



Olá!



Neste artigo, compartilharei minha experiência na construção de uma arquitetura de microsserviço para um projeto que usa redes neurais.



Vamos falar sobre os requisitos de arquitetura, examinar vários diagramas estruturais, analisar cada um dos componentes da arquitetura concluída e avaliar as métricas técnicas da solução.



Gostar de ler!



Algumas palavras sobre o problema e sua solução



– .



, , . , , .



, . 



, :





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



Acrescentarei que inicialmente o artigo era maior, mas para não postar uma longa leitura, decidi omitir alguns pontos neste artigo - voltaremos a eles em publicações futuras.



Você pode cutucar o bot no Telegram - @AttraiBot, ele funcionará pelo menos até o final do outono de 2020. Deixe-me lembrá-lo - nenhum dado do usuário é armazenado - nem as imagens originais, nem os resultados do pipeline de avaliação - tudo é demolido após o processamento.




All Articles