এক্সপ্রফ কার্নেল ব্যবহারকারী নির্দেশিকা

এক্সপ্রফ কার্নেল হলো প্যালাস কার্নেল অথরিং এবং পারফরম্যান্স অপটিমাইজেশনের জন্য ডিজাইন করা একটি প্রোডাক্ট স্যুট। এটি 'কাস্টম-কল' রানটাইম পারফরম্যান্সের দৃশ্যমানতা এবং বোধগম্যতা বৃদ্ধি করে—যা সাধারণত এক্সপ্রফ ইভেন্ট ট্রেসিংয়ের মধ্যে 'ব্ল্যাক বক্স' হিসেবে থেকে যায়।

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

সূক্ষ্ম পারফরম্যান্স কাউন্টার সক্ষম করা

আপনার JAX Profiler TPU অপশনের অ্যাডভান্সড কনফিগারেশন অপশন থেকে পারফরম্যান্স কাউন্টার সক্রিয় করুন।

সাধারণ পারফরম্যান্স কাউন্টারগুলির জন্য বেসিক কার্নেল প্রোফাইলিং করতে, আপনি ডিফল্ট কার্নেল প্রোফাইলিং সেটিংস ব্যবহার করতে পারেন:

options = jax.profiler.ProfileOptions()
options.advanced_configuration = {
    "tpu_enable_kernel_profiling": True,
}

এই সেটিংটি প্রতি ১ মাইক্রোসেকেন্ডে কিছু স্ট্যান্ডার্ড টিসি কাউন্টারের প্রোফাইল তৈরি করে।

আপনি যদি আরও উন্নত সেটিংস চান, তাহলে নিচের উদাহরণটিতে উপলব্ধ সমস্ত সেটিংস ব্যবহার করা হয়েছে:

options = jax.profiler.ProfileOptions()
options.advanced_configuration = {
    "tpu_enable_periodic_counter_sampling" : True,
    "tpu_tc_perf_counter_sampling_options" : (
        'interval_us:1 scaling:0 counter_size_bits:1 indices:10 indices:11 indices:56 indices:57 indices:58'
    ),
}
  • tpu_enable_periodic_counter_sampling : সূক্ষ্ম পারফরম্যান্স কাউন্টার সংগ্রহ করার সংকেত দিতে এই ফ্ল্যাগটি সেট করুন।
  • tpu_<component>_perf_counter_sampling_options : স্যাম্পলিং প্যারামিটার কনফিগার করতে এবং একটি নির্দিষ্ট কম্পোনেন্টের জন্য কোন কাউন্টার ইনডেক্সগুলো প্রোফাইল করতে হবে তা নির্দিষ্ট করতে এই ফ্ল্যাগগুলো ব্যবহার করুন (কম্পোনেন্টগুলোর তালিকা ‘কাউন্টার ইনডেক্স নির্ধারণ’ বিভাগে দেওয়া আছে)। সমর্থিত সেটিংস নিচের টেবিলে বিস্তারিতভাবে দেওয়া আছে; যে সেটিংসগুলো স্পষ্টভাবে সংজ্ঞায়িত করা হয়নি, সেগুলো তাদের ডিফল্ট মান ব্যবহার করবে।
মাঠ বর্ণনা ডিফল্ট
interval_us কাউন্টার সংগ্রহের হার মাইক্রোসেকেন্ডে ( us )। সর্বনিম্ন ব্যবধান হলো ১ us ১০০০০ মার্কিন ডলার
scaling কাউন্টার মান সংগ্রহ করার সময় কতগুলো বিটকে ডানদিকে সরাতে হবে। আপনার বিশ্লেষণের জন্য যদি লিস্ট সিগনিফিকেন্ট বিট (LSB) অপ্রয়োজনীয় হয়, তবে এটি ব্যবহার করুন। স্কেলিং পেলোড সাইজ কমাতে এবং ট্রেস ড্রপ প্রতিরোধ করতে সাহায্য করে, এবং ট্রেস ভিউয়ার প্রদর্শনের জন্য স্বয়ংক্রিয়ভাবে মূল মানগুলো পুনরুদ্ধার করে।
counter_size_bits প্যাকড পেলোডের কাউন্টারগুলির বিট-প্রস্থ। বৈধ মান (n) ০ থেকে ৩ পর্যন্ত, যা 2^(n+3) বিটের আকারের সাথে সঙ্গতিপূর্ণ: ০=৮ বিট, ১=১৬ বিট, ২=৩২ বিট, এবং ৩=৬৪ বিট। ৩ (৬৪ বিট)
indices প্রোফাইল করার জন্য নির্দিষ্ট কাউন্টার সূচকগুলো। এগুলো পারফ কাউন্টার টুল ব্যবহার করে নির্ধারণ করা হয় (নিচের নির্দেশাবলী দেখুন)। কোনোটিই না

প্রতি সূচক নির্ধারণ

