การถอดรหัสเชิงคาดการณ์
การถอดรหัสแบบคาดการณ์ล่วงหน้า (Speculative decoding)เป็นการ เพิ่มประสิทธิภาพเวลา การอนุมานสำหรับแบบจำลองภาษาขนาดใหญ่แบบอัตถารีเกรส ซีฟ (LLMs) ที่สร้างโทเค็น หลายตัว ต่อขั้นตอนการถอดรหัสแทนที่จะเป็นหนึ่งตัว แบบจำลองร่างขนาดเล็กเสนอชุดโทเค็นที่เป็นไปได้ และแบบจำลองเป้าหมาย ขนาดใหญ่ จะตรวจสอบโทเค็นเหล่านั้นในการส่งผ่านไปข้างหน้าเพียงครั้งเดียวโดยใช้ รูปแบบ การสุ่มตัวอย่างแบบปฏิเสธ ที่ได้รับการแก้ไข การตรวจสอบจะรักษา รูปแบบการ กระจาย เอาต์พุตดั้งเดิมของแบบจำลอง เป้าหมาย ดังนั้นเทคนิคนี้จึงให้ผลลัพธ์เช่นเดียวกับการถอดรหัสมาตรฐานในขณะที่ลดเวลาแฝงลงประมาณสองถึงสามเท่า[ 1 ] [ 2 ]ชื่อนี้เป็นการเปรียบเทียบกับการดำเนินการแบบคาดการณ์ล่วงหน้าใน การออกแบบ CPUซึ่งโปรเซสเซอร์จะรันคำสั่งตามสาขาที่คาดการณ์ไว้ก่อนที่จะทราบผลลัพธ์[ 3 ]
พื้นหลัง
การถอดรหัสแบบอัตถารีเกรสซีฟมาตรฐานในแบบจำลองภาษาขนาดใหญ่จะสร้างโทเค็นทีละตัว แบบจำลองจะคำนวณการกระจายความน่าจะเป็นเหนือคำศัพท์ สุ่มตัวอย่างโทเค็นถัดไป และป้อนโทเค็นนั้นกลับเข้าไปเป็นอินพุต สำหรับแบบจำลองขนาดใหญ่ กระบวนการนี้ติดขัดที่แบนด์วิดท์ของหน่วยความจำมากกว่าปริมาณงานทางคณิตศาสตร์: การโหลดพารามิเตอร์ของแบบจำลองจากหน่วยความจำแบนด์วิดท์สูง (HBM) ไปยังโปรเซสเซอร์ใช้เวลาส่วนใหญ่ในแต่ละขั้นตอน[ 1 ]ด้วยเหตุนี้ การส่งผ่านไปข้างหน้าเหนือโทเค็นหนึ่งตัวและการส่งผ่านไปข้างหน้าเหนือโทเค็นหลายตัวในชุดจึงใช้เวลาประมาณเท่ากัน การถอดรหัสแบบคาดการณ์อาศัยคุณสมบัตินี้[ 3 ]
กลไก
เทคนิคนี้สลับกันระหว่างสองขั้นตอน: การร่างและการตรวจสอบ[ 4 ]
ระหว่างการร่าง โมเดลการประมาณค่าอย่างรวดเร็วจะสร้างโทเค็นผู้สมัครจำนวน Kชุดสั้นๆซึ่งโดยทั่วไปจะมีจำนวนระหว่าง 3 ถึง 12 ชุด โมเดลการร่างมักจะเป็นเวอร์ชันที่เล็กกว่าของโมเดลเป้าหมายหรือเครือข่ายเสริมที่มีน้ำหนักเบา[ 5 ]
ระหว่างการตรวจสอบ โมเดลเป้าหมายจะให้คะแนนลำดับร่างทั้งหมดในการส่งผ่านไปข้างหน้าแบบกลุ่มเดียว อัลกอริทึมการสุ่มตัวอย่างการปฏิเสธที่ได้รับการแก้ไขจะเปรียบเทียบความน่าจะเป็นของร่างและเป้าหมายในแต่ละตำแหน่ง หากโมเดลเป้าหมายมีโอกาสอย่างน้อยเท่ากันที่จะสร้างโทเค็นที่กำหนด โทเค็นนั้นจะได้รับการยอมรับ โทเค็นแรกที่ล้มเหลวจะถูกสุ่มตัวอย่างใหม่จากการกระจายที่แก้ไขแล้ว และทุกอย่างหลังจากนั้นจะถูกทิ้งไป ผลลัพธ์คือการกระจายเอาต์พุตจะเหมือนกับว่าแต่ละโทเค็นถูกสร้างขึ้นทีละรายการ[ 1 ] [ 2 ]
จำนวนโทเค็นที่ได้รับการยอมรับต่อรอบขึ้นอยู่กับว่าแบบจำลองร่างตรงกับเป้าหมายได้ดีเพียงใด สำหรับคำทั่วไปและการต่อเนื่องที่คาดเดาได้ การจับคู่มักจะดี ดังนั้นแบบจำลองเป้าหมายจึงสามารถยืนยันโทเค็นหลายรายการพร้อมกันได้[ 3 ]
ประวัติศาสตร์
วิธีการต้นแบบในยุคแรกคือการถอดรหัสแบบขนานเป็นบล็อกซึ่งเสนอโดย Stern, Shazeerและ Uszkoreit ในปี 2018 วิธีการของพวกเขาทำนายโทเค็นในอนาคตหลายรายการผ่านหัวทำนายเสริมและตรวจสอบความถูกต้องกับแบบจำลองอัตถารีเกรสซีฟ แต่ใช้งานได้เฉพาะกับ การถอดรหัส แบบโลภและไม่รักษาการกระจายตัวอย่างทั้งหมด[ 6 ]
รูปแบบที่ทันสมัยของเทคนิคนี้มาจาก Yaniv Leviathan, Matan Kalman และYossi Matiasที่Google Researchซึ่งได้โพสต์ "Fast Inference from Transformers via Speculative Decoding" บน arXiv ในเดือนพฤศจิกายน 2022 [ 1 ]ในเวลาเดียวกันนั้น Charlie Chen และเพื่อนร่วมงานที่DeepMindได้คิดค้นวิธีการที่เกี่ยวข้องอย่างใกล้ชิดซึ่งพวกเขาเรียกว่าspeculative samplingซึ่งตีพิมพ์ในเดือนกุมภาพันธ์ 2023 [ 2 ]เอกสารทั้งสองฉบับได้แนะนำการใช้ rejection sampling เพื่อรับประกันว่าการกระจายเอาต์พุตจะไม่เปลี่ยนแปลง Leviathan และคณะแสดงให้เห็นถึงความเร็วที่เพิ่มขึ้นประมาณ 2–3 เท่าบนT5 -XXL (พารามิเตอร์ 11 พันล้านตัว) ในขณะที่ Chen และคณะรายงานว่าเพิ่มขึ้น 2–2.5 เท่าบนโมเดล Chinchilla (พารามิเตอร์ 70 พันล้านตัว)
บทความของ Leviathan และคณะได้รับการนำเสนอในรูปแบบการบรรยายในการประชุมนานาชาติเกี่ยวกับการเรียนรู้ของเครื่องจักรในเดือนกรกฎาคม พ.ศ. 2566 [ 1 ]
ตัวแปร
SpecInfer (Miao et al., 2024) ใช้โมเดลภาษาขนาดเล็กหลายตัวร่วมกันสร้างต้นไม้ของความต่อเนื่องที่เป็นไปได้ แทนที่จะเป็นสายโซ่เดียว โมเดลเป้าหมายตรวจสอบต้นไม้ทั้งหมดแบบขนานและเก็บเส้นทางที่ถูกต้องที่ยาวที่สุด โดยมีรายงานความเร็วที่เพิ่มขึ้น 1.5–3.5 เท่า[ 7 ]
Medusa (Cai et al., 2024) ใช้แนวทางที่แตกต่างออกไปโดยไม่ใช้โมเดลร่างแยกต่างหากเลย มีการแนบหัวถอดรหัสที่มีน้ำหนักเบาพิเศษเข้ากับโมเดลเป้าหมาย และแต่ละหัวจะทำนายโทเค็นที่ตำแหน่งในอนาคตที่แตกต่างกัน ผู้สมัครจะได้รับการประเมินผ่านกลไกความสนใจที่มีโครงสร้างแบบต้นไม้ ผู้เขียนวัดความเร็วที่เพิ่มขึ้นได้ 2.2–3.6 เท่า[ 8 ]
EAGLE (Li et al., 2024) ทำการถดถอยอัตโนมัติบนการแสดงคุณลักษณะภายในของโมเดลเป้าหมาย (โดยเฉพาะเลเยอร์ที่สองจากบนสุด) แทนที่จะทำกับโทเค็นโดยตรง บนLLaMA 2 Chat 70B วิธีนี้ทำให้ลดเวลาแฝงได้ 2.7–3.5 เท่า เวอร์ชันต่อมาได้เพิ่มต้นไม้ร่างแบบไดนามิก (EAGLE-2) และการเพิ่มประสิทธิภาพเพิ่มเติม (EAGLE-3) ทำให้ความเร็วเพิ่มขึ้น 3–6.5 เท่า[ 9 ]
การรับเลี้ยงบุตรบุญธรรม
ภายในปี 2024 การถอดรหัสแบบคาดการณ์ได้กลายเป็นส่วนหนึ่งของมาตรฐานในการให้บริการ LLM ในการผลิต Google ใช้ใน ฟีเจอร์ภาพรวม AIของGoogle Search [ 3 ] เฟรมเวิร์กการอนุมานแบบโอเพนซอร์ส เช่น vLLM, TensorRT-LLM ของ NVIDIA และ SGLang ล้วนมีการสนับสนุนในตัวสำหรับการถอดรหัสแบบคาดการณ์และรูปแบบต่างๆ[ 5 ] [ 10 ] Apple , AWSและMetaยังได้เผยแพร่ผลงานวิจัยที่ขยายวิธีการหรือนำไปใช้งานในระดับใหญ่[ 11 ]