বিভাগ: রানটাইম: প্রোগ্রাম ইনপুট অমিল
এই ত্রুটিটি ঘটে যখন XLA রানটাইম শনাক্ত করে যে, প্রোগ্রাম চালানোর সময় প্রদত্ত কোনো ইনপুট বাফার, কম্পাইল করা প্রোগ্রামের প্রত্যাশিত মেটাডেটার (যেমন বাফারের আকার বা PJRT মেমরি স্পেসের ধরন) সাথে মেলে না।
নমুনা ত্রুটি বার্তা:
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
সংক্ষিপ্ত বিবরণ
বাফার-সাইজের অমিলের ক্ষেত্রে, এরর মেসেজটি প্রত্যাশিত ও প্রকৃত সাইজ, সেইসাথে টেনসরের শেপ ও লেআউট নির্দেশ করে। উল্লেখ্য যে, দুটি টেনসরের শেপ একই হলেও এই এররগুলো ঘটতে পারে, কিন্তু তাদের ফিজিক্যাল লেআউট (হার্ডওয়্যারে ডেটা কীভাবে টাইল ও সাজানো থাকে) ভিন্ন হলে মেমরিতে তাদের সাইজ আলাদা হতে পারে। মেমরি-স্পেসের অমিলের ক্ষেত্রে, এরর মেসেজটি জানায় যে প্যারামিটার বাফারটি একটি অপ্রত্যাশিত মেমরি স্পেসে রয়েছে।
এই ত্রুটিগুলির প্রধান কারণগুলি হলো:
- চেকপয়েন্ট এবং XLA কনফিগারেশনের অমিল: একটি মডেলকে প্রশিক্ষণ দেওয়া হয় এবং একটি চেকপয়েন্ট সংরক্ষণ করা হয়। সেই চেকপয়েন্টে ওয়েটগুলোর ফিজিক্যাল লেআউট তৎকালীন XLA-এর সঠিক সংস্করণ এবং কনফিগারেশন (যেমন XLA ফ্ল্যাগ) দ্বারা নির্ধারিত হয়। পরবর্তীতে, এই চেকপয়েন্টটি একটি ভিন্ন পরিবেশে লোড করা হয় যেখানে কনফিগারেশন পরিবর্তিত হয়েছে। একটি নতুন ফ্ল্যাগ, একটি ভিন্ন ডিফল্ট মান, অথবা মডেল/XLA কোডের কোনো পরিবর্তনের কারণে রানটাইম ওয়েটগুলোর জন্য একটি ভিন্ন ফিজিক্যাল লেআউট প্রত্যাশা করতে পারে। যখন চেকপয়েন্টের পুরোনো বাফারটি নতুন কম্পাইল করা XLA প্রোগ্রামে পাঠানো হয়, তখন রানটাইম একটি এরর দেখায়।
- হার্ডওয়্যার/টপোলজি-নির্দিষ্ট লেআউট: XLA কম্পাইলার বিভিন্ন হার্ডওয়্যারে পারফরম্যান্স অপ্টিমাইজ করার জন্য টেনসরের ভিন্ন ভিন্ন ফিজিক্যাল লেআউট বেছে নিতে পারে। একটি v4 TPU-এর জন্য সর্বোত্তম লেআউট একটি v5 TPU-এর থেকে ভিন্ন হতে পারে, অথবা এমনকি একই চিপের বিভিন্ন পড স্লাইসের (যেমন, 4x4x4 বনাম 4x8) জন্যও ভিন্ন হতে পারে। এই ত্রুটিটি ঘটে যখন একটি মডেলকে কোনো একটি টপোলজির লেআউট সম্পর্কে ধারণা নিয়ে কম্পাইল করা হয়, কিন্তু রানটাইমে এটিকে একটি ভিন্ন টপোলজিতে শিডিউল করা হয়, অথবা কোনো নির্দিষ্ট হার্ডওয়্যারের জন্য কম্পাইলারের লেআউট লজিকে কোনো বাগ থাকে।
ডিবাগিং
- মডেল এক্সপোর্ট এবং চেকপয়েন্ট থেকে পুনরায় চালানোর মধ্যে কনফিগারেশন সামঞ্জস্য নিশ্চিত করুন।
- নতুন কোডের সাথে পুরোনো চেকপয়েন্ট ব্যবহার করা থেকে বিরত থাকুন, যদি না আপনি নিশ্চিত হন যে লেআউটকে প্রভাবিত করে এমন কোনো পরিবর্তন করা হয়নি।
- যদি আপনার চেকপয়েন্ট/কনফিগারেশনের অমিলের সন্দেহ হয়, তবে সবচেয়ে নির্ভরযোগ্য সমাধান হলো ইনফারেন্স বা ফাইন-টিউনিংয়ের জন্য ব্যবহৃত হুবহু একই (এবং বর্তমান) কোডবেস ও কনফিগারেশন ব্যবহার করে সংরক্ষিত মডেলটি পুনরায় এক্সপোর্ট করা।
- দুটি রানের মধ্যে কনফিগারেশনে কোনো পরিবর্তন (যেমন XLA ফ্ল্যাগ) হয়েছে কিনা তা পরীক্ষা করুন।
- হার্ডওয়্যার/টপোলজি-নির্দিষ্ট লেআউট
- হার্ডওয়্যার বা টপোলজি পরিবর্তন করার সময় হার্ডওয়্যার ভার্সন এবং টপোলজির অমিল যাচাই করুন।