รหัสข้อผิดพลาด: E3001

หมวดหมู่: 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 ที่จำเป็น