3 คะแนน โดย GN⁺ 2024-03-17 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

สถาปัตยกรรมฮาร์ดแวร์แมชชีนเลิร์นนิงแบบใหม่

  • รีโพซิทอรีนี้มีซอร์สโค้ดของสถาปัตยกรรมฮาร์ดแวร์ ML ที่ต้องใช้การคูณเพียงเกือบครึ่งเดียว แต่ยังคงได้ประสิทธิภาพเทียบเท่ากับการทำงานแบบ inner product ดั้งเดิม
  • เพิ่มขีดจำกัดเชิงทฤษฎีของ throughput และประสิทธิภาพการคำนวณของตัวเร่ง ML โดยรันอัลกอริทึม inner product ทางเลือกที่ใช้การบวก low-bitwidth เพื่อทดแทนการคูณเกือบครึ่งหนึ่ง
  • ดูรายละเอียดเพิ่มเติมได้จากบทความที่ตีพิมพ์ในวารสาร IEEE Transactions on Computers

อัลกอริทึมและสถาปัตยกรรมฮาร์ดแวร์แบบใหม่

  • แนะนำอัลกอริทึมและสถาปัตยกรรมฮาร์ดแวร์ใหม่ชื่อ Free-pipeline Fast Inner Product (FFIP)
  • เป็นการปรับปรุงอัลกอริทึม Fast Inner Product (FIP) ที่ Winograd เสนอไว้ตั้งแต่ปี 1968
  • FIP ไม่เกี่ยวข้องกับอัลกอริทึม Winograd minimal filtering ที่ใช้กับเลเยอร์ convolutional และสามารถใช้ได้กับทุกเลเยอร์ของโมเดล ML ที่โดยหลักแล้วแยกย่อยเป็นการคูณเมทริกซ์ได้
  • เป็นการอิมพลีเมนต์ FIP บนตัวเร่ง ML เป็นครั้งแรก และนำเสนออัลกอริทึม FFIP กับสถาปัตยกรรมแบบ generalized ที่ช่วยปรับปรุงความถี่สัญญาณนาฬิกาและ throughput ที่ได้จาก FIP
  • มีการเพิ่ม optimization ที่ปรับแต่งเฉพาะสำหรับ ML ให้กับอัลกอริทึมและสถาปัตยกรรม FIP และ FFIP
  • FFIP สามารถผสานเข้ากับตัวเร่ง ML แบบ fixed-point systolic array เดิมได้อย่างราบรื่น เพื่อให้ได้ throughput เท่าเดิมด้วยหน่วย multiply-accumulate (MAC) เพียงครึ่งหนึ่ง หรือทำให้รองรับขนาดสูงสุดของ systolic array ที่ใหญ่ขึ้นภายใต้งบประมาณฮาร์ดแวร์คงที่
  • การอิมพลีเมนต์ FFIP สำหรับโมเดล ML แบบ non-sparse ที่ใช้อินพุต fixed-point 8~16 บิต ให้ throughput และประสิทธิภาพการคำนวณสูงกว่าโซลูชันระดับแนวหน้าบนแพลตฟอร์มคอมพิวต์ประเภทเดียวกัน

โครงสร้างซอร์สโค้ด

  • compiler: มีคอมไพเลอร์ที่แปลงคำอธิบายโมเดล Python เป็นคำสั่งของตัวเร่ง และยังมีโค้ดอินเทอร์เฟซกับไดรเวอร์ PCIe สำหรับเริ่มรันโมเดลบนตัวเร่ง อ่านผลลัพธ์และตัวนับประสิทธิภาพ รวมถึงทดสอบความถูกต้องของผลลัพธ์
  • rtl: มี SystemVerilog RTL ที่สามารถสังเคราะห์ได้
  • sim: มีสคริปต์สำหรับตั้งค่าสภาพแวดล้อมการจำลองเพื่อการทดสอบ
  • tests: มีซอร์สโค้ด testbench แบบ UVM ที่ใช้ Cocotb ในการตรวจสอบตัวเร่งในสภาพแวดล้อมจำลอง
  • utils: มีแพ็กเกจและสคริปต์ Python เพิ่มเติมที่ใช้ในโปรเจกต์ เป็นยูทิลิตีทั่วไปสำหรับการพัฒนาและตัวช่วยที่ผู้เขียนสร้างขึ้น

