ট্রেস ভিউয়ার টুল
প্রোফাইলিং সেশনের সময় ঘটে যাওয়া ইভেন্টগুলির টাইমলাইন কল্পনা করতে আপনি ট্রেস ভিউয়ার ব্যবহার করতে পারেন। এটি সিস্টেমের বিভিন্ন অংশে যেমন হোস্ট (সিপিইউ) এবং এক্সিলারেটর (জিপিইউ বা টিপিইউ) আপনার মডেল দ্বারা সম্পাদিত অপারেশনের সময়কাল প্রদর্শন করে। এটি আপনাকে বুঝতে সক্ষম করে যে কীভাবে আপনার মডেল হার্ডওয়্যার সংস্থানগুলি ব্যবহার করে, পারফরম্যান্সের বাধাগুলি সনাক্ত করে এবং দ্রুত কার্যকর করার জন্য আপনার মডেলটিকে অপ্টিমাইজ করে৷ ট্রেস ভিউয়ার UI chrome://tracing
এ ব্যবহৃত একটির উপর ভিত্তি করে তৈরি করা হয় এবং তাই আপনাকে Chrome ব্রাউজার ব্যবহার করতে হবে।
সমর্থিত প্ল্যাটফর্ম
TPU: সমর্থিত
GPU: সমর্থিত
GPU-এর জন্য ট্রেস ভিউয়ার GPU-এর চিপ প্রতি টাইমলাইনে ইভেন্টগুলি এবং এর মধ্যে থাকা স্ট্রিমগুলিকে গোষ্ঠীভুক্ত করে, যখন TPU-গুলির জন্য, এটি TPU চিপ এবং কোর প্রতি টাইমলাইনে ইভেন্টগুলি সংগঠিত করে। উভয় ক্ষেত্রেই, ট্রেস ভিউয়ার হোস্ট সিপিইউ-এর জন্য টাইমলাইনে ইভেন্টগুলি উপস্থাপন করে যার সাথে এক্সিলারেটরগুলি সংযুক্ত থাকে।
টাইমলাইনের সাথে ইন্টারঅ্যাক্ট করা
ট্রেস ভিউয়ার টাইমলাইন নেভিগেট এবং পরীক্ষা করার জন্য বিভিন্ন সরঞ্জাম এবং পদ্ধতি প্রদান করে:
- নেভিগেশন: আপনি নিম্নলিখিত কীবোর্ড শর্টকাট ব্যবহার করতে পারেন:
- W: জুম ইন করুন।
- S: জুম আউট.
- উঃ প্যান বাম।
- D: ডানদিকে প্যান করুন।
- টুল নির্বাচক: আপনি টুল নির্বাচকের একটি টুল ক্লিক করতে পারেন বা সংশ্লিষ্ট কীবোর্ড শর্টকাট ব্যবহার করতে পারেন:
- নির্বাচন টুল (1 বা!): একটি ইভেন্ট নির্বাচন করতে ক্লিক করুন এবং বিস্তারিত প্যানে এর বিশদ বিবরণ দেখুন। একটি সারাংশ দেখতে ctrl+ক্লিকের মাধ্যমে একাধিক ইভেন্ট নির্বাচন করুন।
- প্যান টুল (2 বা @): টাইমলাইনটি অনুভূমিকভাবে বা উল্লম্বভাবে সরাতে টেনে আনুন।
- জুম টুল (3 বা #): টাইমলাইনের একটি নির্দিষ্ট এলাকায় জুম করতে টেনে আনুন।
- টাইমিং টুল (4 বা $): একটি সময় ব্যবধান চিহ্নিত করতে টেনে আনুন। চিহ্নিত ব্যবধানের সময়কাল প্রদর্শিত হবে। আপনি একটি নির্বাচন চিহ্নিত করতে এবং এর মোট সময়কাল নির্ধারণ করতে 'm' কী ব্যবহার করতে পারেন।
- নির্বাচিত ইভেন্টগুলিতে জুম করুন (f): এক বা একাধিক ইভেন্ট নির্বাচন করুন এবং টাইমলাইনের সেই অংশে দ্রুত জুম করতে 'f' কী টিপুন। এটি একটি নির্দিষ্ট প্রশিক্ষণ ধাপে ফোকাস করার জন্য দরকারী।
প্রচুর সংখ্যক ট্রেস ইভেন্ট পরিচালনা করার সময়, ট্রেস ভিউয়ার স্ট্রিমিং মোডে কাজ করে। মানে মানচিত্র অ্যাপ্লিকেশনগুলি কীভাবে কাজ করে তার অনুরূপ আপনি টাইমলাইন জুড়ে প্যান এবং জুম করার সাথে সাথে এটি চাহিদা অনুযায়ী ডেটা লোড করে। আপনি যদি ডেটা লোড হওয়ার চেয়ে দ্রুত জুম করেন, তাহলে লোড হওয়া শেষ না হওয়া পর্যন্ত আপনি ডেটার একটি কম-রেজোলিউশন উপস্থাপনা দেখতে পাবেন।
ট্রেস ভিউয়ার ইন্টারফেস উপাদান
এখানে ট্রেস ভিউয়ারের প্রধান UI উপাদানগুলি রয়েছে:
- সময় অক্ষ শীর্ষে অনুভূমিকভাবে সঞ্চালিত হয়, ট্রেস শুরুর সাথে সম্পর্কিত সময় দেখায়।
- টাইমলাইনগুলি বিভাগ এবং ট্র্যাক দ্বারা সংগঠিত হয়, লেবেলগুলি বাম উল্লম্ব অক্ষে অবস্থিত। প্রতিটি বিভাগ একটি প্রক্রিয়াকরণ উপাদান (যেমন, একটি ডিভাইস নোড বা হোস্ট থ্রেড) প্রতিনিধিত্ব করে এবং প্রসারিত বা সংকোচন করা যেতে পারে। প্রতিটি বিভাগের মধ্যে ট্র্যাক আছে, যা নির্দিষ্ট কার্যকলাপের জন্য সময়রেখা।
- ইভেন্টগুলি হল টাইমলাইন ট্র্যাকের রঙিন, আয়তক্ষেত্রাকার ব্লক, যা একটি অপারেশনের সময়কাল বা প্রশিক্ষণের ধাপের মতো একটি মেটা-ইভেন্টের প্রতিনিধিত্ব করে। ঘটনার রঙের কোনো নির্দিষ্ট অর্থ নেই।
- বিস্তারিত ফলক টাইমলাইন ফলকে নির্বাচিত ইভেন্টগুলি সম্পর্কে অতিরিক্ত তথ্য দেখায়, যেমন তাদের নাম, শুরুর সময় এবং সময়কাল।
সাধারণ বিভাগ এবং ট্র্যাক
ট্রেস ভিউয়ার নিম্নলিখিত বিভাগ এবং ট্র্যাক প্রদান করে।
- নিম্নলিখিত ট্র্যাক সহ প্রতিটি TPU নোডের জন্য একটি বিভাগ:
- এক্সএলএ মডিউল: এক্সএলএ প্রোগ্রামটি চালানো হচ্ছে।
- XLA Ops: XLA HLO অপারেশনগুলি দেখায় যা TPU কোরে চলে। প্রতিটি উচ্চ-স্তরের ফ্রেমওয়ার্ক অপারেশন (উদাহরণস্বরূপ JAX, Tensorflow, বা PyTorch) এক বা একাধিক XLA অপারেশনে অনুবাদ করা হয়, যেগুলো TPU-তে চালানোর জন্য সংকলিত হয়। যখন আপনি একটি XLA অপারেশনে ক্লিক করেন, আপনি গ্রাফ ভিউয়ারে অপের লিঙ্কগুলি দেখতে পারেন, সাথে অপের সম্পর্কে অতিরিক্ত তথ্য যেমন স্টার্ট/স্টপ সময়, সময়কাল এবং সোর্স স্ট্যাক ট্রেস (যদি ফ্রেমওয়ার্ক এবং কম্পাইলার দ্বারা উপলব্ধ করা হয়)।
- XLA TraceMe: তাদের কোডে ব্যবহারকারী-নির্দিষ্ট টীকা যা তারা ট্র্যাক করতে চায় এমন কাজের যৌক্তিক একক বর্ণনা করে। আপনি কোনো টীকা যোগ না করলেও আপনি এখানে ডেটা দেখতে পারেন; এগুলি সাধারণত XLA (যেমন, বাধা কোর), বা XProf নিজেই (যেমন, বাদ দেওয়া ট্রেস এন্ট্রি) দ্বারা যুক্ত করা হয়।
- ধাপ: সেই TPU কোরে চলমান প্রশিক্ষণের ধাপের সময়কাল দেখায়, যদি ব্যবহারকারীর প্রোগ্রাম বা কাঠামোতে যথাযথভাবে টীকা করা থাকে।
- ফ্রেমওয়ার্ক অপস: ইউজার প্রোগ্রাম বা ফ্রেমওয়ার্কে যথাযথভাবে টীকা করা হলে, TPU কোরে সম্পাদিত ফ্রেমওয়ার্ক অপারেশনগুলি (উদাহরণস্বরূপ JAX, Tensorflow, বা PyTorch) প্রদর্শন করে।
- ফ্রেমওয়ার্ক নামের স্কোপ: প্রতিটি ফ্রেমওয়ার্ক অপের জন্য, স্ট্যাক ট্রেসের একটি ভিজ্যুয়ালাইজেশন। সংক্ষিপ্ততার জন্য, এই ট্র্যাকটি শুধুমাত্র একটি একক ডিভাইসের জন্য প্রদর্শিত হয়৷
- সোর্স কোড: প্রোফাইলে উপলব্ধ থাকলে সোর্স কোডের পাথ এক্সিকিউট করা হচ্ছে।
- স্কেলার ইউনিট: TPU-এর জন্য, স্কেলার ইউনিটে ইভেন্টগুলি সম্পাদন করা হয়, যদি প্রোফাইলে উপস্থিত থাকে তা চিত্রিত করা হয়।
- টেনসরকোর সিঙ্ক ফ্ল্যাগ: TPU-তে সিঙ্ক্রোনাইজেশন প্রক্রিয়া, প্রোফাইলে উপস্থিত থাকলে চিত্রিত করা হয়।
- হোস্ট অফলোড: অপস যা হোস্ট মেমরি এবং এক্সিলারেটর মেমরির মধ্যে অসিঙ্ক্রোনাসভাবে ডেটা স্থানান্তর করে। সাধারণত সংশ্লিষ্ট স্টার্ট এবং স্টপ অপ্স রয়েছে যা XLA Ops লাইনে উপস্থিত হয় যা নির্দেশ করে যে এক্সিলারেটর ডেটা স্থানান্তরের জন্য প্রস্তুত হচ্ছে (যেমন, স্থানান্তরের সময়কালের জন্য উত্স/গন্তব্য মেমরি অঞ্চলগুলিকে "ব্যবহারে" হিসাবে চিহ্নিত করা)। একাধিক হোস্ট অফলোড সারি উপস্থিত থাকতে পারে যদি সমান্তরালভাবে একাধিক অফলোড অপস চালানো হয়, যার জন্য ট্রেস ভিউয়ারকে একসাথে একাধিক ইভেন্ট প্রদর্শন করতে হয়।
- প্রতিটি স্পারস্কোর নোডের জন্য একটি বিভাগ: কিছু TPU প্রজন্ম (যেমন, TPU v5p এবং Trillium ) ঘন গণনা MXU ইউনিট ছাড়াও এক বা একাধিক স্পার্সকোর ইউনিট দিয়ে সজ্জিত; এই কোরের সাথে যুক্ত মডিউল, অপস এবং ট্রেসমেস এই বিভাগে প্রদর্শিত হবে।
- নিম্নলিখিত ট্র্যাক সহ প্রতিটি GPU নোডের জন্য একটি বিভাগ:
- এক্সএলএ মডিউল, ফ্রেমওয়ার্ক অপস, ফ্রেমওয়ার্ক নেম স্কোপ, স্টেপস, সোর্স কোড। এই সব TPU বিভাগের অনুরূপ.
- স্ট্রীম প্রতি একটি ট্র্যাক, স্ট্রীমের নাম সহ স্ট্রীমে সম্পাদিত ক্রিয়াকলাপের প্রকারের তথ্য সহ (Memcpy, Compute, ইত্যাদি)।
- XLA TraceMe GPU-এর জন্য সমর্থিত নয়।
- XLA Ops GPU বিভাগে প্রদর্শিত হয়, কিন্তু এগুলি বর্তমানে সর্বদা সঠিক নয়, কারণ সেগুলি স্ট্রিম ডেটা থেকে প্রাপ্ত। তাই তারা GPU-এর এক্সিকিউশন মডেলের জন্য সম্পূর্ণরূপে হিসাব করতে পারে না যেখানে বিভিন্ন স্ট্রীমে কার্যকর করা প্রকৃত কার্নেলের XLA Ops-এর N:M ম্যাপিং এবং হার্ডওয়্যারের বিভিন্ন SM-তে একাধিক স্ট্রিমের গতিশীল সময়সূচী থাকতে পারে।
- প্রতিটি কম্পোনেন্টের জন্য একটি বিভাগ (যেমন, একটি থ্রেডপুল) হোস্ট মেশিনের CPU-তে চলমান, থ্রেডপুলের ক্ষেত্রে প্রতি থ্রেডে একটি ট্র্যাক সহ। প্রোফাইল সংগ্রহের সময় যদি এগুলি সক্ষম করা থাকে তবে আপনি এখানে পাইথন ট্রেস দেখতে পাবেন।
উল্লেখ্য যে শুধুমাত্র TPUs-এর জন্য XLA Ops এবং GPU-গুলির জন্য স্ট্রিম ডেটা সরাসরি সংগৃহীত প্রোফাইলে ভিত্তি করে থাকে; অন্য সব লাইন হল "ডিরিভড লাইন", কম্পাইলার দ্বারা প্রদত্ত ঐচ্ছিক "সাইডব্যান্ড" তথ্য, ঐচ্ছিক ব্যবহারকারীর টীকা, এবং/অথবা XProf দ্বারা প্রয়োগ করা হিউরিস্টিকস। অতএব, এই প্রাপ্ত লাইনগুলি নির্দিষ্ট প্রোফাইলে প্রদর্শিত হতে পারে বা নাও হতে পারে।
অন্যান্য বৈশিষ্ট্য
- আপনি "ইভেন্ট খুঁজুন.." অনুসন্ধান বার ব্যবহার করে নির্দিষ্ট ইভেন্টের নাম অনুসন্ধান করতে পারেন। বর্তমানে, এটি সম্পূর্ণ ট্রেসের পরিবর্তে শুধুমাত্র পর্দায় দৃশ্যমান সময়-উইন্ডোতে অনুসন্ধান করে।
- ফ্লো ইভেন্ট: উপরের বারে "ফ্লো ইভেন্ট" বোতামে ক্লিক করে এই বিকল্পটি সক্রিয় করা ভিজ্যুয়ালাইজেশন যোগ করে, একটি থ্রেড বা লাইনের ইভেন্টগুলিকে অন্য থ্রেড লাইনের ইভেন্টের সাথে লিঙ্ক করে। উদাহরণস্বরূপ, হোস্টের অপ থেকে একটি তীর টানা হতে পারে যা একটি অ্যাক্সিলারেটরের জন্য কাজকে সারিবদ্ধ করে বা চালু করে, সেই কাজটি সম্পাদনকারী এক্সিলেটরের অপের দিকে। XProf ব্যবহারকারীর টীকা, অন্তর্নির্মিত হিউরিস্টিকস এবং পোস্ট-প্রসেসিং তথ্যের মাধ্যমে বিভিন্ন উপাদান (যেমন, CUPTI ড্রাইভার, কার্নেল লঞ্চ আইডি, TPU রানটাইম তথ্য ইত্যাদি) থেকে প্রাপ্ত তথ্যের সমন্বয়ের মাধ্যমে এই লিঙ্কগুলি নির্ধারণ করে।
- একটি XLA অপে ক্লিক করা বিস্তারিত ফলকে অতিরিক্ত তথ্য প্রদান করে। উদাহরণস্বরূপ, এটি গ্রাফ ভিউয়ার টুলের অপের সাথে লিঙ্ক করে। এটি সোর্স কোড এবং/অথবা পাইথন স্ট্যাক ট্রেস, ফ্রেমওয়ার্ক অপ যা এই XLA অপটি তৈরি করেছে, ইত্যাদির জন্য পয়েন্টার প্রদান করতে পারে (প্রোফাইলে উপস্থিত থাকলে)। এটি FLOPS (অপ দ্বারা সম্পাদিত ফ্লোটিং পয়েন্ট অপারেশনের সংখ্যা) এবং অপ দ্বারা অ্যাক্সেস করা বাইটগুলিও দেখাতে পারে; প্রোফাইল থেকে রানটাইম তথ্যের পরিবর্তে এই তথ্যটি সংকলনের সময় XLA থেকে স্ট্যাটিকভাবে অর্জিত হয়।