AI
น้องๆ หลายคนคงเคยได้ยินคำว่า LLM (Large Language Model) กันมาบ้างแล้วใช่มั้ย? มันก็คือ AI ที่เก่งๆ ฉลาดๆ ที่เราคุยด้วยได้ ตอบคำถามได้ สร้างสรรค์คอนเทนต์ได้สารพัดประโยชน์ แต่รู้มั้ยว่าเราสามารถทำให้มันเก่งขึ้นไปอีก ตรงจุดที่เราต้องการได้ด้วยนะ! นั่นแหละคือ Fine-tuning
สมัยผมทำร้านเน็ตเมื่อ 20 กว่าปีที่แล้ว ยังไม่มีอะไรแบบนี้หรอกครับ มีแต่ต้องเขียนโปรแกรมเองหมด แต่ยุคนี้มันง่ายขึ้นเยอะ ใครๆ ก็ลองเล่นได้ แค่ต้องเข้าใจหลักการมันก่อน
คิดง่ายๆ LLM เหมือนเด็กฉลาดแต่ยังไม่รู้เรื่องเฉพาะทาง เราอยากให้เด็กคนนี้เก่งเรื่องกฎหมาย เราก็ต้องเอาตำรากฎหมายมาให้เค้าอ่านเยอะๆ ทำโจทย์เยอะๆ Fine-tuning ก็เหมือนกัน เราเอาข้อมูลเฉพาะทางที่เราต้องการให้ LLM เก่ง มาสอนมันเพิ่ม
ทำไมต้องทำ? เพราะ LLM ที่เทรนมาแบบ General (ทั่วไป) มันอาจจะตอบได้กว้างๆ แต่ไม่แม่นยำ หรือไม่เข้าใจศัพท์เฉพาะในวงการเรา Fine-tuning จะช่วยให้มันฉลาดขึ้นในเรื่องที่เราสนใจจริงๆ
ยกตัวอย่าง สมมติเราอยากให้ LLM ช่วยตอบคำถามลูกค้าเกี่ยวกับสินค้าในร้าน SiamCafe Blog เราก็เอาข้อมูลสินค้าทั้งหมด, FAQ, คู่มือการใช้งาน มาให้ LLM เรียนรู้ มันก็จะตอบคำถามลูกค้าได้ดีกว่า LLM ที่ไม่เคยเห็นข้อมูลเหล่านี้เลย
ก่อนจะเริ่ม Fine-tuning เราต้องเตรียมของให้พร้อมก่อนนะ ไม่ใช่กระโดดลงไปมั่วๆ จะเสียเวลาเปล่าๆ สิ่งที่ต้องเตรียมมีดังนี้
สมัยก่อนตอนทำร้านเน็ต ผมต้องประกอบคอมฯ เอง หา driver เอง วุ่นวายมาก ยุคนี้มีเครื่องมือให้ใช้เยอะแยะ แค่ต้องเลือกให้ถูก
มาถึงขั้นตอนที่สนุกที่สุด คือการลงมือ Fine-tuning จริงๆ ผมจะยกตัวอย่างการใช้ Hugging Face Transformers ซึ่งเป็น Library ที่ฮิตมากๆ ในวงการนี้
Code snippet ตัวอย่างการใช้ Hugging Face Transformers (แบบคร่าวๆ นะ)
from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments
# Load Model and Tokenizer
model_name = "gpt2" # or other model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare Dataset (example)
train_dataset = [
"SiamCafe.net is the best internet cafe.",
"I love programming."
]
# Tokenize Data
def tokenize_function(examples):
return tokenizer(examples["text"], truncation=True)
tokenized_datasets = train_dataset.map(tokenize_function, batched=True)
# Training Arguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
save_steps=500,
save_total_limit=2,
)
# Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
tokenizer=tokenizer,
)
# Train!
trainer.train()
# Save Model
trainer.save_model("./fine_tuned_model")
โค้ดนี้เป็นแค่ตัวอย่างง่ายๆ นะครับ ในความเป็นจริงอาจจะต้องปรับแต่งอะไรอีกเยอะ แต่หวังว่ามันจะช่วยให้เห็นภาพรวมของการ Fine-tuning ได้
การ Fine-tuning มันก็มีหลายวิธีให้เลือกใช้ แต่ละวิธีก็มีข้อดีข้อเสียต่างกันไป ลองมาดูตารางเปรียบเทียบกันหน่อย จะได้เลือกวิธีที่เหมาะกับงานของเรา
| วิธี Fine-tuning | ข้อดี | ข้อเสีย | เหมาะกับ |
|---|---|---|---|
| Full Fine-tuning | แม่นยำที่สุด | ใช้ทรัพยากรเยอะ, ใช้เวลานาน | ข้อมูลเยอะ, ต้องการความแม่นยำสูง |
| Parameter-Efficient Fine-tuning (PEFT) | ใช้ทรัพยากรน้อยกว่า, เร็วกว่า | ความแม่นยำอาจจะสู้ Full Fine-tuning ไม่ได้ | ทรัพยากรจำกัด, ต้องการความเร็ว |
| Prompt Tuning | ง่ายที่สุด, ไม่ต้องแก้ Model | ความแม่นยำอาจจะไม่สูงเท่า Fine-tuning | ต้องการลองไอเดียใหม่ๆ อย่างรวดเร็ว |
เลือกวิธีที่เหมาะกับเรานะครับ ไม่มีวิธีไหนดีที่สุดเสมอไป
การ Fine-tuning ไม่ได้ราบรื่นเสมอไป บางทีก็เจอปัญหาจุกจิกกวนใจ ลองมาดูปัญหาที่พบบ่อยๆ และวิธีแก้ไขกัน
ปัญหา: LLM จำข้อมูลที่เราสอนได้หมด แต่พอเจอข้อมูลใหม่ๆ กลับตอบไม่ได้
วิธีแก้ไข:
ปัญหา: LLM ลืมความรู้เดิมๆ ที่เคยมี หลังจาก Fine-tuning
วิธีแก้ไข:
ปัญหา: Dataset มีความลำเอียง ทำให้ LLM ตอบคำถามแบบลำเอียงตามไปด้วย
วิธีแก้ไข:
ดูวิดีโอเพิ่มเติมเกี่ยวกับFine-tuning LLM สำหรับมือใหม่:
ผมรวบรวมคำถามที่เจอบ่อยๆ เกี่ยวกับการ Fine-tuning มาตอบให้แล้วครับ
A: ขึ้นอยู่กับขนาดของ Model และ Dataset ถ้า Model เล็ก Dataset ไม่ใหญ่มาก GPU ระดับกลางๆ ก็พอไหว แต่ถ้า Model ใหญ่ Dataset มหาศาล ต้องใช้ GPU ระดับ High-end หรือ Cloud Service ครับ
A: ก็เหมือนเดิม ขึ้นอยู่กับขนาดของ Model, Dataset, และ Hardware ถ้า Model เล็ก Dataset ไม่ใหญ่มาก อาจจะใช้เวลาไม่กี่ชั่วโมง แต่ถ้า Model ใหญ่ Dataset มหาศาล อาจจะใช้เวลาเป็นวันๆ หรือเป็นอาทิตย์ๆ เลย
A: ไม่เสมอไป! ถ้า Dataset ไม่ดี หรือ Fine-tuning ไม่ถูกวิธี Model อาจจะไม่เก่งขึ้น หรืออาจจะแย่ลงกว่าเดิมด้วยซ้ำ เพราะงั้นต้องศึกษาและทำความเข้าใจให้ดีก่อนลงมือทำ
A: แหล่งเรียนรู้มีเยอะแยะเลยครับ ลอง Search ใน Google ดู หรือจะเข้าไปดูใน SiamCafe Blog ก็ได้ ผมอาจจะมีบทความเกี่ยวกับ AI เพิ่มเติมในอนาคต
หวังว่าบทความนี้จะเป็นประโยชน์กับน้องๆ ที่สนใจเรื่อง Fine-tuning นะครับ ลองเอาไปปรับใช้กันดู แล้วเจอกันใหม่!
สมัยผมทำร้านเน็ต สิ่งสำคัญคือการจัดการ Inventory สินค้าให้ดี Data ก็เหมือนกัน สำคัญสุดๆ! ก่อนจะเอา LLM ไป Fine-tune ต้องมั่นใจว่า Data ที่เรามี Clean, Organized และครอบคลุม Task ที่เราต้องการ
ถ้า Data ไม่ดี Fine-tune ไปก็เสียเวลาเปล่าๆ เหมือนเอาคอมพิวเตอร์สเปคเทพไปต่อเน็ตเต่า ยังไงก็ช้า!
LLM มีเยอะแยะ เลือกให้ตรงกับงานของเรา สมัยก่อนผมเลือกลูกค้าที่จะเข้าใช้บริการร้านเน็ต ก็ต้องดูว่าเค้าต้องการอะไร เล่นเกม, ทำงาน, หรือแค่เช็ค Email LLM ก็เหมือนกัน เลือกให้เหมาะกับ Task ที่เราจะใช้
ถ้าจะทำ Task ง่ายๆ ไม่จำเป็นต้องใช้ Model ใหญ่โตเปลือง Resource ลองดู Model เล็กๆ ที่ Fine-tune ง่ายกว่า
Overfitting คือปัญหาใหญ่! คือการที่ Model เก่งกับ Data ที่ใช้ Fine-tune มากเกินไป แต่พอเจอ Data ใหม่ๆ กลับทำงานได้ไม่ดี สมัยผมเคยเจอเด็กเล่นเกมในร้านเน็ต เก่งแต่เกมเดียว พอให้เล่นเกมอื่นก็ไม่เป็น Overfitting เหมือนกัน!
ใช้ Validation Set เพื่อ Monitor ว่า Model เรา Overfit รึเปล่า ถ้า Overfit ให้ปรับ Hyperparameter หรือเพิ่ม Data
Fine-tuning ไม่ใช่แค่ทำครั้งเดียวจบ ต้อง Monitor และ Evaluate Performance ของ Model อย่างสม่ำเสมอ เหมือนตอนผมเปิดร้านเน็ตใหม่ๆ ต้องคอยดูว่าลูกค้าชอบอะไร ไม่ชอบอะไร จะได้ปรับปรุงบริการให้ดีขึ้นเรื่อยๆ
ใช้ Metrics ที่เหมาะสมกับ Task ของเรา เช่น Accuracy, F1-score, BLEU score เพื่อวัด Performance ของ Model
ถ้า Data เยอะ Model ใหญ่ แน่นอนว่า GPU แรงๆ ช่วยได้เยอะ แต่ถ้า Data ไม่เยอะ Model ไม่ใหญ่ ก็สามารถ Fine-tune บน CPU ได้ แต่อาจจะใช้เวลานานกว่าหน่อย
สมัยก่อนผมก็เริ่มจากคอมพิวเตอร์สเปคธรรมดาๆ ค่อยๆ อัพเกรดไปเรื่อยๆ ตามกำลังทรัพย์
ขึ้นอยู่กับขนาดของ Model, ขนาดของ Data, และ Spec ของ Hardware ถ้า Data เยอะ Model ใหญ่ GPU ไม่แรง ก็อาจจะใช้เวลาเป็นวันๆ เลย
เตรียมตัวเตรียมใจให้พร้อม!
ถ้าทำถูกวิธี Fine-tuning จะช่วยให้ LLM เก่งขึ้นใน Task ที่เราต้องการได้อย่างแน่นอน แต่ถ้าทำผิดวิธี อาจจะทำให้แย่ลงกว่าเดิมก็ได้ iCafeForex ต้องระวัง!
เหมือนตอนผมสอนเด็กเล่นเกมในร้านเน็ต ถ้าสอนถูกวิธี เด็กก็เก่งขึ้น ถ้าสอนผิดวิธี เด็กก็อาจจะเล่นแย่ลงกว่าเดิม
ส่วนใหญ่จะใช้ Python เพราะมี Library และ Frameworks ที่เกี่ยวข้องกับ Machine Learning เยอะแยะมากมาย เช่น TensorFlow, PyTorch, Transformers
Python เหมือนเป็นภาษาหลักของคนทำ AI ยุคนี้
Fine-tuning LLM เป็นศาสตร์และศิลป์ ต้องใช้ความเข้าใจ, ความอดทน, และประสบการณ์ ถ้าทำถูกวิธี จะช่วยให้เราได้ LLM ที่เก่งเฉพาะทาง และตอบโจทย์ความต้องการของเราได้เป็นอย่างดี
อย่ากลัวที่จะลองผิดลองถูก SiamCafe Blog สมัยผมทำร้านเน็ตก็เจอปัญหาเยอะแยะมากมาย แต่ก็ค่อยๆ เรียนรู้และแก้ไขไปเรื่อยๆ จนประสบความสำเร็จ
ขอให้ทุกคนสนุกกับการ Fine-tuning LLM นะครับ!