ความเห็นของ GN⁺

  • บทความนี้นำเสนอความก้าวหน้าที่น่าสนใจในสถาปัตยกรรมฮาร์ดแวร์ ML โดยเฉพาะอัลกอริทึมและสถาปัตยกรรมใหม่ที่ลดการคำนวณแบบคูณลงแต่ยังรักษาประสิทธิภาพไว้ได้ ซึ่งถือเป็นความก้าวหน้าสำคัญที่อาจยกระดับประสิทธิภาพของงาน ML ได้มาก
  • อัลกอริทึม FFIP เพิ่มมิติใหม่ให้กับการออกแบบตัวเร่ง ML เดิม พร้อมเสนอวิธีใช้ทรัพยากรฮาร์ดแวร์ได้อย่างมีประสิทธิภาพยิ่งขึ้น ซึ่งสำคัญมากในสภาพแวดล้อมการประมวลผลยุคใหม่ที่ให้ความสำคัญกับประสิทธิภาพพลังงานและความคุ้มค่า
  • อย่างไรก็ตาม หากต้องการให้เทคโนโลยีนี้ถูกยอมรับอย่างกว้างขวาง ยังต้องพิจารณาเรื่องความเข้ากันได้กับตัวเร่ง ML เดิม ความเข้าใจของนักพัฒนาต่อสถาปัตยกรรมใหม่ ตลอดจนประเด็นด้านประสิทธิภาพและต้นทุนเมื่ออิมพลีเมนต์บนฮาร์ดแวร์จริง
  • โปรเจกต์หรือผลิตภัณฑ์อื่นที่มีฟังก์ชันใกล้เคียงกัน เช่น TPU (Tensor Processing Unit) ของ Google หรือ CUDA core ของ NVIDIA ซึ่งเป็นโซลูชันตัวเร่ง ML ที่ผ่านการพิสูจน์ในตลาดแล้ว
  • เมื่อนำเทคโนโลยีใหม่หรือโอเพนซอร์สมาใช้ ควรพิจารณาความเข้ากันได้กับระบบเดิม ต้นทุนที่เพิ่มขึ้นเทียบกับประสิทธิภาพที่ดีขึ้น รวมถึงความซับซ้อนของการพัฒนาและการบำรุงรักษา ข้อดีของการเลือก FFIP คือ throughput และประสิทธิภาพการคำนวณที่สูงขึ้น ส่วนข้อเสียที่อาจเกิดขึ้นคือช่วงการเรียนรู้ของนักพัฒนาต่อระบบใหม่และต้นทุนการอิมพลีเมนต์ในระยะแรก

