د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د ننوتلو

سلام!

پدې مقاله کې به زه د عصبي شبکو په کارولو سره د پروژې لپاره د مایکرو سرویس معمارۍ رامینځته کولو تجربه شریک کړم.

راځئ چې د معمارۍ اړتیاو په اړه وغږیږو، مختلف ساختماني ډیاګرامونه وګورو، د بشپړ شوي معمارۍ هرې برخې تحلیل کړو، او د حل تخنیکي معیارونه هم ارزونه وکړو.

مطالعه وکړئ!

د ستونزې او د هغې د حل په اړه یو څو خبرې

اصلي مفکوره دا ده چې د عکس پراساس د لسو نقطو پیمانه د یو شخص جاذبه ارزونه وکړي.

پدې مقاله کې به موږ د کارول شوي عصبي شبکو او د معلوماتو چمتو کولو او روزنې پروسې تشریح کولو څخه لیرې واوسو. په هرصورت، په لاندې خپرونو کې، موږ به خامخا په ژوره کچه د ارزونې پایپ لاین تحلیل ته راستون شو.

اوس به موږ په لوړه کچه د ارزونې پایپ لاین ته لاړ شو، او د پروژې د عمومي جوړښت په شرایطو کې به د مایکرو خدماتو متقابل عمل باندې تمرکز وکړو. 

کله چې د جذابیت ارزونې پایپ لاین باندې کار کول ، دنده په لاندې برخو کې تحلیل شوې وه:

  1. په عکسونو کې د مخونو غوره کول
  2. د هر شخص درجه بندي
  3. پایله وړاندې کړئ

لومړی د مخکې روزل شوي ځواکونو لخوا حل کیږي MTCNN. د دوهم لپاره، په PyTorch کې د قناعت وړ عصبي شبکه روزل شوې وه، په کارولو سره ResNet34 - د توازن څخه "کیفیت / په CPU کې د سرعت سرعت"

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د ارزونې پایپ لاین فعالیت ډیاګرام

د پروژې ساختماني اړتیاو تحلیل

د ژوند دوره کې ML د جوړښت او د ماډل ګمارلو اتومات کولو په برخه کې د پروژې مرحلې اکثرا د ډیری وخت او سرچینې مصرف څخه دي.

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د ML پروژې د ژوند دوره

دا پروژه هیڅ استثنا نه ده - پریکړه شوې وه چې د ارزونې پایپ لاین آنلاین خدمت ته وتړل شي، کوم چې په جوړښت کې ځان ډوبولو ته اړتیا لري. لاندې اساسي اړتیاوې په ګوته شوي:

  1. د لاګ متحد ذخیره - ټول خدمتونه باید په یو ځای کې لاګونه ولیکي، دوی باید د تحلیل لپاره مناسب وي
  2. د ارزونې خدماتو افقی اندازه کولو امکان - د احتمالي خنډ په توګه
  3. د پروسیسر سرچینې ورته مقدار باید د هر عکس ارزولو لپاره تخصیص شي ترڅو د اټکل لپاره د وخت په ویش کې د بهرنیانو مخه ونیول شي.
  4. د دواړو ځانګړو خدماتو ګړندی (بیا) ځای په ځای کول او په ټولیزه توګه سټیک
  5. وړتیا، که اړتیا وي، په مختلفو خدماتو کې د عام شیانو کارولو لپاره

معمارۍ

د اړتیاو تحلیل کولو وروسته، دا څرګنده شوه چې د مایکروسافټ جوړښت تقریبا په بشپړ ډول مناسب دی.

د غیر ضروري سر درد څخه د خلاصون لپاره، د ټیلیګرام API د مخکینۍ پای په توګه غوره شوی.

لومړی، راځئ چې د بشپړ شوي جوړښت ساختماني ډیاګرام وګورو، بیا د هرې برخې توضیحاتو ته لاړ شو، او همدارنګه د بریالي عکس پروسس کولو پروسه رسمي کړه.

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د بشپړ شوي جوړښت ساختماني ډیاګرام

