এই নির্দেশিকায় বর্ণনা করা হয়েছে কীভাবে XProf টুল ব্যবহার করে টেনসরের জীবনকাল ট্র্যাক করা যায় এবং সেইসব টেনসর বা বাফার শনাক্ত করা যায় যেগুলো সঠিকভাবে মুক্ত হচ্ছে না, যার ফলে মেমোরি লিক বা আউট-অফ-মেমোরি (OOM) ত্রুটি হতে পারে।
সংক্ষিপ্ত বিবরণ
এক্সপ্রফ মেমরি বরাদ্দ এবং অবরাদ্দ প্যাটার্ন বিশ্লেষণের জন্য বেশ কিছু পরিপূরক টুল প্রদান করে:
- মেমরি প্রোফাইল : সময়ের সাথে সাথে মেমরি বরাদ্দ এবং অবরাদ্দকরণের গতিশীল রানটাইম দৃশ্য, যার মধ্যে একটি মেমরি ব্রেকডাউন টেবিল অন্তর্ভুক্ত থাকে;
- মেমরি ভিউয়ার : প্রোগ্রাম ক্রমানুসারে বাফার বরাদ্দের একটি স্থির, কম্পাইলার-ভিত্তিক দৃশ্য;
- ট্রেস ভিউয়ার : অপারেশন সম্পাদন এবং নির্ভরশীলতা প্রদর্শনকারী টাইমলাইন ভিজ্যুয়ালাইজেশন।
প্রথমে আপনার প্রোফাইল তৈরি করে শুরু করুন।
মেমরি প্রোফাইলের সাহায্যে মেমরি টাইমলাইন বিশ্লেষণ করুন
অ্যালোকেশন এবং ডিঅ্যালোকেশনের একটি গতিশীল চিত্র পেতে মেমরি প্রোফাইল টুলটি খুলুন। সঠিক মেমরি আইডি (সাধারণত GPU/TPU-এর জন্য HBM) বেছে নিতে ভুলবেন না।
স্মৃতি সময়রেখা গ্রাফটি পরীক্ষা করুন :
- ক্রমবর্ধমান মেমরি ব্যবহার : হিপ ব্যবহারের (কমলা) ঊর্ধ্বমুখী প্রবণতা লক্ষ্য করুন যা কখনও কমে না, কারণ এটি মেমরি লিকের ইঙ্গিত দিতে পারে।
- ডিঅ্যালোকেশনের অভাব : যদি ধাপে ধাপে মেমরি ক্রমাগত বাড়তে থাকে, তাহলে ডিঅ্যালোকেশন নাও হতে পারে।
- ফ্র্যাগমেন্টেশন স্পাইক : উচ্চ ফ্র্যাগমেন্টেশন অদক্ষ মেমোরি ব্যবস্থাপনার ইঙ্গিত দিতে পারে। আরও তথ্যের জন্য ‘ডায়াগনোজিং ফ্র্যাগমেন্টেশন’ দেখুন।
মেমরি প্রোফাইল সামারি পরীক্ষা করুন : মোট অ্যালোকেশন এবং ডিঅ্যালোকেশনের সংখ্যার মধ্যে মোটামুটি ভারসাম্য থাকা উচিত। প্রোফাইলিং উইন্ডো চলাকালীন যদি ডিঅ্যালোকেশনের সংখ্যার চেয়ে অ্যালোকেশনের সংখ্যা বেশি হয়, তার মানে মেমরিতে টেনসর জমা হচ্ছে।
মেমরি প্রোফাইল টুল ইন্টারফেসের নিচের দিকে থাকা মেমরি ব্রেকডাউন টেবিলটি দেখায় যে, সর্বোচ্চ সময়ে কোন ফ্রেমওয়ার্ক অপারেশনগুলো মেমরি ব্যবহারে সবচেয়ে বেশি অবদান রাখে এবং এটি OOM ত্রুটি বা মেমরি লিক শনাক্ত করতেও ব্যবহার করা যেতে পারে।
মেমরি ভিউয়ারের মাধ্যমে প্রতিটি বাফারের জীবনকাল ট্র্যাক করুন
বাফারের জীবনকালের বিশদ স্ট্যাটিক বিশ্লেষণের জন্য মেমোরি ভিউয়ার ব্যবহার করুন।
- মেমরি ভিউয়ার টুলটি বেছে নিন এবং ড্রপডাউন থেকে আপনি যে HLO মডিউলটি বিশ্লেষণ করতে চান তা নির্বাচন করুন।
মেমরি অ্যালোকেশন টাইমলাইন পরীক্ষা করুন: "Memory Allocation Size (MiB) vs Program Order (HLO Sequence)"-এর পাশে থাকা "timeline" লিঙ্কে ক্লিক করুন। এটি মেমরি অ্যালোকেশনগুলির একটি ভিজ্যুয়ালাইজেশন প্রদর্শন করবে, যেখানে প্রতিটি অ্যালোকেশনের জন্য একটি করে রঙিন বক্সের একটি সিরিজ থাকবে।
- প্রতিটি রঙিন ব্লক একটি বরাদ্দকে প্রতিনিধিত্ব করে;
- প্রতিটি ব্লকের প্রস্থ প্রোগ্রাম ক্রম অনুসারে জীবনকালকে নির্দেশ করে;
- প্রতিটি ব্লকের উচ্চতা বরাদ্দের আকার নির্দেশ করে;
- প্রতিটি ব্লকের উল্লম্ব অবস্থান তার প্রারম্ভিক মেমরি ঠিকানা (অফসেট) নির্দেশ করে।
এমন ব্লকগুলি খুঁজুন যা পুরো প্রোগ্রাম জুড়ে বিস্তৃত, যার অর্থ সেগুলি কখনও ডিঅ্যালোকেট করা হয়নি। ব্লকগুলির উপর মাউস রাখলে, সেখানে প্রদর্শিত HLO অপারেশন সম্পর্কে আরও তথ্য পাওয়া যাবে।

দীর্ঘস্থায়ী অ্যালোকেশন শনাক্ত করতে মেমোরি ভিউয়ার টুলের বাফার চার্টগুলো পরীক্ষা করুন। আপনি যে HLO মডিউলটি পরীক্ষা করতে চান, সেটি নির্বাচন করার পর টুলটির “HLO Ops at Peak Memory Allocation Time” অংশে যান। বাফার চার্টে থাকা প্রতিটি বাফারের উপর মাউস রাখলে, সংশ্লিষ্ট অপারেশন সম্পর্কে আরও তথ্য দেখা যাবে। যদি উপলব্ধ থাকে, লাইন চার্টের উপর ওভারলেটি অ্যালোকেশন এবং ডিঅ্যালোকেশন পয়েন্টগুলো দেখাবে। যে বাফারগুলো কখনও ডিঅ্যালোকেট হয় না, সেগুলোর বারগুলো শেষ পর্যন্ত বিস্তৃত থাকবে।
