رده: عدم تطابق بافر ورودی برنامه
نوع: زمان اجرا
مثال گزارش خطا
XlaRuntimeError: INVALID_ARGUMENT: Executable(jit_embedding_pipeline_step_fn) expected parameter 2482 of size 5242880 (bf16[16,1280,40]{2,1,0:T(8,128)(2,1)}) but got buffer with incompatible size 1638400 (bf16[16,1280,40]{1,2,0:T(8,128)(2,1)}): while running replica 0 and partition 0 of a replicated computation (other replicas may have failed as well).
چرا اینها اتفاق می افتند؟
این خطا زمانی رخ میدهد که زمان اجرای XLA عدم تطابق بین اندازه بافر حافظه مورد انتظار یک برنامه کامپایل شده و اندازه بافری که در زمان اجرا ارائه میشود را تشخیص دهد. پیام خطا هم اندازههای مورد انتظار و هم اندازههای واقعی و همچنین شکلها و طرحبندیهای تانسور را نشان میدهد.
توجه داشته باشید که این خطاها حتی اگر دو تانسور شکل یکسانی داشته باشند اما اندازه آنها در حافظه متفاوت باشد، ممکن است رخ دهند، اگر طرح فیزیکی آنها (نحوه کاشیکاری و چیدمان دادهها روی سختافزار) متفاوت باشد.
این خطاها عمدتاً ناشی از موارد زیر هستند: - عدم تطابق پیکربندی Checkpoint و XLA - یک مدل آموزش داده میشود و یک Checkpoint ذخیره میشود. طرح فیزیکی وزنها در آن Checkpoint توسط نسخه دقیق XLA و پیکربندی (مثلاً پرچمهای XLA) در آن زمان تعیین میشود. بعداً، این Checkpoint در محیط متفاوتی بارگذاری میشود که پیکربندی در آن تغییر کرده است. یک پرچم جدید، یک مقدار پیشفرض متفاوت یا تغییر در کد مدل/XLA میتواند باعث شود که زمان اجرا انتظار یک طرح فیزیکی متفاوت برای وزنها را داشته باشد. هنگامی که بافر قدیمی از Checkpoint به برنامه XLA کامپایل شده جدید منتقل میشود، زمان اجرا خطا میدهد. - طرحبندیهای خاص سختافزار/توپولوژی - کامپایلر XLA آزاد است تا طرحبندیهای فیزیکی مختلفی را برای تانسورها انتخاب کند تا عملکرد را در سختافزارهای مختلف بهینه کند. طرحی که برای TPU نسخه ۴ بهینه است، ممکن است با TPU نسخه ۵ یا حتی برای برشهای مختلف غلاف از همان تراشه متفاوت باشد (مثلاً ۴x۴x۴ در مقابل ۴x۸). این خطا زمانی رخ میدهد که یک مدل با فرضی در مورد طرحبندی یک توپولوژی کامپایل میشود، اما در زمان اجرا روی توپولوژی متفاوتی برنامهریزی میشود، یا اشکالی در منطق طرحبندی کامپایلر برای یک قطعه سختافزاری خاص وجود دارد.
چگونه یک کاربر میتواند در صورت بروز مشکل، برنامه خود را اصلاح کند؟
- از سازگاری پیکربندی بین خروجی مدل و اجرای مجدد از نقاط کنترل اطمینان حاصل کنید:
- از استفاده از Checkpoint های قدیمی با کد جدید خودداری کنید، مگر اینکه مطمئن باشید هیچ تغییری که بر طرحبندی تأثیر بگذارد، ایجاد نشده است.
- مدل ذخیره شده را دوباره صادر کنید: اگر به عدم تطابق ایست بازرسی/پیکربندی مشکوک هستید، مطمئنترین راه حل، صادر کردن مجدد مدل ذخیره شده با استفاده از همان کدبیس و پیکربندی (و فعلی) است که برای استنتاج یا تنظیم دقیق استفاده میکنید.
- بین دو اجرا، تغییرات پیکربندی (مثلاً پرچمهای XLA) را بررسی کنید.
- طرحبندیهای خاص سختافزار/توپولوژی:
- در صورت تعویض سختافزار یا توپولوژی، عدم تطابق نسخه سختافزار و توپولوژی را بررسی کنید.