راځئ چې د ډیاګرام د هرې برخې په اړه نور تفصیل سره وغږیږو، د انځور ارزونې په بهیر کې د دوی واحد مسؤلیت په ګوته کوي.

د مایکروسافټ "اترای-ټلیګرام-بوټ"

دا مایکرو سرویس د ټیلیګرام API سره ټول تعاملات پوښي. دوه اصلي سناریوګانې شتون لري: د دودیز عکس سره کار کول او د ارزونې پایپ لاین پایلې سره کار کول. راځئ چې په عمومي شرایطو کې دواړه سناریو وګورو.

کله چې د عکس سره دودیز پیغام ترلاسه کړئ:

  1. فلټریشن ترسره کیږي، د لاندې چکونو څخه جوړه ده:
    • د غوره عکس اندازې شتون
    • د کارونکي عکسونو شمیر لا دمخه په قطار کې دی
  2. کله چې لومړني فلټر کول تیریږي ، عکس د ډاکر حجم کې خوندي کیږي
  3. یوه دنده د "to_esttimate" کتار کې تولید کیږي، کوم چې د نورو شیانو په منځ کې، زموږ په حجم کې موقعیت لرونکي عکس ته لاره شامله ده
  4. که پورتنۍ مرحلې په بریالیتوب سره بشپړې شي ، نو کارونکي به د نږدې عکس پروسس کولو وخت سره یو پیغام ترلاسه کړي ، کوم چې په قطار کې د دندو د شمیر پراساس محاسبه کیږي. که کومه تېروتنه رامنځ ته شي، کارونکي به په ښکاره ډول د یو پیغام په لیږلو سره د معلوماتو په لیږلو سره خبر شي چې ممکن څه غلط شوي وي.

همچنان ، دا مایکرو خدمت ، لکه د سیلري کارګر په څیر ، د "after_esttimate" کتار ته غوږ نیسي ، کوم چې د دندو لپاره دی چې د ارزونې پایپ لاین څخه تیر شوي.

کله چې د "after_esttimate" څخه نوې دنده ترلاسه کړئ:

  1. که عکس په بریالیتوب سره پروسس شي، موږ پایله کارونکي ته لیږو؛ که نه، موږ د یوې تېروتنې په اړه خبر ورکوو.
  2. د هغه عکس لیرې کول چې د ارزونې پایپ لاین پایله ده

د ارزونې مایکرو سرویس "اترای - اټکل کونکی"

دا مایکرو سرویس د سیلري کارګر دی او د عکس ارزونې پایپ لاین پورې اړوند هرڅه پوښي. دلته یوازې یو کاري الګوریتم شتون لري - راځئ چې دا تحلیل کړو.

کله چې د "to_esttimate" څخه نوې دنده ترلاسه کړئ:

  1. راځئ چې انځور د ارزونې پایپ لاین له لارې پرمخ بوځو:
    1. په حافظه کې انځور پورته کول
    2. موږ عکس اړین اندازې ته راوړو
    3. د ټولو مخونو موندل (MTCNN)
    4. موږ ټول مخونه ارزوو (موږ په وروستي مرحله کې موندل شوي مخونه په یوه بسته کې لپټوو او د ResNet34 اټکل کوو)
    5. وروستی انځور وړاندې کړئ
      1. راځئ چې تړل شوي بکسونه رسم کړو
      2. د درجه بندي رسمول
  2. د دودیز (اصلي) عکس حذف کول
  3. د ارزونې پایپ لاین څخه د محصول خوندي کول
  4. موږ دنده د "after_esttimate" کتار کې واچوله، کوم چې د "attrai-telegram-bot" مایکرو سرویس لخوا اوریدل کیږي چې پورته یې بحث شوی.

ګریلوګ (+ mongoDB + Elasticsearch)

ګریلاګ د مرکزي لاګ مدیریت لپاره حل دی. په دې پروژه کې، دا د خپل هدف لپاره کارول کیده.

