• L-Mul เป็นอัลกอริทึม linear-complexity multiplication ที่มุ่งประมาณการคูณด้วย การบวกจำนวนเต็ม โดยสังเกตว่าต้นทุนพลังงานก้อนใหญ่ของ LLM มาจาก การคูณแบบ floating-point
  • การคูณแบบ fp32 มีต้นทุนพลังงานสูงกว่าการบวกแบบ int32 ถึง 37 เท่า ดังนั้นหากนำ L-Mul ไปใช้กับฮาร์ดแวร์ประมวลผลเทนเซอร์ ก็มีศักยภาพในการลดพลังงานของการคูณเทนเซอร์แบบ floating-point รายองค์ประกอบได้ 95% และลดพลังงานของ dot product ได้ 80%
  • วิธีคำนวณจะละการคูณ mantissa และการปัดเศษออกไป จัดการเครื่องหมายด้วย XOR และสร้างบิตที่เหลือด้วยการบวกในรูป x[1:] + y[1:] - offset
  • ในการทดลอง L-Mul แบบ mantissa 4-bit แสดงความแม่นยำใกล้เคียงกับการคูณ float8 e4m3 และ L-Mul แบบ mantissa 3-bit ให้ผลดีกว่า float8 e5m2
  • เมื่อนำ L-Mul attention ไปใช้กับ LLM ที่ pretrain แล้วโดยไม่ฝึกเพิ่ม ค่าเฉลี่ยการสูญเสียในงานอนุมานภาษาธรรมชาติอยู่ที่ 0.07% และในงานด้านวิชัน ความแม่นยำเฉลี่ยเพิ่มขึ้น 0.12%

คอขวดที่ L-Mul มุ่งแก้

  • โครงข่ายประสาทขนาดใหญ่ใช้การคำนวณจำนวนมากกับ การคูณเทนเซอร์แบบ floating-point และโอเปอเรชันนี้มีต้นทุนพลังงานสูงกว่าการบวก
  • L-Mul คืออัลกอริทึม linear-complexity multiplication ที่ประมาณการคูณของจำนวน floating-point ด้วยการบวกจำนวนเต็ม
  • ขอบเขตการใช้งานครอบคลุมหลายขั้นตอนของการคำนวณ
    • การคูณภายในกลไก attention
    • การคูณเมทริกซ์
    • การคูณรายองค์ประกอบ
  • ใน LLM ที่อิง Transformer, attention มีความซับซ้อน O(N²) ตามความยาวคอนเท็กซ์อินพุต N และเมื่อรวมการคูณเทนเซอร์มิติสูงเข้าไป ก็กลายเป็นคอขวดสำคัญของประสิทธิภาพการคำนวณ

ต้นทุนพลังงานตามชนิดของเลขคณิต

  • ตารางต้นทุนโอเปอเรชันของ Horowitz (2014) แสดงความต่างด้านพลังงานระหว่างการบวกและการคูณโดยตรง
    • การบวก int8: 0.03 pJ
    • การบวก int32: 0.1 pJ
    • การบวก fp16: 0.4 pJ
    • การบวก fp32: 0.9 pJ
    • การคูณ int8: 0.2 pJ
    • การคูณ int32: 3.1 pJ
    • การคูณ fp16: 1.1 pJ
    • การคูณ fp32: 3.7 pJ
  • การคูณ fp32 ใช้พลังงานมากกว่าการบวก fp32 4 เท่า และมากกว่าการบวก int32 ถึง 37 เท่า
  • ค่าเริ่มต้นของความแม่นยำในการสะสมผลของผลลัพธ์การคูณเทนเซอร์ใน PyTorch ถูกตั้งไว้เป็น fp32
  • หากไม่นับ I/O และโอเปอเรชันควบคุม การประมาณการคูณ fp32 ด้วยการบวก int32 จะใช้พลังงานราว 1/37 ≈ 2.7%
  • แม้จะลดความแม่นยำของการสะสมผลลงเป็น fp16 การบวกจำนวนเต็มก็ยังใช้พลังงานเพียงประมาณ 4.7% ของพลังงานการคูณแบบ floating-point

