ত্রুটি কোড: ০১০২

বিভাগ: প্রোগ্রাম ইনপুট বাফার অমিল

ধরণ: রানটাইম

ত্রুটি লগের উদাহরণ

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 রানটাইম একটি কম্পাইল করা প্রোগ্রাম দ্বারা প্রত্যাশিত মেমরি বাফারের আকার এবং কার্যকর করার সময় প্রকৃতপক্ষে প্রদত্ত বাফারের আকারের মধ্যে একটি অমিল সনাক্ত করে। ত্রুটি বার্তাটি প্রত্যাশিত এবং প্রকৃত আকার উভয়ই নির্দেশ করে, সেইসাথে টেনসরের আকার এবং লেআউটও নির্দেশ করে।

মনে রাখবেন যে দুটি টেনসরের আকৃতি একই হলেও এই ত্রুটিগুলি ঘটতে পারে কিন্তু মেমরিতে তাদের আকার ভিন্ন হতে পারে যদি তাদের ভৌত বিন্যাস (হার্ডওয়্যারে ডেটা কীভাবে টাইল করা এবং সাজানো হয়) ভিন্ন হয়।

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

যখন কোনও ব্যবহারকারী তার প্রোগ্রামে কোনও সমস্যা হয়, তখন কীভাবে তা ঠিক করতে পারে?

  • মডেল এক্সপোর্ট এবং চেকপয়েন্ট থেকে পুনরায় চালানোর মধ্যে কনফিগারেশনের ধারাবাহিকতা নিশ্চিত করুন:
    • নতুন কোড সহ পুরানো চেকপয়েন্ট ব্যবহার করা এড়িয়ে চলুন যদি না আপনি নিশ্চিত হন যে লেআউট-প্রভাবিত কোনও পরিবর্তন করা হয়নি।
    • সংরক্ষিত মডেলটি পুনরায় রপ্তানি করুন: যদি আপনার সন্দেহ হয় যে চেকপয়েন্ট/কনফিগারেশনের অমিল আছে, তাহলে সবচেয়ে নির্ভরযোগ্য সমাধান হল সংরক্ষিত মডেলটি পুনরায় রপ্তানি করা, ঠিক একই (এবং বর্তমান) কোডবেস এবং কনফিগারেশন ব্যবহার করে যা আপনি অনুমান বা সূক্ষ্ম-টিউনিংয়ের জন্য ব্যবহার করছেন।
    • দুটি রানের মধ্যে কনফিগারেশন পরিবর্তন (যেমন XLA ফ্ল্যাগ) পরীক্ষা করুন।
  • হার্ডওয়্যার/টপোলজি-নির্দিষ্ট লেআউট:
    • হার্ডওয়্যার বা টপোলজি পরিবর্তন করার সময় হার্ডওয়্যার সংস্করণ এবং টপোলজির মধ্যে অমিল আছে কিনা তা পরীক্ষা করুন।