เผยแพร่เมื่อวันที่ 30 ตุลาคม 2024
การสร้างฟีเจอร์ด้วยโมเดลภาษาขนาดใหญ่ (LLM) ค่อนข้างแตกต่างจากวิศวกรรมซอฟต์แวร์ทั่วไป นักพัฒนาแอปต้องเรียนรู้การสร้างพรอมต์เพื่อจัดการกับผลลัพธ์ที่ไม่แน่นอน อินพุตก่อนการประมวลผล และผลลัพธ์หลังการประมวลผล
ความท้าทายอย่างหนึ่งที่คุณแชร์กับเราคือการทดสอบเอาต์พุตจาก LLM ซึ่งพิจารณาความถูกต้องและคุณภาพนั้นใช้เวลานาน นักพัฒนาแอปมักใช้วิธีสร้างเอาต์พุตแบบเป็นกลุ่มโดยใช้อินพุตที่แตกต่างกัน จากนั้นตรวจสอบด้วยตนเองโดยใช้วิจารณญาณ
แนวทางที่ปรับขนาดได้มากขึ้นในการประเมินผลลัพธ์ของโมเดลและพรอมต์ต่างๆ คือเทคนิคLLM เป็นตัวตัดสิน โดยใช้เทคนิคนี้ แทนที่จะใช้วิจารณญาณของมนุษย์ การตรวจสอบโมเดลจะมอบหมายให้กับ LLM อื่น LLM ตัวที่ 2 ต้องเป็น LLM ขนาดใหญ่กว่าซึ่งทำงานบนระบบคลาวด์ และมีแนวโน้มที่จะมีความสามารถด้านการอนุมานได้ดีกว่า
ในเอกสารนี้ เราใช้การสรุปเพื่อสาธิตวิธีเปรียบเทียบรูปแบบต่างๆ และแสดงการปรับปรุงคุณภาพจาก Gemma เป็น Gemma 2 เป็นโบนัส
เลือกรูปแบบสําหรับการเปรียบเทียบและเตรียมข้อมูล
เราประเมินความสามารถของโมเดล 3 รูปแบบในการสรุป เราเปรียบเทียบผลลัพธ์ของโมเดลแบบเปิดของ Google 2 โมเดลที่เรียกใช้ฝั่งไคลเอ็นต์ได้ คือ Gemma และ Gemma 2 ทั้งคู่มีขนาดพารามิเตอร์ 2 พันล้านรายการ ในทางตรงกันข้าม เรายังได้ประเมินโมเดลที่ทำงานบนระบบคลาวด์ซึ่งมีขนาดใหญ่และมีประสิทธิภาพมากขึ้นด้วย ซึ่งก็คือ Gemini 1.5 Flash
เราใช้ชุดข้อมูลบทความ BBC 2,225 รายการ ซึ่งครอบคลุมหัวข้อต่างๆ เช่น ธุรกิจ ความบันเทิง การเมือง กีฬา และเทคโนโลยี และสร้างสรุปของแต่ละบทความโดยใช้โมเดลที่เลือกแต่ละรายการ ใช้พรอมต์เดียวกันกับทุกรูปแบบ
สรุปบทความเป็นย่อหน้าเดียว
เราได้จัดเก็บบทความต้นฉบับและสร้างข้อมูลสรุปไว้ในฐานข้อมูลเพื่อให้เข้าถึงได้ง่ายในแต่ละขั้นตอน
เลือกกรรมการเพื่อวิเคราะห์และให้คะแนนการสรุป
ในการวิเคราะห์คุณภาพของข้อมูลสรุป เราใช้ Gemini 1.5 Flash เพื่อตัดสินข้อมูลสรุปที่ Gemma 2 และ Gemma 2 2B สร้างขึ้น แนวทางเฉพาะของเราอิงตามการตรวจสอบความสอดคล้อง ซึ่งเป็นส่วนหนึ่งของเมตริกการสรุปของ DeepEval
ความสอดคล้องเป็นเมตริกที่วัดความถี่ที่ข้อความรวมอยู่ในข้อมูลสรุปรองรับในเนื้อหาต้นฉบับที่สรุปอ้างอิง
เราได้แบ่งกระบวนการประเมินออกเป็น 2 ขั้นตอน ก่อนอื่น เราแจ้งให้โมเดลแบ่งข้อมูลสรุปแต่ละรายการออกเป็นข้อความแยกกัน จากนั้นเราแจ้งให้โมเดลระบุว่าข้อความแต่ละรายการได้รับการสนับสนุนจากข้อความต้นฉบับของบทความหรือไม่
ดึงข้อมูลคำสั่งจากข้อมูลสรุป
เราขอให้ Gemini 1.5 Flashแบ่งข้อความที่ยาวออกเป็นข้อความแยกต่างหาก เช่น
เดวิด ไวร์ กองหลังของเอฟเวอร์ตันเคยเล่นเป็นนักเตะเพื่อพูดถึงฟุตบอลยุโรป แม้ว่าทีมของเขาจะอยู่ในตำแหน่งอันดับ 2 ในการแข่งขันพรีเมียร์ลีกหลังจากเอาชนะลิเวอร์พูล
Gemini 1.5 Flash จะแบ่งประโยคนี้ออกเป็นข้อความต่อไปนี้
- "David Weir เล่นตำแหน่งกองหลังให้กับ Everton"
- "ตอนนี้เอฟเวอร์ตันอยู่ในอันดับที่ 2 ของพรีเมียร์ลีก"
- "Everton ชนะ Liverpool ในแมตช์ล่าสุด"
- "David Weir ได้ลดการพูดคุยเกี่ยวกับ Everton ที่เล่นฟุตบอลยุโรป"
ตรวจสอบคำสั่ง
จากนั้นเราขอให้ Gemini 1.5 Flashวิเคราะห์ประโยคต้นฉบับ เทียบกับข้อความที่แยก โมเดลจัดประเภทความถูกต้องของข้อความแต่ละรายการดังนี้
- ใช่: ข้อความต้นฉบับสนับสนุนข้อความดังกล่าว
- ไม่ ข้อความดังกล่าวขัดแย้งกับข้อความต้นฉบับ
- Idk เราไม่สามารถยืนยันได้ว่าข้อความดังกล่าวได้รับการสนับสนุนหรือไม่ หรือขัดแย้งกับข้อความต้นฉบับหรือไม่
การวิเคราะห์ผลลัพธ์
กระบวนการนี้ส่งผลให้เกิดเมตริก 2 รายการที่สามารถใช้เปรียบเทียบโมเดลได้ ดังนี้
- การจัดแนว: โมเดลสร้างข้อมูลสรุปที่มีข้อความที่สนับสนุนโดยข้อความต้นฉบับบ่อยเพียงใด
- ความสมบูรณ์: จํานวนข้อความโดยเฉลี่ยที่มีอยู่ในข้อมูลสรุปที่โมเดลสร้างขึ้น
การจัดข้อความ
เราคำนวณความสอดคล้องโดยนับจำนวนข้อมูลสรุปที่มีข้อความอย่างน้อย 1 รายการที่ทําเครื่องหมายเป็น "ไม่" แล้วหารด้วยจํานวนข้อมูลสรุปทั้งหมด
โมเดล Gemini 1.5 Flash มีคะแนนการจัดวางสูงสุดที่มากกว่า 92% ซึ่งหมายความว่าเนื้อหามีความโดดเด่นตรงที่ยึดถือข้อเท็จจริงและหลีกเลี่ยงการเขียนขึ้นเอง
Gemma 2 2B ได้คะแนน 78.64% ซึ่งถือว่าดี ซึ่งบ่งบอกถึงความแม่นยำในระดับดี ส่วน Gemma 2B เวอร์ชันเก่ามีคะแนนการจัดตำแหน่งต่ำกว่า ซึ่งหมายความว่ามีแนวโน้มที่จะรวมข้อมูลที่ข้อความต้นฉบับไม่รองรับ
ความหลากหลาย
เราคํานวณความหลากหลายของโมเดลโดยหาค่าเฉลี่ยของจํานวนข้อความที่โมเดลสร้างขึ้นสําหรับข้อมูลสรุปแต่ละรายการ
Gemma 2 2B มีคะแนนความหลากหลายสูงสุดที่ 9.1 ซึ่งบ่งบอกว่าข้อมูลสรุปมีรายละเอียดและประเด็นสำคัญมากกว่า นอกจากนี้ โมเดล Flash ของ Gemini 1.5 ยังมีคะแนนความสมบูรณ์สูง ซึ่งสูงกว่า 8.4 Gemma 2B มีคะแนนความหลากหลายต่ำกว่า ซึ่งบ่งชี้ว่าอาจไม่ได้บันทึกข้อมูลสำคัญจากข้อความต้นฉบับมากนัก
บทสรุป
เราพบว่าโมเดลขนาดเล็กที่ทำงานฝั่งไคลเอ็นต์ได้ เช่น Gemma 2 2B สามารถสร้างเอาต์พุตที่มีคุณภาพยอดเยี่ยม แม้ว่าโมเดลที่ทำงานบนระบบคลาวด์ เช่น Gemini 1.5 Flash จะยอดเยี่ยมในการสร้างข้อมูลสรุปที่สอดคล้องกับบทความต้นฉบับและบรรจุข้อมูลจํานวนมาก แต่คุณควรพิจารณาความแตกต่างนี้ควบคู่ไปกับประสิทธิภาพของแอปพลิเคชัน ความต้องการด้านความเป็นส่วนตัวและความปลอดภัย รวมถึงคําถามอื่นๆ ที่คุณอาจถามเมื่อพิจารณาว่าจะสร้าง AI ฝั่งไคลเอ็นต์ หรือไม่
ความสามารถของตระกูลโมเดล Gemma มีวิวัฒนาการที่ชัดเจนเนื่องจาก Gemma 2 2B สามารถสร้างข้อมูลสรุปที่สมบูรณ์และสอดคล้องกันมากกว่า Gemma 2B
ประเมิน Use Case
เอกสารนี้เป็นเพียงตัวอย่างคร่าวๆ ของสิ่งที่เป็นไปได้เมื่อใช้ LLM เป็นเทคนิคการตัดสิน แม้จะมีการสรุปแล้ว คุณก็ดูเมตริกเพิ่มเติมได้ ซึ่งผลลัพธ์อาจแตกต่างกันไป เช่น คุณอาจประเมินความครอบคลุมโดยใช้พรอมต์เพื่อระบุประเด็นสำคัญจากบทความ จากนั้นใช้พรอมต์อื่นเพื่อตรวจสอบว่าสรุปแต่ละรายการครอบคลุมประเด็นสำคัญเหล่านั้นหรือไม่
กรณีการใช้งานอื่นๆ เช่น การเขียนข้อความ การเขียนข้อความใหม่ หรือการสร้างข้อความที่เพิ่มการดึงข้อมูล (RAG) อาจให้ผลลัพธ์ที่แตกต่างกันสำหรับเมตริกเดียวกัน หรือควรใช้เมตริกอื่นๆ ในการประเมิน
เมื่อนำแนวทางนี้ไปใช้ ให้คิดว่ามนุษย์จะประเมินผลลัพธ์อย่างไรเพื่อเลือกเมตริกที่ดีที่สุดสำหรับกรณีการใช้งานของคุณ นอกจากนี้ คุณยังควรพิจารณาเฟรมเวิร์กที่มีอยู่ เช่น DeepEval ซึ่งอาจมีชุดเมตริกที่เหมาะสมกับกรณีการใช้งานของคุณอยู่แล้ว
คุณใช้ LLM เป็นตัวตัดสินเพื่อประเมินโมเดลไหม ทวีตสิ่งที่พบให้เราทราบที่ @ChromiumDev หรือแชร์กับ Chrome สำหรับนักพัฒนาซอฟต์แวร์ใน LinkedIn