วิธีคำนวณของ L-Mul

  • การคูณ floating-point ทั่วไปสำหรับจำนวนสองตัว x, y มีรูปดังนี้
    • (1 + xm) · 2^xe · (1 + ym) · 2^ye
    • ผลลัพธ์ประกอบด้วย (1 + xm + ym + xm · ym) · 2^(xe+ye) และเครื่องหมายแบบ XOR
  • คอขวดของการคำนวณคือการคูณ mantissa แบบ O(m²) สำหรับ mantissa ขนาด m บิต
  • L-Mul ตัด xm · ym ออกและประมาณด้วยรูปดังนี้
    • (1 + xm + ym + 2^-l(m)) · 2^(xe+ye)
  • l(m) เปลี่ยนไปตามจำนวนบิตของ mantissa
    • ถ้า m ≤ 3 จะเป็น m
    • ถ้า m = 4 จะเป็นอีกค่าหนึ่ง
    • ถ้า m > 4 จะเป็นอีกค่าหนึ่ง
  • การอิมพลีเมนต์ระดับบิตสามารถจัดให้อยู่ในสมการที่ง่ายกว่าได้
    • บิตเครื่องหมาย: x[0] ⊕ y[0]
    • บิตที่เหลือ: x[1:] + y[1:] - offset
  • เนื่องจากรูปแบบ floating-point จัดการ 1 + xm แบบปริยายอยู่แล้ว ในการอิมพลีเมนต์จริง L-Mul จึงสามารถประกอบด้วย adder เพียงตัวเดียว
  • เมื่อผลรวมของ mantissa เกิน 2 จะมี carry ส่งต่อไปยัง exponent โดยอัตโนมัติ
  • จึงลดปริมาณการคำนวณได้ด้วยการข้ามทั้งขั้นตอนคูณ mantissa และการปัดเศษที่ต้องมีในการคูณ floating-point แบบเดิม

การประยุกต์ใช้กับ Transformer attention

  • attention ที่อิง L-Mul จะสร้าง Q, K, V ก่อน จากนั้นแทนที่การคูณเมทริกซ์ในขั้นคำนวณ attention ด้วย L-matmul
  • รูปแบบการคำนวณเป็นดังนี้
    • K = H · Wk
    • Q = H · Wq
    • V = H · Wv
    • A = softmax[L-matmul(Q, Kᵀ) / √d]
    • H′ = L-matmul(A, H)
  • L-matmul คือการคูณเมทริกซ์ที่อิมพลีเมนต์การคูณ floating-point ทั้งหมดด้วย L-Mul
  • โครงสร้างนี้เปลี่ยนการคูณ floating-point ให้เป็นการบวกจำนวนเต็ม เพื่อลดการใช้ทรัพยากรคำนวณ

การวิเคราะห์ความแม่นยำ·ความซับซ้อน และผลการทดลอง

  • การวิเคราะห์ความแม่นยำประเมินว่า L-Mul เทียบเท่ากับการเก็บ fraction ของจำนวน floating-point ได้กี่บิต
  • ในการวิเคราะห์โดยอิง operand ที่มีการกระจายแบบสม่ำเสมอ L-Mul แม่นยำกว่า fp8 e5m2
  • ในการวิเคราะห์เชิงปฏิบัติโดยอิงการกระจายน้ำหนักรวมของ LLM ที่ pretrain แล้ว 5 ตัว พบว่าสามารถให้ความแม่นยำสูงกว่า fp8 e4m3 ได้เมื่อใช้ operand แบบ mantissa 5-bit
  • ผลการทดลองสอดคล้องกับการประเมินความคลาดเคลื่อนเชิงทฤษฎี
    • L-Mul แบบ mantissa 4-bit มีความแม่นยำใกล้เคียงกับการคูณ float8 e4m3
    • L-Mul แบบ mantissa 3-bit มีความแม่นยำสูงกว่า float8 e5m2
  • สำหรับ LLM ที่ pretrain แล้ว ได้แทนที่ implementation ของ attention มาตรฐานด้วย L-Mul attention โดยตรง และไม่ได้ใช้การฝึกเพิ่ม
    • การสูญเสียประสิทธิภาพเฉลี่ยของงาน commonsense, structured reasoning, language understanding: 0.07%
    • การเปลี่ยนแปลงของความแม่นยำเฉลี่ยในงาน visual question answering, object hallucination, free-form visual instruction: ดีขึ้น 0.12%
  • ในการทดลอง fine-tuning โมเดลที่แทนการคูณทั้งหมดใน attention, linear transformation และการคูณรายองค์ประกอบด้วย L-Mul แบบ mantissa 3-bit ให้ประสิทธิภาพใกล้เคียงกับโมเดลมาตรฐานที่ใช้ความแม่นยำสะสมแบบ float8 e4m3
  • การประเมินปริมาณการคำนวณระดับเกตของการคูณทั่วไปอยู่ที่ประมาณนี้
    • การคูณ fp16: ประมาณ 584
    • การคูณ fp8 e4m3: ประมาณ 325
    • การคูณ fp8 e5m2: ประมาณ 296
  • การประเมินปริมาณการคำนวณระดับเกตของ L-Mul ต่ำกว่านั้น
    • fp16 L-Mul: ประมาณ 256
    • fp8 L-Mul: ประมาณ 157
  • เนื่องจาก GPU ยังไม่มี implementation แบบ native ของ L-Mul จึงยากที่จะดึงประสิทธิภาพออกมาได้เต็มที่ และแนะนำให้ฝึกและโฮสต์โมเดลที่อิง L-Mul บนอุปกรณ์ที่ผสานการออกแบบสถาปัตยกรรมเฉพาะทาง
  • เทคโนโลยีนี้อยู่ในสถานะ patent pending

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น