
LLM Model Routing คือวิธีการทางสถาปัตยกรรมที่ทำการจัดสรรโมเดลหลายรูปแบบ เช่น GPT, Claude และ Gemini ให้กับงานต่างๆ อย่างเหมาะสมตามความซับซ้อนของงานและข้อกำหนดด้านต้นทุน
การใช้งานโมเดลเดียวแบบรวมศูนย์มักทำให้ต้นทุน API สูงขึ้น เนื่องจากมีการใช้โมเดลที่มีราคาสูงกับคำถามที่ง่ายเกินความจำเป็น การนำระบบ Routing มาใช้จะช่วยให้สามารถเลือกใช้โมเดลขนาดเล็กและโมเดลประสิทธิภาพสูงได้อย่างเหมาะสม ซึ่งคาดหวังว่าจะช่วยลดต้นทุนไปพร้อมกับการรักษาคุณภาพของคำตอบได้
ในบทความนี้ เราจะอธิบายเนื้อหาตามหัวข้อต่อไปนี้ตามลำดับ
บทสรุป: การทำ LLM Model Routing คือแนวทางการออกแบบที่ช่วยเพิ่มประสิทธิภาพทั้งในด้านต้นทุนและความแม่นยำไปพร้อมกัน โดยการกระจายงานไปยังโมเดลต่างๆ อย่างเหมาะสมตามลักษณะของงานนั้นๆ
การส่งคำสั่งไปยังโมเดลเดียวทั้งหมดมักหลีกเลี่ยงปัญหาเรื่องต้นทุนที่สูงเกินความจำเป็นและปัญหาความล่าช้าในการตอบสนองไม่ได้ ในส่วนนี้เราจะสรุปภาพรวมตั้งแต่เบื้องหลังความจำเป็นในการทำ Routing ไปจนถึงรูปแบบหลักต่างๆ ที่ใช้กัน
หลายคนมักคิดว่า "แค่ใช้ GPT กับทุกงานก็พอแล้ว" แต่ในความเป็นจริงแล้ว แต่ละงานต้องการโมเดลที่เหมาะสมแตกต่างกัน การพึ่งพาโมเดลเพียงตัวเดียวจึงสร้างความเสี่ยงทั้งในด้านต้นทุนการดำเนินงานและคุณภาพของผลลัพธ์
การใช้โมเดลเดียวในการดำเนินงานมักก่อให้เกิดปัญหาหลัก 3 ประการ ดังนี้:
การก้าวข้ามขีดจำกัดเหล่านี้คือสิ่งที่เรียกว่า LLM Model Routing ซึ่งเป็นการจัดสรรงานไปยังโมเดลที่เหมาะสมที่สุดโดยอัตโนมัติตามลักษณะของงาน (ความซับซ้อน, โดเมน, และข้อกำหนดด้านความเร็วในการตอบสนอง) ทำให้สามารถควบคุมทั้งต้นทุนและคุณภาพไปพร้อมกันได้
ในงานวิจัยของ HyDRA ได้รายงานผลลัพธ์ว่า ค่ามัธยฐานของความล่าช้าในการอนุมานบน CPU ของตัวทำนาย (Predictor) อยู่ที่ 86 ms ในขณะที่สามารถลดต้นทุนลงได้ถึง 54.1% ภายใต้เงื่อนไข iso-quality (คุณภาพเท่าเดิม)
แนวคิดที่ว่า "ควรใช้โมเดลความแม่นยำสูงตลอดเวลา" มักจะดำเนินต่อไปจนกว่าต้นทุนจะกลายเป็นอุปสรรคในความเป็นจริง
ในขณะที่โมเดลระดับสูงของ GPT และ Claude มีความสามารถในการใช้เหตุผลสูง แต่ราคาต่อโทเค็นก็สูงเช่นกัน ในกรณีศึกษาของ AWS ต้นทุนการสร้างคำตอบสำหรับโจทย์คณิตศาสตร์สูงถึง 7,425 ดอลลาร์ต่อเดือน ในขณะที่โจทย์ประวัติศาสตร์ที่มีปริมาณโทเค็นเท่ากันกลับมีต้นทุนเพียง 618.75 ดอลลาร์ ซึ่งเป็นตัวอย่างที่ดีที่แสดงให้เห็นว่าโครงสร้างต้นทุนมีความแตกต่างกันอย่างมากตามระดับความยากของงาน
Model Routing ทำหน้าที่เป็นวิธีการลดช่องว่างนี้ โดยสามารถแก้ไขข้อแลกเปลี่ยน (Trade-off) ได้ 3 ประการ ดังนี้:
หลักการตัดสินใจพื้นฐานคือการแบ่งตามความซับซ้อนของงาน หากเป็น FAQ ตามรูปแบบหรือการประมวลผลสรุปความ โมเดลขนาดเล็กก็เพียงพอแล้ว แต่หากจำเป็นต้องมีการใช้เหตุผลหลายขั้นตอนหรือการวิเคราะห์เอกสารทางกฎหมาย ควรเลือกใช้โมเดลประสิทธิภาพสูง
ใน Intelligent Prompt Routing ของ Amazon Bedrock มีรายงานว่าแนวทางนี้ช่วยลดต้นทุนได้สูงสุดถึง 30% นอกจากนี้ งานวิจัยของ HyDRA ยังแสดงให้เห็นผลลัพธ์ที่สามารถลดต้นทุนได้ถึง 54.1% โดยยังคงรักษาคุณภาพไว้ได้ และหากตั้งค่าแบบเชิงรุก (Aggressive setting) จะสามารถลดต้นทุนได้ถึง 72.5% (โดยมีส่วนต่างของคุณภาพอยู่ที่ 3.2 จุด)
"ไม่รู้ภาพรวมทั้งหมดแต่ก็เริ่มลงมือทำไปแล้ว" เป็นประสบการณ์ที่มักได้ยินบ่อยครั้งในหน้างานการออกแบบ Routing หากเราจัดระเบียบรูปแบบหลักๆ ไว้ก่อน จะช่วยให้การตัดสินใจออกแบบในขั้นตอนถัดไปง่ายขึ้นมาก
รูปแบบ Routing สามารถแบ่งออกเป็น 3 ประเภทหลัก ดังนี้:
รูปแบบเหล่านี้ไม่ได้แยกขาดจากกัน และมักมีการนำมาใช้ร่วมกัน ตัวอย่างเช่น การใช้โครงสร้างสองชั้นที่ "ใช้ Rule-based ในการจำแนกประเภทงานคร่าวๆ แล้วส่งเฉพาะ Query ที่กำกวมให้ Classification Model จัดการ" เป็นโครงสร้างที่ช่วยให้รักษาสมดุลระหว่างความแม่นยำและ Overhead ได้ง่าย
ในส่วนถัดไป เราจะมาสรุป "การเตรียมความพร้อม" ที่จำเป็นต้องทำเหมือนกันไม่ว่าจะเลือกใช้รูปแบบใดก็ตาม
บทสรุป: ความสำเร็จหรือความล้มเหลวของการออกแบบ Routing ตัดสินกันที่ 80% ตั้งแต่ขั้นตอนการเตรียมการก่อนเริ่ม Implement
หากละเลยการเตรียมการทั้ง 3 ด้าน ได้แก่ การจัดระเบียบ Use Case, การคัดเลือก Model Candidate และการตรวจสอบ Infrastructure Requirements จะนำไปสู่การแก้ไขงานจำนวนมากในขั้นตอนถัดไป ในแต่ละหัวข้อ H3 ต่อจากนี้ จะอธิบายขั้นตอนการดำเนินงานอย่างละเอียดตามลำดับ
ความล้มเหลวในการออกแบบ Routing ส่วนใหญ่มักเริ่มต้นจากการตัดสินใจที่รีบร้อนโดยการ "ลองส่ง Query ไปก่อน" ในช่วงแรกเรามักจะคิดว่าเพียงแค่การนำโมเดลมาวางเรียงกันก็จะเกิดการปรับให้เหมาะสมโดยธรรมชาติ แต่ในความเป็นจริงแล้ว การจัดหมวดหมู่ประเภทของ Query ไว้ล่วงหน้านั้นส่งผลโดยตรงต่อความแม่นยำของ Routing มากกว่า
สิ่งแรกที่ควรทำคือการระบุ Use case ของบริษัทและจัดหมวดหมู่ Query โดยเกณฑ์การจำแนกประเภทที่สำคัญมีดังนี้:
จากนั้น ให้ทำการ Mapping เบื้องต้นว่า "โมเดลใดเหมาะสม" กับแต่ละหมวดหมู่ ตัวอย่างเช่น การจัดสรรโมเดลขนาดเล็กให้กับ FAQ แบบง่าย และจัดสรรโมเดลประสิทธิภาพสูงให้กับ Query ที่ต้องใช้การอนุมานหลายขั้นตอน
สิ่งที่สำคัญในการทำ Mapping นี้คือการใช้ข้อมูล Traffic จริงเพื่อทำความเข้าใจการกระจายตัวของ Query หากสัดส่วนของ Query ที่ซับซ้อนในการสอบถามทั้งหมดต่ำกว่าที่คาดการณ์ไว้ ก็จะมีช่องว่างในการลดต้นทุนได้มากขึ้น
สุดท้าย การสร้างชุดข้อมูลตัวอย่าง (Sample Dataset) ที่มีการติดป้ายกำกับ (Label) ไว้ จะช่วยให้สามารถนำไปใช้ในการสร้างโมเดลจำแนกประเภทหรือประเมินความแม่นยำของ Routing ในภายหลังได้โดยตรง ความพยายามเพียงเล็กน้อยในขั้นตอนการออกแบบนี้จะช่วยลดงานที่ต้องย้อนกลับมาแก้ไขในขั้นตอนการใช้งานจริงได้อย่างมหาศาล
การคัดเลือกโมเดลเริ่มต้นจากการตอบคำถามที่ว่า "จะใช้โมเดลอะไรสำหรับงานใด" หากเริ่มประเมินโดยไม่จำกัดตัวเลือกให้แคบลงก่อน จะทำให้เกณฑ์การเปรียบเทียบไม่ชัดเจนและส่งผลให้การออกแบบการทำ Routing โดยรวมหลงทางได้ง่าย
ประเด็นที่ควรตรวจสอบเมื่อทำการคัดเลือก
การกำหนดตัวชี้วัดในการประเมิน
เมื่อเปรียบเทียบโมเดลที่เป็นตัวเลือก สิ่งสำคัญคือต้องมีทั้งการประเมินเชิงคุณภาพและตัวชี้วัดเชิงปริมาณ โดยตัวชี้วัดที่สำคัญมีดังนี้:
การประเมินควรทำโดยใช้ตัวอย่าง Query ที่ใกล้เคียงกับการใช้งานจริง เนื่องจากคะแนนจาก Benchmark ที่เผยแพร่ทั่วไปไม่สามารถทดแทนคะแนนที่ตรงกับ Use case ของบริษัทได้ จึงจำเป็นต้องมีการตรวจสอบภายในองค์กรเอง
「การเพิ่ม Routing layer เข้าไปกลับทำให้การตอบสนองช้าลง」เป็นเสียงสะท้อนที่มักได้ยินบ่อยครั้งในหน้างาน หากไม่มีการกำหนดการออกแบบโครงสร้างพื้นฐานและค่าความหน่วงที่ยอมรับได้ (Latency tolerance) ไว้ล่วงหน้า ก็มีความเสี่ยงที่ตัว Routing เองจะกลายเป็นคอขวด (Bottleneck) ได้
สิ่งแรกที่ต้องตรวจสอบคือ ขีดจำกัดของค่าความหน่วงที่ยอมรับได้ ซึ่งผู้ใช้งานปลายทางจะสัมผัสได้ ในการสนทนาแบบเรียลไทม์อย่างแชทบอท ค่ามาตรฐานจะอยู่ที่ภายในไม่กี่วินาที ในขณะที่การประมวลผลแบบแบตช์ (Batch processing) หรือการสร้างรายงานแบบอะซิงโครนัส (Asynchronous report generation) อาจยอมรับความล่าช้าได้ถึงหลายสิบวินาที ซึ่งค่าที่ยอมรับได้นี้จะส่งผลอย่างมากต่อความซับซ้อนของตรรกะการทำ Routing และขอบเขตของการเลือกโมเดล
ถัดมาคือการประเมินต้นทุนการประมวลผลของตัว Router เอง ในเอกสารของ Microsoft Azure Foundry ได้ระบุค่าความหน่วงตัวอย่างเมื่อมีการจัดสรรงานไปยังโมเดลต่างๆ ผ่าน model-router ไว้ว่า สำหรับโมเดลขนาดเล็กจะอยู่ที่ประมาณ 0.59 วินาที และสำหรับโมเดลขนาดใหญ่จะอยู่ที่ประมาณ 1.14 วินาที ดังนั้น โปรดออกแบบโดยตั้งอยู่บนสมมติฐานที่ว่า การเพิ่มกระบวนการของ Router จะทำให้ค่าความหน่วงแบบ End-to-end ยาวนานกว่าเวลาในการประมวลผล (Inference time) ของตัวโมเดลเพียงอย่างเดียว
อุปสรรคแรกในการออกแบบ Routing logic คือคำถามที่ว่า "ควรเริ่มจากตรงไหน" หากพยายามนำ Classification model มาใช้ทันที ความซับซ้อนของตัว Logic เองอาจทำให้ผลประโยชน์จากการลดต้นทุนหมดไป การเริ่มต้นด้วย Rule-based จึงเป็นแนวทางที่สมเหตุสมผลกว่า ซึ่งเพียงแค่การคัดแยกตามเงื่อนไขง่ายๆ เช่น จำนวน Token หรือการมีอยู่ของ Keyword เฉพาะ ก็สามารถช่วยลดต้นทุนได้อย่างมหาศาล
เมื่อวางรากฐานจนมั่นคงแล้ว ขั้นตอนมาตรฐานคือการค่อยๆ เปลี่ยนผ่านไปสู่ Dynamic routing ด้วย Classification model อย่างไรก็ตาม การใช้ Classification model จะทำให้เกิดความเสี่ยงใหม่คือ "ความผิดพลาดในการจำแนกประเภท" (Classification failure) ด้วยเหตุนี้ การออกแบบ Fallback จึงเป็นสิ่งที่ขาดไม่ได้ หากไม่มีการกำหนดเงื่อนไขการยกระดับ (Escalation) ไปยังโมเดลที่มีความแม่นยำสูงไว้อย่างชัดเจน ก็อาจเกิดสถานการณ์ที่โมเดลราคาถูกยังคงตอบสนองในสถานการณ์ที่ต้องการความแม่นยำสูง
เช่นเดียวกันกับการกำหนด Cost threshold หากไม่ตัดสินใจเกณฑ์ที่ชัดเจนไว้ก่อนว่า "ยอมรับต้นทุนได้สูงสุดเท่าใด" การนำไปใช้งานก็จะดำเนินไปโดยที่ตัวชี้วัดการเพิ่มประสิทธิภาพของ Routing ยังคงคลุมเครือ ความสมดุลระหว่างความแม่นยำและต้นทุนจะสามารถควบคุมได้ก็ต่อเมื่อมีการใช้ Threshold ควบคู่ไปกับ Fallback เท่านั้น
การทำ Rule-based routing มักจะทำให้เราเผลอเตรียมโมเดลการจำแนกประเภทที่ซับซ้อนตั้งแต่เริ่มต้น แต่ในความเป็นจริง การเริ่มจากเงื่อนไขแบบ Branching ง่ายๆ จะช่วยให้ดูแลรักษาได้ง่ายกว่า และเห็นผลลัพธ์ในการลดต้นทุนการดำเนินงานในช่วงแรกได้รวดเร็วกว่า
โดยทั่วไปแล้ว การนำไปใช้งานจะดำเนินการตามลำดับดังนี้:
การแยกกฎออกมาไว้ในไฟล์การตั้งค่า (YAML หรือ JSON) แทนที่จะเขียนไว้ในโค้ดโดยตรง จะช่วยให้สามารถอัปเดตเงื่อนไขต่างๆ ได้โดยไม่ต้องทำการ Deploy ใหม่ จากกรณีศึกษาของ AWS มีรายงานว่าเมื่อเปรียบเทียบกับ Semantic routing แล้ว Rule-based มีต้นทุนในการนำไปใช้งานที่ต่ำกว่า และสามารถช่วยลดค่าใช้จ่ายรายเดือนในงานลักษณะเดียวกันได้
เพื่อรองรับเควรีที่หลากหลายซึ่งกฎเกณฑ์ (Rule-based) ไม่สามารถจัดการได้ทั้งหมด การใช้การกำหนดเส้นทางแบบไดนามิก (Dynamic Routing) โดยใช้โมเดลการจำแนกประเภท (Classification Model) ถือเป็นวิธีที่มีประสิทธิภาพ โดยระบบจะจำแนกข้อความที่ป้อนเข้ามาตามแกนต่างๆ เช่น "ความซับซ้อน" "โดเมน" และ "เจตนา" แบบเรียลไทม์ และส่งต่อไปยังโมเดลที่เหมาะสมที่สุดตามผลลัพธ์นั้น
โครงสร้างพื้นฐานของการกำหนดเส้นทางแบบไดนามิก
เกณฑ์การตัดสินใจตามสถานการณ์
แนวทางพื้นฐานคือการกำหนดเส้นทางไปยังโมเดลขนาดเล็กหากเควรีเป็นรูปแบบ FAQ แบบง่ายหรือการเติมข้อความสั้นๆ และกำหนดเส้นทางไปยังโมเดลประสิทธิภาพสูงหากรวมถึงการใช้เหตุผลทางคณิตศาสตร์หรือการสร้างโค้ดยาวๆ งานวิจัยของ TRIM รายงานว่าการสลับโมเดลในลักษณะนี้สามารถลดการใช้โทเค็นของโมเดลที่มีต้นทุนสูงได้ถึง 80% ในขณะที่ยังคงรักษาประสิทธิภาพไว้ในระดับเดิม
ข้อควรระวังในการนำไปใช้งาน
ต้นทุนการอนุมานของตัวโมเดลการจำแนกประเภทเองนั้นเป็นสิ่งที่ละเลยไม่ได้ การใช้ประโยชน์จาก Embedding Cache เพื่อข้ามการจำแนกประเภทซ้ำสำหรับเควรีเดิมหรือเควรีที่คล้ายคลึงกัน จะช่วยปรับปรุงปริมาณงาน (Throughput) ได้อย่างมาก
หลายหน้างานมักประสบปัญหาว่า "ควรตั้งค่าเกณฑ์ต้นทุน (Cost Threshold) ไว้ที่เท่าใดจึงจะไม่ทำให้คุณภาพลดลง" การออกแบบเกณฑ์ดังกล่าวเป็นงานที่ต้องทำซ้ำโดยอาศัยการลองผิดลองถูกเป็นพื้นฐาน ดังนั้นจึงสำคัญอย่างยิ่งที่จะไม่พยายามหาคำตอบที่ถูกต้องตั้งแต่ครั้งแรก
ในการตั้งค่าเกณฑ์ต้นทุน โดยทั่วไปจะบริหารจัดการเป็น 2 ระดับ ได้แก่ ขีดจำกัดโทเค็นที่อนุญาตต่อ 1 คำขอ (Per-request token limit) และ เพดานงบประมาณรายเดือน (Monthly budget cap) ตัวอย่างเช่น ในกรณีของ AWS การสอบถามประเภท History และประเภท Math แม้จะมีปริมาณโทเค็นเท่ากัน แต่ต้นทุนในการสร้างคำตอบกลับแตกต่างกันมาก การกำหนดเกณฑ์แยกตามประเภทงานจะช่วยป้องกันการจัดสรรโมเดลที่เกินความจำเป็นได้
ขั้นตอนพื้นฐานในการออกแบบเกณฑ์มีดังนี้:
เงื่อนไขการสำรองส่วนใหญ่จะใช้การผสมผสานตัวกระตุ้น (Trigger) 2 ประเภท:
ขอแนะนำให้จัดเตรียมปลายทางสำหรับการสำรอง (Fallback destination) ไว้ไม่ต่ำกว่า 2 โมเดลเสมอ
คุณภาพที่ได้รับจะแตกต่างกันอย่างมากแม้จะใช้งบประมาณเท่ากัน ขึ้นอยู่กับว่าคุณเลือกโครงสร้างแบบใด
การตัดสินใจในสามประเด็นนี้ ได้แก่ การผสมผสานระหว่างโมเดลน้ำหนักเบาและโมเดลประสิทธิภาพสูง, การเลือกระหว่างโครงสร้างแบบ Cascade หรือแบบ Parallel และการกำหนดจุดที่จะนำโมเดลที่ผ่านการ Fine-tuning มาใช้งาน คือหัวใจสำคัญของการออกแบบที่จะกำหนดความสมดุลระหว่างต้นทุนและคุณภาพ
หลายคนมักคิดว่าการส่งทุกคำถามไปยังโมเดลประสิทธิภาพสูงจะช่วยเพิ่มคุณภาพของผลลัพธ์ แต่ในความเป็นจริงแล้ว การเลือกใช้โมเดลขนาดเล็ก (Lightweight model) และโมเดลประสิทธิภาพสูงให้เหมาะสมกับระดับความยากของงาน จะให้ผลลัพธ์ที่ดีกว่าทั้งในด้านต้นทุนและความแม่นยำ
แนวคิดพื้นฐานในการแบ่งบทบาทหน้าที่ มีดังนี้:
กรณีศึกษาจาก AWS แสดงให้เห็นว่า แม้จะเป็นปริมาณโทเค็นที่เท่ากัน แต่โจทย์ประเภท History (ต้นทุนการสร้างคำตอบรายเดือนประมาณ $619) และโจทย์ประเภท Math (ต้นทุนประมาณ $7,425) กลับมีส่วนต่างของค่าใช้จ่ายสูงมาก ซึ่งชี้ให้เห็นว่าการประมวลผลงานที่มีระดับความยากต่างกันด้วยโมเดลเดียวกัน มักก่อให้เกิดต้นทุนที่เกินความจำเป็น
จุดสำคัญในการนำไปใช้งานมี 3 ประการ ดังนี้:
ด้วยโครงสร้างนี้ จะช่วยให้โมเดลขนาดเล็กสามารถจัดการคำขอส่วนใหญ่ได้ และจำกัดจำนวนครั้งในการเรียกใช้โมเดลประสิทธิภาพสูงได้อย่างมีประสิทธิภาพ
รูปแบบ Cascade และรูปแบบ Parallel ต่างก็เป็นวิธีการรวมโมเดลหลายตัวเข้าด้วยกัน แต่มีสถานการณ์ที่เหมาะสมแตกต่างกัน หากต้องการให้ความสำคัญกับการลดต้นทุนมากกว่าความหน่วง (Latency) รูปแบบ Cascade จะเหมาะสมกว่า แต่หากต้องการให้ความสำคัญกับความแม่นยำและความน่าเชื่อถือเป็นอันดับแรก รูปแบบ Parallel จะเหมาะสมกว่า
รูปแบบ Cascade คือโครงสร้างที่เริ่มประมวลผลด้วยโมเดลขนาดเล็กก่อน และจะส่งต่อไปยังโมเดลระดับสูงกว่าก็ต่อเมื่อคะแนนความน่าเชื่อถือ (Confidence Score) ต่ำกว่าเกณฑ์ที่กำหนดเท่านั้น
รูปแบบ Parallel คือโครงสร้างที่ส่งคำถามเดียวกันไปยังโมเดลหลายตัวพร้อมกัน แล้วรวบรวมผลลัพธ์หรือตัดสินผลลัพธ์สุดท้ายด้วยการลงคะแนนเสียงข้างมาก
เกณฑ์ในการตัดสินใจคือ หากเน้นความคุ้มค่าของต้นทุนให้เลือกรูปแบบ Cascade แต่หากให้ความสำคัญกับการรับรองความน่าเชื่อถือของคำตอบเป็นอันดับแรกให้เลือกรูปแบบ Parallel
การออกแบบโดยผสมผสานทั้งสองรูปแบบเข้าด้วยกันก็เป็นวิธีที่มีประสิทธิภาพเช่นกัน หากใช้โครงสร้างแบบไฮบริดที่ประมวลผลคำถามทั่วไปด้วยรูปแบบ Cascade และเปลี่ยนไปใช้รูปแบบ Parallel เฉพาะกับคำถามที่ถูกตัดสินว่ามีความเสี่ยงสูง จะช่วยให้สามารถปรับสมดุลระหว่างต้นทุนและความแม่นยำได้อย่างยืดหยุ่น
หลายหน้างานมักเกิดความลังเลว่า "ในเมื่อเรามีโมเดลที่ผ่านการ Fine-tuning มาแล้ว เราควรปฏิบัติกับมันเหมือนกับโมเดลทั่วไปหรือไม่"
โมเดลที่ผ่านการ Fine-tuning สามารถแสดงความแม่นยำที่เทียบเท่าหรือเหนือกว่าโมเดลประสิทธิภาพสูงทั่วไปในงานเฉพาะทาง (Specific domain) ได้ด้วยต้นทุนที่ต่ำกว่า ในการออกแบบ Routing จึงเป็นเรื่องสำคัญที่จะต้องกำหนดตำแหน่งของโมเดลนี้ให้ชัดเจนในฐานะ "เส้นทางเฉพาะทาง (Domain-specific route)"
ขั้นตอนพื้นฐานในการนำไปใช้งาน มีดังนี้:
ข้อควรระวัง คือ โมเดลที่ผ่านการ Fine-tuning มักมีแนวโน้มที่จะตอบคำถามผิดด้วยความมั่นใจเกินจริงเมื่อเจอ Query ที่อยู่นอกเหนือโดเมน ดังนั้น กลไกที่ฝั่ง Router ในการคัดกรอง Query ที่อยู่นอกโดเมนออกอย่างแม่นยำจึงเป็นสิ่งที่ขาดไม่ได้
นอกจากนี้ สิ่งที่มักถูกมองข้ามคือการเชื่อมโยงวงจรการเรียนรู้ใหม่ (Retraining cycle) ของโมเดลเข้ากับการจัดการเวอร์ชันของตรรกะการ Routing หากมีการอัปเดตโมเดล การออกแบบกระบวนการตรวจสอบป้ายกำกับประเภทและเกณฑ์คะแนนใหม่ควบคู่กันไปตั้งแต่ขั้นตอนการออกแบบ จะช่วยป้องกันการเสื่อมถอยของคุณภาพในสภาพแวดล้อมการใช้งานจริงได้ง่ายขึ้น
บทสรุป: การวัดผลและการปรับปรุงอย่างต่อเนื่องหลังจากการนำระบบ Routing มาใช้ คือกุญแจสำคัญในการเพิ่มประสิทธิภาพด้านต้นทุน
เราจะอธิบายขั้นตอนการวัดผลและการปรับปรุงที่ควรดำเนินการในขั้นตอนการปฏิบัติงาน ตั้งแต่การทำให้ปริมาณการใช้ Token มองเห็นภาพได้ชัดเจน ไปจนถึงการตรวจสอบความแม่นยำของ Routing ผ่านการทำ A/B Testing
หากละเลยการทำ Monitoring กว่าจะรู้ตัวว่าค่าใช้จ่ายเกินงบก็มักจะสายเกินไป แม้ในช่วงแรกเรามักจะคิดว่า "ให้ระบบ Routing ทำงานได้ก่อนแล้วค่อยมาจัดการเรื่อง Log ทีหลัง" แต่ในความเป็นจริง การสร้างระบบวัดผล (Measurement Infrastructure) ไปพร้อมกับการเริ่มใช้งาน Routing จะช่วยให้ตรวจพบปัญหาได้เร็วขึ้นและช่วยลดรอบการปรับปรุง (Improvement Cycle) ให้สั้นลงได้
ตัวชี้วัดหลักที่ควรติดตามมี 4 ประการ ดังนี้:
กรณีศึกษาของ AWS แสดงให้เห็นว่า แม้จะเป็นปริมาณ Token ที่เท่ากัน แต่ต้นทุนในการสร้างคำตอบสำหรับโจทย์ประเภท History และ Math นั้นมีความแตกต่างกันมาก หากไม่รวบรวมต้นทุนแยกตามประเภทงาน (Task Type) เราจะไม่สามารถมองเห็นได้เลยว่าเส้นทางใดกำลังกดดันงบประมาณอยู่
จุดสำคัญในการนำไปใช้งานมี 3 ประการ:
ขอแนะนำให้นำข้อมูลที่รวบรวมได้ไปแสดงผลบน Dashboard และนำเข้าสู่รอบการทบทวนกฎการ Routing เป็นรายสัปดาห์
ในการประเมินความแม่นยำของการทำ Routing จุดเริ่มต้นคือการออกแบบตัวชี้วัดเฉพาะเพื่อวัดว่า "มีการส่งไปยังโมเดลที่ถูกต้องหรือไม่"
ตัวชี้วัดที่ควรวัดมี 3 ประการ ดังนี้:
ในขั้นตอนการประเมิน ให้เตรียมชุดคำถามที่มีป้ายกำกับ (Labeled Query Set) แล้วนำผลการจำแนกของ Router มาเปรียบเทียบกับป้ายกำกับที่ถูกต้อง หากพบหมวดหมู่ที่มีความแม่นยำต่ำ ให้แก้ไขโดยการเพิ่มข้อมูลการเรียนรู้ให้กับโมเดลจำแนกประเภท หรือปรับค่า Threshold ของกฎที่ตั้งไว้
การออกแบบ A/B Test จะมีแนวทางที่เปลี่ยนไปตามวัตถุประสงค์ หากต้องการตรวจสอบประสิทธิภาพของตรรกะการทำ Routing ทั้งหมด ให้แบ่ง Traffic ออกเป็น "กลุ่มที่มีการทำ Routing" และ "กลุ่มที่ใช้โมเดลเดียวคงที่" แล้วเปรียบเทียบทั้งในด้านต้นทุนและคุณภาพ ในทางกลับกัน หากต้องการดูผลลัพธ์การปรับปรุงเฉพาะกฎบางอย่าง การทำ Split Test โดยสลับเฉพาะหมวดหมู่คำถามที่เป็นเป้าหมายจะเหมาะสมกว่า
บทสรุป: การทำความเข้าใจกับข้อผิดพลาดที่มักเกิดขึ้นในการออกแบบ Routing และการเตรียมมาตรการรับมือไว้ล่วงหน้า คือกุญแจสำคัญสู่การดำเนินงานที่เสถียร
ข้อผิดพลาดที่เป็นตัวอย่างสำคัญมี 2 ประการ ได้แก่ การเพิ่มขึ้นของความหน่วง (Latency) ที่ตัว Router เอง และความเสื่อมถอยของคุณภาพอันเนื่องมาจากความแม่นยำในการจำแนกประเภท (Classification Accuracy) ที่ต่ำ โดยเราจะอธิบายถึงสาเหตุและแนวทางแก้ไขของแต่ละประเด็นดังนี้
เราอาจเปรียบเทียบเราเตอร์ (Router) ได้กับ "สัญญาณไฟจราจร" แต่หากสัญญาณไฟเกิดติดขัด ถนนทั้งสายก็จะกลายเป็นอัมพาต เช่นเดียวกับการที่การประมวลผลของเร้าเตอร์ล่าช้า ซึ่งจะส่งผลกระทบโดยตรงต่อค่าความหน่วง (Latency) ของทั้งระบบ
สาเหตุทั่วไปที่ทำให้เกิดคอขวด (Bottleneck) อย่างแรกคือ การนำการตัดสินใจด้านการกำหนดเส้นทาง (Routing decision) ไปทำเป็นกระบวนการแบบซิงโครนัส (Synchronous processing) ซึ่งทำให้การเรียกใช้โมเดลในลำดับถัดไปไม่สามารถเริ่มต้นได้จนกว่าการตัดสินใจจะเสร็จสิ้น ส่งผลให้เวลาที่ต้องรอคอยนั้นกระทบต่อประสบการณ์ของผู้ใช้งานโดยตรง ต่อมาคือการเลือกใช้โครงสร้างที่เรียกใช้ LLM ขนาดใหญ่ในการตัดสินใจ ซึ่งอาจทำให้ค่าความหน่วงของตัวเราเตอร์เองสูงถึงหลายวินาที กลายเป็นปรากฏการณ์ย้อนแย้งที่ตัวเราเตอร์ซึ่งควรจะถูกนำมาใช้เพื่อเพิ่มความรวดเร็ว กลับกลายเป็นส่วนที่ประมวลผลหนักที่สุดเสียเอง นอกจากนี้ ในโครงสร้างที่ไม่มีการทำแคช (Cache) ซึ่งต้องรันกระบวนการจำแนกประเภทใหม่ทุกครั้งสำหรับรูปแบบคำถามเดิม ก็จะเกิดค่าโอเวอร์เฮด (Overhead) ที่ไม่จำเป็นสะสมขึ้นอย่างเงียบๆ
งานวิจัยของ HyDRA ได้แสดงให้เห็นว่า การควบคุมค่าความหน่วงในการอนุมาน (Inference latency) ของตัวทำนาย (Predictor) บน CPU ในสภาพแวดล้อมจริงให้มีค่ามัธยฐานอยู่ที่ 86 ms นั้น สามารถช่วยให้ความล่าช้าที่เกิดจากเราเตอร์อยู่ในระดับที่ใช้งานได้จริง ตัวเลขนี้แสดงให้เห็นอย่างชัดเจนว่าแนวคิดการออกแบบที่มุ่งเน้นให้ตัวเราเตอร์มีน้ำหนักเบานั้นมีความสำคัญเพียงใด
แล้วเราจะหลีกเลี่ยงปัญหาเหล่านี้ได้อย่างไร ต่อไปนี้คือการสรุปแนวทางที่มีประสิทธิภาพครับ
ความแม่นยำในการจำแนกประเภทของ Router มักถูกมองข้ามโดยคิดว่า "การจำแนกผิดพลาดเพียงเล็กน้อยไม่ส่งผลกระทบต่อคุณภาพโดยรวมมากนัก" แต่ในความเป็นจริง มีรายงานว่าข้อผิดพลาดในการจำแนกประเภทที่เกิดขึ้นต่อเนื่องกันสามารถบั่นทอนคุณภาพคำตอบของทั้งระบบได้อย่างรุนแรง
ปัญหาหลักที่เกิดจากความแม่นยำในการจำแนกประเภทต่ำ มีดังนี้:
เพื่อป้องกันการเสื่อมถอยของคุณภาพ ควรพิจารณามาตรการดังต่อไปนี้:
ในช่วงแรก เรามักจะมุ่งเน้นไปที่การปรับปรุงความแม่นยำของโมเดลการจำแนกประเภทเพียงอย่างเดียว แต่ในความเป็นจริง การปรับปรุงคุณภาพของการออกแบบป้ายกำกับ (Label design) ให้เรียบร้อยก่อน จะช่วยยกระดับความแม่นยำในการจำแนกประเภทได้ดีกว่า
จุดเริ่มต้นของการออกแบบที่ควรให้ความสำคัญคือ การจำแนกประเภทของ Query ตามระดับความยาก (Difficulty), โดเมน (Domain) และข้อกำหนดด้าน Latency หากสร้าง Router โดยที่แกนการจำแนกเหล่านี้ยังไม่ชัดเจน จะไม่สามารถบรรลุทั้งความแม่นยำและประสิทธิภาพในการลดต้นทุนได้
สำหรับการเลือกตรรกะการทำ Routing แนวทางที่สมเหตุสมผลคือการเริ่มจาก Rule-based แบบง่าย แล้วค่อยเปลี่ยนไปใช้โมเดลการจำแนกประเภท (Classification Model) เมื่อความหลากหลายของ Query เพิ่มมากขึ้น กรณีศึกษาของ HyDRA แสดงให้เห็นว่าสามารถลดต้นทุนได้ถึง 54.1% ภายใต้เงื่อนไข iso-quality และ TRIM สามารถลดการใช้ Token ของโมเดลที่มีต้นทุนสูงได้ถึง 80% ใน MATH-500 ซึ่งพิสูจน์ให้เห็นว่าคุณภาพของการออกแบบส่งผลโดยตรงต่อตัวเลขผลลัพธ์
ในส่วนของโครงสร้างสถาปัตยกรรม การแบ่งบทบาทหน้าที่ระหว่างโมเดลขนาดเล็ก (Lightweight Model) และโมเดลประสิทธิภาพสูง (High-performance Model) ให้ชัดเจน ควบคู่ไปกับโครงสร้างแบบ Cascade ที่มีการยกระดับ (Escalation) เป็นขั้นเป็นตอน จะนำไปสู่การดำเนินงานที่เสถียร กรณีศึกษาของ AWS รายงานว่า Amazon Bedrock Intelligent Prompt Routing สามารถลดต้นทุนได้สูงสุดถึง 30% ดังนั้นการพิจารณาใช้ Managed Service จึงเป็นทางเลือกที่คุ้มค่า
เพื่อให้การออกแบบเหล่านี้ใช้งานได้ในระยะยาว จำเป็นต้องมีระบบปฏิบัติการที่คอยติดตาม (Monitoring) 3 แกนหลัก ได้แก่ ปริมาณการใช้ Token, ความแม่นยำในการ Routing และคุณภาพที่ส่งถึงผู้ใช้งานปลายทาง รวมถึงการทบทวนเกณฑ์ (Threshold) อย่างสม่ำเสมอผ่านการทำ A/B Testing การจัดสรรงานแบบไดนามิกตามลักษณะของ Task ไม่ใช่สิ่งที่ทำครั้งเดียวจบ แต่เป็นสิ่งที่ต้องพัฒนาไปพร้อมกับการสั่งสมข้อมูลจากการใช้งานจริง
Chi
ศึกษาเอกวิทยาการสารสนเทศที่มหาวิทยาลัยแห่งชาติลาว และระหว่างศึกษาได้มีส่วนร่วมในการพัฒนาซอฟต์แวร์ทางสถิติ สั่งสมพื้นฐานด้านการวิเคราะห์ข้อมูลและการเขียนโปรแกรมอย่างเป็นรูปธรรม ตั้งแต่ปี 2021 ได้ก้าวเข้าสู่เส้นทางการพัฒนา Web และแอปพลิเคชัน และตั้งแต่ปี 2023 เริ่มสั่งสมประสบการณ์การพัฒนาอย่างจริงจังทั้งในด้าน Frontend และ Backend ในบริษัทปัจจุบันรับผิดชอบการออกแบบและพัฒนาบริการ Web ที่ใช้ AI โดยมีส่วนร่วมในโครงการที่นำการประมวลผลภาษาธรรมชาติ (NLP) การเรียนรู้ของเครื่อง (Machine Learning) และ Generative AI รวมถึงโมเดลภาษาขนาดใหญ่ (LLM) มาผสานรวมกับระบบงานจริง มีความกระตือรือร้นในการติดตามเทคโนโลยีล่าสุดอยู่เสมอ และให้ความสำคัญกับความรวดเร็วในการดำเนินงานตั้งแต่การพิสูจน์แนวคิดทางเทคนิคไปจนถึงการนำไปใช้งานจริง