ไม่สูญเสียคุณภาพ แต่ก็ไม่ฟรี: เมื่อไหร่ที่ Speculative Decoding จะได้ผล

Speculative Decoding เป็นหัวข้อที่กำลังมาแรงในการทำ LLM inference

บริษัทอย่าง DSpark อ้างว่าสามารถเพิ่มความเร็วได้ถึง 60% ถึง 85% นอกจากนี้ Google ยังได้เผยแพร่งานวิจัยเกี่ยวกับวิธีการนี้ด้วย

แนวคิดนี้เรียบง่ายมาก: โมเดลร่าง (draft model) ขนาดเล็กจะเขียน token ขึ้นมา จากนั้นโมเดลเป้าหมาย (target model) ขนาดใหญ่จะทำการตรวจสอบในครั้งเดียว ซึ่งช่วยให้การสร้างข้อความ (generation) เร็วขึ้น

แต่ในฐานะวิศวกร คุณต้องตั้งคำถามสองข้อ:

  • มันเพิ่มการหลอน (hallucinations) หรือไม่?
  • โมเดลที่เพิ่มเข้ามาทำให้สิ้นเปลืองทรัพยากรการคำนวณ (compute) หรือไม่?

มาดูข้อเท็จจริงกัน

ประการแรก คุณภาพไม่สูญเสีย (lossless) โมเดลเป้าหมายจะตรวจสอบทุก token หากโมเดลร่างทำผิดพลาดที่ token ที่ 3 โมเดลเป้าหมายจะปฏิเสธและเริ่มสร้างใหม่จากจุดนั้น ผลลัพธ์ที่ได้จะเหมือนกับโมเดลเป้าหมายเพียงอย่างเดียวในทางคณิตศาสตร์ และไม่ได้ทำให้การหลอน (hallucinations) เพิ่มขึ้น

ประการที่สอง ต้นทุนนั้นมีอยู่จริง การรันโมเดลขนาดเล็กมีต้นทุนต่ำกว่าโมเดลขนาดใหญ่มาก เช่น โมเดลขนาด 7B อาจมีต้นทุนเพียง 1/10 ของโมเดลขนาด 70B

Speculative Decoding คือการเดิมพัน

  • หากสำเร็จ (full hit) คุณจะประหยัดทรัพยากรการคำนวณได้อย่างมหาศาล
  • หากล้มเหลว (full miss) คุณจะขาดทุน เพราะคุณต้องรันทั้งโมเดลร่างและขั้นตอนเพิ่มเติมของโมเดลเป้าหมาย ซึ่งจะช้ากว่าการทำ inference แบบมาตรฐาน

เพื่อที่จะชนะ คุณต้องปฏิบัติตามกฎนี้: จำนวน token เฉลี่ยที่ได้รับการยอมรับ (accepted tokens) จะต้องมากกว่า 1 บวกกับค่า overhead ของโมเดลร่าง

หากโมเดลร่างของคุณทำงานบางอย่างได้ไม่ดี อัตราการยอมรับ (acceptance rate) จะลดลง และหากมันลดลงต่ำเกินไป Speculative Decoding จะทำให้ระบบของคุณช้าลง

วิธีตัดสินใจว่าควรใช้หรือไม่:

  1. วัดอัตราการยอมรับ (acceptance rate) ของคุณ อย่าเชื่อแค่ benchmark ทั่วไป ให้ใช้ข้อมูลและงานของคุณเอง
  2. ตรวจสอบประเภทของงาน ใช้กับงานที่คาดเดาได้ เช่น การเติมโค้ด (code completion) และหลีกเลี่ยงงานที่คาดเดาไม่ได้ เช่น การเขียนเชิงสร้างสรรค์ (creative writing)
  3. ตรวจสอบ p99 latency ของคุณ เพราะการล้มเหลวโดยสิ้นเชิง (full miss) จะทำให้เกิด latency พุ่งสูงขึ้น

การปรับแต่ง (optimization) ที่ดีที่สุดไม่ใช่สิ่งที่ชนะเสมอไป แต่คือสิ่งที่คุณรู้ว่าควรจะปิดเมื่อไหร่

ใช้มันเมื่ออัตราความสำเร็จ (hit rate) สูง และหยุดใช้เมื่ออัตราความสำเร็จลดฮวบลง

Source: https://dev.to/zxpmail/lossless-but-not-free-the-lossless-but-not-free-when-speculative-decoding-actually-pays-off-1c2g

Optional learning community: https://t.me/GyaanSetuAi