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

সমর্থিত প্ল্যাটফর্মগুলি
TPU এবং GPU উভয়ই সমর্থিত।
মেমোরি ভিউয়ার কম্পোনেন্ট
মেমোরি ভিউয়ার টুলটিতে বেশ কয়েকটি মূল উপাদান রয়েছে:
ব্যবহারকারী নিয়ন্ত্রণ ড্রপডাউন যা আপনাকে আপনার ভিজ্যুয়ালাইজ করা ডেটা কাস্টমাইজ করতে দেয়:
মেমোরির ধরণ: সমর্থিত মেমোরির ধরণগুলি অ্যাক্সিলারেটর-নির্ভর। GPU-গুলির জন্য, হাই ব্যান্ডউইথ মেমোরি (HBM) এবং হোস্ট মেমোরির উপর ফোকাস করা হয়, যেখানে TPU-গুলির জন্য, আপনি VMEM, SMEM, CMEM, সিঙ্ক ফ্ল্যাগ (SFlag), স্পার্সেকোর এবং হোস্ট মেমোরি সহ অন-চিপ মেমোরির ব্যবহার অতিরিক্তভাবে দেখতে পারেন।

HLO মডিউল: এগুলি হল XLA প্রোগ্রাম যা আপনার এক্সিকিউশনের অংশ ছিল। একটি ভালো শুরুর বিন্দু হল প্রায়শই একটি শীর্ষ-স্তরের মডিউল, যা
jit_train_stepবাjit_generateমতো লেবেলযুক্ত। এই ড্রপডাউনটি বাম প্যানেলে প্রদর্শিত হবে।
টেক্সটুয়াল ওভারভিউ বিভাগটি উচ্চ স্তরের তথ্য প্রদান করে যেমন প্রোগ্রামের জন্য প্রয়োজনীয় সর্বোচ্চ মেমোরি বরাদ্দ, আর্গুমেন্ট বনাম অস্থায়ী ভেরিয়েবলের মধ্যে বিভাজন ইত্যাদি। প্যাডিং দ্বারা অতিরিক্ত খরচ আরোপ করা হয়, যা অ্যাক্সিলারেটরে সমর্থিত টেনসরের আকারের উপর বিধিনিষেধের কারণে প্রয়োজন। যদি এই প্যাডিং মোট বরাদ্দের একটি বৃহৎ ভগ্নাংশ হয়, তাহলে এটি একটি অপ্টিমাইজেশন সুযোগ নির্দেশ করতে পারে।

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