বিভাগ: স্পার্সকোর: কোনও কার্যকর লজিক্যাল রেপ্লিকা গণনা নেই
এই ত্রুটিটি তখন ঘটে যখন XLA:SparseCore কম্পাইলার একটি বৈধ লজিক্যাল রেপ্লিকা কাউন্ট কনফিগারেশন নির্ধারণ করতে ব্যর্থ হয় যা SparseCore এর স্থানীয় স্ক্র্যাচপ্যাড মেমরি (Tilespmem) এর মধ্যে কাজের চাপ ফিট করতে দেয়।
নমুনা ত্রুটি বার্তা:
XLA:TPU compile permanent error. Compilation failure: No viable logical replica count for the embedding table with metadata: max_nz_per_row = 141352, max_unique_nz_per_row = 8, feature_width = 8, sample_count = 204800 (last tried split factor for vector splitting = 1, last tried split factor for sample dimension splitting = 1, fixed_size_allocation_bytes = 410880, row_dependent_size_allocation_bytes = 1696224, total_spmem_size_bytes = 524288) ...
XLA ব্যাকএন্ড: TPU
সংক্ষিপ্ত বিবরণ
এই ত্রুটিটি স্পার্সকোর ব্যবহারের ক্ষেত্রে নির্দিষ্ট, বিশেষ করে লার্জ এম্বেডিং মডেল (LEM) এর ক্ষেত্রে।
লজিক্যাল রেপ্লিকা কাউন্ট হল একটি অভ্যন্তরীণ কম্পাইলার প্যারামিটার যা নির্ধারণ করে যে স্ক্র্যাচপ্যাড বরাদ্দ চাপ পরিচালনা করার জন্য ইনপুট ব্যাচগুলি কীভাবে পার্টিশন করা হয়। কম্পাইলারটি কাজের চাপকে ছোট ছোট অংশে (রেপ্লিকা) বিভক্ত করার চেষ্টা করে যাতে প্রতিটি অংশের জন্য প্রয়োজনীয় মধ্যবর্তী বাফারগুলি স্পার্সকোরের সীমিত স্ক্র্যাচপ্যাড মেমোরিতে ফিট হয়। সাধারণত, উচ্চতর লজিক্যাল রেপ্লিকা কাউন্ট একসাথে ছোট ছোট ব্যাচের ডেটা প্রক্রিয়াকরণের মাধ্যমে বরাদ্দ চাপ হ্রাস করে।
এই ত্রুটিটি ইঙ্গিত দেয় যে বিভিন্ন বিভাজন কনফিগারেশন চেষ্টা করার পরেও, কম্পাইলারটি এমন একটি সেটআপ খুঁজে পায়নি যেখানে প্রয়োজনীয় বাফারগুলি Tilespmem মেমরিতে ফিট করে। বরাদ্দের আকার নিম্নলিখিতগুলির সংমিশ্রণ দ্বারা নির্ধারিত হয়:
-
sample_count: প্রতিটি SparseCore-এ নির্ধারিত এম্বেডিং লুকআপ আইডির সংখ্যা (ব্যাচের আকার থেকে প্রাপ্ত)। -
feature_width: এম্বেডিং ডাইমেনশনের আকার। -
max_nz_per_row: সমস্ত SparseCores জুড়ে সর্বাধিক সংখ্যক অ-অনন্য এম্বেডিং লুকআপ আইডি। -
max_unique_nz_per_row: অনন্য এম্বেডিং লুকআপ আইডির সর্বাধিক সংখ্যা।
ডিবাগিং
এই ত্রুটিটি সমাধান করার জন্য, আপনাকে SparseCore স্ক্র্যাচপ্যাডের মেমরির চাপ কমাতে হবে।
১. মেটাডেটা অনুমান উন্নত করুন
কম্পাইলারটি max_nz_per_row এবং max_unique_nz_per_row এর উপর ভিত্তি করে মেমোরি বরাদ্দ করে। যদি এই মানগুলি রক্ষণশীলভাবে অনুমান করা হয় (অর্থাৎ, প্রকৃত ডেটার প্রয়োজনের চেয়ে অনেক বেশি সেট করা হয়), তাহলে কম্পাইলার অপ্রয়োজনীয় স্থান সংরক্ষণ করবে, যার ফলে এই ত্রুটি ঘটবে। নিশ্চিত করুন যে এই প্যারামিটারগুলি আপনার ডেটাসেটের প্রকৃত আইডি বিতরণকে সঠিকভাবে প্রতিফলিত করে।
এই প্যারামিটারগুলির জন্য সর্বোত্তম মান নির্ধারণ করতে আপনি প্রতিক্রিয়া-নির্দেশিত অপ্টিমাইজেশন (FDO) প্রয়োগ করার কথা বিবেচনা করতে পারেন।
2. ব্যাচের আকার হ্রাস করুন
sample_count সরাসরি আপনার গ্লোবাল ব্যাচের আকার থেকে নেওয়া হয়। ব্যাচের আকার কমানোর ফলে প্রতিটি SparseCore-কে প্রতি ধাপে যে পরিমাণ ডেটা প্রক্রিয়া করতে হবে তা হ্রাস পায়, যার ফলে প্রয়োজনীয় স্ক্র্যাচপ্যাড বাফারের আকার হ্রাস পায়।