HeadlinesBriefing favicon HeadlinesBriefing.com

N স্কোয়ার্ড পিজ্জা সমস্যা: 3D স্ক্যান মেমোরি ফাঁদ

Towards Data Science •
×

একটি 12 ইঞ্চি পিজ্জা 8 ইঞ্চি পিজ্জার চেয়ে আধা বেশি নয়। এটি 2.25 গুণ বেশি। এর কারণ পিজ্জার ক্ষেত্রফল এর ব্যাসার্ধের বর্গ অনুসরণ করে। মানুষের সাধারণত ক্ষেত্রফল বা তার রৈখিক সীমার চেয়ে দ্রুত বৃদ্ধি পাওয়া যেকোনো কিছুর বিষয়ে দুর্বল অন্তর্দৃষ্টি থাকে। এই কারণেই পিজ্জেরিয়াগুলি ব্যাস অনুযায়ী দাম নির্ধারণ করে এবং গ্রাহকরা নির্ভরযোগ্যভাবে এমন পিজ্জা কেনে যা তারা শেষ করতে পারে না। অন্তর্দৃষ্টির একই ব্যর্থতা একজন ক্লায়েন্টের 3D স্ক্যান-ম্যাচিং পাইপলাইনে প্রায় এক বছর ধরে ছিল। এটি তাদের বহরের প্রতিটি কর্মীতে দ্বিগুণ মেমোরি খরচ করিয়েছিল। স্কোরিং কোডের কোথাও একটি টেবিল ছিল যাতে প্রতিটি উপাদানের জন্য একটি সারি এবং একটি কলাম ছিল। সেই কোডটি পড়েছেন এমন প্রত্যেকে একটি তালিকা দেখেছেন যখন তাদের একটি বর্গক্ষেত্র দেখা উচিত ছিল। পাইপলাইনটি দুটি পৃষ্ঠ স্ক্যান সারিবদ্ধ করে, একটিকে অন্যটি থেকে বিয়োগ করে এবং যা অবশিষ্ট থাকে তা পরিদর্শন করে। যদি দুটি স্ক্যান একই বস্তুর হয় তবে অবশিষ্টাংশ কিছুই না। স্ক্যানারের একটি শ্রেণীর একটি পরিচিত ব্যর্থতা মোড রয়েছে: যেখানে বস্তুর একটি সমতল মুখ রয়েছে, স্ক্যানার কখনও কখনও এর পরিবর্তে একটি অগভীর পিরামিড রেকর্ড করে। ডেটাতে রেখে দিলে, সেই পিরামিডগুলি প্রকৃত জ্যামিতিক পার্থক্যের মতো দেখায় এবং একটি সত্যিকারের মিল প্রত্যাখ্যান হতে কারণ হয়। তাই আমরা দুটি আইটেমকে মিল হিসাবে চিহ্নিত করার আগে, আমরা পরীক্ষা করি যে অবশিষ্ট খোলসটি পিরামিড আকৃতির কিনা। যদি তা হয় তবে পিরামিড টুকরোগুলি বস্তু থেকে সরানো হয়, ম্যাচের প্রমাণ হিসাবে বিবেচিত হওয়ার পরিবর্তে। একটি পিরামিড সনাক্ত করা মানে এর সমতল ভিত্তি খুঁজে বের করা, এবং স্কোরার পৃষ্ঠের অভিযোজন দেখে ভিত্তি খুঁজে পায়। মেশের প্রতিটি ত্রিভুজের একটি নরমাল (ত্রিভুজের সমতলের লম্ব দিকের একক) আছে এবং সমতল ভিত্তির ত্রিভুজগুলি সবই প্রায় একই দিকে মুখ করে। স্কোরার নরমালগুলিকে ক্লাস্টারে গোষ্ঠীবদ্ধ করে। তারপর এটি প্রতিটি ক্লাস্টার কতটা ছড়িয়ে আছে তা পরিমাপ করে। সবচেয়ে ঘন ক্লাস্টারটি ভিত্তি প্রার্থী, এবং যদি এর বিস্তার একটি থ্রেশহোল্ডের নিচে থাকে তবে ভিত্তিটি গ্রহণ করা হয়। বিস্তার হল সেই জায়গা যেখানে বর্গটি বাস করত। এটি ক্লাস্টারের প্রতিটি জোড়া নরমালের মধ্যে কোসাইনের ভেরিয়েন্স হিসাবে সংজ্ঞায়িত ছিল। এটি বিস্তারের একটি সম্পূর্ণ যুক্তিসঙ্গত পরিমাপ, এবং কোসাইন নিয়মিতভাবে ভেক্টর তুলনা করতে ব্যবহৃত হয় কারণ সেগুলি দ্রুত, গণনা করা সহজ এবং স্কেল অপরিবর্তনীয়। তবে প্রতিটি ক্লাস্টারের জন্য কলটি কোসাইনের একটি N * N টেবিল তৈরি করেছিল। যদি ক্লাস্টারগুলি বড় হয়, যেমন সমতল ওভারল্যাপিং পৃষ্ঠে, এর ফলে একটি ঘন টেবিল তৈরি হয় যা সম্ভাব্যভাবে প্রতিটি সংশ্লিষ্ট নরমালের তুলনা করে। সবচেয়ে খারাপ ক্ষেত্রে, টেবিলটি একটি বর্গ ম্যাট্রিক্সে পরিণত হয়। এটি একটি সমস্যা কারণ এটির জন্য প্রচুর মেমোরি প্রয়োজন, এবং সবচেয়ে খারাপ ক্ষেত্রে প্রয়োজনীয় মেমোরি একটি একক কোসাইন তুলনার জন্য প্রয়োজনীয় মেমোরির N^2 গুণ। এটি কী বোঝায় বেশিরভাগ তুলনায় N ছোট ছিল এবং কেউ খেয়াল করেনি। একই বস্তুর দুটি স্ক্যানের মধ্যে অবশিষ্ট খোলস পাতলা। এটি অনেকগুলি ছোট টুকরোতে বিভক্ত হয়, এবং প্রতিটি টুকরোতে কয়েকশত নরমাল থাকে। কয়েকশত বর্গ কিছুই না। ব্যতিক্রম ছিল সেই ক্ষেত্রে যা পাইপলাইনটি সবচেয়ে বেশি সঠিক করতে চেয়েছিল: ভিন্ন স্ক্যানার দ্বারা নেওয়া একই বস্তুর দুটি স্ক্যান। বিয়োগটি অনেকগুলির পরিবর্তে একটি অবিচ্ছিন্ন পাতলা খোলস রেখে যায়। পরিস্থিতি আরও খারাপ করে, খোলসের পৃষ্ঠগুলি প্রায়-সমান্তরাল ছিল। এর ফলে একটি ক্লাস্টার এবং উচ্চ সাদৃশ্যের একটি ঘন বিস্তার টেবিল তৈরি হয়েছিল। প্রতিটি এন্ট্রিতে আট বাইটে, উচ্চ দশ হাজারের একটি ক্লাস্টারের উপর একটি টেবিল একাই কয়েক গিগাবাইট। সেগুলির দুটি, পাশাপাশি লাইব্রেরি পথে নেওয়া ওয়ার্কিং কপিগুলি, আমরা যে সবচেয়ে খারাপ তুলনাটি প্রোফাইল করেছি সেখানে প্রায় পনেরো গিগাবাইটে পৌঁছেছিল। সেই একটি তুলনা বহরের প্রতিটি কর্মীর জন্য মেমোরির নিম্নসীমা নির্ধারণ করেছিল। প্রতিটি অ্যালাইনমেন্ট কাজ এটি টিকে থাকার জন্য যথেষ্ট বড় একটি স্লটে সরবরাহ করা হয়েছিল, যা সাধারণ কাজের প্রয়োজনের প্রায় দ্বিগুণ।