นักศึกษาเขียนโปรแกรม GPU เผยเหตุผลที่การอ้างการประมวลผลแบบขนานของ RNN ไม่ตรงกับความเป็นจริง

ทีมชุมชน BigGo
นักศึกษาเขียนโปรแกรม GPU เผยเหตุผลที่การอ้างการประมวลผลแบบขนานของ RNN ไม่ตรงกับความเป็นจริง

การนำไปใช้งานจริงของนักศึกษาวิทยาการคอมพิวเตอร์จาก Caltech ต่อเอกสารวิจัยที่ก่อให้เกิดการถกเถียงเรื่อง Were RNNs All We Needed? ได้จุดประกายการอภิปรายอย่างเข้มข้นเกี่ยวกับว่าเครือข่ายประสาทเทียมแบบวนซ้ำที่เรียบง่ายสามารถท้าทายการครอบงำของ transformer ได้จริงหรือไม่ โครงการนี้ซึ่งทำเสร็จสิ้นเป็นส่วนหนึ่งของหลักสูตรการเขียนโปรแกรม GPU ได้พยายามตรวจสอบการอ้างว่าการปรับเปลี่ยนเล็กน้อยต่อสถาปัตยกรรม RNN แบบดั้งเดิมสามารถปลดล็อกการเพิ่มประสิทธิภาพการประมวลผลแบบขนานอย่างมหาศาล

การสำรวจของนักศึกษาเกี่ยวกับว่า RNN ที่เรียบง่ายสามารถมีประสิทธิภาพเหนือกว่า transformer หรือไม่ ตามที่กล่าวไว้ใน "Were RNNs All We Needed? A GPU Programming Perspective"
การสำรวจของนักศึกษาเกี่ยวกับว่า RNN ที่เรียบง่ายสามารถมีประสิทธิภาพเหนือกว่า transformer หรือไม่ ตามที่กล่าวไว้ใน "Were RNNs All We Needed? A GPU Programming Perspective"

การอ้างประสิทธิภาพเทียบกับผลลัพธ์ในโลกแห่งความจริง

เอกสารวิจัยต้นฉบับเสนอว่าด้วยการทำให้สถาปัตยกรรม GRU และ LSTM เรียบง่ายลงเป็นรูปแบบ minGRU และ miniLSTM นักวิจัยสามารถเปลี่ยนการดำเนินการแบบลำดับ O(T) ให้เป็นกระบวนการแบบขนาน O(log T) ได้ อย่างไรก็ตาม การนำไปใช้งานของนักศึกษาเผยให้เห็นช่องว่างที่สำคัญระหว่างคำสัญญาเชิงทฤษฎีและประสิทธิภาพในทางปฏิบัติ สำหรับลำดับที่สั้นกว่า 2,048 ขั้นตอน ค่าใช้จ่ายในการเริ่มต้น GPU kernel ทำให้วิธีการแบบขนานช้ากว่าวิธี CPU แบบดั้งเดิมจริงๆ เฉพาะที่ลำดับที่ยาวมากถึง 65,536 ขั้นตอนเท่านั้นที่การนำไปใช้งาน GPU จึงบรรลุความเร็วเพิ่มขึ้นประมาณ 2 เท่าเมื่อเทียบกับเวอร์ชัน CPU แบบเวกเตอร์

สมาชิกในชุมชนได้ตั้งคำถามพื้นฐานเกี่ยวกับแนวทางการปรับปรุงนี้ บางคนโต้แย้งว่าการปรับแต่งการออกแบบเครือข่ายประสาทเทียมให้เข้ากับข้อจำกัดของฮาร์ดแวร์เฉพาะอย่างต่อเนื่องอาจจำกัดความก้าวหน้าทางวิทยาศาสตร์มากกว่าที่จะส่งเสริมมัน

ผลการเปรียบเทียบประสิทธิภาพ

