SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

คำสำคัญ: โมเดลภาษาขนาดใหญ่, การอนุมานแบบไดนามิก, การเร่งความเร็วด้วย FPGA, การคำนวณแบบความแม่นยำผสม, การจัดการแคช KV

ประสิทธิภาพการอนุมานของโมเดลภาษาขนาดใหญ่เผชิญกับความขัดแย้งพื้นฐาน: โมเดลดำเนินการคำนวณเดียวกันกับทุกโทเคน แต่ความแตกต่างของโทเคนแต่ละตัวต่อความหมายนั้นมหาศาล เช่นเดียวกับที่มนุษย์ข้ามคำฟุ่มเฟือยและโฟกัสที่คำสำคัญเมื่ออ่านข้อความ โมเดลขนาดใหญ่ก็ควรมีความสามารถในการ “คำนวณแบบเลือกสรร” ซึ่งเป็นแก่นความคิดของวิธีการจัดสรรการคำนวณแบบไดนามิก เช่น SkipGPT

อย่างไรก็ตาม การลดปริมาณการคำนวณที่อ้างในระดับอัลกอริทึม มักแปลงเป็นความล่าช้าที่ลดลงในสัดส่วนเดียวกันบนฮาร์ดแวร์จริงได้ยาก เพราะเหตุใด?

สาเหตุพื้นฐานอยู่ที่ “ความไม่ตรงกันของอิมพีแดนซ์” ระหว่างรูปแบบการดำเนินการแบบไดนามิกกับการออกแบบสถาปัตยกรรมฮาร์ดแวร์ที่มีอยู่ (โดยเฉพาะ GPU และตัวเร่งความเร็ว FPGA แบบดั้งเดิม) ที่เป็นแบบคงที่และปรับให้เหมาะกับการประมวลผลแบบแบตช์:

  • การดำเนินการแบบไม่เชิงเส้น (เช่น Softmax, LayerNorm) และเราเตอร์น้ำหนักเบา จะนำมาซึ่งค่าใช้จ่ายโอเวอร์เฮดของโฟลว์ควบคุมอย่างมีนัยสำคัญบน GPU
  • โหมดการคำนวณแบบความแม่นยำผสมทำให้อัตราการใช้ทรัพยากรคำนวณ เช่น DSP ต่ำ
  • การนำ KV แคชกลับมาใช้ข้ามเลเยอร์ ก่อให้เกิดรูปแบบการเข้าถึงหน่วยความจำที่ไม่สม่ำเสมอ

ความท้าทายเหล่านี้ร่วมกันสร้างเป็นคอขวดทางฮาร์ดแวร์สำหรับการอนุมานโมเดลภาษาขนาดใหญ่แบบไดนามิก

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

เพื่อแก้ไขจุดเจ็บปวดนี้ ทีมวิจัยจากมหาวิทยาลัยวิทยาศาสตร์และเทคโนโลยีตะวันออก (Eastern Institute of Technology) และ UCLA ได้เสนอ SkipOPU ซึ่งเป็นโอเวอร์เลย์โปรเซสเซอร์ที่ใช้ FPGA และรองรับการจัดสรรการคำนวณแบบไดนามิก

งานวิจัยนี้สนับสนุนการตัดแต่งแบบไดนามิกระดับโทเคนและระดับเลเยอร์อย่างสมบูรณ์ในระดับฮาร์ดแวร์เป็นครั้งแรก การทดลองบน AMD U280 FPGA แสดงให้เห็นว่า SkipOPU บรรลุประสิทธิภาพแบนด์วิธที่สูงกว่า GPU และตัวเร่งความเร็ว FPGA ที่มีอยู่ 1.23 ถึง 3.83 เท่า ในขณะเดียวกันก็ลดค่าใช้จ่ายในการจัดเก็บ KV แคชลงได้สูงสุด 25.4% ผ่านการนำ KV กลับมาใช้ข้ามเลเยอร์

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

