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