ความยาวของลำดับ CPU-seq CPU-scan GPU-scan ความเร็วที่เพิ่มขึ้น
น้อยกว่า 2,048 ขั้นตอน พื้นฐาน เร็วกว่าประมาณ 10 เท่า ช้ากว่า CPU-scan เป็นลบเนื่องจาก overhead
8,192+ ขั้นตอน พื้นฐาน เร็วกว่าประมาณ 10 เท่า เริ่มมีประสิทธิภาพดีกว่า ประมาณ 1.5 เท่าเมื่อเทียบกับ CPU-scan
65,536 ขั้นตอน พื้นฐาน เร็วกว่าประมาณ 10 เท่า ประมาณ 2 เท่าเมื่อเทียบกับ CPU-scan ประมาณ 20 เท่าเมื่อเทียบกับพื้นฐาน

หมายเหตุ: CPU-seq หมายถึงการประมวลผลแบบลำดับแบบดั้งเดิม, CPU-scan ใช้การดำเนินการแบบเวกเตอร์, GPU-scan ใช้อัลกอริทึม parallel scan

การเปรียบเทียบเวลาการทำงานของการอนุมาน LSTM ระหว่าง CPU และ GPU ซึ่งแสดงให้เห็นปัญหาด้านประสิทธิภาพในทางปฏิบัติที่เกิดขึ้นในการใช้งาน minRNNs
การเปรียบเทียบเวลาการทำงานของการอนุมาน LSTM ระหว่าง CPU และ GPU ซึ่งแสดงให้เห็นปัญหาด้านประสิทธิภาพในทางปฏิบัติที่เกิดขึ้นในการใช้งาน minRNNs

การถกเถียงเรื่องการประมวลผลทางชีวภาพ

ผลลัพธ์การนำไปใช้งานได้จุดประกายการอภิปรายใหม่เกี่ยวกับว่าสถาปัตยกรรม AI ปัจจุบันกำลังมุ่งไปในทิศทางที่ถูกต้องหรือไม่ นักวิจารณ์ชี้ให้เห็นว่าเครือข่ายประสาทเทียมทางชีวภาพยอมรับการพึ่งพาทางเวลาและความสัมพันธ์เชิงสาเหตุที่แนวทางแบบขนานสมัยใหม่พยายามขจัดออกไป สิ่งนี้ได้นำไปสู่การคาดเดาเกี่ยวกับกระบวนทัศน์การประมวลผลทางเลือก รวมถึงระบบแอนะล็อกและฮาร์ดแวร์เฉพาะทางเช่น FPGA ที่อาจเหมาะสมกับภาระงานที่เป็นแบบวนซ้ำตามธรรมชาติมากกว่า

ผู้แสดงความคิดเห็นคนหนึ่งสังเกตเห็นความขัดแย้งของสถานการณ์ โดยชี้ให้เห็นว่าแม้ว่า RNN จะมีความสมบูรณ์แบบ Turing แต่เครือข่ายประสาทเทียมแบบไปข้างหน้าเท่านั้นเช่น transformer นั้นไม่มี แต่สาขานี้ยังคงผลักดันไปสู่หลังเพื่อความสะดวกในการประมวลผลเพียงอย่างเดียว

การเปรียบเทียบความซับซ้อนของอัลกอริทึม

สถาปัตยกรรม ความซับซ้อนในการฝึกอบรม การประมวลผลแบบขนาน ความต้องการหน่วยความจำ
Standard RNN/LSTM O(T) แบบลำดับ ไม่สามารถประมวลผลแบบขนานได้ O(T)
minGRU/miniLSTM O(log T) ด้วย parallel scan ประมวลผลแบบขนานได้เต็มที่ O(T) หน่วยความจำการเปิดใช้งาน
Transformer O(T²) สำหรับ attention ประมวลผลแบบขนานได้เต็มที่ O(T²)

T = ความยาวของลำดับ

ปัญหาคอขวดแบนด์วิดท์หน่วยความจำยังคงมีอยู่

การวิเคราะห์รายละเอียดโดยใช้ Nsight Compute ของ NVIDIA เผยให้เห็นว่าแม้แต่การนำไปใช้งานที่ปรับปรุงแล้วก็ยังประสบกับข้อจำกัดพื้นฐานของฮาร์ดแวร์ การวิเคราะห์ของนักศึกษาแสดงให้เห็นว่าแม้ว่าการดำเนินการสกัดเกตสามารถปรับปรุงให้อิ่มตัวแบนด์วิดท์ L2 ที่ 1.9 TB/s ได้ แต่ส่วนประกอบอื่นๆ เช่น การดำเนินการเมทริกซ์ยังคงต้องการการเริ่มต้น kernel แยกหลายพันครั้ง โดยบรรลุการใช้งานแบนด์วิดท์เพียง 23 GB/s เท่านั้น

