การแบทช์อย่างต่อเนื่อง
การแบทช์แบบต่อเนื่องเป็นเทคนิคการให้บริการที่เพิ่มและลบคำขอออกจากโทเค็นแบทช์ที่ทำงานอยู่ทีละโทเค็น แทนที่จะรอให้แบทช์ที่คงที่ทั้งหมดเสร็จสิ้น
ภาพรวม
It keeps the GPU constantly busy and sharply increases how many users an AI model can serve at once.
เจาะลึก
GPU จะเร็วที่สุดเมื่อประมวลผลคำขอหลายรายการพร้อมกันเป็นชุด วิธีการแบบไร้เดียงสา การแบทช์แบบคงที่ จัดกลุ่มชุดคำขอคงที่ รันคำขอทั้งหมดจนเสร็จสิ้น จากนั้นจึงเริ่มแบทช์ถัดไป ปัญหา: ผลลัพธ์ของโมเดลภาษานั้นมีความยาวแตกต่างกันอย่างมาก ดังนั้นคำขอสั้นๆ จะเสร็จสิ้นก่อนกำหนดและสล็อตของคำขอเหล่านั้นจะไม่ได้ใช้งานในขณะที่แบทช์รอคำขอที่ยาวที่สุด สิ้นเปลืองรอบของ GPU และทำให้การมาถึงใหม่ล่าช้า การแบทช์แบบต่อเนื่อง (หรือที่เรียกว่าการแบทช์ในเที่ยวบินหรือระดับการวนซ้ำ ซึ่งเป็นที่นิยมใน Orca paper และใช้ใน vLLM, TensorRT-LLM และ TGI) ทำงานที่รายละเอียดของขั้นตอนการถอดรหัสขั้นตอนเดียว หลังจากที่แต่ละโทเค็นถูกสร้างขึ้น ลำดับที่เสร็จสิ้นแล้วจะออกจากแบทช์และคำขอที่มาถึงใหม่จะถูกเสียบเข้าไปทันที ซึ่งจะทำให้แบตช์เต็มและ GPU อิ่มตัว ซึ่งมักจะเพิ่มปริมาณงานหลายเท่าโดยมีเวลาแฝงที่ต่ำกว่าสำหรับผู้ใช้ที่รอ
ข้อมูลเชิงลึกทางเทคนิค
การเปลี่ยนแปลงที่สำคัญคือจากการแบทช์คำขอทั้งหมดเป็นการแบทช์การวนซ้ำแต่ละรายการ ในทุกขั้นตอนการถอดรหัส ตัวกำหนดเวลาจะสร้างชุดที่ใช้งานอยู่: โดยจะรันการส่งต่อหนึ่งครั้งเหนือลำดับในเที่ยวบินทั้งหมด ปล่อยโทเค็นหนึ่งโทเค็นต่อแต่ละรายการ ขับไล่โทเค็นที่สิ้นสุดของลำดับหรือขีดจำกัดความยาว และยอมรับคำขอที่อยู่ในคิวเพื่อเติมช่องที่ว่าง การจับคู่สิ่งนี้กับหน่วยความจำ KV ที่ยืดหยุ่นของ PagedAttention ทำให้การแทรกและการลบลำดับระหว่างการบินมีราคาถูก เนื่องจากแคชของแต่ละลำดับอยู่ในบล็อกที่แยกจากกัน
ผลกระทบเชิงกลยุทธ์
ต้นทุนและงบประมาณ
การตัดสินใจด้านสถาปัตยกรรมขับเคลื่อนประสิทธิภาพและต้นทุนการดำเนินงานเป็นเวลาหลายปี
การตัดสินใจที่ชัดเจนยิ่งขึ้น
การศึกษาด้านเทคนิคช่วยให้ทีมเลือกกลุ่มที่เหมาะสม ไม่ใช่แค่กลุ่มใหม่ล่าสุด
การควบคุมคุณภาพ
ตัวเลือกทางวิศวกรรมที่ดีกว่าจะช่วยลดเหตุการณ์ด้านความน่าเชื่อถือในการผลิต
อนาคตของการผสมแบบต่อเนื่อง
ขณะนี้การแบทช์แบบต่อเนื่องเป็นมาตรฐานในการให้บริการ LLM การผลิต งานในอนาคตจะปรับปรุงตัวกำหนดตารางเวลา: การแยกระยะการกรอกข้อมูลล่วงหน้าที่เน้นการคำนวณออกจากระยะการถอดรหัสที่เบากว่า (การแยกส่วน) การเติมล่วงหน้าแบบเป็นก้อนเพื่อหลีกเลี่ยงการถอดรหัสที่หยุดชะงัก นโยบายลำดับความสำคัญและความยุติธรรมสำหรับปริมาณงานแบบผสม และการเชื่อมโยงที่เข้มงวดมากขึ้นกับการถอดรหัสแบบเก็งกำไร เพื่อให้โทเค็นแบบร่างหลายรายการได้รับการตรวจสอบความถูกต้องในแต่ละขั้นตอน เป้าหมายคือการบีบโทเค็นสูงสุดต่อวินาทีต่อ GPU ในขณะเดียวกันก็รักษาเวลาแฝงในการตอบสนองของแต่ละบุคคลให้ต่ำและสามารถคาดเดาได้
การใช้งานจริงในโลกแห่งความเป็นจริง
API การแชทจะยอมรับข้อความของผู้ใช้ที่เพิ่งมาถึงในแบตช์ที่กำลังทำงานอยู่ทันที แทนที่จะรอคิวสำหรับแบตช์ถัดไป
ยกเลิกคำตอบสั้นๆ ในช่วงกลางชุดและเติมช่องใหม่เพื่อให้ GPU ไม่ต้องรอเป็นเวลานาน
การรวมแบทช์ต่อเนื่องกับ PagedAttention ของ vLLM เพื่อแทรกและลบลำดับอย่างถูกในแต่ละขั้นตอนการถอดรหัส
บริการกรอกโค้ดที่รักษาโทเค็นสูงต่อวินาทีภายใต้การรับส่งข้อมูลที่ต่อเนื่องและมีความยาวผันแปรได้โดยการทำให้แบตช์เต็ม
ความเสี่ยงและรั้ว
การเพิ่มประสิทธิภาพเกณฑ์มาตรฐานหนึ่งรายการสามารถซ่อนจุดอ่อนของระบบในวงกว้างได้
ต้นทุนโครงสร้างพื้นฐานและการบำรุงรักษามักถูกประเมินต่ำไป
ช่องว่างด้านความปลอดภัยและความสามารถในการสังเกตสามารถเพิ่มขึ้นได้เมื่อระบบมีความซับซ้อนมากขึ้น
แผนงานการดำเนินงาน
กำหนดเป้าหมายเวลาแฝง คุณภาพ และต้นทุนก่อนนำไปใช้งาน
เกณฑ์มาตรฐานภายใต้สภาวะโหลดและข้อมูลจริง
การตรวจสอบเครื่องมือเพื่อหาข้อผิดพลาด การเบี่ยงเบน และผลกระทบต่อผู้ใช้
เตรียมเส้นทางการย้อนกลับและการตอบสนองต่อเหตุการณ์ก่อนปรับขนาด
สำรวจต่อไป
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Continuous Batching quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
คำแนะนำต่อไป
Kubernetes สำหรับปริมาณงาน ML
คำถามที่พบบ่อย
What is Continuous Batching?
การแบทช์แบบต่อเนื่องเป็นเทคนิคการให้บริการที่เพิ่มและลบคำขอออกจากโทเค็นแบทช์ที่ทำงานอยู่ทีละโทเค็น แทนที่จะรอให้แบทช์ที่คงที่ทั้งหมดเสร็จสิ้น ช่วยให้ GPU ทำงานอย่างต่อเนื่องและเพิ่มจำนวนผู้ใช้ที่โมเดล AI สามารถให้บริการได้ในคราวเดียว
จุดอ่อนหลักของการแบทช์แบบคงที่ (คงที่) สำหรับการให้บริการ LLM คืออะไร
เนื่องจากความยาวของเอาท์พุตแตกต่างกันไป ลำดับที่เสร็จแล้วจะไม่ได้ใช้งานจนกว่าลำดับที่ช้าที่สุดจะเสร็จสิ้น สิ้นเปลืองรอบของ GPU และทำให้คำขอใหม่ล่าช้า
การแบทช์อย่างต่อเนื่องจะเพิ่มและลบคำขอได้ละเอียดเพียงใด
การแบทช์แบบต่อเนื่อง (ระดับการวนซ้ำ) จะอัปเดตชุดที่ใช้งานอยู่หลังจากทุกขั้นตอนการถอดรหัสเดียว ดังนั้นจึงดำเนินการโทเค็นต่อโทเค็นแทนที่จะดำเนินการตามคำขอทั้งหมด
เมื่อลำดับเสร็จสิ้นระหว่างชุดงานภายใต้ชุดงานต่อเนื่อง จะเกิดอะไรขึ้นกับช่องของมัน
ลำดับที่เสร็จสิ้นแล้วจะถูกไล่ออก และคำขอที่รอจะถูกแทรกลงในทันที ทำให้แบตช์เต็มและ GPU ไม่ว่าง
เทคนิคใดที่จับคู่กับการแบทช์ต่อเนื่องอย่างเป็นธรรมชาติเพื่อทำให้การแทรก/การลบลำดับมีราคาถูก
PagedAttention เก็บแคช KV ของแต่ละซีเควนซ์ไว้ในบล็อกแยกกัน ดังนั้นการเพิ่มหรือลบซีเควนซ์กลางเที่ยวบินจะไม่รบกวนหน่วยความจำของผู้อื่น
บทความวิจัยใดที่มักให้เครดิตในการส่งเสริมการแบทช์ระดับการวนซ้ำ (ต่อเนื่อง) ให้แพร่หลาย
รายงานของ Orca ได้แนะนำการตั้งเวลาระดับการวนซ้ำ และแนวคิดนี้ถูกนำมาใช้โดยระบบต่างๆ เช่น vLLM, TGI และ TensorRT-LLM