🔬 LLM Dissection Lab
เปิดดูข้างในโมเดล AI จริง ๆ — ในไฟล์เก็บอะไรไว้ แล้วมันทำงานยังไง
ทุกตัวเลขในหน้านี้คำนวณจากโมเดลโอเพนซอร์สจริง Qwen2.5-0.5B (~494 ล้านตัวเลข)
ส่วนที่ 1 — ในไฟล์โมเดลมีอะไร?
"โมเดล" คือโฟลเดอร์ที่มีไฟล์ไม่กี่ไฟล์ หัวใจคือไฟล์ตัวเลขมหาศาล (weights)
โครงสร้างไฟล์จริง (จากโมเดล Qwen2.5-0.5B)
| ไฟล์ | คืออะไร |
config.json | พิมพ์เขียว — บอกว่าโมเดลมีกี่ชั้น กว้างเท่าไหร่ |
model.safetensors | สมอง — ตัวเลขทศนิยมหลายร้อยล้านตัว |
tokenizer.json | พจนานุกรม แปลง ข้อความ ↔ เลข |
อยากเห็นข้างในไฟล์จริง ๆ? กดดูได้เลย 👇
โมเดลเล็กในแล็บนี้ เทียบกับ DeepSeek (ตัวจริงระดับโลก)
ชิ้นส่วนเหมือนกันเป๊ะ ต่างกันแค่ "จำนวน" ประมาณ 1,000 เท่า
| Qwen2.5-0.5B (แล็บนี้) | DeepSeek-V3 |
| จำนวนตัวเลข (parameters) | 0.5 พันล้าน | 671 พันล้าน |
| จำนวนชั้น (layers) | 24 | 61 |
| ความกว้าง (hidden size) | 896 | 7,168 |
| คลังคำ (vocab) | 151,936 | 129,280 |
| ขนาดไฟล์จริง | ~0.5 GB | 689 GB |
ส่วนที่ 2 — ดูมันทำงาน
เลือกประโยคตัวอย่าง แล้วดูว่ามันไหลผ่าน 5 ขั้นยังไง (ทุกตัวเลขเป็นของจริงจากโมเดล)
1หั่นเป็น Tokens
— ข้อความแตกเป็นชิ้น ๆ แต่ละชิ้นมีเลขประจำตัว (คลิกเพื่อดูตัวเลขข้างใน)
2กลายเป็นตัวเลข (Embedding)
คอมพิวเตอร์อ่านตัวอักษรไม่ออก รู้จักแต่ "ตัวเลข" จึงทำ 2 ขั้น:
- ขั้น 1: เปิดพจนานุกรม เอาคำไปแลกเป็น "เลขประจำตัว" (id) — เลขตัวเดียว เป็นแค่ "ที่อยู่/เลขแถว" ไม่ใช่ความหมาย (เหมือนเลขล็อกเกอร์)
- ขั้น 2: เอา id ไปเปิดตารางยักษ์ ได้ ลิสต์ตัวเลข 896 ตัว ออกมา — ลิสต์นี้มีชื่อจริงว่า embedding (เวกเตอร์)
embedding คืออะไรกันแน่? = "พิกัด" ของคำในปริภูมิความหมาย — เหมือน GPS แต่แทนที่จะใช้ 2 เลข (ละติจูด/ลองจิจูด) บอกตำแหน่งบนแผนที่ มันใช้ 896 เลข บอกตำแหน่งของคำใน "แผนที่ความหมาย"
- 1 ช่องสี = 1 พิกัด (ตำแหน่งตามแกนหนึ่ง) · 🔴 บวก 🔵 ลบ เข้ม = ค่ามาก
- ต้องมีหลายช่อง เพราะแผนที่ความหมายมีหลายแกน (โมเดลนี้ 896 แกน คิดขึ้นเอง)
- ตำแหน่ง = ความหมาย: คำที่ความหมายใกล้กัน จะอยู่ใกล้กันในแผนที่นี้ (ลองเทียบดูข้างล่าง)
ทำไมต้องมีหลายช่อง? เพราะมันทำให้ "คำที่ความหมายใกล้กัน → ตัวเลขคล้ายกัน"
กดเทียบสองคำ: ดูว่าลายเส้นสีคล้ายกันแค่ไหน + คะแนนความใกล้เคียง
3ทำนายคำต่อไป
— โมเดลจัดอันดับว่าคำถัดไปน่าจะเป็นอะไร นี่คือสิ่งที่มันทำจริง ๆ
4เขียนต่อ (Generate) — ทีละคำ
— กดทีละครั้ง: แต่ละคำคือ "คำที่ทำนายว่ามาต่อ" (ข้อ 3) เติมเข้าไป แล้ววนกลับไปทำใหม่
5Attention — เติม "บริบท" ให้แต่ละคำ
จำข้อ 2 ได้ไหม: แต่ละคำกลายเป็นตัวเลข แต่เป็นความหมาย
"ลอย ๆ" ที่ยังไม่รู้บริบท
เช่น คำว่า "bank" ตอนนี้ยังไม่รู้ว่าหมายถึง "ริมฝั่งแม่น้ำ" หรือ "ธนาคาร"
Attention คือขั้นตอนทางคณิตศาสตร์ (ชื่อเทคนิค: self-attention)
ที่ให้แต่ละคำ "ดึงข้อมูล" จากคำอื่นที่เกี่ยวข้องในประโยค มาปรับความหมายตัวเองให้เข้ากับบริบท
- ไม่ต้องรู้คณิตศาสตร์ข้างใน — รู้แค่ว่ามันทำให้คำ "เข้าใจบริบท": "bank" ที่อยู่ใกล้ "river" กับใกล้ "money" จะได้ความหมายต่างกัน ทั้งที่เริ่มจากตัวเลขชุดเดียวกัน
- แต่ละคำ ดึงจากหลายคำพร้อมกัน (มากบ้างน้อยบ้าง) ไม่ใช่จับคู่กับคำเดียว
- กฎเดียวที่ต้องจำ: คำ ดึงได้แค่จากคำ "ก่อนหน้า" (ตอนกำลังเขียน ยังไม่เห็นคำข้างหน้า)
ที่นั่งในไปป์ไลน์:
ข้อ 2 (คำ → ตัวเลขลอย ๆ) →
ข้อ 5 Attention (เติมบริบท) →
ข้อ 3 (ทายคำต่อไป)
👆 คลิกคำในประโยค เพื่อดู "ส่วนผสม" ว่ามันดึงข้อมูลจากคำไหนบ้าง (ยิ่งเขียวเข้ม = ดึงมาก):