การใช้โมเดลภาษาขนาดใหญ่เพื่อสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์มาพร้อมกับความท้าทายใหม่ๆ หนึ่งในปัญหาสำคัญคือการรับประกันคุณภาพของการตอบกลับ (ความถูกต้องและความเกี่ยวข้อง) ในเนื้อหาที่โมเดลสร้างขึ้นตามคำขอของผู้ใช้ ในบทเรียนก่อนหน้านี้ เราได้พูดถึงเทคนิคต่างๆ เช่น การออกแบบคำสั่ง (prompt engineering) และการสร้างแบบดึงข้อมูลเสริม (retrieval-augmented generation) ซึ่งพยายามแก้ปัญหาโดย ปรับเปลี่ยนคำสั่งที่ป้อนเข้า ไปยังโมเดลที่มีอยู่
ในบทเรียนวันนี้ เราจะพูดถึงเทคนิคที่สามคือ การปรับแต่ง ซึ่งพยายามแก้ปัญหาโดย การฝึกโมเดลใหม่ ด้วยข้อมูลเพิ่มเติม มาดูรายละเอียดกันเลย
บทเรียนนี้แนะนำแนวคิดของการปรับแต่งโมเดลภาษาที่ผ่านการฝึกมาแล้ว สำรวจประโยชน์และความท้าทายของวิธีการนี้ และให้คำแนะนำเกี่ยวกับเวลาและวิธีการใช้การปรับแต่งเพื่อปรับปรุงประสิทธิภาพของโมเดล AI เชิงสร้างสรรค์ของคุณ
เมื่อจบบทเรียนนี้ คุณควรสามารถตอบคำถามต่อไปนี้ได้:
- การปรับแต่งโมเดลภาษา (fine-tuning) คืออะไร?
- เมื่อไหร่และทำไมการปรับแต่งถึงมีประโยชน์?
- ฉันจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร?
- ข้อจำกัดของการปรับแต่งคืออะไร?
พร้อมหรือยัง? มาเริ่มกันเลย
อยากเห็นภาพรวมของสิ่งที่เราจะพูดถึงก่อนลงลึกใช่ไหม? ลองดูคู่มือภาพประกอบที่อธิบายเส้นทางการเรียนรู้สำหรับบทเรียนนี้ ตั้งแต่การเรียนรู้แนวคิดหลักและแรงจูงใจในการปรับแต่ง ไปจนถึงการเข้าใจขั้นตอนและแนวทางปฏิบัติที่ดีที่สุดสำหรับการดำเนินการปรับแต่ง นี่เป็นหัวข้อที่น่าสนใจสำหรับการสำรวจ อย่าลืมดูหน้า Resources สำหรับลิงก์เพิ่มเติมเพื่อสนับสนุนการเรียนรู้ด้วยตัวเองของคุณ!
ตามนิยาม โมเดลภาษาขนาดใหญ่เป็นโมเดลที่ ผ่านการฝึก ด้วยข้อความจำนวนมากจากแหล่งข้อมูลหลากหลาย รวมถึงอินเทอร์เน็ต อย่างที่เราได้เรียนรู้ในบทเรียนก่อนหน้านี้ เราต้องใช้เทคนิคอย่าง การออกแบบคำสั่ง และ การสร้างแบบดึงข้อมูลเสริม เพื่อปรับปรุงคุณภาพของการตอบกลับของโมเดลต่อคำถาม ("คำสั่ง") ของผู้ใช้
เทคนิคการออกแบบคำสั่งที่ได้รับความนิยมคือการให้คำแนะนำเพิ่มเติมแก่โมเดลเกี่ยวกับสิ่งที่คาดหวังในคำตอบ โดยการให้ คำแนะนำ (คำแนะนำที่ชัดเจน) หรือ ตัวอย่างบางส่วน (คำแนะนำโดยนัย) ซึ่งเรียกว่า การเรียนรู้แบบตัวอย่างน้อย (few-shot learning) แต่มีข้อจำกัดสองประการ:
- ข้อจำกัดของจำนวนโทเค็นในโมเดลอาจจำกัดจำนวนตัวอย่างที่คุณสามารถให้ได้ และลดประสิทธิภาพ
- ค่าใช้จ่ายของโทเค็นในโมเดลอาจทำให้การเพิ่มตัวอย่างในทุกคำสั่งมีค่าใช้จ่ายสูง และลดความยืดหยุ่น
การปรับแต่งเป็นวิธีปฏิบัติทั่วไปในระบบการเรียนรู้ของเครื่องที่เรานำโมเดลที่ผ่านการฝึกมาแล้วมาฝึกใหม่ด้วยข้อมูลใหม่เพื่อปรับปรุงประสิทธิภาพในงานเฉพาะ ในบริบทของโมเดลภาษา เราสามารถปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว ด้วยชุดตัวอย่างที่คัดสรรมาเพื่องานหรือโดเมนแอปพลิเคชันเฉพาะ เพื่อสร้าง โมเดลที่ปรับแต่งเอง ซึ่งอาจมีความแม่นยำและเกี่ยวข้องมากขึ้นสำหรับงานหรือโดเมนนั้นๆ ประโยชน์เพิ่มเติมของการปรับแต่งคือสามารถลดจำนวนตัวอย่างที่จำเป็นสำหรับการเรียนรู้แบบตัวอย่างน้อย ลดการใช้โทเค็นและค่าใช้จ่ายที่เกี่ยวข้อง
ในบริบท นี้ เมื่อเราพูดถึงการปรับแต่ง เราหมายถึงการปรับแต่งแบบ มีการควบคุม (supervised fine-tuning) ซึ่งการฝึกใหม่จะทำโดย เพิ่มข้อมูลใหม่ ที่ไม่ได้เป็นส่วนหนึ่งของชุดข้อมูลการฝึกเดิม นี่แตกต่างจากการปรับแต่งแบบไม่มีการควบคุม (unsupervised fine-tuning) ซึ่งโมเดลจะถูกฝึกใหม่ด้วยข้อมูลเดิม แต่ใช้พารามิเตอร์ที่แตกต่างกัน
สิ่งสำคัญที่ต้องจำคือการปรับแต่งเป็นเทคนิคขั้นสูงที่ต้องการระดับความเชี่ยวชาญเพื่อให้ได้ผลลัพธ์ที่ต้องการ หากทำไม่ถูกต้อง อาจไม่ให้การปรับปรุงตามที่คาดหวัง และอาจลดประสิทธิภาพของโมเดลในโดเมนเป้าหมายของคุณ
ดังนั้น ก่อนที่คุณจะเรียนรู้ "วิธี" ปรับแต่งโมเดลภาษา คุณต้องรู้ "ทำไม" คุณควรเลือกเส้นทางนี้ และ "เมื่อไหร่" ที่จะเริ่มกระบวนการปรับแต่ง เริ่มต้นด้วยการถามตัวเองคำถามเหล่านี้:
- กรณีการใช้งาน: กรณีการใช้งานของคุณสำหรับการปรับแต่งคืออะไร? คุณต้องการปรับปรุงส่วนใดของโมเดลที่ผ่านการฝึกมาแล้ว?
- ทางเลือกอื่น: คุณได้ลองใช้ เทคนิคอื่นๆ เพื่อให้ได้ผลลัพธ์ที่ต้องการหรือยัง? ใช้เทคนิคเหล่านั้นเพื่อสร้างเกณฑ์เปรียบเทียบ
- การออกแบบคำสั่ง: ลองใช้เทคนิคอย่างการให้ตัวอย่างคำตอบที่เกี่ยวข้องในคำสั่ง ประเมินคุณภาพของคำตอบ
- การสร้างแบบดึงข้อมูลเสริม: ลองเพิ่มผลการค้นหาข้อมูลในคำสั่ง ประเมินคุณภาพของคำตอบ
- ค่าใช้จ่าย: คุณได้ระบุค่าใช้จ่ายสำหรับการปรับแต่งหรือยัง?
- ความสามารถในการปรับแต่ง - โมเดลที่ผ่านการฝึกมาแล้วสามารถปรับแต่งได้หรือไม่?
- ความพยายาม - สำหรับการเตรียมข้อมูลการฝึก การประเมินและปรับปรุงโมเดล
- การประมวลผล - สำหรับการรันงานปรับแต่ง และการใช้งานโมเดลที่ปรับแต่งแล้ว
- ข้อมูล - การเข้าถึงตัวอย่างคุณภาพที่เพียงพอสำหรับผลกระทบของการปรับแต่ง
- ประโยชน์: คุณได้ยืนยันประโยชน์ของการปรับแต่งหรือยัง?
- คุณภาพ - โมเดลที่ปรับแต่งแล้วมีประสิทธิภาพดีกว่าเกณฑ์เปรียบเทียบหรือไม่?
- ค่าใช้จ่าย - การปรับแต่งช่วยลดการใช้โทเค็นโดยการทำให้คำสั่งง่ายขึ้นหรือไม่?
- ความสามารถในการขยาย - คุณสามารถนำโมเดลพื้นฐานไปใช้ในโดเมนใหม่ได้หรือไม่?
โดยการตอบคำถามเหล่านี้ คุณควรสามารถตัดสินใจได้ว่าการปรับแต่งเป็นวิธีที่เหมาะสมสำหรับกรณีการใช้งานของคุณหรือไม่ โดยทั่วไป วิธีนี้จะเหมาะสมก็ต่อเมื่อประโยชน์ที่ได้รับมีมากกว่าค่าใช้จ่าย เมื่อคุณตัดสินใจที่จะดำเนินการ ก็ถึงเวลาคิดเกี่ยวกับ วิธี ที่คุณจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว
อยากได้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับกระบวนการตัดสินใจใช่ไหม? ดู จะปรับแต่งหรือไม่ปรับแต่ง
ในการปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว คุณต้องมี:
- โมเดลที่ผ่านการฝึกมาแล้วเพื่อปรับแต่ง
- ชุดข้อมูลที่จะใช้สำหรับการปรับแต่ง
- สภาพแวดล้อมการฝึกเพื่อรันงานปรับแต่ง
- สภาพแวดล้อมการโฮสต์เพื่อใช้งานโมเดลที่ปรับแต่งแล้ว
แหล่งข้อมูลต่อไปนี้ให้บทเรียนแบบทีละขั้นตอนเพื่อแนะนำคุณผ่านตัวอย่างจริงโดยใช้โมเดลที่เลือกและชุดข้อมูลที่คัดสรรมา ในการทำตามบทเรียนเหล่านี้ คุณต้องมีบัญชีในผู้ให้บริการที่เฉพาะเจาะจง พร้อมการเข้าถึงโมเดลและชุดข้อมูลที่เกี่ยวข้อง
| ผู้ให้บริการ | บทเรียน | คำอธิบาย |
|---|---|---|
| OpenAI | วิธีปรับแต่งโมเดลแชท | เรียนรู้การปรับแต่ง gpt-35-turbo สำหรับโดเมนเฉพาะ ("ผู้ช่วยสูตรอาหาร") โดยการเตรียมข้อมูลการฝึก รันงานปรับแต่ง และใช้โมเดลที่ปรับแต่งแล้วสำหรับการอนุมาน |
| Azure OpenAI | บทเรียนการปรับแต่ง GPT 3.5 Turbo | เรียนรู้การปรับแต่งโมเดล gpt-35-turbo-0613 บน Azure โดยทำตามขั้นตอนการสร้างและอัปโหลดข้อมูลการฝึก รันงานปรับแต่ง ใช้งานและใช้โมเดลใหม่ |
| Hugging Face | การปรับแต่ง LLMs ด้วย Hugging Face | บทความนี้แนะนำการปรับแต่ง open LLM (เช่น CodeLlama 7B) โดยใช้ไลบรารี transformers และ Transformer Reinforcement Learning (TRL) พร้อมชุดข้อมูลเปิด datasets บน Hugging Face |
| 🤗 AutoTrain | การปรับแต่ง LLMs ด้วย AutoTrain | AutoTrain (หรือ AutoTrain Advanced) เป็นไลบรารี Python ที่พัฒนาโดย Hugging Face ซึ่งช่วยให้การปรับแต่งสำหรับงานต่างๆ รวมถึงการปรับแต่ง LLM เป็นไปได้ AutoTrain เป็นโซลูชันที่ไม่ต้องเขียนโค้ด และการปรับแต่งสามารถทำได้ในคลาวด์ของคุณเอง บน Hugging Face Spaces หรือในเครื่องของคุณเอง รองรับทั้ง GUI แบบเว็บ CLI และการฝึกผ่านไฟล์ config แบบ yaml |
เลือกหนึ่งในบทเรียนด้านบนและทำตาม เราอาจทำซ้ำเวอร์ชันของบทเรียนเหล่านี้ใน Jupyter Notebooks ใน repo นี้เพื่อการอ้างอิงเท่านั้น โปรดใช้แหล่งข้อมูลต้นฉบับโดยตรงเพื่อรับเวอร์ชันล่าสุด
หลังจากจบบทเรียนนี้ ลองดู Generative AI Learning collection เพื่อเพิ่มพูนความรู้เกี่ยวกับ Generative AI ของคุณ!
ขอแสดงความยินดี!! คุณได้จบบทเรียนสุดท้ายจากซีรีส์ v2 สำหรับคอร์สนี้แล้ว! อย่าหยุดเรียนรู้และสร้างสรรค์ ดูหน้า RESOURCES สำหรับรายการคำแนะนำเพิ่มเติมในหัวข้อนี้
ซีรีส์บทเรียน v1 ของเรายังได้รับการอัปเดตด้วยงานและแนวคิดเพิ่มเติม ดังนั้นใช้เวลาสักครู่เพื่อทบทวนความรู้ของคุณ - และโปรด แบ่งปันคำถามและความคิดเห็นของคุณ เพื่อช่วยเราปรับปรุงบทเรียนเหล่านี้สำหรับชุมชน
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้

