คู่มือทางเทคนิค

การเติมข้อมูลล่วงหน้าแบบแยกส่วนและการแสดงการถอดรหัส

สถาปัตยกรรมการให้บริการที่แบ่งการอนุมานโมเดลภาษาขนาดใหญ่ออกเป็นสองเฟส ได้แก่ เติมล่วงหน้าและถอดรหัส และรันบนกลุ่ม GPU ที่แตกต่างกัน

ภาพรวม

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

การให้บริการการกรอกข้อมูลล่วงหน้าและถอดรหัสแบบแยกส่วนเป็นส่วนสำคัญทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง

เจาะลึก

เมื่อ LLM ตอบกลับ มันจะทำงานในสองขั้นตอน การเติมล่วงหน้าจะอ่านพรอมต์ทั้งหมดในครั้งเดียวและสร้างแคชคีย์-ค่า (KV) นี่เป็นการระเบิดครั้งใหญ่แบบขนานและขอบเขตการคำนวณที่ทำให้หน่วยทางคณิตศาสตร์ของ GPU อิ่มตัว จากนั้นถอดรหัสจะสร้างโทเค็นทีละรายการ แต่ละขั้นตอนจะอ่านแคช KV ทั้งหมด ซึ่งเป็นหยดที่จำกัดแบนด์วิดท์หน่วยความจำและคำนวณเพียงเล็กน้อย เมื่อทำงานร่วมกัน การกรอกข้อมูลล่วงหน้าแบบยาวจะทำให้การถอดรหัสของทุกคนหยุดชะงัก (การบล็อกส่วนหัวของบรรทัด) และการแบทช์ทั้งสองจะสร้างการรบกวน การแยกส่วนจะทำการกรอกข้อมูลล่วงหน้าบนพูล GPU หนึ่งและถอดรหัสบนอีกพูลหนึ่ง โดยถ่ายโอนแคช KV ระหว่างพวกมันผ่านการเชื่อมต่อระหว่างกันที่รวดเร็ว เช่น NVLink หรือ InfiniBand แต่ละพูลได้รับการปรับแต่งและปรับขนาดอย่างเป็นอิสระ ปรับปรุง goodput ลดเวลาแฝงของส่วนท้าย และปล่อยให้ผู้ปฏิบัติงานเข้าถึงเป้าหมายโทเค็นเวลาถึงโทเค็นแรกและเวลาต่อเอาต์พุตที่จำกัดพร้อมกัน

ข้อมูลเชิงลึกทางเทคนิค

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

การเรียนรู้การเติมข้อมูลล่วงหน้าแบบแยกส่วนและการถอดรหัสการให้บริการ

สถาปัตยกรรมการให้บริการที่แบ่งการอนุมานโมเดลภาษาขนาดใหญ่ออกเป็นสองเฟส ได้แก่ เติมล่วงหน้าและถอดรหัส และรันบนกลุ่ม GPU ที่แตกต่างกัน เป็นเรื่องสำคัญเนื่องจากทั้งสองระยะนี้มีความต้องการด้านฮาร์ดแวร์ที่ตรงกันข้าม และการบังคับให้เข้าสู่เครื่องเดียวกันจะทำให้ความจุสิ้นเปลืองและทำให้เวลาในการตอบสนองลดลง การให้บริการการกรอกข้อมูลล่วงหน้าและถอดรหัสแบบแยกส่วนเป็นส่วนสำคัญทางเทคนิคที่ส่งผลต่อคุณภาพของโมเดล ต้นทุนโครงสร้างพื้นฐาน เวลาแฝง และความน่าเชื่อถือในวงกว้าง เพื่อสร้างความเข้าใจอย่างลึกซึ้ง ให้ถือว่า Disaggregated Prefill and Decode Serving เป็นรูปแบบการดำเนินงาน ไม่ใช่คุณลักษณะเดียว: กำหนดผลลัพธ์ที่ต้องการ ชี้แจงสมมติฐาน และแยกสิ่งที่ระบบสามารถทำได้อย่างน่าเชื่อถือจากสิ่งที่ยังต้องใช้วิจารณญาณจากผู้เชี่ยวชาญ

ในทางปฏิบัติ ทีมที่แข็งแกร่งที่ใช้ Disaggregated Prefill และ Decode Serving จะปรับสถาปัตยกรรม ข้อมูล และตัวเลือกโครงสร้างพื้นฐานให้เหมาะสมโดยเทียบกับความน่าเชื่อถือและต้นทุน โดยจะบันทึกเกณฑ์ความสำเร็จที่ชัดเจน ทดสอบกับข้อมูลและขั้นตอนการทำงานที่สมจริง และทำซ้ำตามรูปแบบความล้มเหลวที่สังเกตได้ แทนที่จะชนะการวัดประสิทธิภาพเพียงครั้งเดียว นี่คือจุดที่ความเข้าใจทางทฤษฎีกลายเป็นความสามารถที่คงทนของผลิตภัณฑ์ นโยบาย และการดำเนินงาน

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

ผลกระทบเชิงกลยุทธ์

การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี

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

การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด

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

ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต

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

อนาคตของการให้บริการการเติมล่วงหน้าและการถอดรหัสแบบแยกส่วน