บทความนี้จะตีความแนวคิดการออกแบบ นวัตกรรมหลัก และผลการทดลองของ SkipOPU พร้อมสำรวจวิธีการสร้างพื้นฐานฮาร์ดแวร์ที่มีประสิทธิภาพอย่างแท้จริงสำหรับโมเดลภาษาขนาดใหญ่แบบไดนามิก จากสามมิติ: โฟลว์ข้อมูล หน่วยประมวลผล และระบบหน่วยความจำ

สารบัญ

  • หนึ่ง. สาระสำคัญของปัญหา: ทำไมการจัดสรรการคำนวณแบบไดนามิกจึง “ได้รับการชื่นชมแต่ไม่ประสบความสำเร็จ”?
    • 1.1 SkipGPT: กรอบงานที่สง่างามสำหรับการคำนวณแบบไดนามิกระดับโทเคน
    • 1.2 “กระดูกแข็ง” สามชิ้น: ทำไมฮาร์ดแวร์ที่มีอยู่จึงรับมือไม่ได้?
  • สอง. การปรับปรุงโฟลว์ข้อมูล: ทำให้การดำเนินการแบบไม่เชิงเส้น “ล่องหน”
    • 2.1 การผสานลึกระหว่างเราเตอร์และ RMSNorm
    • 2.2 การผสาน Softmax ใน Self-Attention
  • สาม. อาร์เรย์ PE ความแม่นยำผสม: บีบเค้นพลังคำนวณทุกส่วนของ DSP
    • 3.1 DSP Overpacking: จาก “ทรัพยากรว่างเปล่า” สู่ “การใช้พื้นที่ซ้ำ”
    • 3.2 การสะสมแบบบล็อกฟลอตติ้งพอยต์: เปลี่ยนฟลอตติ้งพอยต์เป็นฟิกซ์พอยต์ เปลี่ยนความซับซ้อนเป็นความเรียบง่าย
  • สี่. บัฟเฟอร์ความไม่เปลี่ยนแปลงของ KV: เปลี่ยนความไม่สม่ำเสมอให้เป็นระเบียบ
    • 4.1 การสังเกตหลัก: คุณลักษณะ “นิ่ง” ของ KV ของโทเคนที่ถูกข้าม
    • 4.2 การแมปหน่วยความจำระดับโทเคนและบัฟเฟอร์ออนชิป
    • 4.3 ผลลัพธ์: “มายากล” ที่เหนือกว่าแบนด์วิธทางกายภาพ
  • ห้า. ประสิทธิภาพแบบเอนด์ทูเอนด์: ตัวเลขพูดเอง
    • 5.1 การตั้งค่าการทดลอง
    • 5.2 อัตราการใช้ทรัพยากร
    • 5.3 การศึกษาการกำจัด: ผลงานของการปรับปรุงโฟลว์ข้อมูล
    • 5.4 การเปรียบเทียบกับ SOTA
  • หก. งานที่เกี่ยวข้อง: ตำแหน่งของ SkipOPU ในแผนที่วิชาการ
    • 6.1 ตัวเร่งความเร็ว LLM บน FPGA
    • 6.2 เอ็นจิประมวลผลแบบไม่เชิงเส้น (NPE)
    • 6.3 การจัดการ KV แคช
  • สรุปและมุมมอง

หนึ่ง. สาระสำคัญของปัญหา: ทำไมการจัดสรรการคำนวณแบบไดนามิกจึง “ได้รับการชื่นชมแต่ไม่ประสบความสำเร็จ”?

1.1 SkipGPT: กรอบงานที่สง่างามสำหรับการคำนวณแบบไดนามิกระดับโทเคน

ก่อนที่จะเจาะลึกการออกแบบฮาร์ดแวร์ จำเป็นต้องเข้าใจหลักการทำงานของกรอบงานการตัดแต่งแบบไดนามิกที่เป็นตัวแทนนี้ นั่นคือ SkipGPT

