บทที่ 6 · ตอนมันตอบจริง หน้า 9/12 ~3 นาที

Speculative decoding: ให้ตัวเล็กเดา ตัวใหญ่ตรวจ

Advanced · ให้เห็นภาพรวม ข้ามได้ ไม่นับเป็นเงื่อนไขจบบท ข้ามไปหน้าถัดไป →

หน้าเสริม ข้ามได้

การเดาล่วงหน้าแล้วตรวจ (speculative decoding)เทคนิคให้โมเดลเล็กร่างคำตอบล่วงหน้าหลายคำ แล้วให้โมเดลใหญ่ตรวจรวดเดียว ได้ผลที่มีการแจกแจงแบบเดียวกับให้โมเดลใหญ่เขียนเอง แต่เร็วขึ้นดูคำศัพท์ทั้งหมด อาศัย 2 เรื่อง: ตรวจหลาย token พร้อมกันคือ prefill ย่อมๆ (หน้า 2) และ ขั้นเขียนคำตอบ (decode, decoding phase)ช่วงที่โมเดลเขียนคำตอบทีละ token แต่ละก้าวต้องรันโมเดลหนึ่งรอบ จึงช้ากว่าขั้นอ่าน prompt เมื่อคิดต่อ tokenดูคำศัพท์ทั้งหมด ติดที่การอ่านน้ำหนัก (หน้า 6) ตรวจ 1 หรือ 5 token จึงใช้เวลาพอๆ กัน (ยกเว้นชุดใหญ่จนการคำนวณเป็นคอขวด)

ตัวอย่าง greedy (T = 0) ต่อ "แมวชอบกิน" จากบทที่ 1

ขั้น 1 — ร่าง โมเดลเล็กเดาต่อ 4 คำ: ปลา · ทู · ทอด · ทุก

ขั้น 2 — ตรวจ โมเดลใหญ่รันรอบเดียว ได้คำอันดับ 1 ทุกตำแหน่ง

ขั้น 3 — รับส่วนที่ตรง + 1 token "ปลา" ✔ "ทู" ✔ แต่ "ทอด" ✘ โมเดลใหญ่เลือก "มาก" แทน ส่วน "ทุก" ถูกทิ้ง

ได้ 3 token จากโมเดลใหญ่รอบเดียว: "แมวชอบกินปลาทูมาก"

Speculative decoding แบบ greedy: ตัวเล็กเดา ตัวใหญ่ตรวจตัวอย่างแบบ greedy โมเดลเล็กร่าง 4 คำ ปลา ทู ทอด ทุก โมเดลใหญ่ตรวจทั้งหมดในรอบเดียว ปลา และ ทู ตรงกับคำอันดับ 1 ของโมเดลใหญ่จึงผ่าน ทอด ไม่ตรง โมเดลใหญ่จึงเขียนคำว่า มาก แทน คำที่เหลือถูกทิ้ง ได้ 3 token จากการรันโมเดลใหญ่ 1 รอบโมเดลเล็ก ร่าง 4 คำปลา · ทู · ทอด · ทุกโมเดลใหญ่ ตรวจรวดเดียว1 รอบ✔ ปลา✔ ทู✘ ทอด → มากทิ้ง: ทุกได้ 3 token จากโมเดลใหญ่ 1 รอบแมวชอบกินปลาทูมาก

คาดว่าได้กี่ token () ต่อรอบของโมเดลใหญ่? ถ้าร่าง k คำ แต่ละคำผ่านด้วยโอกาส α (สมมติว่าอิสระต่อกัน)

ที่ α = 0.8 และ k = 4:

ผ่านกี่คำ01234
โอกาส20.0%16.0%12.8%10.2%41.0%
ได้ token12345

ค่าเฉลี่ย = (1 − 0.8⁵) ÷ (1 − 0.8) ≈ 3.36 token ต่อรอบ เร็วขึ้นจริงไม่ถึง 3.36 เท่า เพราะการร่างก็ใช้เวลา

ทำไมผลไม่เพี้ยน? ตอนสุ่ม (T > 0) รับคำร่างด้วยโอกาส ถ้าไม่รับ สุ่มคำใหม่จาก ที่ปรับให้รวม 100% ผลจึงมีการแจกแจงตรงกับโมเดลใหญ่ (Leviathan และคณะ, 2023; Chen และคณะ, 2023)

speculative decoding ให้โมเดลเล็กเดาล่วงหน้าหลายคำ โมเดลใหญ่ตรวจรวดเดียว ได้การแจกแจงเดียวกับโมเดลใหญ่เขียนเอง แต่เร็วขึ้น

มังคุด มาสคอตมังคุด

มังคุด

ถ้าโมเดลเล็กเดาผิดตลอด จะช้ากว่าไม่ใช้มั้ย?