በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

ግቤት

ሠላም!

በዚህ ጽሑፍ ውስጥ የነርቭ ኔትወርኮችን በመጠቀም ለፕሮጄክት የማይክሮ ሰርቪስ አርክቴክቸር የመገንባት ልምዴን አካፍላለሁ።

ስለ ሥነ ሕንፃ መስፈርቶች እንነጋገር ፣ የተለያዩ መዋቅራዊ ሥዕላዊ መግለጫዎችን እንይ ፣ እያንዳንዱን የተጠናቀቀውን የሕንፃውን አካል መተንተን እና እንዲሁም የመፍትሄውን ቴክኒካዊ መለኪያዎች እንገመግማለን።

በማንበብ ይደሰቱ!

ስለ ችግሩ እና መፍትሄው ጥቂት ቃላት

ዋናው ሀሳብ በፎቶ ላይ በመመርኮዝ የአንድን ሰው ማራኪነት በአስር ነጥብ መለኪያ መገምገም ነው.

በዚህ ጽሑፍ ውስጥ ሁለቱንም ጥቅም ላይ የዋሉትን የነርቭ ኔትወርኮች እና የመረጃ ዝግጅት እና የስልጠና ሂደትን ከመግለጽ እንሄዳለን. ነገር ግን፣ ከሚከተሉት ህትመቶች በአንዱ፣ በእርግጠኝነት የምዘናውን ቧንቧ በጥልቀት በጥልቀት ወደ መተንተን እንመለሳለን።

አሁን በከፍተኛ ደረጃ የግምገማ ቧንቧ መስመር ውስጥ እናልፋለን, እና ከጠቅላላው የፕሮጀክት አርክቴክቸር አንፃር በማይክሮ ሰርቪስ መስተጋብር ላይ እናተኩራለን. 

በማራኪነት ግምገማ ቧንቧው ላይ በሚሰሩበት ጊዜ ስራው በሚከተሉት ክፍሎች ተከፋፍሏል.

  1. በፎቶዎች ውስጥ ፊቶችን መምረጥ
  2. የእያንዳንዱ ሰው ደረጃ
  3. ውጤቱን ይስጡ

የመጀመሪያው በቅድመ-ሠለጠኑ ኃይሎች ይፈታል MTCNN. ለሁለተኛው, convolutional neural አውታረ መረብ በመጠቀም PyTorch ላይ የሰለጠኑ ነበር ResNet34 - በሲፒዩ ላይ ካለው ሚዛን “ጥራት / የፍላጎት ፍጥነት”

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

የግምገማ ቧንቧው ተግባራዊ ንድፍ

የፕሮጀክት አርክቴክቸር መስፈርቶች ትንተና

በህይወት ዑደት ውስጥ ML በሞዴል ማሰማራቱ አርክቴክቸር እና አውቶማቲክ ላይ የሚሰሩ የፕሮጀክት ደረጃዎች ብዙ ጊዜ ከሚወስዱ እና ሀብት ከሚወስዱ መካከል ናቸው።

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

የ ML ፕሮጀክት የሕይወት ዑደት

ይህ ፕሮጀክት የተለየ አይደለም - ውሳኔው የተደረገው የግምገማ ቧንቧ መስመርን ወደ የመስመር ላይ አገልግሎት ለመጠቅለል ነው, ይህም እራሳችንን በሥነ ሕንፃ ውስጥ ማጥለቅን ይጠይቃል. የሚከተሉት መሰረታዊ መስፈርቶች ተለይተዋል-

  1. የተዋሃደ የምዝግብ ማስታወሻ ማከማቻ - ሁሉም አገልግሎቶች በአንድ ቦታ ላይ ምዝግብ ማስታወሻዎችን መጻፍ አለባቸው, ለመተንተን ምቹ መሆን አለባቸው
  2. የግምገማ አገልግሎቱን አግድም የማሳየት ዕድል - እንደ ጠርሙሱ በጣም አይቀርም
  3. ለግምገማ ጊዜ ስርጭትን ለማስወገድ ተመሳሳይ መጠን ያለው ፕሮሰሰር ግብዓት እያንዳንዱን ምስል ለመገምገም መመደብ አለበት።
  4. የሁለቱም ልዩ አገልግሎቶች እና ቁልል በአጠቃላይ በፍጥነት (እንደገና) መሰማራት
  5. አስፈላጊ ከሆነ በተለያዩ አገልግሎቶች ውስጥ የተለመዱ ነገሮችን የመጠቀም ችሎታ

