สร้าง LLM สมอง AI

ผู้สนใจเขียนโค้ดจุดเริ่มต้นเขียนโค้ด python

จุดเริ่มต้นสร้าง Token เอง (เพื่อเตรียมสร้าง LLM)

ถ้าคุณอยากลงมือ "หล่ออิฐ" สร้างสมองเองจริงๆ คุณต้องตัดสินใจทิ้ง API ของ OpenAI แล้วมาเขียนโค้ดฝึก AI เองบนเครื่องคอมพิวเตอร์ของคุณ (ใช้ GPU)

ขั้นตอนที่ 1 สำคัญที่สุดคือ "สอนให้ AI ตัดคำภาษาไทยด้วยตัวเอง" วิธีการมันไม่ได้ยากอย่างที่คิดครับ หลักการของ LLM คือการใช้ Algorithm ที่ชื่อว่า BPE (Byte Pair Encoding)

หลักการ BPE แบบง่ายๆ:

เริ่มจากการแตกทุกอย่างเป็น "ตัวอักษร" (ส, ว, ั, ส, ด, ี)
ให้ AI อ่านไฟล์หนังสือของเรา แล้วมองหาว่า "ตัวอักษรไหนเกาะกันบ่อยที่สุด" (เช่น ส + ว = สว เกิดขึ้นบ่อยมาก ก็รวมมันเป็นคำศัพท์ใหม่)
ทำแบบนี้ซ้ำๆ จนกว่าจะได้คำศัพท์ครบตามจำนวนที่เราตั้งไว้ (เช่น 5,000 คำ)
นี่คือโค้ด "จุดเริ่มต้นสร้าง Tokenizer เอง" โดยใช้ไลบรารีมาตรฐานของวงการ HuggingFace (ต้องลง pip install tokenizers ก่อน):

python

from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
from tokenizers.pre_tokenizers import Whitespace

# 1. สร้างเครื่องจักรตัดคำเปล่าๆ (ยังไม่มีความรู้ภาษาใดๆ)
# BPE คือ Algorithm ที่ LLM ทุกตัวในโลกนี้ใช้สร้าง Token
my_tokenizer = Tokenizer(BPE(unk_token="[UNK]"))

# 2. บอกว่าให้แยกคำเบื้องต้นด้วยการดูช่องว่าง (Whitespace)
my_tokenizer.pre_tokenizer = Whitespace()

# 3. ตั้งค่าการฝึก (Trainer)
trainer = BpeTrainer(
    vocab_size=5000, # อยากให้สมองเรามีคำศัพท์สูงสุดกี่คำ (ยิ่งเยอะยิ่งกิน RAM ตอนเทรน LLM)
    special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"] # คำสั่งพิเศษสำหรับสมอง
)

# 4. เริ่มฝึกให้มันอ่านไฟล์และสร้างพจนานุกรมของมันเอง!
print("กำลังสอนให้ AI ตัดคำภาษาไทยเอง...")
files = ["my_book.txt"] # ใช้ไฟล์เดียวกับที่คุณมีอยู่
my_tokenizer.train(files, trainer)

# 5. ทดสอบผลลัพธ์ว่ามันตัดคำได้ด้วยตัวเองแล้ว
output = my_tokenizer.encode("สวัสดีครับ ผมคือ AI Thai Chat")
print("ตัดออกมาเป็นชิ้นๆ:", output.tokens)
print("แปลงเป็นตัวเลขเรียบร้อย:", output.ids)

# 6. บันทึกพจนานุกรมที่มันเรียนรู้เองลงเป็นไฟล์ (เพื่อเอาไปใช้ตอนสร้าง LLM)
my_tokenizer.save("my_custom_tokenizer.json")
จาก Token เอง -> เชื่อมเข้าสู่การสร้าง LLM (PyTorch)


เมื่อคุณรันโค้ดด้านบนแล้ว คุณจะได้ไฟล์ my_custom_tokenizer.json ซึ่งเป็น "พจนานุกรมส่วนตัว" ของคุณ ที่มันเรียนรู้จากหนังสือของคุณเองมากกว่าของ OpenAI ด้วยซ้ำ

ตอนนี้คุณพร้อมที่จะเอาโค้ด PyTorch (ที่คุณเคยส่งมาให้ดู) มาเชื่อมต่อแล้วครับ จุดเชื่อมมีอยู่ 2 ที่:

1. ดึงขนาดพจนานุกรม (vocab_size) มาใส่ใน PyTorch: ในโค้ด PyTorch จะมีบรรทัดนึงที่เขียนว่า class SimpleLanguageModel(nn.Module): def __init__(self, vocab_size): คุณจะต้องนับจาก Tokenizer ของคุณว่ามีคำศัพท์ทั้งหมดกี่คำ แล้วยัดเข้าไป เช่น:

python

# โหลด Tokenizer ที่เราฝึกไว้มานับ
tokenizer = Tokenizer.from_file("my_custom_tokenizer.json")
VOCAB_SIZE = tokenizer.get_vocab_size() # เช่น ได้ 5000

# เอาไปยัดใส่สมองที่เราจะสร้าง
model = SimpleLanguageModel(vocab_size=VOCAB_SIZE)
2. แปลงข้อความเป็นตัวเลขก่อนยัดเข้าสมอง: ตอนเทรน LLM เราจะไม่ส่งข้อความเข้าไปตรงๆ แต่เราจะใช้ Tokenizer ที่เราสร้างเอง แปลงเป็นเลขก่อน

python

text = "สวัสดีชาวโลก"
token_ids = tokenizer.encode(text).ids # เช่น ได้ [45, 891, 22, 1045]

# แปลงเป็น Tensor ของ PyTorch แล้วยัดเข้าสมอง
import torch
input_tensor = torch.tensor([token_ids], dtype=torch.long)
logits, loss = model(input_tensor)
สรุป

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