ብሎግ

ምስል የበዛባቸው የወኪል ዙሮችን በማህደረ ትውስታ ውስጥ ማቆየት

በምርት ውስጥ የነበረ የወኪል ዙር በ952 MB ማህደረ ትውስታ አለቀ፤ ይህ ሲሆን ስድስት የካታሎግ ስካኖችን እየቆረጠ ምርቶችን ከውስጣቸው እየለየ እና ቁርጥራጮቹን እያየ ነበር። አንድ ብቻ መፍሰስ አልነበረም — ሦስት ነበሩ። ለሞዴሉ እያንዳንዱ ጥሪ የዙሩን ምስሎች ሙሉ መጠን ይልክ ነበር፤ ሞዴሉን የምንጠራበት ቤተ-መጻሕፍት እያንዳንዱን ጥያቄ ዙሩ እስኪያልቅ ድረስ ይይዝ ነበር፤ የወኪል ማዕቀፉ መከታተያ ደግሞ የእያንዳንዱን ጥሪ ግብዓቶች፣ ምስሎችን ጨምሮ፣ ለዙሩ በሙሉ ይይዝ ነበር። ሦስቱንም አስተካክለናል፦ ምስሎች ከመላካቸው በፊት ይቀነሳሉ፣ እና የእያንዳንዱ ጥሪ ምስሎች ጥሪው እንደተጠናቀቀ ወዲያው ይለቀቃሉ።

ወኪሉ ምስሎችን እንዴት እንደሚያይ

Mythex ላይ ስትገነባ ወኪሉ በፕሮጀክትህ ደመና ሳንድቦክስ ውስጥ ይሰራል። ምስሎችን ማየት ይችላል — ያያያዝከው ስክሪንሾት፣ ሞክአፕ፣ በፕሮጀክትህ ውስጥ ያለ ፋይል፣ ወይም ራሱ አሁን ያመነጨው ምስል — ከውይይቱ ጋር ወደ ሞዴሉ በመላክ።

ዙር ወኪሉ ለአንድ መልዕክትህ ምላሽ ሲል የሚሰራው ሁሉ ነው። በአንድ ዙር ውስጥ ወኪሉ ሞዴሉን ብዙ ጊዜ ይጠራል፦ ያስባል፣ መሳሪያ ያሄዳል፣ ውጤቱን ያያል፣ እንደገና ያስባል። እያንዳንዱ ጥሪ እስካሁን ያለውን ውይይት ይልካል፣ ይህም የዙሩን ምስሎች ያካትታል፣ በጽሑፍ ተቀይረው (base64፣ ይህም ወደ አንድ ሶስተኛ ያህል ያሰፋቸዋል)።

የተበላሸው ዙር ምክንያታዊ ነገር እያደረገ ነበር። ስድስት የካታሎግ ስካኖችን፣ እያንዳንዳቸው 2.4 MB ገደማ፣ ቆርጦ ምርቶቹን ለየ፣ እና ቁርጥራጮቹን ደግሞ እንደገና እያነበበ ለማረጋገጥ። ይህ ብዙ የሞዴል ጥሪዎች ነው፣ እያንዳንዳቸው በርካታ ትላልቅ ምስሎች ይዘው።

ምክንያት 1፦ እያንዳንዱ ጥሪ ሙሉ መጠን ያላቸውን ምስሎች እንደገና ይልክ ነበር

እያንዳንዱ የሞዴል ጥሪ የጥያቄ አካሉን ከዙሩ ምስሎች ሙሉ መጠን ጋር እንደገና ይገነባ ነበር — በእያንዳንዱ ጥሪ ወደ 20 MB base64። አካሉ በወኪሉ ማህደረ ትውስታ ውስጥ እንደ አንድ ሕብረቁምፊ ስለሚገነባ፣ እያንዳንዱ ጥሪ ሌላ 20 MB ይመድብ ነበር።

ሙሉ መጠን መላኩ ምንም አልጠቀመም። ሞዴሉ ምስሎችን በራሱ ወደ 1,300 ፒክስል ረዥም ጎን ይቀንሳል፣ ስለዚህ ተጨማሪ ፒክስሎች የሚያስከፍሉት ማህደረ ትውስታና የመጫኛ ጊዜ ብቻ ነበር።

