کد خطا: E0200

رده: زمان اجرا: هسته به طور غیرمنتظره‌ای متوقف شد

این خطا نشان می‌دهد که یک هسته TPU اجرای دستورالعمل‌ها را پیش از موعد متوقف کرده است. این یک حالت خطای مهلک است که در آن سخت‌افزار به دلیل یک خطای غیرقابل جبران، نقض محدودیت‌های سخت‌افزاری یا یک وقفه عمدی که توسط ادعاهای زمان اجرا توسط کامپایلر ایجاد شده است، مجبور به توقف می‌شود.

نمونه پیام خطا:

INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 ...

پایه‌های XLA: TPU

نمای کلی

XLA برنامه‌های JAX را به دنباله‌ای از دستورالعمل‌های اسمبلی سطح پایین کامپایل می‌کند. در زمان اجرا، دستگاه TPU این دستورالعمل‌ها را به صورت متوالی اجرا می‌کند. خطای "Core Stopted Unexpectedly" زمانی رخ می‌دهد که سخت‌افزار TPU با یک وضعیت غیرقابل بازیابی مواجه شود که مانع از اجرای بیشتر می‌شود و هسته را مجبور به ورود به حالت "HALTED" می‌کند.

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

اشکال‌زدایی

برای رفع این خطا، ابتدا باید مشخص کنید که کدام یک از سه سناریوی خاص باعث توقف غیرمنتظره شده است. گزارش‌های خود را برای امضاهای متنی خاص شرح داده شده در زیر بررسی کنید.

سناریو ۱: خرابی زیرساخت (سخت‌افزار/شبکه/برق)

امضا: گزارش‌ها به صراحت بیان می‌کنند که observed errors are: [Network] یا observed errors are: [Power] یا observed errors are: [Hardware] .

این نشان دهنده خرابی زیرساخت فیزیکی است که به نرم افزار یا منطق مدل شما ربطی ندارد. تراشه TPU، شبکه متصل کننده تراشه ها یا منبع تغذیه از کار افتاده است.

  • دوباره امتحان کردن کار: اگر مشکل افت ولتاژ گذرا یا اختلال در شبکه بود، یک تلاش مجدد ساده ممکن است جواب بدهد.
  • شناسایی و حذف گره‌های خراب: اگر خطا در همان وظیفه یا میزبان خاص ادامه داشت، احتمالاً سخت‌افزار معیوب است. از ابزارهای مدیریت کلاستر خود برای "تخلیه"/"محاصره" گره آسیب‌دیده استفاده کنید و کار خود را روی گره‌های سالم مجدداً راه‌اندازی کنید.

سناریو ۲: نقض محدودیت‌های سخت‌افزاری

امضا: observed errors are: [User] .

این نشان می‌دهد که کامپایلر XLA دستورالعملی تولید کرده که یک محدودیت سخت‌افزاری غیرقابل نقض را نقض کرده است (مثلاً دستورالعملی که سعی در دسترسی به یک آدرس حافظه خارج از محدوده در حافظه HBM یا Scratchpad دارد). اگرچه این مورد با برچسب "کاربر" مشخص شده است، اما به ندرت توسط کد کاربر سطح بالا ایجاد می‌شود.

  • ثبت یک اشکال XLA: این احتمالاً یک اشکال کامپایلر است، کامپایلر هرگز نباید دستورالعمل‌هایی را منتشر کند که مشخصات سخت‌افزاری را نقض می‌کنند. لطفاً یک گزارش اشکال ثبت کنید.

سناریو ۳: خطاهای Assertion تولید شده توسط کامپایلر XLA

امضا: پیام خطا حاوی جزئیات خاصی در مورد ادعای تولید شده توسط کامپایلر است که با شکست مواجه شده است. به دنبال کلمات کلیدی زیر باشید:

  • BoundsCheck , scheckne , scheckeq , schecklt , scheckge , scheckbetween

این نشان می‌دهد که یک دستور تولید شده توسط کامپایلر در برنامه کامپایل شده در حین اجرا با شکست مواجه شده است. پیام خطای خاص را برای تعیین زیرنوع آن تجزیه و تحلیل کنید:

سناریوی ۳.الف: عدم تطابق گروه راه‌اندازی