โมเดล Transformer แบบดั้งเดิมใช้โหมด “ดำเนินการทั้งหมด”: โทเคนแต่ละตัวในแต่ละเลเยอร์จะผ่านโมดูลย่อยความใส่ใจหลายหัว (MHA) และเครือข่ายฟีดฟอร์เวิร์ด (FFN) ตามลำดับ นวัตกรรมของ SkipGPT อยู่ที่การแทรกเราเตอร์น้ำหนักเบา (มักเป็นเลเยอร์เชิงเส้น) ก่อนแต่ละโมดูลย่อย เพื่อตัดสินใจแบบไดนามิกว่าโทเคนปัจจุบันจะดำเนินการคำนวณของโมดูลย่อยนั้นหรือไม่

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

ในกรอบงาน SkipGPT กฎการอัปเดตอินพุต-เอาต์พุตของโมดูลย่อยเดียว (MHA หรือ FFN) สามารถแสดงเป็นสูตรได้ดังนี้:

(ที่นี้สงวนตำแหน่งสูตรเดิม เนื้อหาถูกย่อ)

  • l แสดงถึงดัชนีของเลเยอร์ Transformer (จาก 1 ถึง L)
  • M_l แทนโมดูลย่อยในเลเยอร์ที่ l ซึ่งสามารถเป็นความใส่ใจหลายหัว (MHA) หรือเครือข่ายฟีดฟอร์เวิร์ด (FFN) แต่ละโมดูลย่อยมีเราเตอร์อิสระอยู่ข้างหน้า
  • x_l คือเวกเตอร์ฝังตัว (มิติ d) ของโทเคนปัจจุบัน ในอินพุตของเลเยอร์ที่ l
  • “sampled result” ในขั้นตอนการอนุมานจริงๆ แล้วเป็นการตัดสินใจแบบกำหนดได้: เราเตอร์คำนวณ logits ก่อน จากนั้นนำ argmax เพื่อได้การตัดสินใจแบบไบนารี d_l (1 หมายถึงดำเนินการ, 0 หมายถึงข้าม) ในระหว่างการฝึก จะใช้การสุ่มตัวอย่าง Gumbel-Softmax เพื่อให้สามารถหาอนุพันธ์ได้ เนื่องจาก Gumbel-Softmax เป็นการประมาณแบบต่อเนื่องและหาอนุพันธ์ได้ของการสุ่มตัวอย่างแบบไม่ต่อเนื่อง (ดำเนินการ/ข้าม) ซึ่งทำให้เราเตอร์สามารถเรียนรู้กลยุทธ์การตัดสินใจแบบไดนามิกที่สมเหตุสมผลผ่านการไล่ระดับลงในการฝึกได้
  • การเชื่อมต่อแบบเรซิดวล x_{l+1} = x_l + M_l(x_l) มีอยู่เสมอ: แม้ว่าโมดูลย่อยจะถูกข้าม ข้อมูลอินพุตก็ยังถูกส่งผ่านโดยตรงไปยังเอาต์พุต

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

ข้อได้เปรียบเฉพาะของ SkipGPT อยู่ที่การแยกโมดูล: MHA และ FFN สามารถตัดสินใจว่าจะดำเนินการหรือไม่อย่างอิสระ ไม่ใช่การบังคับผูกมัดเหมือนวิธีการเช่น Mixture-of-Depth การควบคุมระดับละเอียดนี้นำมาซึ่งความยืดหยุ่นสำหรับการเร่งความเร็วฮาร์ดแวร์ แต่ก็ได้ฝังความท้าทายไว้ด้วย

