ابزار ردیابی نمایشگر

می‌توانید از Trace Viewer برای تجسم جدول زمانی رویدادهایی که در طول جلسه نمایه‌سازی رخ داده‌اند استفاده کنید. مدت زمان عملیات اجرا شده توسط مدل شما در قسمت های مختلف سیستم مانند میزبان (CPU) و شتاب دهنده ها (GPU یا TPU) را نشان می دهد. این به شما امکان می‌دهد بفهمید که مدل شما چگونه از منابع سخت‌افزاری استفاده می‌کند، گلوگاه‌های عملکرد را شناسایی کرده و مدل خود را برای اجرای سریع‌تر بهینه‌سازی می‌کند. رابط کاربری Trace Viewer مبتنی بر رابط مورد استفاده در chrome://tracing است و بنابراین باید از مرورگر Chrome استفاده کنید.

پلتفرم های پشتیبانی شده

TPU: پشتیبانی می شود

GPU: پشتیبانی می شود

Trace Viewer برای پردازنده‌های گرافیکی رویدادها را بر اساس جدول‌های زمانی در هر تراشه GPU و جریان‌های درون آن گروه‌بندی می‌کند، در حالی که برای TPU، رویدادها را در جدول‌های زمانی در هر تراشه و هسته TPU سازماندهی می‌کند. در هر صورت، Trace Viewer همچنین رویدادها را در جدول زمانی در هر رشته برای CPU میزبانی که شتاب دهنده‌ها به آن متصل هستند، ارائه می‌کند.

تعامل با جدول زمانی