การค้นพบเหล่านี้ชี้ให้เห็นว่าการปรับปรุงอัลกอริทึมเชิงทฤษฎีอาจถูกบดบังด้วยข้อจำกัดด้านหน่วยความจำและการซิงโครไนซ์ในทางปฏิบัติในการนำไปใช้งาน GPU จริง

การวิเคราะห์ประสิทธิภาพ GPU Kernel

รายละเอียดการใช้งานที่ปรับปรุงแล้ว:

  • Gate extraction kernel: 8% ของเวลาทำงานทั้งหมด (จำกัดด้วย memory bandwidth ที่ 1.9 TB/s)
  • การดำเนินการ Matrix: 72% ของเวลาทำงานทั้งหมด (การเรียกใช้ kernel แยกกัน 4,096 ครั้ง)
  • การใช้งาน Memory bandwidth: เพียง 23 GB/s สำหรับการดำเนินการ matrix
  • ปัญหาหลัก: ค่าใช้จ่ายในการเรียกใช้ kernel จากการดำเนินการขนาดเล็กหลายพันครั้ง

การปรับปรุงหลัก: การรวม gate computations เข้าเป็น kernel ขนาดใหญ่เดียวพร้อม shared memory tiling

ความสงสัยในอุตสาหกรรมเพิ่มขึ้น

ชุมชนการเรียนรู้ของเครื่องในวงกว้างยังคงแบ่งแยกเกี่ยวกับว่านวัตกรรมทางสถาปัตยกรรมเช่น minRNN แสดงถึงความก้าวหน้าที่แท้จริงหรือไม่ แม้ว่านักวิจัยบางคนจะบรรลุผลลัพธ์ที่สามารถแข่งขันได้ด้วยโมเดลที่ใช้ RNN ในเกณฑ์มาตรฐานเฉพาะ แต่นักวิจารณ์โต้แย้งว่าความสำเร็จเหล่านี้ไม่ได้แปลงไปสู่การใช้งานในโลกแห่งความจริงที่ transformer เก่งกาจ

ความก้าวหน้าทั้งหมดในการสร้างแบบจำลองภาษาในทศวรรษที่ผ่านมาเกิดจากการเปลี่ยนแปลงในสถาปัตยกรรมเพื่อให้สามารถสร้างเส้นโค้งที่หลากหลายและแสดงออกได้มากขึ้นที่เข้ากับชุดข้อมูลเป้าหมายได้ดีขึ้น

การถกเถียงสะท้อนความตึงเครียดที่ลึกซึ้งกว่าในการวิจัย AI ระหว่างการแสวงหาประสิทธิภาพการประมวลผลและการรักษาความสามารถในการแสดงออกของโมเดล เมื่อต้นทุนการฝึกอบรมยังคงเพิ่มขึ้น แรงกดดันในการหาทางเลือกที่มีประสิทธิภาพมากกว่า transformer ก็เข้มข้นขึ้น แต่การนำไปใช้งานในทางปฏิบัติมักจะไม่เป็นไปตามคำสัญญาเชิงทฤษฎี

โครงการของนักศึกษาทำหน้าที่เป็นการตรวจสอบความเป็นจริงที่มีค่า โดยแสดงให้เห็นว่าแม้แต่การปรับเปลี่ยนสถาปัตยกรรมที่มีเหตุผลดีก็ยังเผชิญกับอุปสรรคสำคัญเมื่อนำไปใช้งานบนฮาร์ดแวร์จริง แม้ว่าอัลกอริทึมการสแกนแบบขนานจะทำงานได้ในทฤษฎี แต่ปฏิสัมพันธ์ที่ซับซ้อนของแบนด์วิดท์หน่วยความจำ ค่าใช้จ่ายการเริ่มต้น kernel และต้นทุนการซิงโครไนซ์สามารถขจัดข้อได้เปรียบของอัลกอริทึมในทางปฏิบัติได้อย่างง่ายดาย

อ้างอิง: Were RNNs All We Needed? A GPU Programming Perspective