หมวดหมู่: CompileTime: SparseCore No Viable Logical Replica Count
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคอมไพเลอร์ XLA:SparseCore ไม่สามารถกำหนดค่าจำนวนแบบจำลองเชิงตรรกะที่ถูกต้องซึ่งช่วยให้เวิร์กโหลดพอดีกับหน่วยความจำ Scratchpad ในเครื่องของ 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
ภาพรวม
ข้อผิดพลาดนี้มีไว้สำหรับกรณีการใช้งาน SparseCore โดยเฉพาะ โดยเฉพาะอย่างยิ่งสำหรับโมเดลการฝังขนาดใหญ่ (LEM)
จำนวนแบบจำลองเชิงตรรกะเป็นพารามิเตอร์คอมไพเลอร์ภายในที่กำหนด วิธีแบ่งพาร์ติชันกลุ่มอินพุตเพื่อจัดการแรงกดดันในการจัดสรรพื้นที่พักข้อมูล คอมไพเลอร์จะพยายามแบ่งปริมาณงานออกเป็นส่วนเล็กๆ (สำเนา) เพื่อให้ บัฟเฟอร์กลางที่จำเป็นสำหรับแต่ละส่วนพอดีกับหน่วยความจำ Scratchpad ที่จำกัดของ SparseCore โดยทั่วไปแล้ว จำนวนสำเนาเชิงตรรกะที่สูงขึ้นจะช่วยลด แรงกดดันในการจัดสรรด้วยการประมวลผลข้อมูลเป็นกลุ่มเล็กๆ ในแต่ละครั้ง
ข้อผิดพลาดนี้บ่งชี้ว่าแม้จะพยายามกำหนดค่าการแยกต่างๆ แล้ว แต่คอมไพเลอร์ก็ยังไม่พบการตั้งค่าที่บัฟเฟอร์ที่จำเป็น พอดีกับหน่วยความจำ Tilespmem ขนาดการจัดสรรจะกำหนดโดยการรวมกันของ สิ่งต่อไปนี้
sample_count: จำนวนรหัสการค้นหาการฝังที่กำหนดให้กับแต่ละ SparseCore (ได้มาจากขนาดกลุ่ม)feature_width: ขนาดของมิติข้อมูลการฝังmax_nz_per_row: จำนวนสูงสุดของรหัสการค้นหาการฝังที่ไม่ซ้ำกัน ใน SparseCore ทั้งหมดmax_unique_nz_per_row: จำนวนสูงสุดของรหัสการค้นหาการฝังที่ไม่ซ้ำกัน
การแก้ไขข้อบกพร่อง
หากต้องการแก้ไขข้อผิดพลาดนี้ คุณต้องลดแรงกดดันด้านหน่วยความจำใน SparseCore scratchpad
1. ปรับปรุงการประมาณข้อมูลเมตา
คอมไพเลอร์จะจัดสรรหน่วยความจำตาม max_nz_per_row และ
max_unique_nz_per_row หากค่าเหล่านี้ได้รับการประมาณอย่างระมัดระวัง (เช่น ตั้งค่าให้สูงกว่าที่ข้อมูลจริงต้องการมาก) คอมไพเลอร์จะสงวนพื้นที่ที่ไม่จำเป็น ทำให้เกิดข้อผิดพลาดนี้ ตรวจสอบว่าพารามิเตอร์เหล่านี้แสดงการกระจายรหัสจริงของชุดข้อมูลอย่างถูกต้อง
คุณอาจพิจารณาใช้การเพิ่มประสิทธิภาพที่อิงตามความคิดเห็น (FDO) เพื่อกำหนด ค่าที่เหมาะสมสำหรับพารามิเตอร์เหล่านี้
2. ลดขนาดกลุ่ม
sample_count ได้มาจากขนาดกลุ่มทั่วโลกโดยตรง การลด
ขนาดกลุ่มจะลดปริมาณข้อมูลที่ SparseCore แต่ละรายการต้องประมวลผลต่อขั้นตอน
จึงช่วยลดขนาดของบัฟเฟอร์ Scratchpad ที่จำเป็น