- MVDRAM เป็นระบบที่เร่งการทำงาน GeMV สำหรับการอนุมาน Low-Bit LLM โดยใช้ DRAM แบบไม่ดัดแปลง
- ใช้ DRAM เป็นเอนจิน GeMV เพื่อให้ได้ throughput สูง
- ขจัดต้นทุนของการจัดเรียงอินพุตล่วงหน้าและการสลับบิตเอาต์พุตของแนวทาง PUD แบบเดิม
- ผลการทดลองแสดงให้เห็นว่ามีประสิทธิภาพเหนือกว่าการใช้งานบนโปรเซสเซอร์ใน Low-Bit LLM
- นำเสนอความเป็นไปได้ใหม่สำหรับฮาร์ดแวร์ AI
MVDRAM: การเร่ง Low-Bit LLM ด้วย DRAM แบบไม่ดัดแปลง
- การทำงาน GeMV ยังคงเป็นคอขวดด้านเวลาแฝงที่สำคัญในการอนุมานของโมเดลภาษาขนาดใหญ่ (LLM)
- Processing-Using-DRAM (PUD) มีศักยภาพในการนำ DRAM มาใช้ใหม่เป็นเอนจิน GeMV
- อย่างไรก็ตาม เมื่อนำ PUD ไปใช้กับไปป์ไลน์การอนุมาน LLM จะเกิดโอเวอร์เฮดอย่างมาก
แนวทางที่ล้ำสมัยของ MVDRAM
- MVDRAM ประสานการทำงานระหว่างโปรเซสเซอร์และ DRAM โดยอาศัย รูปแบบการแชร์ข้อมูล และ ความเป็นเชิงเส้นทางคณิตศาสตร์
- เร่งการทำงาน GeMV โดยขจัดต้นทุนของแนวทาง PUD แบบเดิม
ผลการทดลอง
- ในการทดลองที่ใช้โมดูล DDR4 DRAM จำนวน 4 โมดูล MVDRAM แสดงประสิทธิภาพเหนือกว่าการใช้งานบนโปรเซสเซอร์ใน LLM แบบ low-bit (4 บิตหรือต่ำกว่า)
- ทำความเร็วได้สูงสุด 7.29 เท่า และมีประสิทธิภาพด้านพลังงานสูงขึ้น 30.5 เท่า
การปรับปรุงโดยรวมของการอนุมาน LLM
- ในโมเดล low-bit ที่ควอนไทซ์เป็น 2 บิตและ 4 บิต มีการปรับปรุง throughput 2.18 เท่า และ 1.31 เท่า ตามลำดับ
- ประสิทธิภาพด้านพลังงานก็ดีขึ้น 3.04 เท่า และ 2.35 เท่า ตามลำดับ
ความเป็นไปได้ใหม่ของฮาร์ดแวร์ AI
- MVDRAM พิสูจน์ให้เห็นถึงความเป็นไปได้ในการใช้ DRAM มาตรฐานเป็นตัวเร่ง LLM
- มีศักยภาพในการเปิดขอบเขตใหม่ให้กับฮาร์ดแวร์ AI
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เอกสารพื้นฐานมีข้อเสนอแรก ๆ ของ in-DRAM compute อย่าง https://users.ece.cmu.edu/~omutlu/pub/in-DRAM-bulk-AND-OR-ie..., การสาธิตครั้งแรกด้วยชิ้นส่วนสำเร็จรูป https://parallel.princeton.edu/papers/micro19-gao.pdf, เครื่องมือสำหรับใช้งานจริงอย่าง DRAM Bender https://github.com/CMU-SAFARI/DRAM-Bender และบทความสำรวจล่าสุดเรื่อง processing-in-DRAM https://arxiv.org/abs/2412.19275
แม้จะไม่ได้ฉลาดหรือก้าวหน้าเท่าไอเดียตอนนี้ แต่สุดท้ายบทความเหล่านี้ก็ใกล้เคียงกับการนำแนวคิดเก่ามาปรับเป็นเวอร์ชันใหม่
สิ่งที่สะดุดตาคือรายชื่อผู้เขียนของเอกสารอ้างอิงหมายเลข 1 และ 3 ยาวจนน่าขำ
คิดว่าจะมีโพสต์ปี 2016 https://news.ycombinator.com/item?id=12469270 รวมอยู่ด้วย และก็เห็นโพสต์ปี 2019 https://news.ycombinator.com/item?id=22712811 อยู่จริง ๆ
แน่นอนว่า พฤติกรรมนอกสเปก ของ DRAM แบบนี้ โดยเฉพาะความสามารถในการคัดลอก ยังเกี่ยวข้องกับบั๊กฉาว https://news.ycombinator.com/item?id=5314959 ด้วย
ดูเหมือนว่าหลายคนจะสังเกตปรากฏการณ์นี้ได้อย่างอิสระ แล้วคิดว่า “มันอาจเป็นพฤติกรรมที่มีประโยชน์ก็ได้”
ถ้ารายชื่อผู้เขียนใหญ่โตขนาดนี้ ปกติจะใส่แค่ชื่อแรกแล้วที่เหลือใช้ “et al.”
“ออกคำสั่ง DRAM ที่จงใจละเมิดพารามิเตอร์ timing ที่ผู้ผลิตกำหนด เพื่อให้ได้การดำเนินการระดับบิตสูงสุด 65,536 รายการแบบขนาน” ฟังเหมือนเป็นการตบหน้า binary blob สำหรับฝึก DRAM เลย
เรื่องนี้ประหลาดจนสมองแทบพับได้ และในขณะเดียวกันก็สร้างสรรค์อย่างเท่
บางครั้งการขุดลึกลงไปถึงรายละเอียดระดับล่างสุดก็ได้รับผลตอบแทน เยี่ยมมาก
Mostek MK4096 ปี 1973 ก็น่าจะทำได้ เพียงแต่กว่าจะมีใครค้นพบก็ใช้เวลาราวครึ่งศตวรรษ
หมายความว่าทำ การคำนวณเมทริกซ์ ในตัว DRAM เองเลยเหรอ? บ้าดีแต่น่าสนใจ
Processing using DRAM (PUD) ใช้ประโยชน์จากลักษณะพฤติกรรมแอนะล็อกโดยธรรมชาติของ DRAM เพื่อให้คำนวณแบบ bit-serial ที่ขนานสูงภายในอาร์เรย์หน่วยความจำได้
งานวิจัยก่อนหน้านี้แสดงให้เห็นว่า DRAM สำเร็จรูปเชิงพาณิชย์ก็สามารถทำฟังก์ชัน PUD ได้โดยไม่ต้องแก้ฮาร์ดแวร์ หากจงใจละเมิดพารามิเตอร์ timing
การดำเนินการหลักมีสองอย่างคือ RowCopy และ majority-of-X(MAJX) RowCopy ย้ายข้อมูลไปยังแถวอื่นใน subarray เดียวกัน โดยส่งคำสั่ง ACT ต่อจาก PRE ทันที ก่อนที่ bitline precharge จะเสร็จ และเพราะมันส่งผลต่อทุกเซลล์ในหนึ่งแถวพร้อมกัน จึงเร็วกว่าการย้ายข้อมูลที่โปรเซสเซอร์เป็นตัวกลางประมาณ 100 เท่า
MAJX ทำ majority vote โดยเปิดใช้งานเซลล์ X ตัวที่แชร์ bitline เดียวกันพร้อมกัน และใน DRAM เชิงพาณิชย์จะทำโดยออกคำสั่ง ACT, PRE, ACT อย่างรวดเร็วต่อเนื่องกันโดยไม่มี delay วิธีนี้ทำให้เปิดใช้งานได้พร้อมกัน 2–32 แถว และกลายเป็นหน่วยคำนวณพื้นฐานของ PUD ที่ใช้ประโยชน์จากความขนานของ subarray ที่มี 65,536 คอลัมน์
ในโลกฮาร์ดแวร์ก็มีความเสี่ยงจากการใช้บั๊กที่ผู้ผลิตอาจแก้ได้สักวันหนึ่งเหมือนกันไหม?
ในซอฟต์แวร์ การพึ่งบั๊กของแพลตฟอร์มเพื่อสร้างฟีเจอร์บางอย่างหรือแก้บั๊กอื่นถือเป็นความคิดที่ไม่ดี
อีก 15 ปีบั๊กนั้นอาจถูกแก้ แล้วระบบก็ระเบิดโดยไม่มีใครรู้เหตุผล
เหมือนเคยมีการถกเรื่องคล้าย ๆ กันไม่นานมานี้ น่าจะเกี่ยวกับ undefined behavior ของฟังก์ชัน C บางตัว
บางครั้งการ์ดเครือข่ายรุ่นหนึ่งมีบั๊กหรือมีการผสมฟีเจอร์ที่ทำงานได้น่าสนใจ จนเป็นประโยชน์ต่อบริษัทเทรด
บั๊กหรือฟีเจอร์เหล่านี้อาจหายไปเพราะถูกแก้บั๊ก หรือเพราะตลาดที่ใหญ่กว่ามองว่าไม่จำเป็น บริษัทต่าง ๆ จึงอาจพยายามซื้อสต็อกที่เหลือทั้งหมดของรุ่นนั้น
ในกรณีแย่ที่สุด ต้องทำให้มันใช้งานกับฮาร์ดแวร์ของผู้ขายชื่อดังที่หายไปเมื่อ 15 ปีก่อนให้ได้ เพราะลูกค้ารายใหญ่ใช้เครื่องนั้นมา 15 ปีโดยไม่มีปัญหา และถ้าเสียบอุปกรณ์ใหม่แล้วใช้ไม่ได้ พวกเขาจะมองว่าฮาร์ดแวร์ของคุณเป็นปัญหา
เรื่องนี้สำคัญเป็นพิเศษในอุปกรณ์โทรคมนาคม จึงมี การจัดการพิเศษ สารพัดสำหรับผู้ขายที่ไม่ทำตามสเปก และต้องปล่อยการจัดการพิเศษเหล่านั้นไว้ในเฟิร์มแวร์ต่อไปเพื่อไม่ให้ระบบของคนอื่นพัง
ลองนึกภาพอุปกรณ์เก่า อุปกรณ์ของบริษัทที่เลิกกิจการไปแล้ว และอุปกรณ์ของคู่แข่งปัจจุบันเต็มผนังทั้งแถบ พร้อมแขนหุ่นยนต์คอยเสียบสาย ก็พอจะเห็นภาพว่าห้องแล็บตรวจสอบฮาร์ดแวร์บางแห่งเป็นอย่างไร
เฟิร์มแวร์ของผู้ผลิตเมนบอร์ดก็เต็มไปด้วยการจัดการพิเศษสำหรับ CPU, ชิปเซ็ต ฯลฯ บางรุ่นเช่นกัน
ผลกระทบเมื่อจับคู่กับ optimizing compiler เริ่มเป็นที่รู้จักในวงกว้างราวปี 2010 หรืออาจเป็นปี 2013 และตอนนี้ก็เกิน 12 ปีแล้ว
บทความนี้ไม่ใช่การบอกให้พึ่งบั๊กนัก แต่ใกล้เคียงกับการแสดงให้เห็นว่า DRAM ทำอะไรได้บ้าง และหวังให้ฟังก์ชันเหล่านี้ถูกทำให้เป็นมาตรฐานมากกว่า
การคูณเมทริกซ์-เวกเตอร์ทั่วไป (GeMV) งั้นหรือ ผมไม่ใช่คนเก่งคณิตศาสตร์เท่าไร
ในคลาสคณิตศาสตร์ 3D ตอนเรียนเรื่อง ควอเทอร์เนียน เคยพูดถึงประวัติการคำนวณเมทริกซ์ในการพัฒนากราฟิกอยู่แวบหนึ่ง คลาสนั้นผมก็ตกตั้งแต่แรกแล้ว เลยไม่ใช่สายคณิตจริง ๆ
เท่าที่เข้าใจ ควอเทอร์เนียนดูเหมือนจะได้รับความนิยมเพราะแม่นยำเกือบพอ ๆ กับเมทริกซ์ แต่มีความซับซ้อนในการคำนวณต่ำกว่ามาก
เคยมีความพยายามสร้าง LLM ด้วยควอเทอร์เนียนแทนเมทริกซ์ไหม? หรือการปรับให้เหมาะด้วยควอเทอร์เนียนมีประโยชน์กว่าในกราฟิกแบบเรียลไทม์?
ในจำนวนนั้น มีสับเซตเฉพาะบางส่วนที่ใช้บรรยายการหมุนในปริภูมิ 3 มิติได้ และควอเทอร์เนียน แม้จะยังถกเถียงกันได้ ก็ทำสิ่งนี้ได้ดีกว่า
แต่ควอเทอร์เนียนไม่สามารถบรรยายฟังก์ชันเชิงเส้นใด ๆ ก็ได้ จึงดูไม่เหมาะกับ LLM
โครงข่ายประสาทต้องการมิติมากกว่านั้นมาก
มันสามารถแทนด้วยเมทริกซ์ได้ และเมทริกซ์ที่ใช้องค์ประกอบเป็นควอเทอร์เนียนแทนจำนวนจริงก็น่าจะมีการใช้งานที่ดีอยู่บ้าง เช่น QDNN
จากประสบการณ์ของผม ในโครงสร้างขนาดใหญ่อย่าง LLM รูปแบบที่เรียบง่ายกว่ามักจะประสบความสำเร็จได้ง่ายกว่า เว้นแต่จะมีประโยชน์จริงจากการแทนด้วยชนิดสเกลาร์ที่ซับซ้อนขึ้นอย่างในฟิสิกส์หรือกราฟิก 3D
นอกจากนี้ การแทนการหมุนแบบนั้นก็ไม่ได้ขยายต่อได้ดีนักด้วยควอเทอร์เนียนเมื่อเพิ่มมิติ
จำนวนเชิงซ้อนคือการแทนแบบเชิงซ้อนของปริภูมิ 2 มิติ ควอเทอร์เนียนคือการแทนแบบเชิงซ้อนของปริภูมิ 3 มิติ และถ้าจะไป 4 มิติ ต้องใช้ออกโทเนียนที่มีองค์ประกอบ 8 ตัว
การไม่อ้างถึงเอกสาร Intelligent RAM (IRAM) ดั้งเดิมจากปี 1997 ดูไม่ค่อยเป็นวิทยาศาสตร์เท่าไร
https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=iram...
แต่ IRAM ดูจะใกล้กับ การคำนวณใกล้หน่วยความจำ ที่เพิ่ม ALU เข้าไปในชิปหน่วยความจำ ส่วนการคำนวณภายในหน่วยความจำคือแนวทางที่ใช้แถวหน่วยความจำนั้นเอง
ถ้าพูดอย่างเป็นธรรม ก่อนที่ดีปเลิร์นนิงที่ใช้ความยาวเวกเตอร์มหาศาลจะเกิดขึ้น เสน่ห์ของการคำนวณภายในหน่วยความจำก็น้อยกว่านี้มาก ดังนั้นผู้คนจึงน่าจะพยายามสร้างวิธีที่ควบคุมการคำนวณได้ละเอียดกว่า
เราคาดหวังได้ไหมว่าการคูณเมทริกซ์ และอาจรวมถึงการดำเนินการอื่น ๆ จะย้ายจาก CPU แบบดั้งเดิมไปยัง DRAM และถึงขั้นมีการใส่การรองรับในฮาร์ดแวร์โดยตั้งใจ?
การย้ายตำแหน่งที่ประมวลผล แบบนี้จะให้ข้อได้เปรียบกับบริษัทอย่าง Samsung ไหม? แล้วบริษัทอย่าง NVIDIA จะยืนอยู่ตรงไหน?
https://www.patentlyapple.com/2024/12/apple-plans-to-transit...
เป็นการแฮ็กที่น่าสนใจ ผมยังไม่ได้อ่าน论文 แต่การคำนวณแบบนี้ดูเหมือนจะ ไม่เสถียรทางความร้อน
งั้นผลลัพธ์การอนุมานของ LLM ก็อาจเปลี่ยนไปตามอุณหภูมิแวดล้อมได้ :-)
รายละเอียดให้อ่าน论文 หรือค้นคำว่า “temperature” ดูก็ได้