บทที่ 6 · ตอนมันตอบจริง หน้า 8/12 ~3 นาที

MoE: โมเดลใหญ่ที่ใช้แค่บางส่วน

บทที่ 3: ทุกชั้นมี attention กับ เครือข่ายป้อนไปข้างหน้า (MLP, feed-forward network)ส่วนในแต่ละชั้นที่ประมวลผลเวกเตอร์ของ token ทีละตัว โดยขยาย ผ่านฟังก์ชันโค้งอย่าง ReLU แล้วย่อกลับ เป็นที่อยู่ของพารามิเตอร์ส่วนใหญ่ในแต่ละชั้น (ราว 2 ใน 3 ในดีไซน์มาตรฐาน และมากกว่านั้นในหลายโมเดลใหม่)ดูคำศัพท์ทั้งหมด ทุก token ใช้น้ำหนักทุกตัว

โมเดลแบบรวมผู้เชี่ยวชาญ (Mixture of Experts, MoE)โมเดลที่มีส่วนย่อย (ผู้เชี่ยวชาญ) หลายชุดในแต่ละชั้น และให้ตัวเลือกเส้นทางเลือกใช้แค่บางชุดต่อ token จึงคำนวณน้อยกว่าขนาดรวม แต่ยังต้องเก็บทุกชุดไว้ในหน่วยความจำดูคำศัพท์ทั้งหมด เปลี่ยน MLP เป็นหลายชุด เรียกว่า "ผู้เชี่ยวชาญ" (expert) แล้วให้ตัวเลือกเส้นทาง (router) เลือกชุดให้แต่ละ token

router ทำ 4 ขั้น:

  1. ให้คะแนน — dot product (บทที่ 2) ของเวกเตอร์ token ณ ชั้นนั้น กับเวกเตอร์ของผู้เชี่ยวชาญ 8 ชุด ได้ logit 8 ตัว
  2. ซอฟต์แมกซ์ (softmax)สูตรที่เปลี่ยนคะแนนดิบเป็นความน่าจะเป็นที่รวมกันได้ 100% โดยยก e กำลังคะแนนแล้วหารด้วยผลรวมดูคำศัพท์ทั้งหมด — เปลี่ยนเป็นเปอร์เซ็นต์ (บทที่ 1)
  3. เลือก 2 อันดับแรก (top-k) — แบ่งใหม่ให้รวม 100% คล้าย top-p แต่เก็บจำนวนคงที่
  4. รวมผล ของ 2 ชุดตามน้ำหนัก

Router: ให้คะแนนผู้เชี่ยวชาญ 8 ชุด สำหรับ token ต้มยำ

แก้คะแนน (logit) ได้ตั้งแต่ −5.0 ถึง 5.0 แล้วดูว่า % เปลี่ยนยังไง ผลรวมยังเป็น 100% เสมอ

ตาราง softmax: คะแนน (logit), e ยกกำลัง และโอกาส p · เลือก 2 อันดับแรกแล้วแบ่งใหม่ให้รวม 100%
ผู้เชี่ยวชาญคะแนน (logit)ezpหลังเลือก 2
✔ ใช้ E1
7.389139.3%62.2%
✘ ข้าม E2
1.64878.8%—
✘ ข้าม E3
0.60653.2%—
✔ ใช้ E4
4.481723.8%37.8%
✘ ข้าม E5
1.00005.3%—
✘ ข้าม E6
0.36792.0%—
✘ ข้าม E7
2.718314.4%—
✘ ข้าม E8
0.60653.2%—
รวม18.8187100.0%100.0%
รวมที่เลือก63.1%
  • E139.3%
  • E28.8%
  • E33.2%
  • E423.8%
  • E55.3%
  • E62.0%
  • E714.4%
  • E83.2%

แรกสุด E1 (39.3%) กับ E4 (23.8%) ได้รับเลือก แบ่งใหม่เป็น 62.2% กับ 37.8% ลองเพิ่ม E7 เป็น 2.5 จะได้ E7 กับ E1 แทน แต่แบ่งเท่าเดิม เพราะคะแนนยังห่าง 0.5

Mixture of Experts: router เลือกผู้เชี่ยวชาญ 2 จาก 8token ต้มยำ ผ่าน router ที่ใช้ softmax ให้คะแนนผู้เชี่ยวชาญ 8 ชุด เลือก 2 ชุดที่คะแนนสูงสุดคือ E1 และ E4 แล้วรวมผลตามน้ำหนัก 62.2% และ 37.8% ชุดอื่นไม่ถูกคำนวณสำหรับ token นี้token: ต้มยำroutersoftmax → เลือก 2ผู้เชี่ยวชาญ 8 ชุด · คำนวณแค่ 2E162.2%E2E3E437.8%E5E6E7E8รวมผล62.2% × E1 + 37.8% × E4

ขนาดสมมติ: ส่วนที่ทุก token ใช้ร่วม (attention, embedding) 2B + ผู้เชี่ยวชาญ 8 ชุด × ชุดละ 4B = 34B แต่ token หนึ่งใช้ 2B + 2 × 4B = 10B (29.4%)

  • งานคำนวณ ต่อ token ≈ 2 × 10B = 20 พันล้านครั้ง ไม่ใช่ 68 พันล้านของโมเดลทั่วไป 34B
  • หน่วยความจำ ต้องเก็บครบ 34B = 68.0 GB ที่ 16 บิต

router เลือกใหม่ทุก token ทุกชั้น decode ติดที่การอ่านน้ำหนัก (หน้า 6) ตอนใช้คนเดียวการ์ดอ่านแค่ชุดที่ถูกเลือก จึงเร็วขึ้นด้วย แต่ถ้าเสิร์ฟหลายคน มักมีคนเรียกเกือบทุกชุด

MoE มีผู้เชี่ยวชาญหลายชุด แต่ละ token ใช้แค่บางชุด จึงคำนวณน้อยกว่าขนาดจริงมาก แต่ต้องเก็บทุกชุดไว้ในหน่วยความจำ

มังคุด มาสคอตมังคุด

มังคุด

ผู้เชี่ยวชาญแต่ละตัวถนัดคนละเรื่อง แบบอาหารกับกีฬาเลยเหรอ?