ก่อนที่เราจะเริ่มการ fine-tune อยากจะมาแนะนำ Granite ให้รู้จักกันก่อน Granite เป็นโมเดลแบบ OSS หรือ Open-Source จาก IBM โดยเน้นความ reliable, ไม่หลุดประเด็น, และ เทรนง่ายบนทรัพยากรน้อย
สิ่งที่ทำให้มันน่าสนใจมาก คือมีหลาย scale ตั้งแต่
โดย Granite 4.0 มีการใช้สถาปัตยกรรมของ Mamba-2/transformer แบบ Hybrid ออกแบบมาเพื่อประสิทธิภาพและประสิทธิภาพการทำงานที่ยอดเยี่ยมในแอปพลิเคชันระดับองค์กร เช่น RAG และเวิร์กโฟลว์แบบเอเจนต์

หลังจาก IBM ได้มีการปล่อย Granite 4.0 มา โดยทางทีมต้องการที่จะทำให้ตัว model ตัวนี้สามารถรองรับภาษาไทยได้ดีมากยิ่งขึ้น โดยเริ่มจากการ์ดเล็กๆ โดยเริ่มจากการใช้ NVIDIA T4 และ NVIDIA A100 แล้วเจอปัญหา out of memory จนไม่สามารถทำการ fine-tune ต่อได้ และสุดท้ายย้ายไป NVIDIA H100 เพื่อจูนต่อได้
ในการ fine-tune จะเลือกใช้โมเดล unsloth/granite-4.0-h-micro มาจาก Unsloth ที่มีการ pre-trained สำหรับ chat และ ทำไมถึงเลือกใช้ Unsloth เพราะสามารถ train ได้เร็วขึ้นถึง 2 เท่า และลดการใช้ VRAM มากถึง 50% และรองรับ context ได้ยาวขึ้นถึง 6 เท่า
สำหรับการ Fine-tune นี้เลือกใช้ชุดข้อมูลจาก Open ThaiGPT โดยเลือกใช้ชุดข้อมูล *openthaigpt/lexitron2_prompt_finetune* ซึ่งเป็นชุดข้อมูลจาก Lexitron 2.0 ซึ่งเป็นพจนานุกรมไทย-อังกฤษที่พัฒนาโดย NECTEC
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/granite-4.0-h-micro",
max_seq_length = 4096,
load_in_4bit = False,
load_in_8bit = False,
full_finetuning = False,
)