راهنمای کاربر هسته XProv

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_kernel_profiling": True,
}

این تنظیم هر ۱ ما، تعدادی از شمارنده‌های TC استاندارد را نمایش می‌دهد.

اگر تنظیمات پیشرفته‌تری می‌خواهید، مثال زیر از تمام تنظیمات موجود استفاده می‌کند:

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 برای شناسایی شاخص‌های خاص برای مؤلفه‌ای که می‌خواهید پروفایل کنید، استفاده کنید. این مراحل را دنبال کنید:

  1. در هر ردیابی TensorBoard که از شمارنده‌های perf پشتیبانی می‌کند، به شمارنده‌های perf بروید.
  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. شمارنده خود را در جدول حاصل مشخص کنید. اندیس را به صورت ( اندیس سطر - ۱ ) محاسبه کنید. در زیر مثالی از ابزار شمارنده‌های پرف و شمارنده‌های TC مربوطه آمده است.

    ابزار شمارنده‌های عالی

استفاده از مجموعه‌های پیش‌فرض شمارنده

برای اینکه کاربران بتوانند گزینه‌های نمونه‌برداری شمارنده‌ی پرفکت را بدون نیاز به حفظ کردن شاخص‌های شمارنده‌ی دلخواه، سفارشی‌سازی کنند، چند مجموعه شمارنده برای موارد استفاده‌ی خاص ارائه کرده‌ایم. برای استفاده از این مجموعه‌ها، کافیست 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',
}

هر مجموعه ارائه شده، علاوه بر هر مجموعه ارائه شده در گزینه‌های نمونه‌برداری، تمام شاخص‌های موجود در مجموعه را نیز نمایه می‌کند. جدول زیر مجموعه‌های شمارنده موجود فعلی را فهرست می‌کند:

نام قطعات توضیحات
محاسبات TC تی سی شاخص‌های مورد استفاده برای تحلیل محاسباتی در TensorCore.
حافظه TC تی سی شاخص‌های مورد استفاده برای تحلیل سربار حافظه در TensorCore.
فعالیت SC SCS، SCTC، SCTD شاخص‌های مورد استفاده برای تحلیل فعالیت در SparseCore.
حافظه SC SCS، SCTC، SCTD شاخص‌های مورد استفاده برای تحلیل سربار حافظه در SparseCore.
اچ بی ام سی ام ان پروفایلینگ پایه HBM.

مصورسازی شمارنده‌های زمان اجرا

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

شمارنده‌های زمان اجرا

پیشرفته: نمونه‌برداری شمارنده‌ی فعال‌شده با رویداد

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

ابزار شمارنده XProf Perf که نمونه‌برداری شمارنده را نشان می‌دهد