মেমরি প্রোফাইল টুল

আপনি আপনার অ্যাক্সিলারেটরগুলোর সময়ের সাথে সাথে মেমরি ব্যবহারের চিত্র দেখতে মেমরি প্রোফাইল ব্যবহার করতে পারেন। মেমরি প্রোফাইল টুলটি প্রোফাইলিং ব্যবধানের সময় আপনার ডিভাইসের মেমরি ব্যবহার পর্যবেক্ষণ করে। আপনি এই টুলটি ব্যবহার করতে পারেন:

  • সর্বোচ্চ মেমরি ব্যবহার এবং ফ্রেমওয়ার্ক অপস-এর জন্য সংশ্লিষ্ট মেমরি বরাদ্দ চিহ্নিত করার মাধ্যমে আউট অফ মেমরি (OOM) সমস্যা ডিবাগ করুন।
  • মেমরি ফ্র্যাগমেন্টেশন সমস্যা ডিবাগ করুন।

সমর্থিত প্ল্যাটফর্ম

টিপিইউ এবং জিপিইউ উভয়ই সমর্থিত।

মেমরি প্রোফাইল টুল ব্যবহার করে

মেমরি প্রোফাইলের নিম্নলিখিত উপাদানগুলো রয়েছে:

  • পৃষ্ঠার শীর্ষে থাকা হোস্ট আইডি সিলেক্টরটি আপনাকে প্রোফাইল করার জন্য বিভিন্ন হোস্টের মধ্যে থেকে বেছে নেওয়ার সুযোগ দেয়।
  • পৃষ্ঠার শীর্ষে থাকা মেমরি আইডি সিলেক্টরটি আপনাকে প্রোফাইল করা হচ্ছে এমন হোস্টের সাথে সংযুক্ত বিভিন্ন অ্যাক্সিলারেটরের কোনো একটির সাথে যুক্ত হাই ব্যান্ডউইথ মেমরি (HBM), অথবা কিছু ক্ষেত্রে হোস্ট মেমরির উপর ফোকাস করতে দেয়।

    মেমরি প্রোফাইল হোস্ট আইডি এবং মেমরি আইডি নির্বাচক

  • মেমরি প্রোফাইল সামারি এবং মেমরি টাইমলাইন গ্রাফ প্রোফাইলিং সেশন চলাকালীন মেমরি অ্যালোকেশন, ডিঅ্যালোকেশন এবং ব্যবহার সম্পর্কে উচ্চ-স্তরের তথ্য ধারণ করে, যার মধ্যে স্ট্যাক ও হিপ জুড়ে বিভাজন এবং ফ্র্যাগমেন্টেশনের যেকোনো প্রভাব অন্তর্ভুক্ত থাকে।

    • মেমরি প্রোফাইল সামারি প্রোফাইলিং ব্যবধান চলাকালীন মোট অ্যালোকেশন এবং ডিঅ্যালোকেশনের সংখ্যা; নির্বাচিত মেমরি সিস্টেমের মোট মেমরি ধারণক্ষমতা; মডেলটি চালু হওয়ার পর থেকে আজীবন সর্বোচ্চ হিপ ব্যবহারের পরিমাণ (উল্লেখ্য যে, এটি প্রোফাইলিং ব্যবধানের বাইরেও হতে পারে); এবং প্রোফাইলিং ব্যবধানের মধ্যে সর্বোচ্চ মেমরি ব্যবহারের পরিমাণ দেখায়।

      মেমরি প্রোফাইল সারাংশ

    • মেমরি টাইমলাইন গ্রাফটি সময়ের সাথে সাথে মেমরি ব্যবহারের (গ্রাফের বাম দিকের Y-অক্ষ দ্বারা উপস্থাপিত) এবং প্রোফাইলিং ব্যবধান জুড়ে ফ্র্যাগমেন্টেশনের শতাংশের (গ্রাফের ডান দিকের Y-অক্ষ দ্বারা উপস্থাপিত) একটি প্লট দেখায়। X-অক্ষের প্রতিটি নির্দিষ্ট সময়ে, মোট মেমরিকে তিনটি বিভাগে বিভক্ত করা হয়েছে: স্ট্যাক (লাল রঙে), হিপ (কমলা রঙে), এবং ফ্রি (সবুজ রঙে)। নিচের মতো করে একটি নির্দিষ্ট টাইমস্ট্যাম্পের উপর মাউস রাখলে সেই মুহূর্তের মেমরি অ্যালোকেশন/ডিঅ্যালোকেশন ইভেন্টগুলির বিবরণ দেখা যাবে: মেমরি টাইমলাইন গ্রাফে নির্বাচিত টাইমস্ট্যাম্পে মেমরি বরাদ্দ/মুক্তকরণ ইভেন্টগুলির বিবরণসহ একটি তথ্য কার্ড দেখানো হচ্ছে।

  • মেমোরি ব্রেকডাউন টেবিলটি ফ্রেমওয়ার্ক-স্তরের সেইসব অপারেশন (অপারেশন) সম্পর্কে তথ্য প্রদান করে, যেগুলো মেমোরি ব্যবহারে সবচেয়ে বেশি অবদান রাখে। এছাড়াও, যদি কম্পাইলার XProf-কে এই তথ্য সরবরাহ করে, তবে প্রতিটি অপারেশনের জন্য অতিরিক্ত বিবরণ, যেমন তার আকার (shape), ডেটা টাইপ ইত্যাদিও পাওয়া যায়। প্রোফাইলিং উইন্ডোর মধ্যে সর্বোচ্চ ব্যবহারের মুহূর্তে এই টেবিলটি বিবরণগুলো প্রদর্শন করে, যা ‘আউট অফ মেমোরি’ (OOM) পরিস্থিতি ডিবাগ করতে সহায়তা করে।