መፍትሄው፦ አንድ ጊዜ ቀንስ፣ ትንሽ ላክ

  • ከ400 KB በላይ የሆኑ ምስሎች ከመላካቸው በፊት በረዥሙ ጎን ቢበዛ 1,568 ፒክስል ወደ JPEG ይቀየራሉ። ትንንሾቹ እንዳሉ ይላካሉ።
  • ልወጣው ImageMagick ይጠቀማል፣ እሱም በእያንዳንዱ Mythex ሳንድቦክስ ውስጥ ይገኛል፣ እና በእያንዳንዱ ፋይል አንድ ጊዜ ይሰራል። ዙሩ በእያንዳንዱ ጥሪ ተመሳሳይ ስካኖችን የሚያሳይ ከሆነ የተቀነሰውን ቅጂ እንደገና ይጠቀማል። መሸጎጫው በፋይሉ ዱካ፣ መጠንና የመጨረሻ ለውጥ ጊዜ ይለያል፣ ስለዚህ የተስተካከለ ፋይል እንደገና ይቀየራል፣ እና ማህደረ ትውስታን የሚሞላ ነገር እንዳይሆን የራሱ የመጠን ገደብ አለው።
  • ለአንድ የሞዴል ጥሪ የምስሎች በጀት ከ16 MB ወደ 6 MB ይወርዳል።

ተመሳሳዩ ስድስት ስካኖች አሁን በእያንዳንዱ ጥሪ 19.7 MB ሳይሆን 4.4 MB ያስከፍላሉ።

ምክንያት 2፦ የሞዴሉ ደንበኛ ጥያቄን ፈጽሞ አይለቅም ነበር

የእያንዳንዱ ጥያቄ መጠን አንድ ክፍል ብቻ ነበር። ማህደረ ትውስታው ከጥሪ ወደ ጥሪ ይጨምር ነበር። በstaging አካባቢያችን፣ ተመሳሳይ አይነት ዙር ሙሉ garbage collection ከተደረገ በኋላም 369 MB የቀጥታ ማህደረ ትውስታ ይዞ ነበር — ማንም ሊደርስበት የማይችል ነገር ሁሉ የሚለቀቅበት ነጥብ ነው። የheap ናሙና መውሰድ ሁሉንም እድገት በሞዴል ደንበኛ ቤተ-መጻሕፍቱ የጥያቄ አካሎችን በሚያሳምረው ክፍል ላይ አስቀመጠ።

ምክንያቱ የabort listener ነበር። Stop ስትጫን፣ የዙሩ abort signal ይነሳል፣ እና ያዳመጠ እያንዳንዱ ጥያቄ ይሰረዛል። እኛ ያንን አንድ የዙር-ሰፊ ሲግናል ለእያንዳንዱ ጥያቄ እናልፍ ነበር። የደንበኛ ቤተ-መጻሕፍቱ ለሚሰጠው ሲግናል “abort” listener ይጨምራል — እና በጭራሽ አያስወግደውም።

ስለዚህ የዙሩ እያንዳንዱ ጥያቄ ዙሩ እስኪያልቅ ድረስ ከዙሩ ሲግናል ጋር ተያይዞ ይቆይ ነበር፦ listener-ው የcontroller-ውን ይይዝ ነበር፣ controller-ው ጥያቄውን ይይዝ ነበር፣ ጥያቄው ደግሞ ምስሎቹን ጨምሮ ሙሉ የጥያቄ አካሉን ይይዝ ነበር።

መፍትሄው፦ ለእያንዳንዱ ጥያቄ አንድ ሲግናል

እያንዳንዱ ጥያቄ አሁን የራሱ ሲግናል አለው። ጥያቄው በሚሄድበት ጊዜ ብቻ ከዙሩ ሲግናል ጋር ይገናኛል — ለተለቀቀ ምላሽ እስከ የመጨረሻው ቁራጭ እስኪነበብ ድረስ — እና ወዲያው ከተነበበ በኋላ ይቋረጣል። Stop አሁን በመንገድ ላይ ያለውን ጥያቄ ይደርሳል፣ ነገር ግን የዙሩ ሲግናል በአንድ ጊዜ አንድ listener ብቻ ይይዛል።

ፈተናዎቹ ሦስቱንም ክፍሎች ይሸፍናሉ፦

  • ከ12 ጥሪዎች በኋላ፣ በዙሩ ሲግናል ላይ ምንም listeners አይቀሩም። ከማስተካከሉ በፊት 12 ነበሩ።
  • እያንዳንዳቸው 8 MB የሆኑ 15 ጥያቄዎች ላይ፣ ማህደረ ትውስታው ቋሚ ይቆያል። ከዚያ በፊት በ128 MB ያድግ ነበር።
  • Stop አሁንም በጅረቱ መካከል ያለ ጥያቄን ያቋርጣል።

ምክንያት 3፦ መከታተያው የእያንዳንዱን ጥሪ ግብዓቶች ይይዝ ነበር

