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

Quantization: ปัดเศษให้โมเดลตัวเล็กลง

พารามิเตอร์ (parameter, weight)ตัวเลขในตารางต่างๆ ของโมเดลที่ถูกปรับระหว่างการฝึก ขนาดอย่าง "8B" หมายถึงมีพารามิเตอร์ราว 8 พันล้านตัวดูคำศัพท์ทั้งหมด แต่ละตัวคือตัวเลขหนึ่งตัว ที่ 16 บิต (2 byte) โมเดลสมมติ 8B ใช้ 8,000,000,000 × 2 = 16.0 GB (32 บิตใช้ 32.0 GB)

การลดความละเอียดตัวเลข (quantization)การเก็บน้ำหนักของโมเดลด้วยจำนวนบิตที่น้อยลง เช่นจาก 16 บิตเหลือ 4 บิต ทำให้โมเดลเล็กลงและเขียนคำตอบได้เร็วขึ้น แลกกับความคลาดเคลื่อนจากการปัดเศษดูคำศัพท์ทั้งหมด คือเก็บตัวเลขให้หยาบลง เหมือนปัดราคาเป็นบาทเต็ม

b บิตเก็บได้ ระดับ วิธีแบบสมมาตรในวิดเจ็ตใช้ ระดับ (4 บิตได้ 15 ระดับ):

  1. หาค่าที่ห่างจากศูนย์มากที่สุด ()
  2. ตัวคูณย่อ (scale) =
  3. หารด้วย scale แล้วปัดเป็นจำนวนเต็ม (ค่าที่เก็บจริง)
  4. ตอนใช้ คูณ scale กลับ ส่วนต่างคือความคลาดเคลื่อน (error)

ตัวอย่าง 4 บิต: scale = 0.91 ÷ 7 = 0.13 น้ำหนัก 0.82 ได้ระดับ 6 ใช้จริง 6 × 0.13 = 0.780 คลาดไป 0.040

เลือกจำนวนบิต ดูว่าน้ำหนักขยับแค่ไหน:

Quantization: ปัดน้ำหนักให้เหลือกี่บิต?

เลือกจำนวนบิต แล้วดูว่าน้ำหนักแต่ละตัวขยับไปจากเดิมแค่ไหน

−0.9100.91
ต้นฉบับ หลังปัด255 ระดับ ถี่จนวาดไม่ไหว

8 บิต: 255 ระดับ · scale 0.0072 · error สูงสุด 0.003 · error เฉลี่ย 0.001 · โมเดล 8B ใช้ 8.0 GB (ต้นฉบับ 16 บิต 16.0 GB)

น้ำหนักแต่ละตัวที่ 8 บิต (✘ = error เกิน 0.1)
ตัวที่ต้นฉบับระดับหลังปัดerror
w10.821140.8170.003
w2−0.37−52−0.3730.003
w30.15210.1500.000
w4−0.91−127−0.9100.000
w50.46640.4590.001
w60.0340.0290.001
w7−0.58−81−0.5800.000
w80.71990.7090.001

หาจำนวนบิตที่น้อยที่สุด ที่ error สูงสุดยังไม่เกิน 0.1

Quantization ทุกจำนวนบิต (ตารางตัวเลขสำหรับโปรแกรมอ่านหน้าจอ)
จำนวนบิตระดับscaleerror สูงสุดerror เฉลี่ยหน่วยความจำโมเดล
16 (ต้นฉบับ)——0.0000.00016.0 GB
82550.00720.0030.0018.0 GB
4150.13000.0600.0364.0 GB
370.30330.1500.0773.0 GB
230.91000.4500.2032.0 GB

ที่ 4 บิต โมเดล 8B เหลือ 4.0 GB หนึ่งในสี่ของ 16 บิต decode อ่าน byte น้อยลงจึงเร็วขึ้น (หน้าถัดไป) KV cache ก็ quantize ได้ (หน้า 4)

คุณภาพ: 8 บิตมักแทบไม่ต่าง 4 บิตที่ทำดีๆ เสียเล็กน้อย ต่ำกว่านั้นมักตกชัด

quantization ปัดน้ำหนักให้เหลือบิตน้อยลง โมเดลเล็กลงและเขียนคำตอบเร็วขึ้น แลกกับความคลาดเคลื่อนที่มากขึ้น มักเห็นผลชัดเมื่อต่ำกว่าราว 4 บิต

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

มังคุด

ปัดหยาบขนาดนี้ มันยังตอบรู้เรื่องอยู่เหรอ?