Skip to content

Latest commit

 

History

History
146 lines (96 loc) · 35.9 KB

File metadata and controls

146 lines (96 loc) · 35.9 KB

Open Source Models

การปรับแต่ง LLM ของคุณ

การใช้โมเดลภาษาใหญ่เพื่อสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์มาพร้อมกับความท้าทายใหม่ๆ ปัญหาหลักคือการรับประกันคุณภาพของการตอบกลับ (ความถูกต้องและความเกี่ยวข้อง) ในเนื้อหาที่โมเดลสร้างขึ้นตามคำขอของผู้ใช้ ในบทเรียนก่อนหน้านี้ เราได้พูดถึงเทคนิคต่างๆ เช่น การออกแบบพรอมต์และการสร้างผลลัพธ์แบบเสริมการดึงข้อมูล ที่พยายามแก้ปัญหาโดยการ แก้ไขอินพุตพรอมต์ ที่ส่งเข้าโมเดลเดิม

ในบทเรียนวันนี้ เราจะพูดถึงเทคนิคที่สาม คือ การปรับแต่ง (fine-tuning) ซึ่งพยายามแก้ไขความท้าทายนี้โดยการ ฝึกโมเดลใหม่ ด้วยข้อมูลเพิ่มเติม มาดูรายละเอียดกัน

วัตถุประสงค์การเรียนรู้

บทเรียนนี้นำเสนอแนวคิดของการปรับแต่งสำหรับโมเดลภาษาที่ผ่านการฝึกมาแล้ว พร้อมทั้งสำรวจประโยชน์และความท้าทายของวิธีนี้ และให้คำแนะนำว่าเมื่อใดและอย่างไรควรใช้การปรับแต่งเพื่อปรับปรุงประสิทธิภาพของโมเดล AI เชิงสร้างสรรค์ของคุณ

เมื่อจบบทเรียนนี้ คุณควรสามารถตอบคำถามต่อไปนี้ได้:

  • การปรับแต่งสำหรับโมเดลภาษา คืออะไร?
  • เมื่อใด และทำไม การปรับแต่งจึงมีประโยชน์?
  • ฉันจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร?
  • ข้อจำกัดของการปรับแต่งมีอะไรบ้าง?

พร้อมไหม? มาเริ่มกันเลย

ไกด์ภาพประกอบ

อยากเห็นภาพรวมของสิ่งที่จะครอบคลุมก่อนลงลึกไหม? ดูไกด์ภาพประกอบนี้ซึ่งอธิบายเส้นทางการเรียนรู้สำหรับบทเรียนนี้ - ตั้งแต่การเรียนรู้แนวคิดหลักและแรงจูงใจในการปรับแต่ง ไปจนถึงเข้าใจกระบวนการและแนวทางปฏิบัติที่ดีที่สุดสำหรับการทำงานปรับแต่ง นี่เป็นหัวข้อที่น่าตื่นเต้นสำหรับการสำรวจ ดังนั้นอย่าลืมดูที่หน้าทรัพยากร Resources เพื่อเชื่อมโยงเพิ่มเติม สนับสนุนการเรียนรู้ด้วยตนเองของคุณ!

Illustrated Guide to Fine Tuning Language Models

การปรับแต่งสำหรับโมเดลภาษา คืออะไร?

ตามคำจำกัดความ โมเดลภาษาใหญ่จะถูก ฝึกล่วงหน้า ด้วยข้อความจำนวนมากจากแหล่งที่หลากหลายรวมถึงอินเทอร์เน็ต ตามที่เราได้เรียนรู้ในบทก่อนหน้า เราต้องใช้เทคนิคอย่าง การออกแบบพรอมต์ และ การสร้างผลลัพธ์เสริมการดึงข้อมูล เพื่อปรับปรุงคุณภาพการตอบกลับของโมเดลต่อคำถามของผู้ใช้ ("พรอมต์")

เทคนิคการออกแบบพรอมต์ยอดนิยมคือการให้คำแนะนำกับโมเดลมากขึ้นในสิ่งที่คาดหวังในคำตอบ โดยการให้ คำแนะนำ (คำแนะนำอย่างชัดเจน) หรือ การให้ตัวอย่างบางส่วน (คำแนะนำแฝง) เทคนิคนี้เรียกว่า few-shot learning แต่มีข้อจำกัดสองประการ:

  • ขีดจำกัดของโทเค็นของโมเดลอาจจำกัดจำนวนตัวอย่างที่คุณสามารถให้ได้ และลดประสิทธิภาพของวิธีนี้
  • ค่าใช้จ่ายของโทเค็นโมเดลอาจทำให้เพิ่มตัวอย่างในแต่ละพรอมต์มีค่าใช้จ่ายสูงและจำกัดความยืดหยุ่น

