ผู้สนใจเขียนโค้ดจุดเริ่มต้นเขียนโค้ด 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) เพื่อเริ่มกระบวนการ "เทรนให้มันทายคำถัดไป
สร้าง LLM สมอง AI
จุดเริ่มต้นสร้าง 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) เพื่อเริ่มกระบวนการ "เทรนให้มันทายคำถัดไป