انتخاب په هغه باندې راوتلی، او په عادي توګه نه ELK stack، د Python څخه د دې سره د کار کولو اسانتیا له امله. ټول هغه څه چې تاسو یې اړتیا لرئ ګریلوګ ته د ننوتلو لپاره وکړئ د کڅوړې څخه د GELFTCPHandler اضافه کول دي خړ زموږ د python مایکرو سرویس پاتې روټ لاګر سمبالونکو ته.

د هغه چا په توګه چې دمخه یې یوازې د ELK سټیک سره کار کړی و ، ما د ګریلوګ سره کار کولو پرمهال عمومي مثبت تجربه درلوده. یوازینی شی چې خپګان دی د ګریلوګ ویب انٹرفیس په پرتله د کبانا ځانګړتیاو کې غوره والی دی.

RabbitMQ

RabbitMQ د AMQP پروتوکول پر بنسټ د پیغام بروکر دی.

په دې پروژه کې دا په توګه کارول کیده ترټولو باثباته او وخت ازمول شوی د سیلري لپاره بروکر او په دوامدار حالت کې کار کوي.

Redis

Redis یو NoSQL DBMS دی چې د کلیدي ارزښت ډیټا جوړښتونو سره کار کوي

ځینې ​​​​وختونه د عام شیانو کارولو ته اړتیا وي چې د Python مایکرو خدماتو کې د ډیټا ځانګړي جوړښتونه پلي کوي.

د بیلګې په توګه، ریډیس د "telegram_user_id => په کتار کې د فعالو دندو شمیره" فارم هش میپ ذخیره کوي، کوم چې تاسو ته اجازه درکوي د یو کارونکي څخه د غوښتنو شمیر یو مشخص ارزښت ته محدود کړي او په دې توګه د DoS بریدونو مخه ونیسي.

راځئ چې د بریالي عکس پروسس کولو پروسه رسمي کړو

  1. کارونکي د ټیلیګرام بوټ ته یو عکس لیږي
  2. "attrai-telegram-bot" د ټیلیګرام API څخه یو پیغام ترلاسه کوي او تحلیل کوي
  3. د عکس سره دنده د غیر متناسب کتار "to_esttimate" ته اضافه شوې
  4. کارونکي د پلان شوي ارزونې وخت سره یو پیغام ترلاسه کوي
  5. "attrai-estimator" د "to_esttimate" کتار څخه کار اخلي، د پایپ لاین له لارې اټکلونه پرمخ وړي او دنده د "after_esttimate" کتار کې تولیدوي
  6. "attrai-telegram-bot" د "after_esttimate" کتار اوریدل، کارونکي ته پایله لیږي

DevOps

په نهایت کې ، د معمارۍ بیاکتنې وروسته ، تاسو کولی شئ مساوي په زړه پورې برخې ته لاړ شئ - DevOps

ډوکر سوی

 

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

ډوکر سوی  - د کلستر کولو سیسټم، چې فعالیت یې د ډاکر انجن دننه پلي کیږي او د بکس څخه بهر شتون لري.

د "سوارم" په کارولو سره، زموږ په کلستر کې ټول نوډونه په دوه ډوله ویشل کیدی شي - کارګر او مدیر. د لومړي ډول ماشینونو کې ، د کانټینرونو ګروپونه (سټیکس) ځای په ځای شوي ، د دوهم ډول ماشینونه د پیمانه کولو ، توازن کولو او تنظیم کولو مسؤلیت لري. نورې ښایسته ځانګړتیاوې. مدیران هم په ترتیب سره کارګران دي.

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د یو مشر مدیر او درې کارمندانو سره کلستر

د کلستر لږترلږه ممکنه اندازه 1 نوډ دی؛ یو واحد ماشین به په ورته وخت کې د مشر مدیر او کارګر په توګه عمل وکړي. د پروژې اندازې او د خطا زغم لپاره لږترلږه اړتیاو پراساس، پریکړه وشوه چې دا طریقه وکاروي.