ሥነ ሕንፃ

መስፈርቶቹን ከመረመርን በኋላ፣ የማይክሮ አገልግሎት አርክቴክቸር ከሞላ ጎደል በትክክል እንደሚስማማ ግልጽ ሆነ።

አላስፈላጊ ራስ ምታትን ለማስወገድ የቴሌግራም ኤፒአይ እንደ የፊት ግንባር ተመርጧል።

በመጀመሪያ ፣ የተጠናቀቀውን የሕንፃ ንድፍ አወቃቀር ንድፍ እንይ ፣ ከዚያ ወደ እያንዳንዱ አካላት መግለጫ እንሂድ ፣ እና እንዲሁም የተሳካ የምስል ማቀነባበሪያ ሂደትን መደበኛ እናደርጋለን።

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

የተጠናቀቀው የሕንፃ ንድፍ መዋቅራዊ ንድፍ

በምስል ግምገማ ሂደት ውስጥ ነጠላ ሃላፊነትን በመግለጽ ስለ እያንዳንዱ የስዕላዊ መግለጫው አካላት የበለጠ በዝርዝር እንነጋገር ።

የማይክሮ አገልግሎት “አትራይ-ቴሌግራም-ቦት”

ይህ የማይክሮ አገልግሎት ከቴሌግራም ኤፒአይ ጋር ያለውን ግንኙነት ሁሉ ያጠቃልላል። 2 ዋና ሁኔታዎች አሉ-ከተበጀ ምስል ጋር መስራት እና ከግምገማ ቧንቧው ውጤት ጋር መስራት. ሁለቱንም ሁኔታዎች በአጠቃላይ ሁኔታ እንመልከታቸው።

ከምስል ጋር ብጁ መልእክት ሲደርሱ፡-

  1. ማጣሪያ የሚከናወነው የሚከተሉትን ቼኮች ያካተተ ነው-
    • በጣም ጥሩው የምስል መጠን መገኘት
    • አስቀድሞ ወረፋ ላይ ያሉት የተጠቃሚ ምስሎች ብዛት
  2. የመጀመሪያውን ማጣሪያ ሲያልፉ, ምስሉ በዶከር መጠን ውስጥ ይቀመጣል
  3. በ"ለመገመት" ወረፋ ውስጥ አንድ ተግባር ይፈጠራል፣ ይህም ከሌሎች ነገሮች በተጨማሪ በድምጽ መጠን ውስጥ ወደሚገኘው ምስል የሚወስደውን መንገድ ያካትታል።
  4. ከላይ ያሉት እርምጃዎች በተሳካ ሁኔታ ከተጠናቀቁ, ተጠቃሚው በግምታዊው የምስል ሂደት ጊዜ መልእክት ይቀበላል, ይህም በወረፋው ውስጥ ባሉት ተግባራት ብዛት ላይ ተመስርቶ ይሰላል. ስህተት ከተፈጠረ ተጠቃሚው ምን ስህተት ሊሆን እንደሚችል መረጃ የያዘ መልእክት በመላክ በግልፅ ያሳውቃል።

እንዲሁም, ይህ ማይክሮ ሰርቪስ, ልክ እንደ ሴሊሪ ሰራተኛ, በግምገማ ቧንቧው ውስጥ ላለፉ ተግባራት የታሰበውን "በኋላ_ግምት" ወረፋ ያዳምጣል.

አዲስ ተግባር ከ“በኋላ_ግምት” ሲቀበሉ፡-

  1. ምስሉ በተሳካ ሁኔታ ከተሰራ ውጤቱን ለተጠቃሚው እንልካለን, ካልሆነ, ስለ ስህተት እናሳውቃለን.
  2. የግምገማ ቧንቧው ውጤት የሆነውን ምስል ማስወገድ

የግምገማ ማይክሮ አገልግሎት “attrai-estimator”

ይህ ማይክሮ ሰርቪስ የሴሊሪ ሰራተኛ ሲሆን ከምስል ግምገማ ቧንቧ መስመር ጋር የተያያዙ ሁሉንም ነገሮች ያጠቃልላል. እዚህ አንድ የሚሰራ ስልተ-ቀመር ብቻ ነው - እስቲ እንመርምረው.

