رده: زمان اجرا: عدم تطابق بافر ورودی برنامه
این خطا زمانی رخ میدهد که زمان اجرای XLA عدم تطابق بین اندازه بافر حافظه مورد انتظار یک برنامه کامپایل شده و اندازه بافری که در واقع در زمان اجرا ارائه میشود را تشخیص دهد.
نمونه پیام خطا:
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: TPU
نمای کلی
پیام خطا، اندازههای مورد انتظار و واقعی و همچنین شکلها و طرحبندیهای تانسور را نشان میدهد. توجه داشته باشید که این خطاها ممکن است حتی اگر دو تانسور شکل یکسانی داشته باشند اما اندازه آنها در حافظه متفاوت باشد، رخ دهند، اگر طرحبندی فیزیکی آنها (نحوه کاشیکاری و چیدمان دادهها روی سختافزار) متفاوت باشد.
این خطاها عمدتاً ناشی از موارد زیر هستند:
- عدم تطابق پیکربندی Checkpoint و XLA - یک مدل آموزش داده میشود و یک Checkpoint ذخیره میشود. طرح فیزیکی وزنها در آن Checkpoint توسط نسخه دقیق XLA و پیکربندی (مثلاً پرچمهای XLA) در آن زمان تعیین میشود. بعداً، این Checkpoint در محیط متفاوتی بارگذاری میشود که پیکربندی در آن تغییر کرده است. یک پرچم جدید، یک مقدار پیشفرض متفاوت یا تغییر در کد مدل/XLA میتواند باعث شود که زمان اجرا انتظار یک طرح فیزیکی متفاوت برای وزنها را داشته باشد. هنگامی که بافر قدیمی از Checkpoint به برنامه XLA کامپایل شده جدید منتقل میشود، زمان اجرا خطا میدهد.
- طرحبندیهای خاص سختافزار/توپولوژی - کامپایلر XLA میتواند طرحبندیهای فیزیکی مختلفی را برای تانسورها انتخاب کند تا عملکرد را در سختافزارهای مختلف بهینه کند. طرحی که برای TPU نسخه ۴ بهینه است، ممکن است با TPU نسخه ۵ یا حتی برای برشهای مختلف پاد از همان تراشه متفاوت باشد (مثلاً ۴x۴x۴ در مقابل ۴x۸). این خطا زمانی رخ میدهد که یک مدل با فرضی در مورد طرحبندی یک توپولوژی کامپایل میشود، اما در زمان اجرا روی توپولوژی متفاوتی برنامهریزی میشود، یا اشکالی در منطق طرحبندی کامپایلر برای یک قطعه سختافزار خاص وجود دارد.
اشکالزدایی
- از سازگاری پیکربندی بین خروجی مدل و اجرای مجدد از نقاط کنترل اطمینان حاصل کنید:
- از استفاده از Checkpoint های قدیمی با کد جدید خودداری کنید، مگر اینکه مطمئن باشید هیچ تغییری که بر طرحبندی تأثیر بگذارد، ایجاد نشده است.
- مدل ذخیره شده را دوباره صادر کنید: اگر به عدم تطابق ایست بازرسی/پیکربندی مشکوک هستید، مطمئنترین راه حل، صادر کردن مجدد مدل ذخیره شده با استفاده از همان کدبیس و پیکربندی (و فعلی) است که برای استنتاج یا تنظیم دقیق استفاده میکنید.
- بین دو اجرا، تغییرات پیکربندی (مثلاً پرچمهای XLA) را بررسی کنید.
- طرحبندیهای خاص سختافزار/توپولوژی:
- در صورت تعویض سختافزار یا توپولوژی، عدم تطابق نسخه سختافزار و توپولوژی را بررسی کنید.