این راهنما نحوه استفاده از ابزارهای XProf را برای ردیابی طول عمر تانسورها و شناسایی تانسورها یا بافرهایی که به درستی آزاد نمیشوند، که میتواند منجر به نشت حافظه یا خطاهای خارج از حافظه (OOM) شود، شرح میدهد.
نمای کلی
XProf چندین ابزار مکمل برای تحلیل الگوهای تخصیص و آزادسازی حافظه ارائه میدهد:
- نمایه حافظه : نمای پویای زمان اجرا از تخصیصها و آزادسازیهای حافظه در طول زمان، شامل جدول تجزیه حافظه؛
- نمایشگر حافظه : نمای استاتیک و مبتنی بر کامپایلر از تخصیص بافر به ترتیب برنامه؛
- نمایشگر ردیابی : نمایش نمودار زمانی که اجرای عملیات و وابستگیها را نشان میدهد.
با گرفتن عکس از پروفایل خود شروع کنید.
تجزیه و تحلیل جدول زمانی حافظه با مشخصات حافظه
ابزار Memory Profile را باز کنید تا نمای پویایی از تخصیصها و آزادسازیها داشته باشید. مطمئن شوید که Memory ID مناسب (معمولاً HBM برای GPU/TPU) را انتخاب کردهاید.
نمودار جدول زمانی حافظه را بررسی کنید :
- افزایش استفاده از حافظه : به دنبال روندهای صعودی در استفاده از حافظه heap (نارنجی) باشید که هرگز کاهش نمییابند، زیرا ممکن است نشاندهنده نشت حافظه باشند.
- فقدان آزادسازی حافظه : اگر حافظه به طور مداوم در طول مراحل رشد کند، ممکن است آزادسازی حافظه اتفاق نیفتد.
- افزایش ناگهانی قطعه قطعه شدن : قطعه قطعه شدن زیاد میتواند نشاندهنده مدیریت ناکارآمد حافظه باشد. برای اطلاعات بیشتر، به بخش تشخیص قطعه قطعه شدن مراجعه کنید.
خلاصه مشخصات حافظه را بررسی کنید : تعداد کل تخصیصها در مقابل آزادسازیها باید تقریباً متعادل باشد. اگر تعداد تخصیصها در طول پنجره پروفایل بیشتر از تعداد آزادسازیها باشد، تانسورها در حافظه انباشته میشوند.
جدول تجزیه حافظه، در پایین رابط ابزار پروفایل حافظه، نشان میدهد که کدام عملیات چارچوب بیشترین سهم را در استفاده از حافظه در اوج مصرف دارند و همچنین میتوان از آن برای شناسایی خطاهای OOM یا نشت حافظه استفاده کرد.
ردیابی طول عمر بافرهای تکی با استفاده از نمایشگر حافظه
برای تجزیه و تحلیل استاتیک دقیق طول عمر بافر، از Memory Viewer استفاده کنید.
- ابزار Memory Viewer را انتخاب کنید و ماژول HLO مورد نظر برای تجزیه و تحلیل را از منوی کشویی انتخاب کنید.
جدول زمانی تخصیص حافظه را بررسی کنید: روی پیوند «جدول زمانی» در کنار «اندازه تخصیص حافظه (MiB) در مقابل ترتیب برنامه (توالی HLO)» کلیک کنید. این کار تجسمی از تخصیصهای حافظه را با مجموعهای از کادرهای رنگی، هر کدام برای هر تخصیص، نمایش میدهد.
- هر بلوک رنگی نشان دهنده یک تخصیص است؛
- عرض هر بلوک نشان دهنده طول عمر به ترتیب برنامه است؛
- ارتفاع هر بلوک نشان دهنده اندازه تخصیص است؛
- قرارگیری عمودی هر بلوک، آدرس حافظه شروع (آفست) آن را نشان میدهد.
به دنبال بلوکهایی باشید که کل برنامه را در بر میگیرند، به این معنی که هرگز از هم جدا نشدهاند. میتوانید برای اطلاعات بیشتر در مورد عملیات HLO که نمایش داده میشود، نشانگر ماوس را روی بلوکها نگه دارید.

نمودارهای بافر را در ابزار Memory Viewer بررسی کنید تا تخصیصهای طولانیمدت را شناسایی کنید. پس از انتخاب ماژول HLO که میخواهید بررسی کنید، به بخش «HLO Ops at Peak Memory Allocation Time» در ابزار بروید. برای مشاهده اطلاعات بیشتر در مورد عملیات نمایش داده شده، ماوس را روی بافرهای جداگانه در نمودارهای بافر نگه دارید. در صورت وجود، پوشش روی نمودار خطی، نقاط تخصیص و آزادسازی را نشان میدهد. بافرهایی که هرگز آزادسازی نمیشوند، دارای نوارهایی هستند که تا انتها امتداد دارند.