โดยเฉพาะ:
* ความยืดหยุ่น: โทเคนหนึ่งสามารถดำเนินการ MHA แต่ข้าม FFN ในเลเยอร์เดียวกัน หรือในทางกลับกัน สิ่งนี้ทำให้โมเดลสามารถจัดสรรทรัพยากรการคำนวณให้กับการดำเนินการที่สำคัญอย่างแท้จริงได้อย่างละเอียดยิ่งขึ้น
* ความท้าทาย: การกำหนดเส้นทางอิสระทำให้ไม่สามารถได้ผลลัพธ์ระดับกลางของโมดูลย่อยที่ถูกข้าม (เช่น KV แคชของ MHA) โดยตรง SkipGPT ใช้กลยุทธ์การนำ KV กลับมาใช้ข้ามเลเยอร์: หากเลเยอร์ปัจจุบันข้าม MHA จะสืบทอดเวกเตอร์ Key และ Value จากเลเยอร์ล่าสุดที่ดำเนินการ MHA แม้ว่าสิ่งนี้จะรักษาความหมายของความใส่ใจไว้ แต่ก็ทำให้รูปแบบการเข้าถึง HBM ในระหว่างการถอดรหัสมีความไม่สม่ำเสมอสูง เป็นหนึ่งในความยากหลักของการเร่งความเร็วฮาร์ดแวร์

1.2 “กระดูกแข็ง” สามชิ้น: ทำไมฮาร์ดแวร์ที่มีอยู่จึงรับมือได้ยาก?

ผู้เขียน SkipOPU สรุปภาวะวิกฤตสามประการที่การอนุมาน LLM แบบไดนามิกเผชิญในการเร่งความเร็วฮาร์ดแวร์:

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

ภาวะวิกฤตที่หนึ่ง: “เครื่องขยาย” ความล่าช้าของเราเตอร์จากการดำเนินการแบบไม่เชิงเส้น

การดำเนินการแบบไม่เชิงเส้น (Softmax, LayerNorm/RMSNorm) และเราเตอร์ Gumbel-Softmax มีลักษณะร่วมกัน: ความเข้มข้นทางคณิตศาสตร์ต่ำ + การพึ่งพาข้อมูลสูง ซึ่งหมายความว่าพวกมันไม่สามารถได้รับปริมาณงานสูงผ่านความขนานแบบไปป์ไลน์ได้เหมือนการคูณเมทริกซ์ แต่กลับกลายเป็น “ฟองอากาศ” ของไปป์ไลน์การอนุมานทั้งหมด

ยกตัวอย่าง RMSNorm การคำนวณของมันต้องการหาค่าเฉลี่ยและความแปรปรวนก่อน (การสำรวจข้อมูลหนึ่งครั้ง) จากนั้นจึงทำการทำให้เป็นมาตรฐาน (การสำรวจข้อมูลครั้งที่สอง) วิธีการดั้งเดิมจะทำให้เกิดความล่าช้าในการรอคอยอย่างมีนัยสำคัญระหว่างการคูณเมทริกซ์และการทำให้เป็นมาตรฐาน แย่ไปกว่านั้น การสุ่มตัวอย่าง Gumbel ที่เราเตอร์แนะนำเข้ามา เพิ่มค่าใช้จ่ายโอเวอร์เฮดของโฟลว์ควบคุมเข้าไปอีก ซึ่งสถาปัตยกรรม GPU ไม่ถนัดเป็นพิเศษ

ภาวะวิกฤตที่สอง: “การสูญเสียทรัพยากร” จากความชอบความแม่นยำผสม

การศึกษาการควอนไทซ์แสดงให้เห็นว่า: น้ำหนักโมเดลสามารถถูกควอนไทซ์อย่างรุนแรงเป็นจำนวนเต็ม 4-bit โดยมีการสูญเสียความแม่นยำน้อยมาก แต่ค่าการกระตุ้นมักต้องการคง FP16 ไว้เพื่อรับประกันความเสถียรเชิงตัวเลข สิ่งนี้ก่อให้เกิดโหมดการคำนวณแบบความแม่นยำผสม FP16×INT4

