前書き
こんにちは!
この記事では、ニューラルネットワークを使用してプロジェクトのマイクロサービスアーキテクチャを構築した経験を共有します。
アーキテクチャ要件について話し、さまざまな構造図を見て、完成したアーキテクチャの各コンポーネントを分析し、ソリューションの技術的指標を評価しましょう。
読書を楽しむ!
問題とその解決策について一言
– .
, , . , , .
, .
, :
MTCNN. PyTorch, backbone ResNet34 – « / CPU»
ML , , .
ML
– -, . :
- – ,
- — Bottleneck
- - —
- () ,
- , ,
, .
, , Telegram API.
, , .
, Single Responsibility .
«attrai-telegram-bot»
Telegram API. 2 – . .
:
- , :
- ,
- docker volume
- “to_estimate” , , , , volume
- – , . – , .
, , celery worker, «after_estimate», , .
“after_estimate”:
- – , –
- ,
«attrai-estimator»
celery worker , . – .
“to_estimate”:
- :
- (MTCNN)
- ( ResNet34)
-
- bounding boxes
- ()
- “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.
Redis
Redis — NoSQL , « — »
python- , - .
, Redis hashmap «telegram_user_id => », , , DoS-.
- Telegram
- «attrai-telegram-bot» Telegram API
- «to_estimate»
- «attrai-estimator» «to_estimate», «after_estimate»
- «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, , .
最初は記事の方が大きかったことを付け加えておきますが、長い間投稿しないように、この記事のいくつかのポイントを省略することにしました。今後の出版物でそれらに戻ります。
Telegramでボットを突くことができます-@ AttraiBot、少なくとも2020年の秋の終わりまで機能します。ユーザーデータは保存されません。元の画像も評価パイプラインの結果も保存されません。処理後にすべてが破棄されます。