مخکې لدې ، زه به ووایم چې د لومړي تولید تحویلي راهیسې ، کوم چې د جون په نیمایي کې و ، د دې کلستر سازمان سره هیڅ ډول ستونزې شتون نلري (مګر دا پدې معنی ندي چې دا ډول اداره په هیڅ ډول د منلو وړ نه وي په منځني لوی کې. پروژې، کوم چې د غلطی زغم اړتیاو تابع دي).

د ډاکر سټیک

په سویم حالت کې، هغه د سټیکونو د ځای پرځای کولو مسولیت لري (د ډاکر خدماتو سیټونه) ډاکر سټیک

دا د ډاکر - کمپوز تشکیلاتو ملاتړ کوي ، تاسو ته اجازه درکوي اضافي ځای پرځای کولو اختیارونه وکاروئ.  

د مثال په توګه، د دې پیرامیټونو په کارولو سره، د هرې ارزونې مایکرو سرویس مثالونو لپاره سرچینې محدودې وې (موږ د 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 دولتي خدمتونه دي او دوی نشي کولی په اسانۍ سره د "attrai-estimator" په څیر اندازه شي.

د پوښتنې وړاندوینه - ولې کبرنیټس نه؟

داسې بریښي چې په کوچنیو او متوسط ​​​​کچه پروژو کې د کوبرنیټس کارول یو سر دی؛ ټول اړین فعالیت د ډاکر سوارم څخه ترلاسه کیدی شي ، کوم چې د کانټینر آرکیسټرټر لپاره خورا کارونکي دوستانه دی او د ننوتلو لپاره ټیټ خنډ هم لري.

زیربنا

دا ټول په VDS کې د لاندې ځانګړتیاو سره ځای په ځای شوي:

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

د ځایی بار ازموینې وروسته ، داسې بریښي چې د کاروونکو جدي جریان سره ، دا ماشین به کافي وي.

مګر، د ګمارلو سمدلاسه وروسته، ما په CIS کې یو له خورا مشهور عکس بورډونو سره یو لینک پوسټ کړ (هو، ورته ورته)، وروسته له هغه چې خلک لیوالتیا پیدا کړه او په څو ساعتونو کې خدمت په بریالیتوب سره په لسګونو زره عکسونه پروسس کړل. په ورته وخت کې، په لوړ وختونو کې، د CPU او RAM سرچینې نیمایي هم ندي کارول شوي.

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه
د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

ځینې ​​نور ګرافیکونه

د ځانګړو کاروونکو شمیر او د ارزونې غوښتنې له ګمارلو راهیسې، د ورځې پورې اړه لري

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

د ارزونې پایپ لاین د وخت ویش

د عصبي شبکو پراساس د ظاهري ارزونې لپاره د خدماتو جوړښت عمومي کتنه

موندنو

د لنډیز لپاره ، زه کولی شم ووایم چې د کانټینرونو آرکیسټریشن ته جوړښت او چلند پخپله په بشپړ ډول توجیه کوي - حتی په لوړ وخت کې د پروسس کولو وخت کې هیڅ څاڅکي یا کمیدل شتون نلري. 

زه فکر کوم چې کوچنۍ او متوسطې پروژې چې په CPU کې د دوی په پروسه کې د عصبي شبکو ریښتیني وخت استخراج کاروي کولی شي په بریالیتوب سره پدې مقاله کې تشریح شوي عملونه غوره کړي.

زه به دا اضافه کړم چې په پیل کې مقاله اوږده وه، مګر د دې لپاره چې اوږده لوستل ونه کړي، ما پریکړه وکړه چې پدې مقاله کې ځینې ټکي له لاسه ورکړم - موږ به یې په راتلونکو خپرونو کې بیرته راګرځوو.

تاسو کولی شئ بوټ په ټیلیګرام کې واچوئ - @AttraiBot، دا به لږترلږه د 2020 د مني تر پای پورې کار وکړي. اجازه راکړئ تاسو ته یادونه وکړم چې د کاروونکي هیڅ معلومات نه ساتل کیږي - نه اصلي انځورونه، او نه د ارزونې پایپ لاین پایلې - هرڅه د پروسس کولو وروسته ویجاړ شوي.

سرچینه: www.habr.com

Add a comment