การปรับแต่งเป็นแนวทางปฏิบัติทั่วไปในระบบแมชชีนเลิร์นนิงที่เรานำโมเดลที่ผ่านการฝึกล่วงหน้ามาฝึกซ้ำด้วยข้อมูลใหม่เพื่อปรับปรุงประสิทธิภาพในงานเฉพาะในบริบทของโมเดลภาษา เราสามารถปรับแต่งโมเดลที่ผ่านการฝึกล่วงหน้าด้วย ชุดตัวอย่างที่คัดสรรสำหรับงานหรือโดเมนเฉพาะ เพื่อสร้าง โมเดลเฉพาะทาง ที่อาจแม่นยำและเกี่ยวข้องมากขึ้นสำหรับงานหรือสาขานั้นๆ ผลพลอยได้จากการปรับแต่งคือช่วยลดจำนวนตัวอย่างที่ต้องใช้ในการเรียนรู้แบบ few-shot ลดการใช้โทเค็นและค่าใช้จ่ายที่เกี่ยวข้อง

เมื่อไรและทำไมเราควรปรับแต่งโมเดล?

ใน กรณีนี้ เมื่อเราพูดถึงการปรับแต่ง เราหมายถึงการปรับแต่งแบบ มีผู้สอน ที่การฝึกซ้ำทำโดยการ เพิ่มข้อมูลใหม่ ที่ไม่ได้อยู่ในชุดข้อมูลฝึกต้นฉบับ ซึ่งต่างจากการปรับแต่งแบบไม่มีผู้สอนที่โมเดลถูกฝึกใหม่จากข้อมูลเดิมแต่มีค่าพารามิเตอร์อื่น

สิ่งสำคัญที่ต้องจำคือ การปรับแต่งเป็นเทคนิคขั้นสูงที่ต้องการความเชี่ยวชาญระดับหนึ่งเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ ถ้าทำผิดวิธีอาจไม่เกิดการปรับปรุงตามคาด และอาจทำให้ประสิทธิภาพโมเดลในโดเมนเป้าหมายลดลงด้วย

ดังนั้น ก่อนที่คุณจะเรียนรู้ "วิธี" ปรับแต่งโมเดลภาษา คุณควรรู้ "ทำไม" คุณควรเลือกเส้นทางนี้ และ "เมื่อใด" ที่เหมาะสมสำหรับการเริ่มปรับแต่ง เริ่มต้นด้วยการถามตัวเองดังนี้:

  • กรณีใช้งาน: กรณีการใช้งานสำหรับการปรับแต่งคืออะไร? คุณต้องการปรับปรุงด้านใดของโมเดลที่ผ่านการฝึกในปัจจุบัน?
  • ทางเลือก: คุณเคยลอง เทคนิคอื่นๆ เพื่อบรรลุผลลัพธ์ที่ต้องการหรือไม่? ใช้มันเพื่อสร้างฐานเปรียบเทียบ
    • การออกแบบพรอมต์: ลองเทคนิคเช่น few-shot prompting กับตัวอย่างการตอบที่เกี่ยวข้อง ประเมินคุณภาพการตอบกลับ
    • การสร้างผลลัพธ์เสริมการดึงข้อมูล: ลองเพิ่มพรอมต์ด้วยผลลัพธ์ที่ค้นพบโดยการค้นหาข้อมูลของคุณ ประเมินคุณภาพการตอบกลับ
  • ค่าใช้จ่าย: คุณระบุค่าใช้จ่ายสำหรับการปรับแต่งหรือยัง?
    • ความสามารถในการปรับแต่ง - โมเดลที่ฝึกล่วงหน้าพร้อมสำหรับการปรับแต่งหรือไม่?
    • ความพยายาม - สำหรับการเตรียมข้อมูลฝึก, การประเมินและปรับปรุงโมเดล
    • การคำนวณ - สำหรับการทำงานปรับแต่งและการปรับใช้โมเดลที่ปรับแต่งแล้ว
    • ข้อมูล - การเข้าถึงตัวอย่างคุณภาพเพียงพอสำหรับผลกระทบของการปรับแต่ง
  • ประโยชน์: คุณยืนยันประโยชน์ของการปรับแต่งหรือยัง?
    • คุณภาพ - โมเดลที่ปรับแต่งดีกว่าฐานข้อมูลหรือไม่?
    • ต้นทุน - ลดการใช้โทเค็นโดยการทำพรอมต์ให้ง่ายขึ้นไหม?
    • ความสามารถในการขยาย - คุณสามารถนำโมเดลพื้นฐานไปใช้กับโดเมนใหม่ได้หรือไม่?