যে কম্পোনেন্টটির প্রোফাইল তৈরি করতে চান, তার নির্দিষ্ট ইনডেক্সগুলো শনাক্ত করতে পারফ কাউন্টারস টুলটি ব্যবহার করুন। এই ধাপগুলো অনুসরণ করুন:

  1. পারফরম্যান্স কাউন্টার সমর্থন করে এমন যেকোনো TensorBoard ট্রেস-এ পারফরম্যান্স কাউন্টারগুলিতে যান।
  2. প্রোফাইল করা কাউন্টারগুলির একটি সম্পূর্ণ তালিকা পেতে "শূন্য মান দেখান" বিকল্পটি সক্রিয় করুন।
  3. আপনার কাঙ্ক্ষিত উপাদানটি খুঁজুন। সঠিক কাউন্টারগুলো খুঁজে বের করতে নিচের সারণি থেকে গাঢ় অক্ষরে লেখা কীওয়ার্ডগুলো সার্চ কোয়েরি হিসেবে ব্যবহার করুন:
উপাদান কীওয়ার্ড
টিসি vf_chip_ die0_tc_tcs _tc_misc_tcs_stats_tcs_stats_counters
এসসিএস vf_chip_ die0_sc_0_scs _sc_stats_counters
SCTC vf_chip_ die0_sc_0_sctc_0 _sc_stats_counters
SCTD vf_chip_ die0_sc_0_sctd_0_sc _stats_counters
সিএমএন vf_chip_ die0_cmn_cmnur_0 _cmn_stats_debug_fixed_stats_counters
আইসিআর vf_chip_chiplet_icr_icr_data_0_debug_domain_icr_data_stats_packet_counters
  1. ফলাফল টেবিলে আপনার কাউন্টারটি শনাক্ত করুন। ( সারি সূচক - ১ ) হিসাবে সূচকটি গণনা করুন। নিচে পারফ কাউন্টার টুল এবং সংশ্লিষ্ট টিসি কাউন্টারগুলির একটি উদাহরণ দেওয়া হলো।

    পারফ কাউন্টার টুল

ডিফল্ট কাউন্টার সেট ব্যবহার করা

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

options = jax.profiler.ProfileOptions()
options.advanced_configuration = {
    "tpu_enable_periodic_counter_sampling" : True,
    "tpu_tc_perf_counter_sampling_options" : (
        'interval_us:1 scaling:0 counter_size_bits:1 indices:2`
    ),
    "tpu_perf_counter_sets" : 'TC_COMPUTATION,TC_MEMORY',
}

প্রদত্ত যেকোনো সেট, স্যাম্পলিং অপশনে প্রদত্ত সূচকগুলোর পাশাপাশি সেটের অন্তর্ভুক্ত সমস্ত সূচকের প্রোফাইল তৈরি করবে। নিম্নলিখিত সারণিতে বর্তমানে উপলব্ধ কাউন্টার সেটগুলো তালিকাভুক্ত করা হয়েছে:

নাম উপাদান বর্ণনা
টিসি_কম্পিউটেশন টিসি TensorCore-এ গণনা বিশ্লেষণের জন্য ব্যবহৃত সূচকসমূহ।
টিসি_মেমোরি টিসি TensorCore-এ মেমরি ওভারহেড বিশ্লেষণের জন্য ব্যবহৃত সূচকসমূহ।
SC_ACTIVITY এসসিএস, এসসিটিসি, এসসিটিডি SparseCore-এ কার্যকলাপ বিশ্লেষণের জন্য ব্যবহৃত সূচকসমূহ।
SC_MEMORY এসসিএস, এসসিটিসি, এসসিটিডি স্পার্সকোর-এ মেমরি ওভারহেড বিশ্লেষণের জন্য ব্যবহৃত সূচকসমূহ।
এইচবিএম সিএমএন মৌলিক এইচবিএম প্রোফাইলিং।

রানটাইম কাউন্টারগুলির ভিজ্যুয়ালাইজেশন

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

রানটাইম কাউন্টার

উন্নত: ইভেন্ট-ট্রিগারড কাউন্টার স্যাম্পলিং

পর্যায়ক্রমিক পারফরম্যান্স কাউন্টার সংগ্রহের পাশাপাশি, আপনি কাস্টম কল বা নির্দিষ্ট TPU নির্দেশাবলীর সম্পাদনের মতো বাহ্যিক ইভেন্টের উপর ভিত্তি করে স্যাম্পল করার জন্য কাউন্টারগুলি কনফিগার করতে পারেন।

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

ইভেন্ট-ট্রিগারড কালেকশন চালু করতে, আপনার কনফিগারেশনে interval_us প্যারামিটারটিকে is_external_trigger:true দিয়ে প্রতিস্থাপন করুন। উদাহরণ:

options = jax.profiler.ProfileOptions()

# Example request for externally triggered collection
options.advanced_configuration = {
    "tpu_enable_periodic_counter_sampling": True,
    "tpu_tc_perf_counter_sampling_options": (
        "is_external_trigger:true scaling:0 counter_size_bits:1 indices:10 indices:11 indices:56 indices:57 indices:58"
    ),
}

এক্সপ্রফ পারফ কাউন্টার টুল কাউন্টার স্যাম্পলিং দেখাচ্ছে