XProf Kernel یک مجموعه محصول است که برای بهینهسازی عملکرد و نویسندگی Pallas Kernel طراحی شده است. این مجموعه، قابلیت مشاهده و درک عملکرد زمان اجرای «تماسهای سفارشی» را افزایش میدهد - حوزههایی که معمولاً در ردیابی رویداد XProf به عنوان «جعبههای سیاه» باقی میمانند.
XProf در حال حاضر ویژگیهایی مانند پروفایلینگ فراخوانی سفارشی را ارائه میدهد که بستههای TPU استاتیک را ردیابی میکند تا دستورالعملهای بهینهساز سطح پایین (LLO) را به رویدادهای ردیابی شده پیوند دهد. اگرچه این ردیابی سبکی را فراهم میکند، اما فاقد دید به رفتار دقیق زمان اجرا اجزای مختلف TPU است. XProf Kernel این شکاف را با فعال کردن پروفایلینگ شمارندههای عملکرد زمان اجرا با جزئیات دقیق پر میکند. این راهنما نحوه راهاندازی، جمعآوری و تجسم این شمارندهها را در قالب سری زمانی در Trace Viewer توضیح میدهد.
فعال کردن شمارندههای عملکرد دقیق
شمارندههای عملکرد را از طریق گزینههای پیکربندی پیشرفته در گزینههای TPU JAX Profiler خود فعال کنید، همانطور که در مثال زیر نشان داده شده است:
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 | فرکانس جمعآوری شمارنده بر حسب میکروثانیه ( یو اس ) است. حداقل فاصله زمانی ۱ یو اس است. | ۱۰۰۰۰ ما |
scaling | تعداد بیتهایی که هنگام جمعآوری مقادیر شمارنده باید به راست شیفت داده شوند. اگر بیتهای کماهمیتتر (LSB) برای تحلیل شما غیرضروری هستند، از این گزینه استفاده کنید. مقیاسبندی به کاهش اندازه بار مفید کمک میکند و از افت ردیابی جلوگیری میکند، در حالی که Trace Viewer به طور خودکار مقادیر اصلی را برای نمایش بازیابی میکند. | 0 |
counter_size_bits | پهنای بیت شمارندهها در محمولهی فشرده. مقادیر معتبر (n) از ۰ تا ۳ متغیر است که مربوط به اندازهی 2^(n+3) بیت است: ۰=۸ بیت، ۱=۱۶ بیت، ۲=۳۲ بیت و ۳=۶۴ بیت. | ۳ (۶۴ بیت) |
indices | شاخصهای شمارنده خاص برای پروفایل. این موارد با استفاده از ابزار شمارندههای پرف (به دستورالعملهای زیر مراجعه کنید) تعیین میشوند. | هیچ کدام |
تعیین شاخصهای شمارنده
از ابزار Perf Counters برای شناسایی شاخصهای خاص برای مؤلفهای که میخواهید پروفایل کنید، استفاده کنید. این مراحل را دنبال کنید:
- در هر ردیابی TensorBoard که از شمارندههای perf پشتیبانی میکند، به شمارندههای perf بروید.
- برای مشاهده لیست کاملی از شمارندههای نمایهشده، گزینه «نمایش مقادیر صفر» را فعال کنید.
- کامپوننت مورد نظر خود را جستجو کنید. از کلمات کلیدی پررنگ شده از جدول زیر به عنوان عبارات جستجو برای یافتن شمارندههای صحیح استفاده کنید:
| کامپوننت | کلمه کلیدی |
|---|---|
| تی سی | vf chip die0_tc_tcs _tc_misc_tcs_stats_tcs_stats_counters |
| اس سی اس | vf chip die0_sc_0_scs _sc_stats_counters |
| SCTD | vf chip die0_sc_0_sctd_0_sc _stats_counters |
| SCTC | vf chip die0_sc_0_sctc_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 |
شمارنده خود را در جدول حاصل مشخص کنید. اندیس را به صورت ( اندیس سطر - ۱ ) محاسبه کنید. در زیر مثالی از ابزار شمارندههای پرف و شمارندههای TC مربوطه آمده است.

مصورسازی شمارندههای زمان اجرا
در نمایشگر ردیابی، شمارندههای جمعآوریشده بر اساس شاخصها و فراوانی مشخصشده، بهصورت خطوطی ظاهر میشوند. انتخاب نقاط شمارنده، یک پنجرهی زیرین را باز میکند که مقدار آن، شامل افزایش از آخرین نقطه داده و مهر زمانی مربوطه را نمایش میدهد.

پیشرفته: نمونهبرداری شمارندهی فعالشده با رویداد
علاوه بر جمعآوری دورهای شمارندههای عملکرد، میتوانید شمارندهها را طوری پیکربندی کنید که بر اساس رویدادهای خارجی، مانند اجرای فراخوانیهای سفارشی یا دستورالعملهای خاص 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"
),
}