Trace Viewer چندین ابزار و روش برای پیمایش و بررسی جدول زمانی ارائه می دهد:

  • پیمایش: می توانید از میانبرهای صفحه کلید زیر استفاده کنید:
    • W: بزرگنمایی کنید.
    • S: بزرگنمایی کنید.
    • پاسخ: به سمت چپ حرکت کنید.
    • D: حرکت به سمت راست.
  • انتخابگر ابزار: می توانید روی ابزاری در انتخابگر ابزار کلیک کنید یا از میانبر صفحه کلید مربوطه استفاده کنید:
    • ابزار انتخاب (1 یا !): برای انتخاب یک رویداد کلیک کنید و جزئیات آن را در قسمت جزئیات مشاهده کنید. چندین رویداد را از طریق ctrl+click برای مشاهده خلاصه انتخاب کنید.
    • Pan Tool (2 یا @): برای حرکت دادن خط زمانی به صورت افقی یا عمودی بکشید.
    • ابزار بزرگنمایی (3 یا #): برای بزرگنمایی در ناحیه خاصی از خط زمانی بکشید.
    • ابزار زمان بندی (4 یا $): برای علامت گذاری یک بازه زمانی بکشید. مدت زمان بازه مشخص شده نمایش داده خواهد شد. همچنین می توانید از کلید "m" برای علامت گذاری یک انتخاب و تعیین مدت زمان کل آن استفاده کنید.
  • بزرگنمایی به رویدادهای انتخاب شده (f): یک یا چند رویداد را انتخاب کنید و کلید "f" را فشار دهید تا به سرعت در آن قسمت از خط زمانی بزرگنمایی کنید. این برای تمرکز بر یک مرحله آموزشی خاص مفید است.

هنگام مدیریت تعداد زیادی رویداد ردیابی، Trace Viewer در حالت پخش جریانی کار می کند. این بدان معناست که داده‌ها را بر اساس درخواست بارگیری می‌کند، همانطور که برنامه‌های نقشه را چگونه کار می‌کنند، همانطور که روی خط زمانی حرکت می‌کنید و بزرگ‌نمایی می‌کنید. اگر سریعتر از بارگیری داده ها زوم کنید، ممکن است نمایش داده با وضوح پایین تا زمانی که بارگیری تمام شود، مشاهده کنید.

اجزای رابط نمایشگر ردیابی

در اینجا اجزای اصلی UI در Trace Viewer آمده است:

  • محور زمان به صورت افقی در بالا اجرا می شود و زمان را نسبت به شروع ردیابی نشان می دهد.
  • جدول‌های زمانی بر اساس بخش‌ها و مسیرها، با برچسب‌هایی که در محور عمودی سمت چپ قرار دارند، سازمان‌دهی می‌شوند. هر بخش یک عنصر پردازشی را نشان می‌دهد (به عنوان مثال، یک گره دستگاه یا رشته‌های میزبان) و می‌توان آن را گسترش داد یا جمع کرد. در هر بخش، مسیرهایی وجود دارد که جدول زمانی برای فعالیت های خاص هستند.
  • رویدادها بلوک های رنگی و مستطیلی در مسیرهای خط زمانی هستند که نشان دهنده مدت زمان یک عملیات یا یک متا رویداد مانند یک مرحله آموزشی هستند. رنگ وقایع معنای خاصی ندارد.
  • پنجره جزئیات اطلاعات اضافی در مورد رویدادهای انتخاب شده در صفحه جدول زمانی مانند نام، زمان شروع و مدت زمان آنها را نشان می دهد.

بخش ها و آهنگ های معمولی

Trace Viewer بخش ها و آهنگ های زیر را ارائه می دهد.

  • یک بخش برای هر گره TPU، با آهنگ های زیر:
    • ماژول XLA: برنامه XLA در حال اجرا است.
    • XLA Ops: عملیات XLA HLO را که بر روی هسته TPU اجرا می شد را نشان می دهد. هر عملیات چارچوب سطح بالاتر (به عنوان مثال JAX، Tensorflow یا PyTorch) به یک یا چند عملیات XLA ترجمه می شود، که سپس برای اجرا در TPU کامپایل می شوند. وقتی روی یک عملیات XLA کلیک می‌کنید، می‌توانید پیوندهایی به عملیات را در Graph Viewer به همراه اطلاعات اضافی درباره عملیات مانند زمان شروع/ توقف، مدت زمان و ردیابی پشته منبع (در صورت در دسترس بودن فریم‌ورک و کامپایلر) مشاهده کنید.
    • XLA TraceMe: حاشیه نویسی های مشخص شده توسط کاربر در کد آن ها که واحدهای منطقی کاری را که قصد ردیابی آن ها را دارند توصیف می کند. حتی اگر هیچ حاشیه‌نویسی اضافه نکرده باشید، ممکن است همچنان داده‌ها را در اینجا ببینید. آن‌ها معمولاً توسط XLA (مثلاً هسته‌های مانع)، یا خود XProf (مثلاً ورودی‌های ردیابی حذف شده) اضافه می‌شوند.
    • مرحله: مدت زمان مراحل آموزشی در حال اجرا بر روی آن هسته TPU را نشان می دهد، در صورتی که به طور مناسب در برنامه یا چارچوب کاربر حاشیه نویسی شده باشد.
    • Framework Ops: عملیات چارچوب (به عنوان مثال JAX، Tensorflow، یا PyTorch) اجرا شده بر روی هسته TPU را نشان می دهد، در صورتی که به طور مناسب در برنامه یا چارچوب کاربر حاشیه نویسی شده باشد.
    • محدوده نام چارچوب: برای هر عملیات فریم ورک، تصویری از ردیابی پشته. برای اختصار، این آهنگ فقط برای یک دستگاه ظاهر می شود.
    • کد منبع: مسیر کد منبع در حال اجرا، در صورت موجود بودن در نمایه.
    • واحد اسکالر: برای TPU ها، رویدادهایی که روی واحد اسکالر اجرا می شوند، در صورت وجود در نمایه به تصویر کشیده می شوند.
    • پرچم‌های TensorCore Sync: مکانیسم همگام‌سازی در TPUها، در صورت وجود در نمایه نشان داده می‌شود.
    • Host Offload: عملیاتی که داده ها را به طور ناهمزمان بین حافظه میزبان و حافظه شتاب دهنده منتقل می کند. معمولاً عملیات شروع و توقف متناظری وجود دارد که در خط XLA Ops ظاهر می شود و نشان می دهد که شتاب دهنده برای انتقال داده آماده شده است (به عنوان مثال، علامت گذاری مناطق حافظه منبع/مقصد به عنوان "در حال استفاده" برای مدت زمان انتقال). در صورتی که چندین عملیات تخلیه به صورت موازی اجرا شوند، ممکن است ردیف‌های تخلیه میزبان متعددی وجود داشته باشد که به نمایشگر ردیابی نیاز دارد تا چندین رویداد را همزمان نمایش دهد.
  • یک بخش برای هر گره Sparsecore: برخی از نسل های TPU (به عنوان مثال، TPU v5p و Trillium ) علاوه بر واحدهای محاسباتی متراکم MXU، به یک یا چند واحد SparseCore مجهز هستند. ماژول‌ها، عملیات‌ها و TraceMes مرتبط با این هسته‌ها در این بخش ظاهر می‌شوند.
  • یک بخش برای هر گره GPU، با مسیرهای زیر:
    • ماژول های XLA، عملیات چارچوب، محدوده نام چارچوب، مراحل، کد منبع. اینها همه شبیه به بخش های TPU هستند.
    • یک آهنگ در هر جریان، با نام جریان همچنین شامل اطلاعاتی در مورد انواع عملیات اجرا شده در جریان (Memcpy، Compute و غیره).
    • XLA TraceMe برای پردازنده های گرافیکی پشتیبانی نمی شود.
    • XLA Ops در بخش‌های GPU ظاهر می‌شود، اما در حال حاضر همیشه دقیق نیستند، زیرا از داده‌های جریان مشتق شده‌اند. بنابراین، آنها نمی توانند به طور کامل مدل اجرای GPU را در جایی که ممکن است نقشه N:M از XLA Ops به هسته های واقعی که در جریان های مختلف اجرا می شوند، و زمان بندی پویا جریان های متعدد بر روی SM های مختلف در سخت افزار وجود داشته باشد، توضیح دهند.
  • یک بخش برای هر جزء (مثلاً یک Threadpool) در حال اجرا بر روی CPU ماشین میزبان، با یک آهنگ در هر رشته، در مورد Threadpools. اگر در طول جمع‌آوری نمایه فعال شده باشد، ردپای پایتون را نیز در اینجا خواهید دید.

توجه داشته باشید که فقط XLA Ops برای TPU ها و داده های جریانی برای GPU ها مستقیماً در نمایه جمع آوری شده زمین می شوند. تمام خطوط دیگر "خطوط مشتق شده" هستند، شامل اطلاعات اختیاری "باند جانبی" ارائه شده توسط کامپایلر، حاشیه نویسی های اختیاری کاربر، و/یا اکتشافی های اعمال شده توسط XProf. بنابراین، این خطوط مشتق شده ممکن است در پروفایل های خاصی ظاهر شوند یا نباشند.

سایر ویژگی ها

  • می توانید نام رویدادهای خاص را با استفاده از نوار جستجوی "پیدا کردن رویدادها..." جستجو کنید. در حال حاضر، به جای ردیابی کامل، فقط در پنجره زمانی قابل مشاهده روی صفحه جستجو می شود.
  • رویدادهای جریان: فعال کردن این گزینه با کلیک کردن روی دکمه "رویدادهای جریان" در نوار بالا، تجسم‌ها را اضافه می‌کند، رویدادها را در یک رشته یا خط به رویدادهای یک خط رشته دیگر پیوند می‌دهد. به عنوان مثال، ممکن است فلشی از op روی میزبان کشیده شود که کار را برای یک شتاب دهنده به صف می کشد یا راه اندازی می کند، به سمت op روی شتاب دهنده ای که آن کار را اجرا می کند. XProf این پیوندها را از طریق ترکیبی از حاشیه نویسی های کاربر، اکتشافی داخلی، و با اطلاعات پس از پردازش که از اجزای مختلف دریافت می کند (مثلاً درایورهای CUPTI، شناسه های راه اندازی هسته، اطلاعات زمان اجرا TPU و غیره) تعیین می کند.
  • با کلیک بر روی یک عملیات XLA اطلاعات بیشتری در قسمت جزئیات ارائه می شود. به عنوان مثال، به عملیات در ابزار Graph Viewer پیوند می‌دهد. همچنین ممکن است نشانگرهایی را به کد منبع و/یا ردیابی پشته پایتون، عملیات چارچوبی که باعث ایجاد این عملیات XLA شده و غیره (در صورت وجود در نمایه) ارائه دهد. همچنین ممکن است FLOPS (تعداد عملیات ممیز شناور اجرا شده توسط op) و بایت های قابل دسترسی توسط op را نشان دهد. این اطلاعات به‌جای اطلاعات زمان اجرا از نمایه، به‌طور ایستا از XLA در طول کامپایل به دست می‌آید.