โดยการตอบคำถามเหล่านี้ คุณควรจะสามารถตัดสินใจได้ว่าการปรับแต่งเป็นวิธีที่เหมาะสมกับกรณีใช้งานของคุณหรือไม่ โดยทั่วไป วิธีนี้จะเหมาะสมก็ต่อเมื่อประโยชน์มีมากกว่าต้นทุน เมื่อตัดสินใจเดินหน้าต่อ ก็ถึงเวลาคิดว่า อย่างไร คุณจะปรับแต่งโมเดลที่ผ่านการฝึกล่วงหน้า

ต้องการข้อมูลเชิงลึกเพิ่มเติมในกระบวนการตัดสินใจหรือไม่? ดู To fine-tune or not to fine-tune

เราจะปรับแต่งโมเดลที่ผ่านการฝึกมาแล้วได้อย่างไร?

ในการปรับแต่งโมเดลที่ผ่านการฝึกมาแล้ว คุณจำเป็นต้องมี:

  • โมเดลที่ผ่านการฝึกแล้วสำหรับการปรับแต่ง
  • ชุดข้อมูลที่ใช้สำหรับการปรับแต่ง
  • สภาพแวดล้อมสำหรับฝึกซ้ำเพื่อรันงานปรับแต่ง
  • สภาพแวดล้อมสำหรับการโฮสต์เพื่อนำโมเดลที่ปรับแต่งแล้วไปใช้

การปรับแต่งบน Microsoft Foundry

Microsoft Foundry คือสถานที่ที่คุณปรับแต่ง เปิดใช้งาน และจัดการโมเดลเฉพาะบน Azure ในปัจจุบัน (รวมสิ่งที่เคยเป็น Azure OpenAI Studio และ Azure AI Studio ไว้ด้วยกัน) ก่อนเริ่มงาน ควรทำความเข้าใจตัวเลือกที่ Foundry ให้มาและแนวทางปฏิบัติที่ดีที่สุดที่แพลตฟอร์มแนะนำ Foundry ใช้ LoRA (low-rank adaptation) เพื่อการปรับแต่งโมเดลที่มีประสิทธิภาพ ซึ่งช่วยให้การฝึกซ้ำเร็วขึ้นและประหยัดกว่าการฝึกซ้ำทุกพารามิเตอร์

ขั้นตอนที่ 1: เลือกเทคนิคการฝึก

Foundry รองรับสามเทคนิคการปรับแต่ง เริ่มต้นที่ SFT - เหมาะกับสถานการณ์ที่หลากหลายที่สุด

เทคนิค มันทำอะไร ใช้เมื่อไร
การปรับแต่งแบบมีผู้สอน (SFT) ฝึกด้วยตัวอย่างคู่ขาเข้า/ขาออกเพื่อให้โมเดลเรียนรู้ผลิตคำตอบที่คุณต้องการ เริ่มต้นสำหรับงานส่วนใหญ่: การเชี่ยวชาญโดเมน, ประสิทธิภาพงาน, สไตล์และโทนเสียง, การปฏิบัติตามคำสั่ง, และการปรับภาษา
การปรับแต่งโดยตรงด้วยการเพิ่มพฤติกรรมที่ชอบ (DPO) เรียนรู้จากคู่คำตอบ ที่ชอบกับไม่ชอบ เพื่อตรงกับความชอบของมนุษย์ ปรับปรุงคุณภาพคำตอบ, ความปลอดภัย และการจัดแนวเมื่อมีข้อมูลเปรียบเทียบ
การปรับแต่งด้วยการเสริมแรง (RFT) ใช้สัญญาณรางวัลจาก ผู้ตรวจสอบ เพื่อเพิ่มประสิทธิภาพพฤติกรรมซับซ้อนโดยใช้การเรียนรู้เสริมแรง โดเมนที่ต้องใช้เหตุผลเชิงวัตถุประสงค์และเข้มข้น (คณิตศาสตร์, เคมี, ฟิสิกส์) ที่มีคำตอบชัดเจน ต้องการความเชี่ยวชาญ ML สูงกว่า

ขั้นตอนที่ 2: เลือกระดับการฝึก

