ট্রেস ভিউয়ার টুল

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

ট্রেস ভিউয়ার

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

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

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

জিপিইউ-এর জন্য ট্রেস ভিউয়ার

টাইমলাইনের সাথে মিথস্ক্রিয়া

ট্রেস ভিউয়ার টাইমলাইন নেভিগেট ও পরীক্ষা করার জন্য বিভিন্ন টুল এবং পদ্ধতি প্রদান করে:

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

ট্রেস ভিউয়ার টুল সিলেক্টর

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

ট্রেস ভিউয়ার ইন্টারফেসের উপাদানসমূহ

ট্রেস ভিউয়ারের প্রধান UI উপাদানগুলো হলো:

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

    ট্রেস ভিউয়ার বিবরণ প্যানে

ট্রেস ভিউয়ার v2

অত্যন্ত বড় প্রোফাইলের (কয়েকশ এমবি বা জিবি) ক্ষেত্রে, লক্ষ লক্ষ ইভেন্টের মধ্যে সাবলীলভাবে নেভিগেট করার জন্য আপনি ট্রেস ভিউয়ার ভি২ (Trace Viewer v2) ব্যবহার করতে পারেন। এটি উচ্চ-পারফরম্যান্স রেন্ডারিংয়ের জন্য ওয়েবজিপিইউ/ক্যানভাস (WebGPU/Canvas) ব্যবহার করে।

ট্রেস ভিউয়ার v2-তে পরিবর্তন করতে, ট্রেস ভিউয়ার UI-তে থাকা 'Switch to V2' বোতামটিতে ক্লিক করুন। বর্তমানে v2 ফ্রন্টএন্ডে পরিবর্তন করার এটিই একমাত্র উপায়।

সাধারণ বিভাগ এবং ট্র্যাকগুলি

ট্রেস ভিউয়ার নিম্নলিখিত বিভাগ এবং ট্র্যাকগুলি প্রদান করে।

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

উল্লেখ্য যে, সংগৃহীত প্রোফাইলে শুধুমাত্র TPU-এর জন্য XLA Ops এবং GPU-এর জন্য স্ট্রিম ডেটা সরাসরি অন্তর্ভুক্ত থাকে; অন্য সব লাইন হলো “ডিরাইভড লাইন”, যেগুলোতে কম্পাইলার দ্বারা প্রদত্ত ঐচ্ছিক “সাইডব্যান্ড” তথ্য, ঐচ্ছিক ব্যবহারকারী টীকা, এবং/অথবা XProf দ্বারা প্রয়োগ করা হিউরিস্টিকস অন্তর্ভুক্ত থাকে। অতএব, এই ডিরাইভড লাইনগুলো নির্দিষ্ট কিছু প্রোফাইলে উপস্থিত থাকতেও পারে বা নাও থাকতে পারে।

অন্যান্য বৈশিষ্ট্য

  • আপনি “ইভেন্ট খুঁজুন..” সার্চ বার ব্যবহার করে নির্দিষ্ট ইভেন্টের নাম খুঁজতে পারেন। বর্তমানে, এটি সম্পূর্ণ ট্রেসের পরিবর্তে শুধুমাত্র স্ক্রিনে দৃশ্যমান সময়সীমার মধ্যেই অনুসন্ধান করে।

    ট্রেস ভিউয়ার ইভেন্ট খোঁজার সার্চ বার

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

    ট্রেস ভিউয়ার ফ্লো ইভেন্টস বাটন