نمونه پیام خطا:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:1:0x1d9 (from TensorCoreSequencer:1:0x309): scheckne: An unexpected leader shows up in the launch group with a different launch id than the current group leader.

علت: این خطا معمولاً در محیط‌های TPU چند میزبانه رخ می‌دهد. این خطا نشان می‌دهد که هسته‌های TPU که انتظار می‌رود برنامه یکسانی را به صورت هماهنگ (به عنوان بخشی از یک "گروه راه‌اندازی") اجرا کنند، از همگام‌سازی خارج شده‌اند. به طور خاص، یک هسته TPU به یک گروه هماهنگ‌سازی با شناسه برنامه متفاوت از رهبر گروه فعلی پیوسته است، که نشان می‌دهد برنامه‌های ناسازگار در میزبان‌ها وجود دارد.

  • پرچم‌های XLA را تأیید کنید: مطمئن شوید که همه میزبان‌ها دقیقاً از XLA_FLAGS یکسانی استفاده می‌کنند.
  • برنامه‌های Jax سازگار: بررسی کنید که همه میزبان‌ها برنامه Jax یکسانی را اجرا می‌کنند. تصاویر docker، نسخه‌های libtpu و غیره را تأیید کنید.

سناریوی ۳.ب: شکست در بررسی مرزها

نمونه پیام خطا:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:23:0x292 (from TensorCoreSequencer:23:0xd74a): BoundsCheck 92 [deref of %s931] for %937 = dma.hbm_to_vmem [thread:$0]  /*hbm=*/%s931, /*size_in_granules=*/16384, /*vmem=*/%s935, /*dst_syncflagno=*/%s860, /*src_stride=*/512, /*dst_stride=*/128, /*steps_per_stride=*/8

علت: برنامه سعی در دسترسی به حافظه خارج از محدوده‌های اختصاص داده شده داشته است. پیام خطا اغلب شامل جزئیاتی در مورد نوع دسترسی به حافظه (مثلاً dma.hbm_to_vmem) و محاسبه آدرس است.

  • اشکال‌زدایی هسته‌های سفارشی: اگر از Pallas استفاده می‌کنید، محاسبات شاخص خود را بررسی کنید. برای اعتبارسنجی شاخص‌های تانسور pl.debug_print یا checkify استفاده کنید.
  • بررسی شاردینگ: اطمینان حاصل کنید که حاشیه‌نویسی‌های شاردینگ با اشکال تانسور سازگار هستند.

سناریوی ۳.ج: همگام‌سازی موزاییک/پالاس

نمونه پیام خطا:

Core halted unexpectedly: INTERNAL: Accelerator device halted prematurely, perhaps due to an on-device check-failure. Node 0 halted unexpectedly at tag:pc TensorCoreSequencer:21:0xae5 (from TensorCoreSequencer:21:0x54c5): Semaphore (scratch argument 1) has a nonzero value upon exit from a Mosaic kernel. Make sure every DMA is awaited, and every semaphore signal is paired with a wait.

علت: این خطا مختص کدی است که توسط کامپایلر Mosaic (که توسط Pallas JAX استفاده می‌شود) تولید می‌شود. این خطا نشان‌دهنده‌ی یک مشکل همگام‌سازی در یک هسته‌ی سفارشی است. TPUها از سمافورها برای مدیریت وابستگی‌ها استفاده می‌کنند (مثلاً اطمینان از کامل بودن DMA قبل از استفاده). این خطا نشان می‌دهد که سیگنالی روی سمافور به درستی منتظر نمانده است.

  • همگام‌سازی حسابرسی: اطمینان حاصل کنید که هر dma_start یک dma_wait متناظر دارد.
  • بررسی سمافورها: بررسی کنید که سیگنال‌ها و انتظارهای سمافور کاملاً جفت شده باشند.

مسائل دسته‌بندی نشده

اگر گزارش خطای شما با سناریوهای ۱، ۲ یا ۳ مطابقت ندارد (یعنی هیچ «خطای مشاهده‌شده»، هیچ برچسب «چک» و هیچ پیام مرز/نشانه‌گذاری خاصی وجود ندارد):

  • اقدام: این احتمالاً یک اشکال داخلی XLA است. لطفاً گزارش اشکال را ثبت کنید.