ปัญหาคือ: DSP48E2 ของ FPGA รองรับการคูณ 27×18-bit โดยธรรมชาติ เมื่อดำเนินการ FP16×FP16 จะมีการสิ้นเปลืองความกว้างบิตอยู่แล้ว และเมื่อประมวลข้อมูล INT4 ก็ยิ่ง “ใช้ปืนใหญ่ยิงนก” — ทรัพยากรทางคณิตศาสตร์จำนวนมากว่างเปล่า เทคนิคการแพ็ค DSP ที่มีอยู่ อาจไม่สามารถทำได้เนื่องจากข้อจำกัดความกว้างบิตของตัวถูกดำเนินการ หรือไม่สามารถใช้ประโยชน์จากทรัพยากรตัวบวกในตัวของ DSP ได้อย่างเต็มที่

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

ภาวะวิกฤตที่สาม: “ความวุ่นวายในการเข้าถึงหน่วยความจำ” จากการนำ KV กลับมาใช้

การตัดแต่งเลเยอร์แบบไดนามิกนำมาซึ่งความท้าทายด้านความสอดคล้องที่ละเอียดอ่อน: เมื่อโทเคนบางตัวในเลเยอร์ l ถูกข้าม เวกเตอร์ Key และ Value ของมันมาจากไหน? วิธีมาตรฐานคือนำการแสดง KV ของเลเยอร์ที่ดำเนินการล่าสุด (เช่น เลเยอร์ l-1) กลับมาใช้ใหม่ สิ่งนี้สมเหตุสมผลในเชิงความหมาย (เพราะโทเคนที่ถูกข้ามเปลี่ยนแปลงไม่มาก) แต่ในแง่ของรูปแบบการเข้าถึงหน่วยความจำแล้ว มันเป็นหายนะ

SkipOPU: 突破ขีดจำกัดการอนุมานแบบไดนามิก FPGA เร่งความเร็วการปฏิวัติประสิทธิภาพโมเดลภาษาขนาดใหญ่

ดังแสดงในรูปที่ 6(b) เมื่อคำนวณความใส่ใจของเลเยอร์ l ในขั้นตอนการถอดรหัส จำเป็นต้องดึงข้อมูลพร้อมกัน: KV ที่สร้างใหม่ของเลเยอร์ l (โทเคนที่ทำงานอยู่) และ KV ที่นำกลับมาใช้จากเลเยอร์ l-1 (โทเคนที่ถูกข้าม) ภายใต้การแมปแบบอินเตอร์ลีฟดั้งเดิม KV เหล่านี้กระจายอยู่ในพื้นที่แอดเดรสที่ไม่ต่อเนื่องกันของช่อง HBM ที่แตกต่างกัน ส่งผลให้ธุรกรรมแบบเบิร์สต์ของ AXI ขาดบ่อยครั้ง และแบนด์วิธที่มีประสิทธิภาพลดลงอย่างรวดเร็ว

นี่คือ “สามเหลี่ยมที่เป็นไปไม่ได้” ของการเร่งความเร็วฮาร์ดแวร์สำหรับการอนุมานแบบไดนามิก: ความยืดหยุ่นของอัลกอริทึม ประสิทธิภาพฮาร์ดแวร์ และแบนด์วิธหน่วยความจำ ยากที่จะได้มาพร้อมกัน คุณค่าของ SkipOPU


⚠️ หมายเหตุ: เนื้อหาได้รับการแปลโดย AI และตรวจสอบโดยมนุษย์ หากมีข้อผิดพลาดโปรดแจ้ง

☕ สนับสนุนค่ากาแฟทีมงาน

หากคุณชอบบทความนี้ สามารถสนับสนุนเราได้ผ่าน PromptPay

PromptPay QR
SCAN TO PAY WITH ANY BANK

本文来自网络搜集,不代表คลื่นสร้างอนาคต立场,如有侵权,联系删除。转载请注明出处:https://www.itsolotime.com/th/archives/28452

Like (0)
Previous 7 hours ago
Next 7 hours ago

相关推荐