স্মৃতি প্রোফাইল

অ্যালোকেশন এবং ডিঅ্যালোকেশনগুলো XLA-এর রানটাইম অ্যালোকেটর দ্বারা পরিচালিত (এবং প্রোফাইলে যুক্ত) হয়, যেটি সম্পূর্ণ HBM মেমরি স্পেসের মালিক।

মেমরি প্রোফাইল সামারি এবং মেমরি টাইমলাইন গ্রাফের ফ্র্যাগমেন্টেশন মেট্রিক (শতাংশ হিসাবে) মেমরি ফ্র্যাগমেন্টেশন সমস্যা শনাক্ত করতে সাহায্য করে। একটি উচ্চ ফ্র্যাগমেন্টেশন মান নির্দেশ করে যে, যদিও মোট পর্যাপ্ত খালি মেমরি থাকতে পারে, তা অবিচ্ছিন্ন নয়, এবং এর ফলে একটি বড় অ্যালোকেশন রিকোয়েস্ট ব্যর্থ হতে পারে।

উল্লেখ্য যে, মেমরি প্রোফাইল সাধারণত TPU ওয়ার্কলোডের চেয়ে GPU প্রোফাইলিংয়ের জন্য বেশি আকর্ষণীয় এবং মূল্যবান। TPU এক্সিকিউশন মডেলে সাধারণত মডেল ট্রেনিং বা ইনফারেন্সের পরিবর্তে XLA কম্পাইলার দ্বারা শুরুতেই একটি বড় পরিমাণ মেমরি বরাদ্দ করা হয়। তাই, আপনি প্রায়শই দেখবেন যে অ্যালোকেশন চার্টটি একটি সমতল অনুভূমিক রেখার মতো দেখায়; এই অ্যালোকেশনগুলো সম্ভবত প্রোফাইলের একেবারে শুরুতে ঘটেছিল (যদি রানের সেই পর্যায়ে প্রোফাইলারটি সক্রিয় থাকে), যার ফলে এগুলো সহজে চোখে পড়ে না।

এই টুল এবং মেমরি ভিউয়ার টুলের মধ্যে কিছু প্রধান পার্থক্য হলো:

  • মেমোরি ভিউয়ার সম্পূর্ণরূপে স্থির এবং প্রোগ্রামের ক্রমের উপর দৃষ্টি নিবদ্ধ করে; মেমোরি প্রোফাইল, প্রোফাইলিং ব্যবধান চলাকালীন সময়ের সাথে সাথে একটি গতিশীল চিত্র প্রদান করে।
  • মেমোরি ভিউয়ার প্রতিটি XLA মডিউলের ভিত্তিতে মেমোরি বরাদ্দ প্রদর্শন করে; একাধিক XLA মডিউল সমন্বিত ওয়ার্কলোডের জন্য, মেমোরি প্রোফাইল মেমোরির একটি সার্বিক চিত্র প্রদান করে।