1 คะแนน โดย GN⁺ 2024-10-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • แม้ decoder-only Transformer จะกลายเป็นสถาปัตยกรรมมาตรฐานของ LLM แต่ attention noise ที่ทำให้พลาดข้อมูลสำคัญในบริบทยาวและกระจายความสนใจไปยังโทเค็นที่ไม่เกี่ยวข้อง ยังคงบั่นทอนประสิทธิภาพ
  • differential attention แบ่ง query และ key ออกเป็น 2 กลุ่ม สร้าง softmax attention map 2 ชุด แล้วนำชุดที่สองซึ่งถ่วงด้วย λ ที่เรียนรู้ได้มาลบออก เพื่อคำนวณ attention score สุดท้าย
  • ในการทดลองที่เพิ่มขนาดโมเดล จำนวนโทเค็นฝึก และความยาวคอนเท็กซ์ DIFF Transformer ให้ผลดีกว่า Transformer และต้องใช้เพียงประมาณ 65% ของขนาดโมเดลหรือโทเค็นฝึก เพื่อให้ได้ประสิทธิภาพใกล้เคียงกัน
  • โมเดลนี้มีข้อได้เปรียบด้านการสร้างแบบจำลองบริบทยาว การค้นคืนข้อมูลสำคัญ การลดภาพหลอน, in-context learning, การให้เหตุผลทางคณิตศาสตร์ และการลด activation outlier โดยในงาน QA และสรุปความ ผลกระทบจากบริบทที่ไม่เกี่ยวข้องลดลง
  • โครงสร้างโดยรวมยังคงเหมือน Transformer และเปลี่ยนเฉพาะ softmax attention เท่านั้น จึงสามารถคง จำนวนพารามิเตอร์และปริมาณการคำนวณ ให้เท่ากัน พร้อมนำ FlashAttention กลับมาใช้ได้

ปัญหา attention noise ของ Transformer

  • decoder-only Transformer เป็นสถาปัตยกรรมมาตรฐานโดยพฤตินัยของ LLM และแกนหลักคือ attention mechanism ที่ใช้ softmax ถ่วงน้ำหนักความสำคัญของโทเค็นในลำดับ
  • LLM มีความยากในการค้นหาข้อมูลสำคัญจากบริบทได้อย่างแม่นยำ โดยเฉพาะเมื่อมีบริบทที่ไม่เกี่ยวข้องจำนวนมาก เบาะแสคำตอบจะยิ่งถูกกลบได้ง่าย
  • ในตัวอย่างที่ต้องหาคำตอบซึ่งถูกแทรกไว้กลางกองเอกสาร Transformer มีแนวโน้มจะให้ attention score แก่คำตอบจริงเพียงเล็กน้อย แต่กลับจัดสรรคะแนนสูงเกินไปให้กับบริบทที่ไม่เกี่ยวข้อง
  • attention score ที่ไม่อาจมองข้ามได้ซึ่งถูกจัดสรรให้บริบทที่ไม่เกี่ยวข้องเช่นนี้ ทำหน้าที่เป็น attention noise
  • ตัวอย่าง Multi-Needle Retrieval ใน Figure 1 แสดงความแม่นยำของ Transformer และ Differential Transformer ที่ 55% และ 85% ตามลำดับ

วิธีการทำงานของ Differential attention

  • DIFF Transformer เป็นสถาปัตยกรรมพื้นฐานสำหรับ sequence modeling และ LLM โดยคง macro layout ของ Transformer เดิมไว้ และแทนที่ softmax attention ทั่วไปด้วย differential attention
  • จากอินพุต X จะทำการโปรเจกต์ query, key, value โดยแบ่ง query และ key ออกเป็น 2 กลุ่มคือ Q1, Q2, K1, K2 ส่วน value ใช้เป็น V
  • เอาต์พุตของ attention คำนวณจากผลต่างของ softmax attention map สองชุด
    • DiffAttn(X) = (softmax(Q1K1^T / √d) − λ softmax(Q2K2^T / √d))V
    • เป็นโครงสร้างที่ลบ attention map ชุดที่สองออกจากชุดแรก เพื่อกำจัด common noise
  • λ เป็น scalar ที่เรียนรู้ได้ และมีการ reparameterize ดังนี้เพื่อให้พลวัตการเรียนรู้เหมาะสม
    • λ = exp(λq1 · λk1) − exp(λq2 · λk2) + λinit
    • ในการทดลองพื้นฐานใช้ λinit = 0.8 − 0.6 × exp(−0.3 · (l − 1))
    • ยังได้พิจารณาวิธีใช้ λinit เดียวกันทุกเลเยอร์ เช่น 0.8 และจาก ablation พบว่าประสิทธิภาพค่อนข้างทนทานต่อความต่างของกลยุทธ์การกำหนดค่าเริ่มต้น
  • แนวคิดนี้คล้ายกับ differential amplifier และหูฟังตัดเสียงรบกวน ที่ใช้ความต่างของสัญญาณสองชุดเพื่อลบ common-mode noise
  • Naderi et al. พิสูจน์ว่า differential attention ทำให้ spectral distribution ของ attention matrix สมดุลมากขึ้น และแก้ปัญหา rank collapse ได้อย่างมีประสิทธิภาพ