አዲስ ተግባር ከ"ለመገመት" ሲቀበሉ፡-

  1. ምስሉን በግምገማ ቧንቧ መስመር እናካሂድ፡-
    1. ምስሉን ወደ ማህደረ ትውስታ በመጫን ላይ
    2. ምስሉን ወደሚፈለገው መጠን እናመጣለን
    3. ሁሉንም መልኮች ማግኘት (MTCNN)
    4. ሁሉንም ፊቶች እንገመግማለን (በመጨረሻው ደረጃ የተገኙትን ፊቶች ወደ ባች እና ResNet34 እንጠቀልላቸዋለን)
    5. የመጨረሻውን ምስል ይስሩ
      1. የማሰሪያ ሳጥኖችን እንሳል
      2. ደረጃ አሰጣጦችን በመሳል ላይ
  2. ብጁ (የመጀመሪያ) ምስልን በመሰረዝ ላይ
  3. ውጤቱን ከግምገማ ቧንቧው በማስቀመጥ ላይ
  4. ተግባሩን ከላይ በተገለፀው የ"አትራይ-ቴሌግራም-ቦት" ማይክሮ አገልግሎት የሚደመጠውን “በኋላ_ግምት” ወረፋ ላይ እናስቀምጣለን።

ግሬይሎግ (+ mongoDB + Elasticsearch)

ሽበት ለተማከለ ሎግ አስተዳደር መፍትሄ ነው። በዚህ ፕሮጀክት ውስጥ ለታቀደለት ዓላማ ጥቅም ላይ ውሏል.

ምርጫው በእሱ ላይ ወድቋል, እና በተለመደው ላይ አይደለም ወ.ዘ.ተ. ቁልል፣ ከፓይዘን ጋር አብሮ በመስራት ምቾት ምክንያት። ወደ ግሬይሎግ ለመግባት የሚያስፈልግዎ ነገር ቢኖር GELFTCPHandlerን ከጥቅሉ ላይ ማከል ነው። ግራጫማ ለተቀሩት የኛ python ማይክሮ አገልግሎት ስርወ ሎገር ተቆጣጣሪዎች።

ከዚህ ቀደም ከኤልኬ ቁልል ጋር ብቻ የሰራ ሰው እንደመሆኔ፣ ከግሬሎግ ጋር ስሰራ አጠቃላይ አዎንታዊ ተሞክሮ ነበረኝ። የሚያስጨንቅ ብቸኛው ነገር በኪባና ባህሪያት ከግራይሎግ ድር በይነገጽ ላይ ያለው የላቀነት ነው።

RabbitMQ

RabbitMQ በ AMQP ፕሮቶኮል ላይ የተመሰረተ መልእክት ደላላ ነው።

በዚህ ፕሮጀክት ውስጥ እንደ ጥቅም ላይ ውሏል በጣም የተረጋጋ እና በጊዜ የተፈተነ ለ Celery ደላላ እና በሚበረክት ሁነታ ውስጥ ሰርቷል.

Redis

Redis ከቁልፍ ዋጋ የውሂብ አወቃቀሮች ጋር የሚሰራ NoSQL DBMS ነው።

አንዳንድ ጊዜ በተለያዩ የፓይዘን ማይክሮ ሰርቪስ ውስጥ የተወሰኑ የመረጃ አወቃቀሮችን የሚተገብሩ የተለመዱ ነገሮችን መጠቀም ያስፈልጋል።

ለምሳሌ፣ Redis ሃሽማፕ ያከማቻል “telegram_user_id => በወረፋው ውስጥ ያሉ ንቁ ተግባራት ብዛት”፣ ይህም ከአንድ ተጠቃሚ የሚቀርቡትን ጥያቄዎች በተወሰነ እሴት እንዲገድቡ እና በዚህም የ DoS ጥቃቶችን ለመከላከል ያስችላል።

