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

সমর্থিত প্ল্যাটফর্মগুলি
TPU এবং GPU উভয়ই সমর্থিত।
জিপিইউ-এর জন্য ট্রেস ভিউয়ার প্রতিটি জিপিইউ চিপ এবং এর মধ্যে থাকা স্ট্রিমগুলির টাইমলাইনে ইভেন্টগুলিকে গ্রুপ করে, অন্যদিকে টিপিইউ-এর জন্য, এটি টিপিইউ চিপ এবং কোর অনুসারে টাইমলাইনে ইভেন্টগুলি সংগঠিত করে। উভয় ক্ষেত্রেই, ট্রেস ভিউয়ার হোস্ট সিপিইউর জন্য প্রতি-থ্রেডে টাইমলাইনে ইভেন্টগুলি উপস্থাপন করে যার সাথে অ্যাক্সিলারেটরগুলি সংযুক্ত থাকে।

টাইমলাইনের সাথে ইন্টারঅ্যাক্ট করা
ট্রেস ভিউয়ার টাইমলাইন নেভিগেট এবং পরীক্ষা করার জন্য বেশ কয়েকটি সরঞ্জাম এবং পদ্ধতি সরবরাহ করে:
- নেভিগেশন: টাইমলাইনে কোনও ইভেন্টে ক্লিক করার পরে, আপনি নিম্নলিখিত কীবোর্ড শর্টকাটগুলি ব্যবহার করতে পারেন:
- W: জুম ইন করুন।
- S: জুম কমান।
- উ: প্যান বাম।
- ডি: ডানদিকে প্যান।
- টুল সিলেক্টর: একটি ভাসমান টুল সিলেক্টরে এমন টুল থাকে যা আপনি সংশ্লিষ্ট আইকনগুলিতে ক্লিক করে অথবা সংশ্লিষ্ট কীবোর্ড শর্টকাট ব্যবহার করে ব্যবহার করতে পারেন:
- সিলেকশন টুল (১ অথবা !): একটি ইভেন্ট নির্বাচন করতে ক্লিক করুন এবং ডিটেইলস প্যানে এর বিস্তারিত দেখুন। সারাংশ দেখতে ctrl+click এর মাধ্যমে একাধিক ইভেন্ট নির্বাচন করুন।
- প্যান টুল (২ অথবা @): টাইমলাইনটি অনুভূমিকভাবে বা উল্লম্বভাবে সরাতে টেনে আনুন।
- জুম টুল (৩ অথবা #): টাইমলাইনের একটি নির্দিষ্ট অংশে জুম করতে টেনে আনুন।
- টাইমিং টুল (৪ অথবা $): একটি সময়ের ব্যবধান চিহ্নিত করতে টেনে আনুন। চিহ্নিত ব্যবধানের সময়কাল প্রদর্শিত হবে। আপনি একটি নির্বাচন চিহ্নিত করতে এবং এর মোট সময়কাল নির্ধারণ করতে 'm' কী ব্যবহার করতে পারেন।
- নির্বাচিত ইভেন্টগুলিতে জুম করুন (f): এক বা একাধিক ইভেন্ট নির্বাচন করুন এবং টাইমলাইনের সেই অংশটি দ্রুত জুম করতে 'f' কী টিপুন। এটি একটি নির্দিষ্ট প্রশিক্ষণ ধাপে ফোকাস করার জন্য কার্যকর।

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

সাধারণ বিভাগ এবং ট্র্যাক
ট্রেস ভিউয়ার নিম্নলিখিত বিভাগ এবং ট্র্যাকগুলি প্রদান করে।
- প্রতিটি TPU নোডের জন্য একটি করে অংশ, নিম্নলিখিত ট্র্যাকগুলি সহ:
- ধাপ : ব্যবহারকারীর প্রোগ্রাম বা কাঠামোতে যথাযথভাবে টীকা দেওয়া থাকলে, TPU কোরে চলমান প্রশিক্ষণ পদক্ষেপগুলির সময়কাল দেখায়।
- XLA মডিউল : XLA প্রোগ্রামটি কার্যকর করা হচ্ছে।
- XLA Ops : TPU কোরে চলমান XLA HLO অপারেশনগুলি দেখায়। প্রতিটি উচ্চ-স্তরের ফ্রেমওয়ার্ক অপারেশন (উদাহরণস্বরূপ JAX, Tensorflow, অথবা PyTorch) এক বা একাধিক XLA অপারেশনে অনুবাদ করা হয়, যা পরে TPU তে চালানোর জন্য কম্পাইল করা হয়।
- XLA TraceMe : ব্যবহারকারী-নির্দিষ্ট টীকাগুলি তাদের কোডে লজিক্যাল ইউনিটের বর্ণনা দেয় যা তারা ট্র্যাক করতে চায়। আপনি যদি কোনও টীকা যোগ না করেন তবেও আপনি এখানে ডেটা দেখতে পাবেন; এগুলি সাধারণত XLA (যেমন, ব্যারিয়ার কোর), অথবা XProf নিজেই (যেমন, ড্রপ করা ট্রেস এন্ট্রি) দ্বারা যোগ করা হয়।
- ফ্রেমওয়ার্ক নেম স্কোপ : প্রতিটি ফ্রেমওয়ার্ক অপের জন্য, স্ট্যাক ট্রেসের একটি ভিজ্যুয়ালাইজেশন। সংক্ষিপ্তসারের জন্য, এই ট্র্যাকটি শুধুমাত্র একটি ডিভাইসের জন্য প্রদর্শিত হবে।
- ফ্রেমওয়ার্ক অপারেশনস : TPU কোরে সম্পাদিত ফ্রেমওয়ার্ক অপারেশনস (যেমন JAX, Tensorflow, অথবা PyTorch) প্রদর্শন করে, যদি ব্যবহারকারী প্রোগ্রাম বা ফ্রেমওয়ার্কে যথাযথভাবে টীকা দেওয়া থাকে।
- ফ্রেমওয়ার্ক নেম স্কোপ : প্রতিটি ফ্রেমওয়ার্ক অপের জন্য, স্ট্যাক ট্রেসের একটি ভিজ্যুয়ালাইজেশন। সংক্ষিপ্তসারের জন্য, এই ট্র্যাকটি শুধুমাত্র একটি ডিভাইসের জন্য প্রদর্শিত হবে।
- সোর্স কোড : প্রোফাইলে যদি সোর্স কোডটি পাওয়া যায়, তাহলে সেটি কার্যকর করার পথ।
- স্কেলার ইউনিট : TPU-এর ক্ষেত্রে, স্কেলার ইউনিটে সম্পাদিত ইভেন্টগুলি, প্রোফাইলে উপস্থিত থাকলে চিত্রিত করা হবে।
- টেনসরকোর সিঙ্ক ফ্ল্যাগ : প্রোফাইলে উপস্থিত থাকলে TPU-তে সিঙ্ক্রোনাইজেশন প্রক্রিয়া চিত্রিত করা হয়েছে।
- হোস্ট অফলোড : হোস্ট মেমোরি এবং অ্যাক্সিলারেটর মেমোরির মধ্যে অ্যাসিঙ্ক্রোনাসভাবে ডেটা স্থানান্তরকারী অপশন। সাধারণত XLA অপশন লাইনে সংশ্লিষ্ট স্টার্ট এবং স্টপ অপশন থাকে যা অ্যাক্সিলারেটরকে ডেটা স্থানান্তরের জন্য প্রস্তুত হওয়ার ইঙ্গিত দেয় (যেমন, ট্রান্সফারের সময়কালের জন্য সোর্স/ডেস্টিনেশন মেমোরি অঞ্চলগুলিকে "ব্যবহারে" হিসাবে চিহ্নিত করা)। যদি একাধিক অফলোড অপশন সমান্তরালভাবে কার্যকর হয় তবে একাধিক হোস্ট অফলোড সারি উপস্থিত থাকতে পারে, যার জন্য ট্রেস ভিউয়ারকে একই সাথে একাধিক ইভেন্ট প্রদর্শন করতে হয়।
- প্রতিটি স্পারসেকোর নোডের জন্য একটি করে বিভাগ: কিছু TPU প্রজন্ম (যেমন, TPU v5p এবং Trillium ) ঘন কম্পিউট MXU ইউনিট ছাড়াও এক বা একাধিক স্পারসেকোর ইউনিট দিয়ে সজ্জিত; এই কোরের সাথে যুক্ত মডিউল, অপস এবং ট্রেসমেস এই বিভাগে উপস্থিত হবে।
- প্রতিটি GPU নোডের জন্য একটি করে বিভাগ, নিম্নলিখিত ট্র্যাকগুলি সহ:
- প্রতি স্ট্রিমে একটি করে ট্র্যাক, স্ট্রিমের নামের সাথে স্ট্রিমে সম্পাদিত ক্রিয়াকলাপের ধরণ সম্পর্কে তথ্যও অন্তর্ভুক্ত থাকে (মেমকপি, কম্পিউট, ইত্যাদি)।
- লঞ্চের পরিসংখ্যান : লঞ্চের পর্যায়ে সর্বাধিক এবং গড় সময় ব্যয় করা দেখায়।
- ধাপ , XLA মডিউল , ফ্রেমওয়ার্ক অপারেশন , ফ্রেমওয়ার্ক নেম স্কোপ , সোর্স কোড : এগুলো সবই TPU বিভাগের অনুরূপ।
- XLA TraceMe GPU-এর জন্য সমর্থিত নয়।
- XLA Ops GPU বিভাগে দেখা যায়, কিন্তু বর্তমানে এগুলো সবসময় সঠিক নয়, কারণ এগুলো স্ট্রিম ডেটা থেকে নেওয়া হয়। তাই এগুলো GPU-এর এক্সিকিউশন মডেলের সম্পূর্ণ হিসাব রাখতে পারে না যেখানে বিভিন্ন স্ট্রিমগুলিতে এক্সিকিউট করা প্রকৃত কার্নেলের সাথে XLA Ops-এর N:M ম্যাপিং এবং হার্ডওয়্যারের বিভিন্ন SM-এ একাধিক স্ট্রিমের গতিশীল সময়সূচী থাকতে পারে।
- হোস্ট মেশিনের CPU-তে চলমান প্রতিটি উপাদানের জন্য একটি করে অংশ (যেমন, একটি থ্রেডপুল), থ্রেডপুলের ক্ষেত্রে প্রতি থ্রেডে একটি ট্র্যাক থাকবে। প্রোফাইল সংগ্রহের সময় যদি এগুলি সক্রিয় করা থাকে তবে আপনি এখানেই পাইথনের ট্রেস দেখতে পাবেন।
মনে রাখবেন যে শুধুমাত্র TPU-এর জন্য XLA Ops এবং GPU-এর জন্য স্ট্রিম ডেটা সরাসরি সংগৃহীত প্রোফাইলে ভিত্তি করে তৈরি করা হয়েছে; অন্যান্য সমস্ত লাইন হল "উদ্ভূত লাইন", যার মধ্যে কম্পাইলার দ্বারা প্রদত্ত ঐচ্ছিক "সাইডব্যান্ড" তথ্য, ঐচ্ছিক ব্যবহারকারীর টীকা এবং/অথবা XProf দ্বারা প্রয়োগ করা হিউরিস্টিক অন্তর্ভুক্ত রয়েছে। অতএব, এই উদ্ভূত লাইনগুলি নির্দিষ্ট প্রোফাইলে প্রদর্শিত হতে পারে বা নাও হতে পারে।
অন্যান্য বৈশিষ্ট্য
"ইভেন্ট খুঁজুন.." সার্চ বার ব্যবহার করে আপনি নির্দিষ্ট ইভেন্টের নাম অনুসন্ধান করতে পারেন। বর্তমানে, এটি সম্পূর্ণ ট্রেসের পরিবর্তে শুধুমাত্র স্ক্রিনে দৃশ্যমান টাইম-উইন্ডোর মধ্যেই অনুসন্ধান করে।

ফ্লো ইভেন্টস : উপরের বারে "ফ্লো ইভেন্টস" বোতামে ক্লিক করে এই বিকল্পটি সক্রিয় করলে ভিজ্যুয়ালাইজেশন যোগ হয়, যা এক থ্রেড বা লাইনের ইভেন্টগুলিকে অন্য থ্রেড লাইনের ইভেন্টগুলির সাথে সংযুক্ত করে। উদাহরণস্বরূপ, হোস্টের অপ থেকে টানা একটি তীর থাকতে পারে যা একটি অ্যাক্সিলারেটরের জন্য কাজকে সারিবদ্ধ করে বা চালু করে, সেই অ্যাক্সিলারেটরের অপে যা সেই কাজটি সম্পাদন করে। XProf ব্যবহারকারীর টীকা, অন্তর্নির্মিত হিউরিস্টিক এবং বিভিন্ন উপাদান (যেমন, CUPTI ড্রাইভার, কার্নেল লঞ্চ আইডি, TPU রানটাইম তথ্য ইত্যাদি) থেকে প্রাপ্ত পোস্ট-প্রসেসিং তথ্যের সংমিশ্রণের মাধ্যমে এই লিঙ্কগুলি নির্ধারণ করে।