Foundry ให้คุณเลือกวิธีและสถานที่รันการฝึกได้:

  • มาตรฐาน - ฝึกภายในภูมิภาคของทรัพยากรของคุณและรับรองให้อยู่ในภูมิภาคเดียวกัน ใช้เมื่อข้อมูลต้องอยู่ในภูมิภาคที่ระบุเท่านั้น
  • ระดับโลก - ราคาถูกกว่าและรอคิวน้อยกว่าโดยใช้กำลังการผลิตนอกภูมิภาคของคุณ (ข้อมูลและพารามิเตอร์ถูกคัดลอกไปยังภูมิภาคการฝึก) เป็นค่าเริ่มต้นที่ดีเมื่อไม่ต้องการจำกัดการเก็บข้อมูลในภูมิภาค
  • สำหรับนักพัฒนา - ราคาต่ำที่สุด ใช้กำลังการผลิตที่ว่างไม่มีการรับประกันความหน่วงเวลา/ SLA (งานอาจถูกแทรกแซงและทำต่อได้) เหมาะสำหรับการทดลอง

ขั้นตอนที่ 3: เลือกโมเดลฐาน

โมเดลที่ปรับแต่งได้รวมถึง OpenAI gpt-4o-mini, gpt-4o, gpt-4.1, gpt-4.1-mini, และ gpt-4.1-nano (SFT; ตระกูล 4o/4.1 ยังรองรับ DPO), โมเดลเหตุผล o4-mini และ gpt-5 (RFT), พร้อมทั้งโมเดลโอเพ่นซอร์ส เช่น Ministral-3B, Qwen-32B, Llama-3.3-70B-Instruct, และ gpt-oss-20b (SFT บน Foundry) ตรวจสอบรายการ โมเดลปรับแต่ง ล่าสุดเพื่อดูวิธีรองรับ, ภูมิภาคและความพร้อมใช้งานเสมอ

Foundry มีสองโหมด: serverless (ราคาตามการใช้งาน, ไม่มีการจัดการโควต้าการ์ดจอ, OpenAI และโมเดลที่เลือก) และ managed compute (ใช้ VM ของตัวเองผ่าน Azure Machine Learning เพื่อรองรับโมเดลหลากหลายที่สุด) ส่วนใหญ่ควรเริ่มด้วย serverless

แนวทางปฏิบัติที่ดีที่สุดของ Foundry

  • เริ่มจากฐาน วัดโมเดลฐานด้วยการออกแบบพรอมต์และ RAG ก่อน ปรับแต่งเพื่อพิสูจน์ประโยชน์
  • เริ่มน้อย แล้วขยาย เริ่มจากตัวอย่างคุณภาพสูง 50-100 ตัวอย่างเพื่อยืนยันวิธี จากนั้นเพิ่มเป็น 500+ สำหรับใช้งานจริง เน้นคุณภาพมากกว่าปริมาณ - ตัดตัวอย่างคุณภาพต่ำออก
  • จัดรูปแบบข้อมูลให้ถูกต้อง ไฟล์ฝึกและไฟล์ยืนยันต้องเป็น JSONL, UTF-8 พร้อม BOM, ขนาดไม่เกิน 512 MB, ใช้รูปแบบข้อความแชทเสร็จสมบูรณ์ และควรมีไฟล์ยืนยันเพื่อติดตามการ overfitting
  • เก็บพรอมต์ระบบต้นทางไว้ที่การอนุมาน ใช้ข้อความระบบเดียวกันเมื่อเรียกโมเดลเหมือนกับในการฝึก
  • ประเมินจุดเช็คพอยต์ - อย่าเพิ่งปรับใช้โดยไม่ดู Foundry เก็บจุดเช็คพอยต์ 3 รอบสุดท้ายไว้สำหรับปรับใช้ เลือกอันที่ทำนองทั่วไปดีที่สุดโดยดู train_loss / valid_loss และความถูกต้องของโทเค็น
  • วัดค่าโทเค็นควบคู่กับคุณภาพ เมื่อต้องเปรียบเทียบโมเดลที่ปรับแต่งกับฐาน
  • ปรับแต่งต่อเนื่องได้ คุณสามารถปรับแต่งโมเดลที่ปรับแต่งแล้วซ้ำอีกด้วยข้อมูลใหม่ (รองรับสำหรับโมเดล OpenAI)
  • ระวังค่าใช้จ่ายโฮสต์ โมเดลเฉพาะที่ปรับแต่งแล้วคิดค่าบริการเป็นรายชั่วโมง และการถอดถอนโมเดลที่ไม่ใช้งานจะเกิดขึ้นหลัง 15 วัน - ทำความสะอาดสิ่งที่ไม่ต้องการ

