মেমরি ভিউয়ার টুল

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

মেমরি ভিউয়ারে প্রদর্শিত সমস্ত তথ্য সম্পূর্ণরূপে স্থির, XLA কম্পাইলার থেকে প্রাপ্ত; ডায়নামিক রানটাইম তথ্য মেমরি প্রোফাইল টুলে উপস্থাপিত হয়।

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

TPU: সমর্থিত

GPU: সমর্থিত

মেমরি ভিউয়ার উপাদান

মেমরি ভিউয়ার বেশ কয়েকটি মূল উপাদান নিয়ে গঠিত:

  1. ব্যবহারকারীর নিয়ন্ত্রণের ড্রপডাউনগুলি যা আপনাকে ডেটা কাস্টমাইজ করতে দেয় যা আপনি কল্পনা করছেন:
    • মেমরির ধরন: সমর্থিত মেমরির ধরনগুলি অ্যাক্সিলারেটর-নির্ভর। GPU-গুলির জন্য, ফোকাস উচ্চ ব্যান্ডউইথ মেমরি (HBM) এবং হোস্ট মেমরির উপর। TPU-এর জন্য, আপনি অতিরিক্তভাবে VMEM, SMEM, CMEM, Sync Flags (SFlag), এবং Sparsecore, সেইসাথে হোস্ট মেমরি সহ অন-চিপ মেমরির ব্যবহার দেখতে পারেন।
    • মডিউল: এইগুলি হল XLA প্রোগ্রাম যা আপনার সম্পাদনের অংশ ছিল। একটি ভাল সূচনা পয়েন্ট প্রায়শই একটি শীর্ষ-স্তরের মডিউল হয়, যা লেবেলযুক্ত কিছু "jit_train_step" বা "jit_generate"।
  2. টেক্সচুয়াল ওভারভিউ বিভাগটি উচ্চ স্তরের তথ্য প্রদান করে যেমন প্রোগ্রামের জন্য প্রয়োজনীয় পিক মেমরি বরাদ্দ, আর্গুমেন্ট বনাম অস্থায়ী ভেরিয়েবলের মধ্যে বিভাজন ইত্যাদি। প্যাডিং দ্বারা ওভারহেড আরোপ করা হয়, এক্সিলারেটরগুলিতে টেনসরের সমর্থিত আকারের উপর বিধিনিষেধ দ্বারা প্রয়োজনীয়। যদি এই প্যাডিংটি মোট বরাদ্দের একটি বড় ভগ্নাংশ হয়, তাহলে এটি একটি অপ্টিমাইজেশন সুযোগ নির্দেশ করতে পারে।
  3. কম্পাইলার দ্বারা নির্ধারিত "মেমরি অ্যালোকেশন সাইজ বনাম প্রোগ্রাম অর্ডার" লাইন চার্ট মেমরি ব্যবহার বনাম প্রোগ্রাম পয়েন্ট (এইচএলও সিকোয়েন্স) প্লট করে।
    • মনে রাখবেন x-অক্ষ সময় নয়
    • চার্টটি বিশেষভাবে নির্বাচিত মডিউলের সর্বোচ্চ মেমরি ব্যবহার সহ প্রোগ্রামের পয়েন্টটিকে হাইলাইট করে। প্রোফাইলার এবং সরঞ্জামগুলি একটি প্রদত্ত চিপ/মেমরিতে মডিউলগুলির সহ-নিবাস সম্পর্কে অবগত নয়৷ যখন প্রতিটি মডিউল কম্পাইল করা হয়, তখন কম্পাইলার মোট বরাদ্দকৃত মেমরির "বেসলাইন" প্রারম্ভিক বিন্দুর সাথে প্রোফাইলটিকে টীকা করে (এর আগে সংকলিত মডিউল দ্বারা), এবং পরবর্তী বরাদ্দ এবং ডিললোকেশন ঘটলে সেখান থেকে উপরে এবং নিচে গণনা করা হয়। যাইহোক, সঞ্চালনের আগে সংকলিত অন্যান্য মডিউল দ্বারা ভবিষ্যতের কোনো বরাদ্দ ধরা হয় না; OOM পরিস্থিতি ডিবাগ করার সময় এটি মনে রাখবেন।
  4. পৃষ্ঠার নীচে বাফার চার্টগুলি সর্বোচ্চ ব্যবহার প্রোগ্রাম পয়েন্টে মেমরির ব্যবহার ভেঙে দেয় (মেমরি ব্যবহারের লাইন চার্টে উল্লম্ব লাইন দ্বারা নির্দেশিত)। তিনটি চার্ট আছে, সবগুলি প্রোগ্রাম দ্বারা বরাদ্দ করা বাফারগুলির সম্পূর্ণ সেট দেখায়, তবে তিনটি ভিন্ন উপায়ে সাজানো হয়েছে:

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

      মনে রাখবেন বাফারের রঙের কোন বিশেষ অর্থ নেই।

  5. চার্টের শিরোনামের পাশের ``টাইমলাইন' লিঙ্কে ক্লিক করলে মেমরি বরাদ্দের একটি ভিজ্যুয়ালাইজেশন দেখা যায়, রঙিন বক্সের একটি সিরিজের সাথে, প্রতি বরাদ্দের একটি। ব্লকের উপরে ঘোরালে বরাদ্দ সম্পর্কে অতিরিক্ত তথ্য পাওয়া যায়; উদাহরণস্বরূপ, HLO op যে বরাদ্দ তৈরি করেছে, বরাদ্দের আকৃতি, ইত্যাদি। ভিজ্যুয়ালাইজেশন আন্তঃপ্রীতি হিসাবে অনুসরণ করা যেতে পারে:

    • x-অক্ষ হল প্রোগ্রামের ক্রম।
    • y-অক্ষের প্রতিটি ব্লকের উচ্চতা বরাদ্দের আকার।
    • প্রতিটি ব্লকের প্রস্থ হল বরাদ্দের জীবনকাল, প্রোগ্রামের ক্রম অনুসারে।
  6. তিনটি চার্টের যেকোন একটি বাফারের উপর ঘোরানো দুটি অতিরিক্ত প্রদর্শন নিয়ে আসে:

    • বাফার কার্ডের সাথে মেলে এমন একটি রঙে মেমরি ব্যবহার লাইন চার্টে একটি ওভারলে, যে বাফারের জীবনকাল নির্দেশ করে; অর্থাৎ, একটি অনুভূমিক বার যার বাম এবং ডান প্রান্তগুলি প্রোগ্রামের ক্রম অনুসারে বরাদ্দকরণ এবং ডিলোকেশন পয়েন্টগুলি নির্দেশ করে৷ অনুভূমিক বারের উচ্চতা শীর্ষ বরাদ্দের তুলনায় নির্বাচিত বাফারের আপেক্ষিক আকারের প্রতিনিধিত্ব করে।
    • একটি পৃথক বাফার বিবরণ কার্ড, সাধারণত বাম দিকে, প্রযোজ্য হিসাবে নির্দিষ্ট অপের বিবরণ সহ। একটি সাধারণ কার্ডে নিম্নলিখিত তথ্য থাকে:
      • নাম: XLA অপারেশনের নাম, যা আপনি গ্রাফ ভিউয়ার বা ট্রেস ভিউয়ারে অনুসন্ধান করতে পারেন।
      • আকার: প্যাডিং সহ এবং ছাড়া বাফার বরাদ্দের আকার।
      • আকৃতি: N-মাত্রিক অ্যারের র‌্যাঙ্ক, আকার এবং ডেটা টাইপ বর্ণনা করে।
      • ফ্রেমওয়ার্ক অপের নাম: এই বরাদ্দের সাথে যুক্ত ফ্রেমওয়ার্ক অপারেশন নাম দেখায়।
      • বরাদ্দের ধরন: বাফার বরাদ্দগুলিকে নিম্নলিখিত প্রকারে শ্রেণীবদ্ধ করে: প্যারামিটার, আউটপুট, থ্রেড-লোকাল এবং অস্থায়ী (যেমন, ফিউশনের মধ্যে বাফার বরাদ্দ)।
      • উত্স: বাফার তৈরি করা অপারেশনের জন্য সোর্স কোড অবস্থান (ফাইল এবং লাইন নম্বর) দেখায়।
      • উত্স স্ট্যাক: অপারেশনের জন্য সম্পূর্ণ কল স্ট্যাক প্রদর্শন করে, এক্সিকিউশন প্রসঙ্গ প্রদান করে যা বাফার বরাদ্দের দিকে পরিচালিত করে।