የheap ቅጽበታዊ ምስል ሶስተኛ ያዥ አሳይቷል፦ ለእያንዳንዱ የሞዴል ጥሪ ወደ 6 MB ይይዝ ነበር። ይህ የመጣው ከወኪል ማዕቀፉ የክስተት ዥረት ነው። በዙር ውስጥ ያለ እያንዳንዱን የሞዴል ጥሪ የዙሩ ልጅ አድርጎ ይመዘግባል፣ ግብዓቶቹን ጨምሮ፣ ዙሩ እስኪያልቅ ድረስ። በእያንዳንዱ ጥሪ ላይ የተያያዘ እያንዳንዱ ምስል አብሮ በማህደረ ትውስታ ይቆይ ነበር።

መፍትሄው፦ ጥሪው ከተመለሰ በኋላ ምስሎቹን ባዶ አድርግ

ምስሎች የሚያያዙት ለአንድ የተወሰነ የሞዴል ጥሪ በተገነቡ መልዕክቶች ላይ ብቻ ነው። በውይይቱ የተቀመጠ ሁኔታ ውስጥ ፈጽሞ አይቀመጡም። ስለዚህ ጥሪው ከተመለሰ በኋላ፣ በእነዚያ መልዕክቶች ያለውን የምስል ዳታ ባዶ ማድረግ ደህና ነው። መከታተያው የጥሪውን የጽሑፍ መዝገብ ይይዛል፤ ፒክሰሎቹ ይጠፋሉ።

አንድ ዝርዝር ወሳኝ ነበር፦ ምስሎቹ በቦታቸው ባዶ መደረግ አለባቸው። መከታተያው ወደ ተመሳሳዩ የምስል ዳታ በአንድ መልዕክት ላይ ከአንድ በላይ ማጣቀሻ ሊደርስ ይችላል፣ ስለዚህ አዲስ ባዶ ዝርዝር ብንተካ ኦሪጅናሉ — ፒክሰሎቹን ጨምሮ — አሁንም ይደረስበት ነበር። የተቀመጠው የውይይት ሁኔታ ፈጽሞ አይቀየርም።

ፈተናው ወኪሉን ግራፉን በዚያው የክስተት ዥረት ስር ያሄዳል፣ በእያንዳንዱ ጥሪ 4 MB ምስል። ማስተካከያ ከሌለ፣ በ16 ጥሪዎች ላይ ማህደረ ትውስታ በ77 MB አድጎ ነበር። በማስተካከያው፣ ማህደረ ትውስታው ቋሚ ይቆያል።

ከዚህ የወሰድነው

  • የማህደረ ትውስታ ችግሮች ንብርብሮች ሊኖራቸው ይችላል። ሦስት የተለያዩ ምክንያቶች እያንዳንዳቸው ምስሎችን ረዥም ጊዜ ይዘው ነበር፣ እና ዙሩ በማህደረ ትውስታ ውስጥ እንዲቆይ ሦስቱም መወገድ ነበረባቸው።
  • ለቤተ-መጻሕፍት የምትሰጠው ማንኛውም ነገር ሊቆይ ይችላል። ሲግናልና መከታተያ ሁለቱም ለጥሪዎቹ ከሰጠናቸው በላይ ኖረዋል። ማህደረ ትውስታ በእያንዳንዱ ጥሪ ሲያድግ፣ ጥሪው የሚነካቸውን ረዥም ጊዜ የሚኖሩ ነገሮች ተመልከት።
  • ሌላኛው ወገን የሚጥለውን አትላክ። ሞዴሉ በማንኛውም ሁኔታ የሚጥላቸው ፒክሰሎች በእያንዳንዱ ጥሪ ማህደረ ትውስታ አስከፍለውናል።
  • ማህደረ ትውስታን በቀጥታ ፈትን። እያንዳንዱ ማስተካከያ የheap እድገትን ወይም የlistener ብዛትን የሚለካ ፈተና ጋር መጣ፣ ስለዚህ ድግግሞሽ ብልሽት ሳይሆን እንደ ቁጥር ይታያል።

ይህ ከወኪሉ የሁለተኛው የማህደረ ትውስታ ታሪክ ነው፤ በአጭር ጊዜ ውስጥ። የመጀመሪያው 41,000 ጊዜ የተላከ የሂደት መለያ ነበር። ወኪሉ ምን እንደሆነና እንዴት እንደሚሠራ ለማወቅ፣ የAI ወኪሎች ምንድን ናቸው መመሪያችንን እና የውይይት ሰነዶቹን ይመልከቱ።

Mythex · Pricing · በAI ማንኛውንም ነገር ይገንቡ · የድር ጣቢያ እና የመተግበሪያ ቴምፕሌቶች · Mythex ከሌሎች ጋር ሲነጻጸር · የAI መተግበሪያ ግንባታ የቃላት መዝገበ-ቃላት · ነፃ የAI መተግበሪያ መገንቢያ መሳሪያዎች · English

English العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)