1 ความคิดเห็น

 
GN⁺ 2024-03-17
ความคิดเห็นจาก Hacker News
  • เทคนิคนี้ดูน่าทึ่ง แต่ก็สงสัยว่าทำไมถึงยังไม่ได้ถูกนำไปใช้ในตัวเร่งความเร็วอยู่แล้ว มันเป็นเพียงอัลกอริทึมที่ถูกลืมไป หรือมีต้นทุนหรือผลกระทบอื่นต่อการสร้างตัวเร่งความเร็วหรือไม่
  • งานวิจัยนี้พูดถึงการสังเคราะห์ไปป์ไลน์การคูณเมทริกซ์บนฮาร์ดแวร์ และอาจมีประโยชน์บนฮาร์ดแวร์อย่าง FPGA หรือ ASIC สำหรับ CPU หรือ GPU การคูณและการบวกโดยทั่วไปใช้เวลาเท่ากัน แต่หน่วยคูณใช้ทรานซิสเตอร์มากกว่า ดังนั้นการลดความซับซ้อนของวงจรอาจเพิ่มความเร็วและ throughput แบบขนาน พร้อมทั้งลดการใช้พลังงานและความซับซ้อนของการจัดเส้นทาง
  • อีกวิธีหนึ่งในการตัดการคูณออกจากการคูณเมทริกซ์คือการใช้ semiring หลากหลายแบบ ตัวอย่างเช่น Tropical Semiring ใช้การบวกแทนการคูณ และใช้ค่าต่ำสุด (หรือค่าสูงสุด) แทนการบวก นี่ยังคงเป็นการคูณเมทริกซ์อยู่ แต่ตัวดำเนินการแบบทวิภาคถูกแทนที่ งานวิจัยในสาขา Tropical Algebra ถูกนำไปใช้กับปัญหาการหาค่าเหมาะที่สุดและงานวิจัยด้านการปรับให้เหมาะสมของโครงข่ายประสาทเทียม และปัจจุบันยังคงคึกคักและมีเนื้อหามาก
  • การใช้ Log Semiring ก็เป็นอีกวิธีที่มีประสิทธิภาพในการตัดการคูณออก เมื่อจำเป็นต้องคูณลูกโซ่ของความน่าจะเป็น (เช่น Markov chain) ตัวเลขจะเล็กมากจน floating point สูญเสียความแม่นยำ การสเกลตัวเลขให้อยู่ในรูป log จะทำให้การคูณกลายเป็นการบวก และการบวกจะกลายเป็น x + log1p(exp(y - x))
  • การต้องตัดสินใจว่าจะใช้การคูณหรือการบวกอาจช้ากว่าการใช้การคูณตรง ๆ เสียอีก จึงน่าแปลกใจที่วิธีนี้ใช้งานได้จริง โดยเฉพาะเมื่อมีงานจำนวนมากทำแบบขนาน
  • น่าสนใจมากที่กระบวนการนี้ถูกคิดค้นมาตั้งแต่ปี 1968 แต่ไม่ถูกนำมาใช้เพื่อจุดประสงค์นี้จนถึงตอนนี้
  • เคยลองแนวคิดคล้ายกันในปี 2018 แต่สุดท้ายก็เลิกไปเพราะสมัครเรียนต่อปริญญาเอกแล้วถูกปฏิเสธทั้งหมด แนวคิดตรงนี้พยายามจำลองการทำ backpropagation ด้วยเครือข่ายภายนอก และอ้างว่านี่น่าจะเป็นสิ่งที่สมองทำจริง ๆ
  • หากสนใจทฤษฎีคณิตศาสตร์ของอัลกอริทึมแบบ sub-cubic สำหรับการคูณเมทริกซ์ สามารถเริ่มต้นได้จากที่นี่ มีข้อคาดการณ์ว่ามีจำนวน ( n ) ที่ทำให้สามารถคูณเมทริกซ์ ( n \times n ) ทุกตัวได้ใน ( O(n^{2+j}) ) ขั้นตอน (ตอนนี้พิสูจน์ได้แล้วสำหรับ ( 2+j = w = 2.3728596 ) หรือ ( j > 0.3728596 ))
  • readme นี้อธิบายได้ไม่ดีมากว่าอะไรคือส่วนปรับปรุง หรือคูณลดลงครึ่งหนึ่งได้อย่างไร และยังไม่ชัดเจนว่าเวลาในการทำงานแบบ Big O เป็นเท่าไร หรือมันเปลี่ยนขอบเขตที่ดีที่สุดที่รู้จักอยู่แล้วหรือไม่ ไดอะแกรมก็ดูสับสนและไม่ได้อธิบายว่าทำไมแนวทางนี้ถึงเร็วและดี ส่งผลให้ไม่อยากกดเข้า PDF ด้วยซ้ำ หากต้องการเพิ่มความน่าเชื่อถือของโปรเจกต์ ก็ควรพิจารณาให้คำอธิบายและภาพประกอบที่ตรงไปตรงมาและชัดเจนเกี่ยวกับสิ่งที่เกิดขึ้นจริง