KhanomTanLLM: Open Source Thai LLM

· September 12, 2024

Image gen from FLUX.1 [dev]

วันนี้เรายินดีที่จะเปิดตัว KhanomTanLLM (ขนมตาล LLM) เป็น Open Source language model แรกของภาษาอังกฤษ-ภาษาไทย ที่เทรนด้วยชุดข้อมูลเปิด และปล่อยชุดข้อมูลที่ใช้เทรน LLM ทั้งหมด พร้อม pipeline ในการเทรน และโมเดลที่สามารถนำไปใช้งานในเชิงพาณิชย์ได้ นอกจากนั้นเรายังปล่อยโมเดลทั้งขนาด 1B กับ 3B ถือเป็น small lm ตัวแรกที่เป็น Open Source ของภาษาไทยที่เปิดเผยทั้งชุดข้อมูลในการทำ pretrained, pipeline ในการทำ pretrained, และโมเดล

หลังจากที่ Phi model ออกมา ได้จุดประกายโมเดล LLM ที่มีขนาดน้อยกว่า 7B ในการใช้งานในโลกจริง แต่โมเดลที่มีขนาด 1B และ 3B ที่รองรับภาษาไทย ยังมีจำนวนน้อย ได้แก่ gemma-2b, Qwen2-1.5B, XGLM, mGPT และ RWKV เป็นต้น แต่ทั้งหมดไม่ได้เปิดเผยชุดข้อมูลที่นำมาเทรนโมเดลเพื่อทำ pretrained model สู่สาธารณะที่เข้าถึงได้ และ gemma-2b ไม่ได้ถูกนับว่าเป็น Open Source ด้วยเงื่อนไขในการใช้งานโมเดล ดังนั้น เราจึงเริ่มลงมือรวบรวมชุดข้อมูลภาษาไทย-ภาษาอังกฤษ เพื่อทำ Open Source LM ขนาดเล็กที่เราอยากได้ที่เปิดเผยทั้งชุดข้อมูลในการทำ pretrained, pipeline ในการทำ pretrained, และโมเดล

GitHub KhanomTanLLM: https://github.com/PyThaiNLP/KhanomTanLLM

Dataset

เราได้ทำการปล่อยชุดข้อมูลสำหรับการทำ Pretrained LLM ตัวนี้ไว้ที่

Pretraining dataset: https://huggingface.co/datasets/wannaphong/KhanomTanLLM-pretrained-dataset

โดยชุดข้อมูลทั้งหมดมี 53,376,211,711 Tokens

  • English: 31,629,984,243 Tokens
  • Thai: 12,785,565,497 Tokens
  • Code: 8,913,084,300 Toekns
  • Parallel data: 190,310,686 Tokens

Based on Typhoon-7B (https://huggingface.co/scb10x/typhoon-7b) tokenizer

สำหรับภาษาอังกฤษ เรานำชุดข้อมูลสังเคราะห์ทำตาม Cosmopedia ของ HuggingFace ที่สังเคราะห์ชุดข้อมูลภาษาอังกฤษไว้ https://huggingface.co/datasets/HuggingFaceTB/cosmopedia และนำชุดข้อมูลอย่าง openwebtext ชุดข้อมูลเว็บ, epfl-llm/guidelines, MathPile_Commercial ชุดข้อมูลคณิตศาสตร์, minipile ชุดข้อมูลขนาดย่อจาก The Pile, goodwiki ชุดข้อมูลวิกิแบบ markdown และชุดข้อมูลจาก bigscience ที่เทรน Bloom LM มาใช้งาน

สำหรับรายละเอียดชุดข้อมูลอ่านได้ที่ https://huggingface.co/datasets/wannaphong/KhanomTanLLM-pretrained-dataset

Tokenizer

เราตัดสินใจใช้ Tokenizer ของ Typhoon-7B https://huggingface.co/scb10x/typhoon-7b ในโมเดลของเรา เพื่อประหยัดทรัพยากรในการเทรน Tokenizer

Pretraining

เราได้ใช้ pipeline สำหรับเทรน LLM ของเราด้วย EasyLM project เป็นชุด pipeline ของโมเดล OpenLLaMA เราได้ยืนขอการสนับสนุน TPU ผ่านโครงการ TPU Research Cloud ของ Google และเราได้ใช้เครติดฟรีของ Google Cloud สำหรับการทำ pretrained model ทำให้เราไม่เสียค่าใช้จ่ายใด ๆ ในการเทรนโมเดลเลย

เราได้ทำการเทรนโมเดลทั้งขนาด 1B กับ 3B บนชุดข้อมูลเดียวกัน โดยใช้สถาปัตยกรรม Llama 2 จำนวนแค่ 1 Epoch เพื่อไม่ให้ repeat

สำหรับ pipeline ในการทำ pretrained model สามารถดูได้ที่ https://github.com/wannaphong/EasyLM/tree/KhanomTanLLM-pretraining

Pretrained Models:

Model

หลังจากที่เราได้โมเดลจาก pretraining แล้ว เราได้นำไปทำ SFT โดยมีโมเดลกับชุดข้อมูลดังนี้

Instruct Models:

Acknowledgements

Research supported with Cloud TPUs from Google’s TPU Research Cloud (TRC). We use TPU4-64 for training model.

Thank you TPU Research Cloud and EasyLM project! We use EasyLM for pretraining model.

บทส่งท้าย

หากคุณนำโมเดลไป eval จะพบว่าโมเดลมีประสิทธิภาพค่อนข้างต่ำในหลายชุดทดสอบ เพราะด้วยขนาดโมเดลที่มีแค่ 1B กับ 3B และเราไม่มีทรัพยากรมากเพียงพอที่จะนำชุดข้อมูลขนาดใหญ่จากภาษาอังกฤษมาเทรนร่วมด้วย เช่น FineWeb, Dolma, The Pile เป็นต้น เราได้เทรน LLM ตัวนี้ด้วยชุดข้อมูลข้อความเพียง 53B tokens หากได้รับการเทรนขนาด >1T tokens น่าจะมีประสิทธิภาพมากยิ่งขึ้น นอกจากนี้ชุดข้อมูลภาษาไทยยังมีขนาดเล็กเกินไปสำหรับการเทรน LLM ให้มีประสิทธิภาพดีที่สุด (12B) ทางแก้ที่ดีที่สุด คือ การปล่อยชุดข้อมูลออกสู่สาธารณะให้มากยิ่งขึ้น, ขอความร่วมมือชุนชนในไทยในการสนับสนุนชุดข้อมูลเปิด และแนวทางการสังเคราะห์ชุดข้อมูลอาจเป็นหนึ่งในแนวทางแก้ไขปัญหาได้

สุดท้ายนี้ เราหวังว่า ชุดข้อมูล pretrained, pipeline, และโมเดลที่เราปล่อยออกสู่สาธารณะจะเป็นประโยชน์ต่อผู้ที่สนใจทำ pretrained Thai LLM และช่วยส่งเสริมวงการ Open Source AI ในประเทศไทยมากยิ่งขึ้น

เขียนโดย วรรณพงษ์ ภัททิยไพบูลย์

Twitter, Facebook