ทำงานตามขั้นตอนเต็มใน Customize a model with fine-tuning และดูไกด์สำหรับ DPO และ RFT เมื่อพร้อมสำหรับเทคนิคอื่นๆ

การปรับแต่งในทางปฏิบัติ

ทรัพยากรต่อไปนี้ให้บทเรียนทีละขั้นตอนที่นำคุณผ่านตัวอย่างจริงบนโมเดลที่รองรับในปัจจุบัน ด้วยชุดข้อมูลที่คัดสรร เพื่อทำตาม คุณต้องมีบัญชีกับผู้ให้บริการที่เจาะจง รวมถึงการเข้าถึงโมเดลและชุดข้อมูลที่เกี่ยวข้อง

ผู้ให้บริการ บทเรียน คำอธิบาย
OpenAI วิธีปรับแต่งโมเดลแชท เรียนรู้การปรับแต่งโมเดลแชทล่าสุดของ OpenAI สำหรับโดเมนเฉพาะ ("ผู้ช่วยทำสูตรอาหาร") โดยเตรียมข้อมูลฝึก รันงานปรับแต่ง และใช้โมเดลที่ปรับแต่งแล้วสำหรับการอนุมาน
Microsoft Foundry ปรับแต่งโมเดลด้วย fine-tuning เรียนรู้การปรับแต่งโมเดลที่รองรับปัจจุบัน เช่น gpt-4.1-mini บน Azure ด้วย Microsoft Foundry: เตรียม & อัปโหลดข้อมูลฝึกและข้อมูลยืนยัน รันงานปรับแต่ง จากนั้นปรับใช้ & ใช้โมเดลใหม่
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.
🦥 Unsloth การปรับแต่ง LLMs ด้วย Unsloth Unsloth เป็นเฟรมเวิร์กโอเพ่นซอร์สที่รองรับการปรับแต่ง LLM และการเรียนรู้เสริม (RL) Unsloth ช่วยอำนวยความสะดวกในการฝึกสอนในพื้นที่, การประเมินผล, และการปรับใช้ด้วย notebooks ที่พร้อมใช้งาน นอกจากนี้ยังรองรับการแปลงข้อความเป็นเสียง (TTS), โมเดล BERT และโมเดลมัลติโมดัล สำหรับเริ่มต้น อ่าน คู่มือการปรับแต่ง LLMs ทีละขั้นตอนของพวกเขา

งานที่ได้รับมอบหมาย

เลือกหนึ่งในบทเรียนด้านบนและทดลองเรียนดู เราอาจทำซ้ำเวอร์ชันของบทเรียนเหล่านี้ใน Jupyter Notebooks ในรีโปนี้เพื่อเป็นข้อมูลอ้างอิงเท่านั้น กรุณาใช้แหล่งข้อมูลต้นฉบับโดยตรงเพื่อรับเวอร์ชันล่าสุด.

ทำได้ดีมาก! เรียนรู้ต่อไป

หลังจากทำบทเรียนนี้เสร็จสิ้น ตรวจสอบ คอลเลกชันการเรียนรู้ Generative AI ของเราเพื่อต่อยอดความรู้ Generative AI ของคุณ!

ยินดีด้วย!! คุณได้ทำบทเรียนสุดท้ายจากชุดบทเรียน v2 ของหลักสูตรนี้เสร็จเรียบร้อยแล้ว! อย่าหยุดเรียนรู้และสร้างสรรค์ **ตรวจสอบหน้าของ ทรัพยากร สำหรับรายการข้อแนะนำเพิ่มเติมเกี่ยวกับหัวข้อนี้โดยเฉพาะ

ชุดบทเรียน v1 ของเราก็ได้รับการอัปเดตพร้อมงานและแนวคิดเพิ่มเติมเช่นกัน ดังนั้นใช้เวลาสักนาทีในการรีเฟรชความรู้ของคุณ - และกรุณา แชร์คำถามและข้อเสนอแนะของคุณ เพื่อช่วยเราในการปรับปรุงบทเรียนเหล่านี้สำหรับชุมชน


ปฏิเสธความรับผิดชอบ: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator ขณะที่เราพยายามให้ความถูกต้อง โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ แนะนำให้ใช้การแปลโดยมนุษย์มืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดที่เกิดขึ้นจากการใช้การแปลนี้