የተሳካ የምስል ሂደትን መደበኛ እናድርገው።

  1. ተጠቃሚው ምስልን ወደ ቴሌግራም ቦት ይልካል
  2. "attrai-telegram-bot" ከቴሌግራም ኤፒአይ መልእክት ተቀብሎ ይተነትናል።
  3. ከምስሉ ጋር ያለው ተግባር ወደ አልተመሳሰል ወረፋ "ለመገመት_" ታክሏል
  4. ተጠቃሚው በታቀደው የግምገማ ጊዜ መልእክት ይቀበላል
  5. “attrai-estimator” ከ “ለመገመት” ወረፋ አንድ ተግባር ይወስዳል፣ ግምቶቹን በቧንቧ መስመር ያስኬዳል እና ተግባሩን ወደ “በኋላ_ግምት” ወረፋ ያስወጣል።
  6. "attrai-telegram-bot" "በኋላ_ግምት" ወረፋ በማዳመጥ ውጤቱን ለተጠቃሚው ይልካል

DevOps

በመጨረሻም ፣ ስነ-ህንፃውን ከገመገሙ በኋላ ፣ ወደ ተመሳሳይ አስደሳች ክፍል - DevOps መሄድ ይችላሉ።

የዶከር መንጋ

 

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

የዶከር መንጋ  - ክላስተር ሲስተም ፣ ተግባሩ በ Docker Engine ውስጥ የተተገበረ እና ከሳጥኑ ውስጥ ይገኛል።

“መንጋ”ን በመጠቀም በክላስተር ውስጥ ያሉ ሁሉም አንጓዎች በሁለት ዓይነቶች ሊከፈሉ ይችላሉ - ሠራተኛ እና ሥራ አስኪያጅ። በመጀመሪያው ዓይነት ማሽኖች ላይ የእቃ መያዣዎች (ቁልሎች) ቡድኖች ተዘርግተዋል, የሁለተኛው ዓይነት ማሽኖች የመጠን, የማመጣጠን እና የመቆጣጠር ሃላፊነት አለባቸው. ሌሎች አሪፍ ባህሪያት. አስተዳዳሪዎችም በነባሪነት ሠራተኞች ናቸው።

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

ክላስተር ከአንድ መሪ ​​አስተዳዳሪ እና ሶስት ሰራተኞች ጋር

የሚቻለው ዝቅተኛው የክላስተር መጠን 1 መስቀለኛ መንገድ ነው፤ ነጠላ ማሽን በአንድ ጊዜ እንደ መሪ አስተዳዳሪ እና ሰራተኛ ሆኖ ይሰራል። በፕሮጀክቱ መጠን እና ለስህተቶች መቻቻል ዝቅተኛ መስፈርቶች ላይ በመመስረት, ይህንን ዘዴ ለመጠቀም ተወስኗል.

ወደ ፊት እያየሁ እላለሁ ፣ በሰኔ አጋማሽ ላይ ከነበረው የመጀመሪያው የምርት አቅርቦት ጀምሮ ፣ ከዚህ ክላስተር ድርጅት ጋር የተዛመዱ ችግሮች አልነበሩም (ይህ ማለት ግን እንዲህ ዓይነቱ ድርጅት በማንኛውም መካከለኛ ትልቅ ተቀባይነት አለው ማለት አይደለም) ። ፕሮጀክቶች, ለስህተት መቻቻል መስፈርቶች ተገዢ ናቸው).

ዶከር ቁልል

በመንጋ ሁነታ፣ ቁልሎችን (የዶክ አገልግሎት ስብስቦችን) የማሰማራት ኃላፊነት አለበት። docker ቁልል

በተጨማሪ የማሰማራት አማራጮችን እንድትጠቀም የሚያስችሎት ዶክ አቀናባሪ ውቅሮችን ይደግፋል።  

ለምሳሌ፣ እነዚህን መመዘኛዎች በመጠቀም፣ ለእያንዳንዱ የግምገማ የማይክሮ ሰርቪስ ሁኔታዎች ግብአቶች የተገደቡ ነበሩ (N ኮርሶችን ለኤን አጋጣሚዎች እንመድባለን ፣ በማይክሮ ሰርቪስ እራሱ በፒቶርች የሚጠቀሙትን የኮሮች ብዛት ወደ አንድ እንገድባለን)

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” በቀላሉ ሊመዘኑ እንደማይችሉ ልብ ማለት ያስፈልጋል።

ለጥያቄው ጥላ - ለምን Kubernetes አይሆንም?

