Skip to content

Latest commit

 

History

History
110 lines (73 loc) · 24.5 KB

File metadata and controls

110 lines (73 loc) · 24.5 KB

Open Source Models

การปรับแต่งโมเดล LLM ของคุณ

การใช้โมเดลภาษาขนาดใหญ่เพื่อสร้างแอปพลิเคชัน 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 แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่มีความเชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้