คาดว่าการแยกส่วนจะกลายเป็นค่าเริ่มต้นในสแต็คการผลิต ระบบต่างๆ เช่น DistServe, Splitwise และ Mooncake ทำให้เป็นที่นิยม และตอนนี้ vLLM และ NVIDIA Dynamo ก็มีโหมดแบบแยกส่วนแล้ว การวิจัยกำลังผลักดันการเพิ่มประสิทธิภาพการถ่ายโอนแคช KV การรวมแคชและการใช้ซ้ำข้ามคำขอ การปรับสมดุลแบบไดนามิกของอัตราส่วนการเติมล่วงหน้า/ถอดรหัสภายใต้การรับส่งข้อมูลที่เปลี่ยนแปลง และการผสานรวมที่เข้มงวดมากขึ้นด้วยการแคชคำนำหน้าและการเติมล่วงหน้าแบบก้อน เมื่อหน้าต่างบริบทขยายเป็นโทเค็นนับล้าน การแยกขั้นตอนเหล่านี้จึงกลายเป็นสิ่งจำเป็นมากขึ้นสำหรับการให้บริการที่คุ้มค่าและมีความหน่วงต่ำ

การใช้งานจริงในโลกแห่งความเป็นจริง

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

NVIDIA Dynamo และ vLLM ช่วยให้ผู้ปฏิบัติงานปรับใช้กลุ่มผู้ปฏิบัติงานที่กรอกข้อมูลล่วงหน้าและถอดรหัสแยกกัน ดังนั้นการแจ้งเตือนที่ยาวต่อเนื่องจะไม่หยุดการทำงานรุ่นต่อเนื่อง

Mooncake (ใช้โดย Kimi จาก Moonshot AI) แยกการกรอกข้อมูลล่วงหน้าและถอดรหัส และเพิ่มพูล KV-cache แบบกระจายเพื่อลดการคำนวณซ้ำพร้อมท์ซ้ำซ้อนในขนาดต่างๆ

บริการเติมโค้ดให้สมบูรณ์มีพูลการกรอกล่วงหน้าขนาดเล็กสำหรับพรอมต์สั้น ๆ และพูลการถอดรหัสขนาดใหญ่ เนื่องจากต้นทุนส่วนใหญ่มาจากการสตรีมโทเค็นเอาต์พุตจำนวนมาก

รูปแบบการดำเนินงาน

การกรอกข้อมูลล่วงหน้าแบบแยกส่วนและการถอดรหัสการให้บริการในทางปฏิบัติ

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

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

การกรอกข้อมูลล่วงหน้าแบบแยกส่วนและการถอดรหัสการให้บริการในทางปฏิบัติ

NVIDIA Dynamo และ vLLM ช่วยให้ผู้ปฏิบัติงานปรับใช้กลุ่มผู้ปฏิบัติงานที่กรอกข้อมูลล่วงหน้าและถอดรหัสแยกกัน ดังนั้นการแจ้งเตือนที่ยาวต่อเนื่องจะไม่หยุดการทำงานรุ่นต่อเนื่อง

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

การกรอกข้อมูลล่วงหน้าแบบแยกส่วนและการถอดรหัสการให้บริการในทางปฏิบัติ

Mooncake (ใช้โดย Kimi จาก Moonshot AI) แยกการกรอกข้อมูลล่วงหน้าและถอดรหัส และเพิ่มพูล KV-cache แบบกระจายเพื่อลดการคำนวณซ้ำพร้อมท์ซ้ำซ้อนในขนาดต่างๆ

Mooncake (ใช้โดย Kimi จาก Moonshot AI) แยกการกรอกข้อมูลล่วงหน้าและถอดรหัส และเพิ่มพูล KV-cache แบบกระจายเพื่อลดการคำนวณซ้ำซ้อนพร้อมท์ตามขนาด ทีมมักจะได้รับผลลัพธ์ที่ดีกว่าเมื่อพวกเขากำหนดเกณฑ์คุณภาพล่วงหน้า รักษาเส้นทางการยกระดับโดยมนุษย์สำหรับกรณี Edge และติดตามทั้งการเพิ่มผลผลิตและต้นทุนข้อผิดพลาดเมื่อเวลาผ่านไป

การกรอกข้อมูลล่วงหน้าแบบแยกส่วนและการถอดรหัสการให้บริการในทางปฏิบัติ

บริการเติมโค้ดให้สมบูรณ์มีพูลการกรอกล่วงหน้าขนาดเล็กสำหรับพรอมต์สั้น ๆ และพูลการถอดรหัสขนาดใหญ่ เนื่องจากต้นทุนส่วนใหญ่มาจากการสตรีมโทเค็นเอาต์พุตจำนวนมาก

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

ความเสี่ยงและรั้ว

!

การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้

!

ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป

!

ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น

แผนงานการดำเนินงาน

1

กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน

กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

2

เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง

เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง ถือว่าแต่ละขั้นตอนเป็นเหมือนประตูหลักฐาน: หากไม่ตรงตามเกณฑ์ ให้หยุดการเปิดตัวชั่วคราว ปิดช่องว่าง จากนั้นจึงขยายการใช้งานเท่านั้น

3

การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้

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

4

เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด

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

สำรวจต่อไป