โครงสร้าง Multi-head และสถาปัตยกรรมโดยรวม

  • multi-head differential attention ใช้ projection matrix ที่ต่างกันในแต่ละ head และภายในเลเยอร์เดียวกันจะ แชร์ scalar λ ระหว่าง head
  • เอาต์พุตของแต่ละ head จะผ่าน RMSNorm แยกกัน จากนั้นคูณด้วย (1 − λinit) แล้วจึง concatenate ตามมิติ channel ก่อนผ่าน output projection WO
  • สัญลักษณ์ GroupNorm ใน Figure 2 ใช้เน้นว่ามีการทำ normalization แยกอิสระในแต่ละ head
    • differential attention มีแนวโน้มให้แพตเทิร์นที่ sparse มากกว่า ทำให้สถิติระหว่าง head มีความหลากหลายมากขึ้น
    • การทำ normalization ราย head จะช่วยปรับแต่ละ head ให้เป็นมาตรฐานก่อน concatenate และปรับปรุง gradient statistics
  • DIFF Transformer layer ทั้งหมดประกอบด้วย 2 โมดูล
    • MultiHead(LN(Xl)) + Xl
    • SwiGLU(LN(Yl)) + Yl
  • ในเชิงโครงสร้างใช้ pre-RMSNorm และ SwiGLU ซึ่งเป็นแนวทางต่อยอดจากการปรับปรุงในตระกูล LLaMA

ประสิทธิภาพและเสถียรภาพในการฝึก

  • differential attention สามารถนำ FlashAttention กลับมาใช้ได้โดยตรง จึงช่วยปรับปรุงประสิทธิภาพของโมเดลได้มาก
  • จำนวน head กำหนดเป็น h = dmodel / 2d โดย d คือ head dimension เดียวกับของ Transformer
  • การตั้งค่านี้มีไว้เพื่อให้ จำนวนพารามิเตอร์และความซับซ้อนในการคำนวณ เทียบเท่ากับ Transformer
  • หลัง head normalization จะใช้ตัวคูณคงที่ (1 − λinit) เพื่อให้การไหลของ gradient สอดคล้องกับ Transformer
  • Appendix G แสดงให้เห็นว่า gradient flow โดยรวมยังคงใกล้เคียงกับ Transformer จึงสามารถสืบทอด hyperparameter ที่คล้ายกันและคงเสถียรภาพในการฝึกได้

ผลการทดลองและผลลัพธ์ในการใช้งาน

  • การทดลอง language modeling ขยาย DIFF Transformer ในทิศทางของจำนวนพารามิเตอร์ โทเค็นฝึก และความยาวคอนเท็กซ์ที่เพิ่มขึ้น
  • จาก scaling curve, DIFF Transformer ต้องใช้เพียงประมาณ 65% ของขนาดโมเดลหรือโทเค็นฝึก เพื่อให้ได้ประสิทธิภาพด้าน language modeling ใกล้เคียงกับ Transformer
  • ใน downstream task ก็ให้ผลดีกว่า Transformer และในการประเมินลำดับยาว โมเดลสามารถใช้ประโยชน์จากคอนเท็กซ์ที่ยาวขึ้นได้อย่างมีประสิทธิภาพ
  • ในการค้นคืนข้อมูลสำคัญ โมเดลมีรูปแบบที่ให้ attention score สูงกว่าแก่ span ของคำตอบ และให้คะแนนต่ำกว่ากับบริบทที่ไม่เกี่ยวข้อง
  • ใน QA และ text summarization โมเดลถูกรบกวนจากบริบทที่ไม่เกี่ยวข้องน้อยลง จึงช่วยลด hallucination
  • ใน in-context learning นอกจากเพิ่มความแม่นยำแล้ว ยังมีความทนทานต่อ order permutation ซึ่งถือเป็นปัญหาความ robust เรื้อรังได้ดีกว่า
  • ผลลัพธ์ที่ช่วยลด activation outlier ยังเปิดโอกาสใหม่สำหรับ quantization