ኩበርኔትስን በትንንሽ እና መካከለኛ መጠን ያላቸውን ፕሮጀክቶች መጠቀም ከራስ በላይ የሆነ ይመስላል፤ ሁሉም አስፈላጊ ተግባራት ከዶከር ስዋርም ማግኘት ይቻላል፣ ይህም ለኮንቴይነር ኦርኬስትራ በጣም ለተጠቃሚ ምቹ እና እንዲሁም የመግባት እንቅፋት ዝቅተኛ ነው።

መሰረተ ልማት

ይህ ሁሉ በ VDS ላይ ከሚከተሉት ባህሪያት ጋር ተዘርግቷል.

  • ሲፒዩ: 4 አንጎለ Intel® Xeon® ወርቅ 5120 ሲፒዩ @ 2.20GHz
  • ራም: 8 ጊባ
  • SSD: 160 ጊባ

ከአካባቢው ጭነት ሙከራ በኋላ፣ በከባድ የተጠቃሚዎች ፍሰት ይህ ማሽን በቂ ሊሆን የሚችል ይመስላል።

ነገር ግን ከተሰማሩ በኋላ ወዲያውኑ በሲአይኤስ ውስጥ በጣም ታዋቂ ከሆኑ የምስል ሰሌዳዎች (ዩፕ ፣ ያኛው) ጋር አገናኝ ለጥፌያለሁ ፣ ከዚያ በኋላ ሰዎች ፍላጎት ነበራቸው እና በጥቂት ሰዓታት ውስጥ አገልግሎቱ በአስር ሺዎች የሚቆጠሩ ምስሎችን በተሳካ ሁኔታ አከናውኗል። በተመሳሳይ ጊዜ፣ በከፍታ ጊዜ፣ ሲፒዩ እና ራም ሃብቶች በግማሽ እንኳን ጥቅም ላይ አልዋሉም።

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ
በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

አንዳንድ ተጨማሪ ግራፊክስ

ከተሰማሩበት ጊዜ ጀምሮ የልዩ ተጠቃሚዎች ብዛት እና የግምገማ ጥያቄዎች፣ እንደ ቀን

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

የግምገማ ቧንቧ መስመር ጊዜ ስርጭት

በነርቭ አውታሮች ላይ የተመሰረተ መልክን ለመገምገም የአገልግሎት አርክቴክቸር አጠቃላይ እይታ

ግኝቶች

ለማጠቃለል ያህል የኮንቴይነሮችን አቀነባበር አርክቴክቸር እና አቀራረብ እራሳቸውን ሙሉ በሙሉ ያጸደቁ ናቸው ማለት እችላለሁ - በከፍታ ጊዜያት እንኳን በማቀነባበሪያ ጊዜ ውስጥ ምንም ጠብታዎች ወይም መውደቅ አልነበሩም። 

እኔ እንደማስበው በሲፒዩ ላይ በሲፒዩ ላይ በእውነተኛ ጊዜ የነርቭ ኔትወርኮችን በእውነተኛ ጊዜ ግምት የሚጠቀሙ አነስተኛ እና መካከለኛ መጠን ያላቸው ፕሮጀክቶች በዚህ ጽሑፍ ውስጥ የተገለጹትን ልምዶች በተሳካ ሁኔታ ሊቀበሉ ይችላሉ ።

መጀመሪያ ላይ ጽሁፉ ረዘም ያለ መሆኑን እጨምራለሁ, ነገር ግን ለረጅም ጊዜ ለማንበብ ላለመለጠፍ, በዚህ ጽሑፍ ውስጥ አንዳንድ ነጥቦችን ለመተው ወሰንኩ - ወደፊት በሚታተሙ ህትመቶች ውስጥ ወደ እነርሱ እንመለሳለን.

ቦቱን በቴሌግራም - @AttraiBot ላይ ማድረግ ትችላለህ፣ ቢያንስ እስከ መጸው 2020 መጨረሻ ድረስ ይሰራል። ምንም የተጠቃሚ ውሂብ እንዳልተከማቸ ላስታውስህ - የመጀመሪያዎቹ ምስሎችም ሆነ የግምገማ ቧንቧው ውጤቶች - ሁሉም ነገር ከተሰራ በኋላ ይፈርሳል።

ምንጭ: hab.com

አስተያየት ያክሉ