โมเดลภาษาที่ประหยัดพลังงานต้องการแค่การบวก
(arxiv.org)- 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 · WkQ = H · WqV = H · WvA = 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
ยังไม่มีความคิดเห็น