1 ความคิดเห็น

 
GN⁺ 2024-10-09
ความคิดเห็นจาก Hacker News
  • รู้สึกเหมือนกำลังพลาดสัญชาตญาณหลักตรงนี้ไป เข้าใจปัญหาว่า softmax attention แบบปกตินั้นให้ค่าน้ำหนักความสนใจกับสิ่งที่ไม่เกี่ยวข้องให้ใกล้ 0 ได้ยาก และก็เข้าใจด้วยว่าถ้ามีโครงสร้างแบบการลบ ก็สามารถสร้างค่าน้ำหนักความสนใจที่เป็น 0 พอดีหรือเกือบ 0 ได้โดยไม่ต้องพึ่งค่า activation ที่เป็น outlier
    แต่โครงสร้างนี้ก็ดูเหมือนจะสร้าง ค่าน้ำหนักความสนใจติดลบ ได้ง่ายด้วย ซึ่งดูเทียบได้กับการให้ความสนใจเชิงบวกกับการกลับเครื่องหมายของ value vector ในเชิงสัญชาตญาณแล้วจึงรู้สึกว่าการรักษาสมดุลให้สิ่งที่ไม่สนใจทั้งหมดอยู่ใกล้ 0 คงทำได้ยาก ถึงอย่างนั้น Figure 1 ก็แสดงว่าแนวทางนี้ใช้งานได้ดี จึงไม่ได้สงสัยในความเป็นไปได้ เพียงแต่ยังนึกภาพไม่ออกว่าเครือข่ายทำสิ่งนี้อย่างเป็นรูปธรรมได้อย่างไร

    • softmax และ attention แบบทั่วไปมีข้อผิดพลาดอยู่ softmax ควรเป็น exp()/1+∑exp()
      ประเด็นสำคัญคือมีการเพิ่ม 1 เข้าไปในตัวส่วน ในลิมิตด้านลบ softmax จึงสามารถเป็น 0 ได้ ไม่ใช่เป็น epsilon บางค่า และถ้าใส่ค่า 0 เพิ่มเข้าไปใน x ก็ให้ผลแบบเดียวกัน ข้อเสียคือถ้าจะทำให้ถูกต้องต้องฝึกโมเดลใหม่ตั้งแต่ต้น
    • แทนที่จะยอมให้มีค่าน้ำหนักติดลบ แต่ก็ไม่ได้ส่งมันผ่านอะไรอย่าง ReLU ดังนั้นฟังดูเหมือนเป็นการขัดขวางโมเดลเล็กน้อย อย่างไรก็ตาม การจัดการนี้อาจเป็นปัญหาที่ง่ายกว่าที่คิดสำหรับโมเดล
      ถ้าดูรูปค่าน้ำหนักความสนใจรูปแรก จะเห็นว่ามีคะแนนติดลบอยู่จริงในช่วงที่เป็นสัญญาณรบกวน ถึงอย่างนั้นความสนใจต่อช่วงนั้นก็เล็กมากอยู่แล้ว attention map อันที่สองเพียงแค่ต้องทำนายสัญญาณรบกวนของอันแรก และเพราะมันเข้าถึงอินพุตแรกได้ครบถ้วน นี่จึงเป็นงานที่ทำได้ค่อนข้างแม่นยำ
      ถ้ากลับไปที่อุปมาในโลกจริงของงานวิจัย หูฟังตัดเสียงรบกวน สามารถสร้างสัญญาณหักล้างที่แม่นยำได้เพราะไมโครโฟนเข้าถึงเสียงที่เข้าหูได้ เช่นเดียวกัน attention map อันที่สองรู้ว่าอะไรถูกป้อนเข้าไปในอันแรก จึงสร้างสัญญาณหักล้างที่สอดคล้องกันได้ มันไม่สมบูรณ์แบบ แต่หูฟังตัดเสียงรบกวนก็ไม่สมบูรณ์แบบเช่นกัน และถึงอย่างนั้นก็ไปได้ถึง 99% ซึ่งเพียงพอจะช่วยเพิ่มประสิทธิภาพ
    • ในเชิงสัญชาตญาณ ดูเหมือนว่าในระหว่างการฝึก โมเดลจะ ปรับ lambda ให้เป็น 0 ได้ง่ายมาก แบบนั้นมันก็แทบจะกลายเป็น Transformer ปกติที่แค่ติดกลไก pruning พารามิเตอร์ที่ซับซ้อนเกินจำเป็นเข้าไป
      การ pruning เป็นวิธีที่มีการยอมรับในงานวิจัยอยู่แล้วว่าสามารถลดจำนวนพารามิเตอร์ได้อย่างน่าทึ่ง และลดได้ราว 40% แม้โมเดลจริงอาจไม่ได้ทำงานแบบนั้นเป๊ะ ๆ แต่สุดท้ายถ้ามันออกมาในรูปที่ประมาณค่า Transformer ปกติก็คงไม่น่าแปลกใจ
    • ค่าติดลบ อาจเพิ่มพลังในการแทนค่าได้
  • ฉลาดมาก ชอบงานละเอียดแบบนี้ และการเปลี่ยนแปลงก็น้อยจนดูเหมือนคนอื่นจะนำไปใช้ได้ง่าย ยอดเยี่ยม
    แต่ประโยคสุดท้ายในช่วงเกริ่นของหัวข้อ "2 Differential Transformer" ทำให้กังวลนิดหน่อย เขาบอกว่าใช้การปรับปรุงจากงานก่อนหน้า แต่จากบริบททางไวยากรณ์ยังไม่ชัดว่าการปรับปรุงนั้นถูกใส่ทั้งใน Transformer ปกติและ diff Transformer หรือไม่ ถ้าไม่ใช่ การเปรียบเทียบก็จะคลุมเครือ คำว่า "main difference" ในประโยคก่อนหน้าทำให้สัญญาณเตือนดังขึ้นทันที
    แน่นอนว่านักวิจัยที่มีเจตนาดีย่อมอาจรู้เรื่องนี้อยู่แล้วจนไม่รู้สึกว่าต้องชี้ให้ชัด แต่ในงานตีพิมพ์บางส่วนของวงการนี้ ระวังไว้มากเท่าไรก็ไม่เกินไป

    • เห็นด้วย ดูดีมากจริง ๆ มี perplexity ที่ดีขึ้น โดยรวมทั้งในแง่เวลาเทรน ต่อโทเค็นที่ใช้ฝึก และต่อขนาดโมเดล
      มันทำให้นึกถึงสถาปัตยกรรม MoE ซึ่งในโลกนั้นจะเลือกโมเดลขนาดเล็กที่เหมาะที่สุดมาจัดการงานอนุมานบางส่วนหรือทั้งหมด เลยสงสัยว่า MoE ได้ประโยชน์คล้ายกันหรือไม่ จากการที่ Transformer ถูกบังคับให้แยกแยะความเป็นไปได้ทางเลือกต่าง ๆ
      ไม่ว่าอย่างไร ถ้าตัวเลขเหล่านี้ยังคงอยู่ ก็น่าจะถูกนำไปใช้อย่างแพร่หลาย อย่างที่บอก แทบไม่เห็นข้อเสียเลยและก็ดูทำซ้ำได้ง่าย
    • การเปลี่ยนแปลงอีกสองอย่างที่พวกเขาพูดถึงนั้นถูกนำไปใช้อย่างแพร่หลายอยู่แล้ว และก็รวมอยู่ในบางโมเดลที่ใช้เป็นตัวเปรียบเทียบด้วย ดูเหมือนเขาเพียงแค่ลิสต์การเปลี่ยนแปลงเมื่อเทียบกับสถาปัตยกรรม Transformer ดั้งเดิมเพื่อความครบถ้วน
  • เช่นเดียวกับหลายสิ่งในโลกใหม่ของแมชชีนเลิร์นนิงนี้ มันน่าสับสนมากว่าทำไมสิ่งนี้ถึงใช้ได้จริง
    อุปมาเรื่องหูฟังตัดเสียงรบกวนช่วยได้บ้าง แต่ในกรณีนั้นเรารู้ชัดว่าอะไรคือสัญญาณและอะไรคือสัญญาณรบกวน ถ้ารู้แบบนั้นในกรณีนี้ด้วย ก็ไม่เข้าใจตั้งแต่แรกแล้วว่าทำไมต้องทำงานตัดสัญญาณรบกวน

    • softmax เดี่ยวไม่สามารถทำนายค่า 0 ได้อย่างแท้จริง และทำนายได้แค่ค่าที่เล็กมากเท่านั้น ถ้ามีค่าที่ต้องนำมาบวกจำนวนมาก ค่าที่เล็ก ๆ เหล่านี้จะผสมสิ่งที่ไม่เกี่ยวข้องเข้าไปในเอาต์พุตจำนวนมาก ทำให้ปนเปื้อนด้วยสัญญาณรบกวนตามที่บทความกล่าวไว้
      ที่แย่กว่านั้นคือกราเดียนต์ของค่า attention ต่ำ ๆ จะเล็กมาก ทำให้ต้องอัปเดตน้ำหนักหลายครั้งเพื่อย้อนแก้ความผิดพลาดเหล่านั้น ในทางกลับกัน ถ้านำเอาต์พุตของ softmax สองตัวมาลบกัน โมเดลจะสามารถทำนายน้ำหนักที่เป็น 0 อย่างแท้จริงสำหรับบางค่าได้ และยังคงมีการไหลของกราเดียนต์ที่สมเหตุสมผล
      ดังนั้นโมเดลรู้อยู่แล้วว่าอะไรคือสัญญาณรบกวน แต่ softmax เดี่ยวทำให้การกันสิ่งนั้นออกทำได้ยาก นอกจากนี้ ใน softmax เดี่ยว เอาต์พุตของทุกเฮดจะถูกบังคับให้อยู่ภายในconvex hullของเวกเตอร์ค่า แต่ในรูปแบบดัดแปลงนี้ แต่ละเฮดสามารถเลือก lambda ของตัวเองเพื่อย้ายช่วงเอาต์พุตออกไปนอก convex hull ที่ค่าต่าง ๆ กำหนดไว้ล่วงหน้าได้ จึงเพิ่มพลังในการแทนค่าของโมเดลโดยรวม
    • หูฟังตัดเสียงรบกวนน่าจะเป็นอุปมาที่ไม่ค่อยถูกต้องในที่นี้
      ตัวอย่างที่ดีกว่าคือสัญญาณแบบดิฟเฟอเรนเชียลที่ใช้ในระบบเสียงระดับมืออาชีพ และโปรโตคอลสัญญาณดิจิทัลจำนวนมาก เช่น Ethernet, HDMI, USB แทนที่จะใช้สายเส้นเดียวอ้างอิงกราวด์ จะส่งสัญญาณด้วยความต่างระหว่างสายสองเส้น สายทั้งสองขนสัญญาณเดียวกันแต่ขั้วตรงข้ามกัน และเพราะวิ่งขนานกัน สัญญาณรบกวนจากภายนอกจึงถูกกระทำกับทั้งคู่เท่า ๆ กัน
      แรงดันไฟฟ้าอาจเปลี่ยนไป แต่ความต่างแรงดันระหว่างสองสายยังคงเดิม เมื่อฝั่งรับนำแรงดันสองตัวมาลบกัน สัญญาณรบกวนก็หักล้างกันไปเอง
    • อย่าพยายามหาอุปมา แค่มองว่ามันเป็นการเพิ่มความสามารถทางคณิตศาสตร์ใหม่เข้าไปก็พอ มันทำให้เกิดattention เชิงลบได้ ทำให้เครือข่ายสามารถพูดได้ว่า "ฉันอยากลบการมีส่วนร่วมของโทเค็นนี้ออกจากการคำนวณ attention" ก่อนหน้านี้ทำได้แค่ลดว่าจะเพิ่มเข้าไปมากแค่ไหน
      วิธีง่าย ๆ ที่จะทำเช่นนี้คือเอา softmax ออกหรือใช้ sigmoid แต่ในทางปฏิบัติ softmax ดูจะทำงานได้ดีกว่า
    • สมมติฐานหนึ่งว่าทำไมมันถึงใช้ได้ คือมันช่วยบรรเทาข้อเสียของ RoPE
      พูดแบบง่าย ๆ RoPE คือกลยุทธ์สมัยใหม่ที่ให้ข้อมูลแก่โมเดลว่า query และ key อยู่ห่างกันแค่ไหนตอนทำ attention มันเป็นแนวทางที่ดีที่สุดในตอนนี้ แต่มีข้อเสียใหญ่คือมันทำให้การเชื่อมโยงบางอย่างระหว่างโทเค็นที่อยู่ไกลกันแรงเกินกว่าที่ต้องการมาก Xpos (https://arxiv.org/pdf/2212.10554) ก็เป็นงานของ Microsoft ที่จัดการปัญหาของ RoPE และถ้าดู Figure 1 หน้า 4 จะเห็นการตีความเชิงภาพของความแรง attention แบบคลื่นไซน์ ซึ่งจริง ๆ แล้วเราอยากให้มันเรียบลื่น
      มองว่าเหตุผลสำคัญที่ Differential Transformer ทำงานได้ดีโดยเฉพาะกับลำดับยาว ๆ คือ แม้ q1 และ q2 จะไม่ตรงกับโทเค็นใดเลย ความแรงเชิงสัมพัทธ์ของ RoPE ก็ยังมีค่าเดียวกันอยู่ จึงทำให้สัญญาณรบกวนหักล้างกัน เหลือไว้เฉพาะการจับคู่ที่ตั้งใจ แต่ก็ต้องแลกกับการที่ค่าที่ RoPE ใส่เข้ามาเดิมอ่อนลงไปบ้าง
      แน่นอนว่านี่เป็นเพียงสมมติฐานเท่านั้น สามารถตรวจสอบได้ง่ายด้วยการทดลองเปรียบเทียบทั้งสองแบบกับ baseline ที่ใช้ alibi attention (https://arxiv.org/pdf/2108.12409) alibi มีจุดแลกเปลี่ยนอีกแบบที่วิธีนี้ไม่ได้ช่วยลด แต่ถึงอย่างนั้นผลลัพธ์ก็น่าสนใจมาก
    • งานก่อนหน้าบางส่วนที่เกี่ยวข้องตรงนี้คือladder networks และในระดับที่เป็นการเปรียบเปรยอยู่บ้างคือ residual nets ทั้งสองอย่างสามารถตีความได้ว่าเป็นการฝึกโมเดลให้ลดข้อผิดพลาดของการทำนายก่อนหน้า แทนที่จะทำนายผลลัพธ์สุดท้ายโดยตรง
      สัญชาตญาณว่าทำไมมันถึงใช้ได้ ดูเหมือนจะอยู่ที่การทำให้ภูมิทัศน์ของ gradient descent เป็นมิตรกว่าเดิมเล็กน้อย จึงเรียนรู้เป็นขั้นเล็ก ๆ ได้ง่ายขึ้น เพราะตอนนี้ตัวเครือข่ายเองถูกออกแบบอย่างชัดเจนให้สอดคล้องกับแนวคิดที่ว่า ในช่วงแรกจะทำนายผิดมาก แล้วค่อย ๆ ดีขึ้นตามเวลา
  • ถ้าเข้าใจประโยค "Differential attention takes the difference between two softmax attention functions to eliminate attention noise" ถูกต้อง โครงสร้างนี้ก็ดูเหมือนเป็นจุดแลกเปลี่ยนที่ใช้หน่วยความจำ attention มากขึ้น 2 เท่า เพื่อแลกกับโมเดลที่คุณภาพสูงกว่า หรือใช้พารามิเตอร์น้อยลงที่คุณภาพใกล้เคียงกัน
    เมื่อดูส่วนที่ว่า "6.8B-size DIFF Transformer achieves a validation loss comparable to 11B-size Transformer, requiring only 62.2% of parameters" ก็เกิดคำถามหลายอย่าง เช่น ถ้ามีพารามิเตอร์เพียง 60% จะชดเชยกับการที่พื้นที่ attention เพิ่มเป็นสองเท่า จนทำให้มีลักษณะการใช้หน่วยความจำใกล้กับ Transformer แบบดั้งเดิมหรือไม่ และจุดแลกเปลี่ยนนี้แตกต่างอย่างมีนัยสำคัญระหว่างช่วงฝึกกับช่วงอนุมานหรือเปล่า

    • ผมเข้าใจว่าพารามิเตอร์เพิ่มเติมที่ต้องใช้สำหรับกลไก attention ตัวที่สองก็ถูกรวมอยู่ในพารามิเตอร์ 6.8Bนั้นแล้ว กล่าวคือเป็นจำนวนพารามิเตอร์รวมของโมเดล ไม่ใช่จำนวนสมมติที่ Transformer มาตรฐานจะมี ดังนั้นผลลัพธ์จึงน่าประทับใจเพิ่มขึ้นเป็นสองเท่า
      ในบทความมีข้อความว่า "We set the number of heads h = dmodel/2d, where d is equal to the head dimension of Transformer. So we can align the parameter counts and computational complexity." กล่าวอีกนัยหนึ่งคือพวกเขาลดจำนวน attention heads ต่อเลเยอร์ลงครึ่งหนึ่งเพื่อชดเชยส่วนนี้
    • ดูเหมือนว่าจะลดจำนวนเฮดทั้งหมดลงครึ่งหนึ่ง และเพิ่ม V กับ O เป็นสองเท่าเพื่อบรรเทาหน่วยความจำและการคำนวณที่เพิ่มขึ้น ผมยังไม่ได้ตรวจคณิตศาสตร์จริง ๆ แต่ถ้าไม่นับโอเปอเรชันราคาถูกอย่างการคูณด้วยค่าคงที่และการลบ จำนวน floating-point operations ก็น่าจะพอ ๆ กัน
    • การประหยัด RAM น่าจะหักล้างกัน แต่ความจุที่ต้องใช้เวลาเก็บบันทึกจะลดลง และเวลาเริ่มต้นโหลดครั้งแรกก็อาจลดลงตามความเร็วของสตอเรจและขนาดโมเดล ดังนั้นอาจเหมาะกับโมเดลระดับล่างสำหรับอุปกรณ์ผู้บริโภค
    • ขนาดของKV cacheจะเพิ่มเป็นสองเท่า และเมื่อขนาดบริบทใหญ่ ๆ มันอาจกลายเป็นระดับหลาย GB ได้พอสมควร
  • สงสัยว่าเบื้องหลังสมการ "We empirically find that the setting λᵢₙᵢₜ = 0.8 − 0.6 × exp(−0.3 · (l − 1)) works well in practice" นั้นมีที่มาอย่างไร

    • 0.8 ใช้ได้ดีนี่นา แต่ชั้นล่าง ๆ ลองตั้งค่าเริ่มต้นให้ต่ำกว่านี้หน่อยดีกว่า เอาราว ๆ 0.2 แล้วกัน โอเค ทีนี้ต้องมีสูตรที่ค่อย ๆ แกว่งอยู่ระหว่าง 0.2 ถึง 0.8 แล้วค่อย ๆ เข้าใกล้ 0.8 ดูเหมือนจะลองปรับตัวเลขอยู่ 20 นาทีแล้วคิดว่าประมาณนี้ใช้ได้
    • หลายสิ่งมากจริง ๆ ถูกปรับจูนให้เหมาะที่สุดด้วยวิธีแบบหมุนปุ่มอนาล็อกหรือไม่ก็ลองฟังลองดูจนกว่าจะรู้สึกว่าโอเค
    • อย่างน้อยในช่วงต้นของการฝึก สมการนี้ดูเหมือนจะทำให้พจน์ attention เชิงลบในชั้นต้น ๆ หรือค่า l ที่เล็ก มีค่าน้อยกว่าชั้นหลัง ๆ ฟังดูสมเหตุสมผล เพราะก่อนจะสรุปว่ามีบางตำแหน่งที่ควรดูจริง ๆ ก็คงอยากกระจายความสนใจไปทุกอย่างทีละนิดก่อน
      แต่ดูเหมือนผู้เขียนจะไม่ได้อภิปรายตัวเลือกนี้แยกไว้ในตัวบทความ
  • ประเด็นสำคัญที่ตอนแรกผมไม่เข้าใจคือ ถ้ากลุ่ม attention สองกลุ่มเรียนรู้สิ่งเดียวกันจะเกิดอะไรขึ้น เพราะมีการเอา attention mask มาลบกัน ถ้าทั้งคู่ให้ค่าใกล้เคียงกัน attention รวมก็จะตกลงไปเป็น 0 แล้ว loss จะสูงขึ้น
    ดังนั้นวิธีเดียวที่จะลด loss ได้คือฝึกให้ทั้งสองกลุ่มสนใจคนละอย่าง หนึ่งในกลยุทธ์ที่ง่ายที่สุดที่พวกมันจะเรียนได้ก็คือ อย่างที่บทความอ้างไว้ กลุ่มหนึ่งโฟกัสที่บริบทที่เกี่ยวข้อง อีกกลุ่มโฟกัสที่บริบทที่ไม่เกี่ยวข้อง แบบนั้นกลุ่มหนึ่งก็จะเรียนรู้noise ส่วนอีกกลุ่มก็เรียนรู้signal แน่นอนว่าในความเป็นจริงอาจไม่ได้แยกกันชัดขนาดนั้น แต่ในฐานะการทำให้ง่ายเพื่อความเข้าใจก็มีประโยชน์

    • ส่วนที่น่าสนใจคือไม่ได้ลบแบบตรง ๆ แต่ลบแค่บางส่วนของ softmax ตัวที่สอง
      ถ้าสำเนาทั้งสองเหมือนกัน ผลลัพธ์ softmax ก็ควรเหมือนกัน และผลต่างจะเป็น 0 ทุกตำแหน่ง ซึ่งก็สมเหตุสมผล แต่ถ้าลบสำเนาที่ถูกสเกลไว้ กระบวนการ normalize ของผลต่างดูเหมือนจะทำให้ค่าsignalเด่นกว่าค่า noise มากขึ้น เมื่อเทียบกับก่อน normalize
    • เรื่องที่ว่าถ้า attention สองกลุ่มเรียนรู้สิ่งเดียวกันจะเกิดอะไรขึ้น ทำให้นึกสงสัยว่ามีอุปมาเกี่ยวกับประสบการณ์และประโยชน์ของความประหลาดใจของเราเองได้ไหม
      ประมาณว่า attention head หนึ่งเพิ่มน้ำหนักเมื่อมันประหลาดใจกับสิ่งที่อีก head เรียนรู้ แต่ถ้าทั้งคู่เจอสิ่งเดียวกันก็ถือว่าไม่น่าแปลกใจนักและลดน้ำหนักลง
      ต้องยอมรับว่า "ความประหลาดใจ" กินพื้นที่ในฐานความรู้ของผมค่อนข้างมาก[1][2][3] ทั้งในฐานะอารมณ์เชิงอัตวิสัยและฟังก์ชันการปรับตัวของจิตใจ ซึ่งเป็นหนึ่งในระบบการปรับตัวที่ซับซ้อนที่สุดที่เรารู้จัก
      [1] https://plus.maths.org/content/information-surprise
      [2] https://blakeelias.name/papers/Multi-Agent-Cooperation-Intri...
      [3] https://complexity.simplecast.com/episodes/81/transcript
    • อาจมีโอกาสเล็กน้อยที่ทั้งคู่จะเรียนรู้สิ่งเดียวกัน แต่คงไม่น่าจะมีโอกาสมากพอจนกลายเป็นปัญหาหลัก
    • หรือฟังก์ชัน loss อาจให้โทษเมื่อทั้งสองเรียนรู้สิ่งเดียวกันก็ได้หรือเปล่า
  • สงสัยว่าตรงนี้ต้องแลกอะไรไปบ้าง น่าจะมี trade-off อยู่แน่ ๆ
    อยากรู้ด้วยว่ามันกระทบต่อความคิดสร้างสรรค์หรือความสามารถในการทำ interpolation ระหว่างแนวคิดหรือไม่ อาการหลอนกับความคิดสร้างสรรค์ดูเหมือนจะเกี่ยวข้องกันพอสมควร สำหรับผม อาการหลอนคือสิ่งที่เบี่ยงออกจากพื้นที่ interpolation ที่มนุษย์รู้สึกว่าเหมาะสม

    • ผมไม่เข้าใจว่าทำไมอาการหลอนถึงดูเหมือนเกี่ยวกับความคิดสร้างสรรค์ สำหรับผมมันก็แค่sampling error
      แน่นอนว่าความผิดพลาดอาจสร้างแรงบันดาลใจได้บ้างเป็นครั้งคราว แต่ความคิดสร้างสรรค์มีมากกว่าความผิดพลาดเยอะ
      โมเดลภาษาพวกนี้เป็นตัวทำนายโทเคนถัดไป โทเคนถัดไปถูกทำนายโดยการสุ่มจาก probability space ที่โมเดลปล่อยออกมา กระบวนการสุ่มนั้นอาจไม่เป็นเชิงกำหนดก็ได้
      อาการหลอนก็คือกรณีที่ผลจากการสุ่มนั้นให้โทเคนที่ประกอบกันเป็นประโยคที่เป็นเท็จหรือไม่ตรงเจตนา จะมองว่าทุกอย่างที่โมเดลปล่อยออกมาก็เป็นอาการหลอนได้เหมือนกัน แต่เราฝึกให้โมเดลปล่อยพื้นที่ที่มีโอกาสสูงกว่าจะหลอนสิ่งที่เราต้องการ ไม่อย่างนั้นมันก็จะปล่อยแต่ noise ไร้ความหมาย
      "อาการหลอน" เป็นคำที่แย่มากสำหรับสิ่งที่พยายามจะอธิบาย
    • หนึ่งใน trade-off คือความเร็วและหน่วยความจำ เพราะในบล็อก attention มีน้ำหนัก Q และ K มากขึ้นเป็นสองเท่า ทำให้ throughput บน H100 ของพวกเขาลดลงประมาณ 10% อยู่ในตาราง 7 ของภาคผนวก A
    • ไม่ใช่ว่าทุกอาการหลอนจะเป็นความคิดสร้างสรรค์ ลองนึกถึงแอปพลิเคชัน RAG ดู โมเดลควรต้องยึดตามเอกสารที่ให้มา
  • สงสัยว่าคุณค่าส่วนใหญ่ของงานนี้มาจากการหักล้างnoise เชิงตำแหน่งที่ RoPE สร้างขึ้นมากน้อยแค่ไหน อยากเห็นตารางที่เปรียบเทียบไม่ใช่แค่โมเดล RoPE ตรงนี้ แต่รวมถึงเวอร์ชัน alibi กับ baseline alibi ด้วย
    ถึงอย่างนั้นก็ยังเป็นการพัฒนาที่น่าทึ่งมาก และขอแสดงความยินดีกับนักวิจัย

  • สิ่งที่เกิดขึ้นตรงนี้คือ softmax เองดันค่าให้เป็น 0 ไม่ได้ แต่ถ้าเอา softmax map สองตัวมาลบกันจะสร้างเอาต์พุตเป็น 0ได้ ใช่ไหม

    • คำถามต่อเนื่องคือ ความเป็นไปได้ที่จะได้ 0 เป๊ะ ๆ มันต่ำมากไม่ใช่หรือ
    • หรือแม้แต่ค่าติดลบก็ยังเป็นไปได้
  • เป็นปัญหาที่น่าแก้ แต่ผมคิดว่าแนวทางนี้ผิดทาง
    ถ้าอยากรู้ว่าควรสนใจอะไรและบริบททั้งหมดเป็นอย่างไร มันควรทำแบบลำดับชั้น ถ้าเวกเตอร์ผลต่างถูกคำนวณจากอินพุตเดียวกับเวกเตอร์ attention ผมไม่เข้าใจว่าจะรู้ได้อย่างไรว่าควรแก้เวกเตอร์ attention อย่างถูกต้องแบบไหน

    • ท้ายที่สุดแล้ว ทุกอย่างก็ถูกปรับตามทิศทางที่อนุพันธ์จาก backprop บอกไว้ และเป็นสัดส่วนกับgradientนั้นไม่ใช่หรือ พูดอีกอย่างคือ ตราบใดที่ระบบ backprop ทำงานได้ เรื่องควรปรับน้ำหนักไปทางไหนก็คงไม่ใช่ปัญหา