2 คะแนน โดย GN⁺ 2024-05-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อสร้างคำตอบยาว ๆ การถอดรหัสแบบอัตถดถอย (AR decoding) ที่สร้างโทเคนทีละตัวคือคอขวดหลักของความหน่วง และ CLLM เป็นแนวทางที่พยายามลดปัญหานี้ด้วยการถอดรหัสแบบขนานทีละ n โทเคน
  • Consistency Large Language Models (CLLMs) ปรับจูน LLM ที่ผ่านการพรีเทรนมาแล้ว เพื่อให้เรียนรู้การแมปสถานะ n โทเคนใด ๆ ไปยังจุดคงที่เดียวกับผลลัพธ์ AR greedy ได้อย่างรวดเร็ว
  • Jacobi decoding ในทางทฤษฎีจะลู่เข้าไปยังผลลัพธ์เดียวกับการสร้างแบบ AR greedy แต่เมื่อใช้กับ LLM เดิม ๆ กลับเพิ่มความเร็วได้จำกัดเพียงเฉลี่ยราว 1.05 เท่า ทำให้ใช้งานจริงได้ไม่มากนัก
  • CLLM แสดงความเร็วในการสร้างที่เพิ่มขึ้น 2.4 เท่า~3.4 เท่า ในการทดลองกับ Spider, Human-Eval, GSM8k และ MT-bench และได้รับการประเมินว่าอยู่ในระดับใกล้เคียงหรือดีกว่าเทคนิคอนุมานเร็วอย่าง Medusa2 และ Eagle
  • ระหว่างอนุมานไม่จำเป็นต้องใช้ คอมโพเนนต์โมเดลเสริม หรือแก้สถาปัตยกรรมของโมเดลเป้าหมาย จึงสามารถมุ่งปรับปรุงทั้งความเร็วและประสิทธิภาพการใช้หน่วยความจำได้

คอขวดการถอดรหัสที่ CLLM มุ่งแก้

  • LLM ถูกใช้ในหลายด้าน เช่น การเขียนโปรแกรม กฎหมาย และคำแนะนำด้านสุขภาพ แต่ในขั้นตอนอนุมานโดยทั่วไปจะสร้างโทเคนทีละตัวด้วย การถอดรหัสแบบอัตถดถอย (AR decoding)
  • ยิ่งคำตอบยาวขึ้น วิธีสร้างทีละโทเคนก็ยิ่งทำให้ความหน่วงเพิ่มขึ้น และเวลารอที่ผู้ใช้รับรู้ได้ก็ยาวนานขึ้น
  • วิธีอนุมานเร็วที่มีอยู่เดิมมักต้องแก้สถาปัตยกรรม ใช้คอมโพเนนต์เสริม หรือใช้โมเดลร่าง เพื่อสร้างหลายโทเคนในครั้งเดียว

วิธีทำงานและข้อจำกัดของ Jacobi decoding

  • Jacobi decoding เป็นวิธีที่เริ่มจากการวนซ้ำแบบจุดคงที่ของ Jacobi และ Gauss-Seidel และได้รับการพิสูจน์แล้วว่าใน greedy decoding จะให้ผลเหมือนกับการสร้างแบบ AR
  • เปลี่ยนการสร้างแบบลำดับให้เป็นระบบของตัวแปร n ตัวและสมการไม่เชิงเส้น n สมการ เพื่อให้คำนวณแบบขนานได้ด้วยการวนซ้ำ Jacobi
  • ลำดับการทำงานโดยละเอียดมีดังนี้
    • จากพรอมป์ต์อินพุต สุ่มเดา n โทเคน ถัดไป
    • ใส่พรอมป์ต์และลำดับ n โทเคนเข้าไปใน LLM แล้วอัปเดตซ้ำ ๆ
    • เมื่อลำดับไม่เปลี่ยนแปลงอีก จะถือว่าถึง จุดคงที่ (fixed point)
    • ลำดับ n โทเคนสุดท้ายจะลู่เข้าไปยังผลลัพธ์ที่ AR decoding จะสร้างภายใต้กลยุทธ์ greedy
  • เส้นทางจากการสุ่มเดาเริ่มต้นไปจนถึงผลลัพธ์สุดท้ายของการสร้างแบบ AR เรียกว่า วิถี Jacobi (Jacobi trajectory)
  • Jacobi decoding แบบพื้นฐานเมื่อใช้กับ LLM จริงให้ความเร็วเพิ่มขึ้นเพียงเฉลี่ยประมาณ 1.05 เท่า เมื่อเทียบกับ AR decoding
    • LLM ที่เรียนรู้ด้วย AR จะทำนายโทเคนถัด ๆ ไปให้ถูกต้องได้ยาก หากโทเคนก่อนหน้ามีข้อผิดพลาด
    • การวนซ้ำ Jacobi ส่วนใหญ่แก้ไขได้เพียงโทเคนเดียวในลำดับ n โทเคน ทำให้วิถียาวขึ้น
  • Lookahead decoding และ speculative decoding พยายามลดความไม่มีประสิทธิภาพของ Jacobi decoding และ AR decoding เดิม แต่ทำให้เกิดต้นทุนหน่วยความจำเพิ่มเติมระหว่างอนุมาน

เป้าหมายการฝึกของ Consistency LLM

  • CLLM เป็นวิธีปรับ LLM ที่ผ่านการพรีเทรนมาแล้วให้เคลื่อนไปยัง จุดคงที่ ได้อย่างสม่ำเสมอจากจุดใด ๆ ในวิถี Jacobi
  • เป้าหมายนี้คล้ายกับเป้าหมายของ consistency models ซึ่งเป็นเทคนิคเร่งความเร็วโมเดล diffusion
  • ใช้วิถี Jacobi ที่เก็บจากโมเดลเป้าหมาย เพื่อฝึกโมเดลด้วย loss ที่ส่งเสริม การลู่เข้าในขั้นตอนเดียว ระหว่างการวนซ้ำ Jacobi
  • การฝึกเพื่อเปลี่ยนโมเดลเป้าหมายแต่ละตัวเป็น CLLM ประกอบด้วยสองส่วน
    • การเตรียมวิถี Jacobi
      • สำหรับแต่ละพรอมป์ต์ จะรัน Jacobi decoding ตามลำดับในทุกช่วงตัดทีละ n โทเคน
      • ลำดับคำตอบทั้งหมดจะอยู่ในรูปของการนำจุดคงที่ต่อเนื่องหลายจุดมาต่อกัน
      • แต่ละลำดับที่สร้างขึ้นระหว่างวิถีจะนับเป็นหนึ่งรายการข้อมูลฝึก
      • ใช้การตัดทีละ n โทเคนเพื่อหลีกเลี่ยงความช้าจากการประเมินอินพุตยาวทั้งหมดในคำตอบยาว
    • การปรับเหมาะร่วมกันของ consistency loss และ AR loss
      • consistency loss ช่วยชี้นำให้ทำนายหลายโทเคนได้ในครั้งเดียว
      • AR loss ช่วยรักษาคุณภาพการสร้าง โดยไม่ให้ CLLM เบี่ยงออกจากการกระจายของ LLM เป้าหมาย

องค์ประกอบของ loss function

  • กำหนดให้ LLM เป้าหมายเป็น p และ CLLM เป็น โดย ถูกเริ่มต้นด้วยพารามิเตอร์ของ p
  • Global consistency (GC) loss ชี้นำให้ CLLM ส่งออกจุดคงที่ y* เมื่อรับสถานะใด ๆ y ในวิถี Jacobi เป็นอินพุต
  • Local consistency (LC) loss ปรับให้สถานะที่อยู่ติดกันในวิถี Jacobi คือ y(j) และ y(j+1) ให้เอาต์พุตเดียวกัน
  • ระยะห่างระหว่างการกระจาย D(·||·) ใช้ตัวเลือกตามที่อภิปรายในวิธี GKD และในการทดลองนี้ใช้ forward KL เป็นหลัก
  • AR loss ใช้ loss แบบอัตถดถอยดั้งเดิมจากผลลัพธ์การสร้าง l ของ LLM เป้าหมาย p เพื่อป้องกันไม่ให้เบี่ยงออกจากการกระจายของ LLM เป้าหมาย
  • loss การฝึกทั้งหมดประกอบด้วยผลรวมของ consistency loss และ AR loss ที่มีน้ำหนัก w

การตั้งค่าการทดลองและผลลัพธ์

  • การทดลองครอบคลุมงานเฉพาะโดเมนสามแบบและเบนช์มาร์กสนทนาแบบโดเมนเปิดหนึ่งรายการ
    • Spider: text-to-SQL
    • Human-Eval: การเติมโค้ด Python ให้สมบูรณ์
    • GSM8k: คณิตศาสตร์
    • MT-bench: การสนทนาโดเมนเปิด
  • ใช้ fine-tuned coder LLM, Deepseek-coder-7B-instruct, LLaMA-2-7B, ABEL-7B-001 เป็นโมเดลเป้าหมายตามแต่ละงาน
  • ทั้งการฝึกและการประเมินดำเนินการบนเซิร์ฟเวอร์ NVIDIA A100 40GB
  • ในโดเมนเฉพาะ CLLM แสดงการเพิ่มความเร็วสูงสุดเมื่อเทียบกับ baseline เช่น โมเดลเป้าหมายเดิม, Medusa2 และ speculative decoding
  • ใน MT-bench เมื่อ CLLM ที่ฝึกจาก LLaMA2-7B ด้วยชุดข้อมูล ShareGPT ใช้ร่วมกับ lookahead decoding จะทำความเร็วเพิ่มขึ้นได้ใกล้เคียงกับ Medusa2
    • คะแนน MT-bench ก็อยู่ในระดับที่เทียบเคียงได้
    • CLLM ไม่จำเป็นต้องแก้สถาปัตยกรรมเดิมของโมเดลเป้าหมาย
    • ไม่มีคอมโพเนนต์เสริม จึงมีประสิทธิภาพด้านหน่วยความจำสูง

ต้นทุนการฝึก

  • ต้นทุนการปรับจูน CLLM ถูกนำเสนอว่าอยู่ในระดับปานกลาง
  • LLaMA-7B ใช้ผ่านเพียงประมาณ 1 ล้านโทเคน ในชุดข้อมูล Spider และทำความเร็วเพิ่มขึ้นได้ 3.4 เท่า
  • ในกรณีชุดข้อมูลขนาดใหญ่ เช่น CodeSearchNet-Python ใช้เพียง 10% ของชุดข้อมูลในการสร้างวิถี Jacobi และได้ความเร็วเพิ่มขึ้นประมาณ 2.5 เท่า
  • จำนวนโทเคนรวมประมาณได้จากสูตรต่อไปนี้
    • จำนวนวิถีเฉลี่ยต่อพรอมป์ต์ × ความยาววิถีเฉลี่ย × จำนวนพรอมป์ต์
  • ต้นทุนการฝึกโดยประมาณตามชุดข้อมูลมีดังนี้
    • Spider: 2 ล้านโทเคน, < 0.01% ของต้นทุนพรีเทรน
    • CodeSearchNet-Python: 100 ล้านโทเคน, ~0.1% ของต้นทุนพรีเทรน
    • GSM8K: 10 ล้านโทเคน, ~0.01% ของต้นทุนพรีเทรน
    • ShareGPT: 200 ล้านโทเคน, ~0.2% ของต้นทุนพรีเทรน

การเดินหน้าเร็วและโทเคนคงที่

  • โดยทั่วไป LLM เป้าหมายจะสร้างโทเคนที่ถูกต้องได้เพียงหนึ่งตัวในการวนซ้ำ Jacobi หนึ่งครั้ง
  • ใน CLLM พบปรากฏการณ์ การเดินหน้าเร็ว (fast forwarding) ที่ทำนายโทเคนต่อเนื่องหลายตัวได้ถูกต้องในการวนซ้ำ Jacobi หนึ่งครั้ง
  • ใน LLM เป้าหมาย บางครั้งโทเคนที่ถูกสร้างถูกต้องไว้ก่อนหน้าอาจเปลี่ยนเป็นโทเคนผิดในการวนซ้ำถัดไป
  • CLLM แสดงความสามารถในการทำนายโทเคนที่ถูกต้องล่วงหน้า แม้โทเคนก่อนหน้าจะมีข้อผิดพลาด และยังคงรักษาโทเคนนั้นไว้ในการวนซ้ำต่อ ๆ ไป
    • โทเคนลักษณะนี้เรียกว่า โทเคนคงที่ (stationary tokens)
  • การเดินหน้าเร็วและโทเคนคงที่ทำให้ Jacobi decoding ของ CLLM ลู่เข้าเร็วขึ้น และมีส่วนช่วยเพิ่มความเร็วในการสร้าง

การเรียนรู้รูปแบบทางภาษา

  • มีข้อสังเกตว่า CLLM เรียนรู้แนวคิดทางภาษาที่เรียกว่า คำปรากฏร่วม (collocations) ผ่านการฝึก
  • คำปรากฏร่วมหมายถึงลำดับของคำหรือคำศัพท์ที่ปรากฏร่วมกันบ่อยกว่าความบังเอิญแบบสุ่ม
  • มีตัวอย่างคำปรากฏร่วมทั้งในภาษาธรรมชาติและโค้ด
    • ภาษาธรรมชาติ: talk to, remind … of …
    • โครงสร้างกริยา+คำนาม: make a decision, catch a cold
    • โครงสร้างไวยากรณ์ตามโดเมน: SELECT … FROM …, if … else
  • เป้าหมาย consistency generation กระตุ้นให้ CLLM อนุมานโครงสร้างเหล่านี้ได้จากทุกจุดในวิถี Jacobi และทำนายหลายคำพร้อมกันเพื่อลดจำนวนขั้นตอนการวนซ้ำ

แหล่งข้อมูลและโค้ด

  • ดูรายละเอียดเพิ่มเติมได้ใน 论文
  • มี implementation ให้ใช้งานใน codebase
  • CLLM checkpoints ก็เปิดเผยต่อสาธารณะแล้ว

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

 
GN⁺ 2024-05-09
ความคิดเห็นใน Hacker News
  • คล้ายกับประสบการณ์ตอนที่เคยเรียนคลาส "วาดอิสระ" (ไม่มีการบรรยาย)
    ตอนเด็ก ๆ มักมีคนบอกว่าฉันวาดรูปเก่ง แต่พอมาคิดดูจริง ๆ สิ่งที่ฉันจำได้คือการวาดภาพรายละเอียดคล้าย ๆ เดิมซ้ำไปซ้ำมา หรือใช้เวลานานมากกว่าจะวาดเสร็จ ฉันคิดว่าถ้ามีเวลาและความอดทนมากพอ ใคร ๆ ก็วาดฉากให้ออกมาดูน่าเชื่อถือได้พอสมควร
    ในคลาสไม่มีทั้งกฎและการสอน แต่ละคนเอาวัสดุที่ตัวเองอยากใช้มา บางคนเอาหมึก บางคนเอาดินสอ ส่วนฉันเอาถ่านมา และสิ่งเดียวที่กำหนดไว้คือช่วงเวลาระหว่างท่าโพสของแบบ ตอนแรก ๆ แต่ละท่าใช้เวลาสั้นมากประมาณ 1 นาที แล้วค่อย ๆ ยาวขึ้นไปจนถึงท่าละ 5 นาที และจะฉีกภาพทิ้งแล้ววาดท่าเดิมใหม่เมื่อไรก็ได้
    การวอร์มอัพสั้น ๆ บังคับให้ต้องจับสัดส่วนและโครงร่างให้ได้ตั้งแต่ครั้งแรกจริง ๆ และต่างจากความเชื่อที่ว่าความรีบร้อนจะทำให้พัง ดูเหมือนว่าเวลาฝึกหรือขัดเกลาทักษะ ความเร่งรีบจะทำหน้าที่เป็นแรงกดดันที่ช่วยกระตุ้นความใส่ใจและการเรียนรู้
    ฉันมั่นใจว่าแม้ก่อนเข้าเรียนก็น่าจะวาดภาพคุณภาพใกล้เคียงกันได้ แต่คงใช้เวลานานกว่าเดิม 5~10 เท่า วิธีที่บังคับไม่ให้วกวนและทำให้รู้สึกถึงราคาของความผิดพลาดจากความใจร้อนนั้นได้ผลดี
    แต่ก็ยังรู้สึกเสียดายที่เรียกเทคนิคนี้ว่า Consistency ชื่อนี้เหมาะกับการปรับปรุงคุณภาพมากกว่า แต่ดูไม่ค่อยเหมาะกับการเพิ่มความเร็วในการอนุมานนัก ถึงอย่างนั้นก็เข้าใจความหมายว่าเป็น "ความสอดคล้องกับผลลัพธ์ที่ในที่สุดจะได้ออกมาถ้าสร้างทีละโทเค็น" ถ้าจะให้ตั้งชื่อเอง ฉันอยากเรียกมันว่า Proficiency LLM มากกว่า คือยังคาดหวังผลลัพธ์เดิม แต่ไปถึงข้อสรุปเดียวกันโดยไม่ต้องสะดุดสะดุดคลำทางไป

    • ในฐานะผู้เขียน CLLM ขอบคุณที่มาแบ่งปันประสบการณ์และมุมมอง กระบวนการขัดเกลาทักษะการวาดดูคล้ายกับ กระบวนการฝึก CLLM อยู่เหมือนกัน เพียงแต่ตอนนี้ปัจจัยกดดันในระหว่างการฝึก CLLM ยังไม่ได้อยู่ในรูปแบบที่โหดขึ้นเรื่อย ๆ
      สำหรับการวาดรูป คุณสามารถกำหนดเวลาที่ให้ในแต่ละครั้งแล้วค่อย ๆ ลดให้สั้นลงได้ ใน CLLM ดูเหมือนว่าจะทำให้กระบวนการฝึกยากขึ้นได้ โดยทำให้มันต้องแมปสถานะที่อยู่ไกลจากสถานะสุดท้ายมากขึ้นเรื่อย ๆ บนวิถี Jacobi ไปยังสถานะสุดท้าย
      คำว่า "consistency" ถูกยืมมาจากความคล้ายกันระหว่าง consistency model สำหรับการสร้างภาพแบบ diffusion กับ consistency LLM และเป็นเพราะกระบวนการฝึกมีความคล้ายกัน
    • ฉันเคยมีประสบการณ์ที่น่าสนใจใน ชั้นปฏิบัติการสัตววิทยาไม่มีกระดูกสันหลัง ช่วงฤดูร้อนครั้งหนึ่ง
      นักศึกษาจะเดินเข้าห้องแล็บ รับตัวอย่าง แล้วคำสั่งที่ได้รับมีแค่ว่า "วาดสิ่งนี้ภายใน 30 นาที เริ่มได้"
      ไม่มีคำพูดอย่าง "ต้องวาดแบบนี้" หรือ "อันนี้ทำได้ อันนั้นห้ามทำ" ที่จริงแล้วมันแทบจะเป็นแนวว่า "ไม่สนว่าคุณจะกังวลหรือคิดว่าตัวเองวาดไม่เป็น เลิกแก้ตัวแล้ววาดเดี๋ยวนี้" มากกว่า
      พวกเราทุกคนก็วาด และตลอดทั้งหน้าร้อนก็มีสัตว์เข้ามาเพิ่มอีกเรื่อย ๆ พร้อมกับทำแบบฝึกเดิมซ้ำไปซ้ำมา จนทุกคนพัฒนาขึ้นอย่างมาก
      สิ่งที่วิชานั้นสอนคือ ใคร ๆ ก็วาดได้ จริง ๆ แล้วทุกคนวาดได้ ทัศนคติของทั้งกลุ่มเปลี่ยนจาก "ไม่แน่ใจด้วยซ้ำว่าทำได้ไหม" เป็น "ทำได้อยู่แล้ว มันง่าย เป็นเรื่องปกติ และไม่ได้พิเศษอะไร"
      เป็นแนวทางที่อยากแนะนำมาก และเป็นหนึ่งในวิชามหาวิทยาลัยที่ทั้งให้ความรู้สึกเป็นอิสระและน่าทึ่งที่สุดเท่าที่ฉันเคยเรียน
    • โดยทั่วไปแล้วระบบมักจะมีประสิทธิภาพมากขึ้นเมื่ออยู่ภายใต้ ความกดดัน แต่ในขณะเดียวกันก็อาจถูกผลักเข้าไปสู่ local optimum ได้ด้วย ดังนั้นทุกอย่างย่อมมีทั้งข้อดีและข้อเสีย
  • ผู้เขียนบอกว่า การถอดรหัสแบบ Jacobi เทียบเท่ากับการถอดรหัสแบบ autoregressive เชิงละโมบ แต่ในทางปฏิบัติ เวลาพยายามหลีกเลี่ยงคำตอบที่ซ้ำซากหรือกว้างเกินไป เราก็มักอยากตั้งค่า sampling temperature ให้สูงกว่า 0 ไม่ใช่หรือ
    ฉันไม่รู้จักกลยุทธ์การถอดรหัสนี้เลย จึงอาจพลาดวิธีง่าย ๆ ที่สะท้อนประเด็นนี้อยู่ก็ได้

    • เป็นคำถามที่ดีมาก เรากำลังทำงานอย่างจริงจังเพื่อรองรับ กลยุทธ์การสุ่มตัวอย่าง แบบอื่นที่ไม่ใช่การสุ่มเชิงละโมบ
      ในบริบทของการฝึก CLLM แทนที่จะแมปไปยังเป้าหมายการฝึกที่เป็นจุดตรึงแบบสถิตซึ่งได้จากการถอดรหัส Jacobi เราเรียกมันว่าจุดตรึงแบบพลวัต ถ้าอยากดูความคืบหน้าใหม่ ๆ ก็ติดตามที่ GitHub repository ได้
    • เห็นด้วย การตรวจว่ามีโทเค็นไหนเป็นตัวเลือกค่าสูงสุดนั้นทำได้ง่าย แต่การตรวจว่าโทเค็นใดปรากฏขึ้นตามความน่าจะเป็นที่ต้องการนั้นดูยากกว่ามาก
      ขั้นตอนการปรับจูนละเอียดที่ฝึกให้วิถีเข้าใกล้การเติมเต็ม n-โทเค็นที่มีสถิติตามต้องการก็น่าจะยังทำได้อยู่ แต่ฉันไม่แน่ใจว่าจะใช้สิ่งใดมาแทนขั้นตอน การตรวจจุดตรึง ได้ อาจจะเป็นประมาณว่า "ตรวจว่าค่านี้อยู่เหนือค่าเกณฑ์คงที่สำหรับ likelihood หรือไม่" ก็ได้
  • มันดูเหมือนการปรับให้เหมาะสมที่ค่อนข้างเสี่ยง ถ้าทำก่อนที่จะ เข้าใจจริง ๆ ว่าภายใน LLM เกิดอะไรขึ้น ตัวอย่างเช่น คนที่เชื่อในการตีความเชิงเรขาคณิตก็คงมีสิ่งจะพูด และในกรณีที่ใช้โทเค็นสำหรับ "เติมช่องว่าง" มันก็ดูเหมือนอาจเป็นผลเสียได้
    อีกทั้งสมมติฐานที่ว่า "สร้างประโยคที่สมบูรณ์ในใจก่อน แล้วค่อยพูดออกมาทีละคำ" ก็เป็นเพียงสมมติฐาน ไม่ใช่ข้อเท็จจริงสากล และดูเหมือนจะลดทอนความซับซ้อนของสิ่งที่เกิดขึ้นในจิตใจเรามากเกินไป ก่อนที่จะพูดหรือพิมพ์ออกมาจริง ๆ เรามีแผนที่สมบูรณ์อยู่แล้วจริงหรือ ในฐานะชาวพุทธ ฉันมองว่านั่นใกล้เคียงกับภาพลวงตาเสียมากกว่า และยิ่งไปกว่านั้นแล้ว ความคิดที่เกิดขึ้นพร้อมกันล่ะ เราคิดแบบเป็นเส้นตรงในระดับประโยคจริงหรือ
    อย่างไรก็ดี คณิตศาสตร์ก็ค่อนข้างเจ๋งมาก

    • การปรับให้เหมาะสมนี้ไม่ส่งผลต่อผลลัพธ์ของ LLM และรับประกันได้ว่าจะสร้าง ผลลัพธ์ที่เทียบเท่ากัน กับการถอดรหัสโดยตรง
      อย่าปฏิบัติต่อ LLM ราวกับเป็นสิ่งมหัศจรรย์ที่คล้ายจิตใจมนุษย์ มันก็เป็นเพียงโปรแกรมอีกตัวที่สร้างประโยคที่ฟังดูสมเหตุสมผลเท่านั้น
    • สมมติฐานนั้นอาจมีประโยชน์ในบริบทนี้ แต่ก็ดูค่อนข้างชัดว่ามันไม่ใช่ความจริง
      ถ้าขอให้คนอธิบายเหตุการณ์ในอดีตที่ซับซ้อนด้วยหลายแนวทาง ผู้คนมักสอดแทรกเศษเสี้ยว ส่วนเสริม และประเด็นแตกแขนงเข้าไปอย่างรวดเร็วกลางประโยคเพื่อให้ครอบคลุมขอบเขตทั้งหมดของเหตุการณ์ ฉันไม่คิดว่าเคยเห็น สมมติฐานเรื่องความละเอียดระดับประโยค ในบริบททางวิทยาศาสตร์ที่จริงจังนัก
    • ฉันคงพูดแทนทุกคนไม่ได้ แต่อย่างน้อยสำหรับฉัน ฉันไม่ได้สร้างประโยคที่สมบูรณ์ไว้ในหัวก่อนพูด
      บางครั้งก็ไปติดทางตันทางไวยากรณ์กลางประโยค จนต้องปิดความคิดด้วยคำหรือวลีที่ฟังดูแปลก ๆ หรือไม่ก็หยุดแล้วเริ่มพูดใหม่ตั้งแต่ต้น
    • แม้ว่าคำจะสามารถแยกออกเป็นหน่วยย่อยกว่านั้นซึ่งมีความหมายในหลายภาษาได้ แต่เราก็ดูไม่ได้สร้างคำขึ้นมาแบบลำดับทีละส่วนประกอบจากระดับที่ต่ำกว่านั้น
      และก็ไม่เห็นมีเหตุผลชัดเจนว่าปรากฏการณ์นี้จะพังลงอย่างฉับพลันในระดับ ประโยค
    • ฉันสงสัยว่าการตีความเชิงเรขาคณิตคืออะไร
  • น่าแปลกใจมากที่เรื่องนี้ยังไม่ได้รับความสนใจมากกว่านี้ ดูเหมือนว่าจะให้ประโยชน์ด้าน ประสิทธิภาพการอนุมาน อย่างชัดเจน
    ต้นทุนการ fine-tune นี้สมเหตุสมผล และอยู่ที่ประมาณ 0.01% ของต้นทุน pretraining เดิม อีกทั้งผลลัพธ์ด้านประสิทธิภาพก็ดูค่อนข้างสม่ำเสมอ

    • ดูเหมือนเป็นผลลัพธ์ที่ใหญ่มากสำหรับประสิทธิภาพของ LLM
      ผมไม่ค่อยรู้จักงานวิจัยอื่นที่เสนอว่าสามารถเพิ่ม ประสิทธิภาพการอนุมานของ LLM ได้มากขนาดนี้ มีมาก่อนหน้านี้ไหม?
      ยิ่งถ้ายังคงคุณภาพเอาต์พุตไว้ได้ ปรับปรุงได้ทั้ง latency ของคำถามและ throughput โดยรวม ไม่ต้องใช้การคำนวณเพิ่ม และยังใช้งานได้จริงพอสมควรโดยไม่เพิ่มความซับซ้อนมากนัก ก็ยิ่งน่าสนใจ
      มันต่อยอดมาจากงานด้านการถอดรหัสแบบขนาน/Jacobi ดังนั้นอาจมองได้ว่า insight เองเป็นการพัฒนาแบบค่อยเป็นค่อยไป งานก่อนหน้านี้ก็จำเป็นและสำคัญ แต่ผลลัพธ์นี้อาจเป็นตัวที่ดึงคุณค่าในโลกจริงออกมาจากศักยภาพของการถอดรหัสแบบขนานได้
    • ประโยชน์ด้านการอนุมานที่ใกล้เคียงหรือมากกว่านี้สามารถได้จาก speculative decoding ซึ่งมีการใช้งานแพร่หลายอยู่แล้ว
      เพราะงั้นงานนี้จึงน่าสนใจมาก และเท่าที่ผมรู้ก็เคยมีความพยายามลักษณะนี้มาก่อนแต่ไม่ค่อยสำเร็จนัก อย่างไรก็ตาม ผลกระทบในทางปฏิบัติจะใหญ่แค่ไหนยังไม่ชัดเจน
    • ขอบคุณที่สนใจงานของเรา การใช้ consistency loss + AR loss แล้วฝึกเพียงบางส่วนของชุดข้อมูลก็ให้การเพิ่มความเร็วได้มากแล้ว โดยมีต้นทุนอยู่ที่ระดับ 0.01% ของ pretraining
      ถ้าฝึกด้วยข้อมูลมากขึ้น ความเร็วก็จะเพิ่มขึ้นอีก เพราะโมเดลสามารถเรียนรู้จาก collocation และรูปแบบวลีที่พบบ่อยกว่าได้
      ดูรายละเอียดเพิ่มเติมได้ในตัวงานวิจัย และเรายังยืนยันได้ด้วยว่าการเพิ่มความเร็วจะเริ่มอิ่มตัวเมื่อขนาดข้อมูลฝึกใหญ่ขึ้น
  • ตอนแรกผมนึกว่าเป็นงานสาย Medusa ที่ใช้ unembed head เพิ่มเพื่อเดาโทเค็นถัดไป แต่ไม่ใช่เลย
    สุดยอดมาก ไม่ต้องใช้พารามิเตอร์เพิ่ม แค่เพิ่ม auxiliary training loss เท่านั้น

    • จุดร่วมเดียวระหว่าง Medusa กับ CLLM คือทั้งคู่ฝึกหรือปรับ LLM เพื่อให้อนุมานได้เร็วขึ้น
      วิธีฝึกและวิธีถอดรหัสต่างกันโดยสิ้นเชิง และอย่างที่คุณชี้ไว้ CLLM ไม่ต้องใช้พารามิเตอร์เพิ่มหรือการตั้งค่า attention mask สำหรับการตรวจสอบแบบ tree-based
  • ดูเหมือนว่าอีกไม่นานคนจะเริ่มตระหนักว่าอาจไม่จำเป็นต้องฝึกโมเดลเลย
    สิ่งที่ต้องการคือ การทำดัชนีและการสุ่มตัวอย่าง ที่ดี
    โดยแก่นแท้แล้ว ในระดับหนึ่ง LLM ทุกตัวอาจมองได้ว่าเป็นฐานข้อมูลของชุดข้อมูล และมีอินเทอร์เฟซภาษาธรรมชาติที่ยอดเยี่ยมครอบอยู่ด้านบน
    ทั้งสองอย่างเป็นเพียงวิธีที่ต่างกันในการสำรวจข้อมูลที่เก็บไว้

    • LLM สามารถสร้างข้อมูลที่ไม่มีอยู่ในชุดข้อมูลฝึกได้อย่างง่ายดาย
      LLM ไม่ได้สำรวจข้อมูลที่เก็บไว้ LLM ไม่ใช่ ฐานข้อมูล ของข้อมูลฝึก
    • แต่การทำดัชนีก็เป็นการเรียนรู้เหมือนกัน แค่ไม่ได้ใช้ end-to-end gradient descent
    • โมเดลมีขนาดเล็กกว่าชุดข้อมูลฝึกที่มันบีบอัดไว้หลายลำดับขนาด ดังนั้นมันจึงไม่อาจเทียบเท่ากับฐานข้อมูลนั้นได้
    • ถ้าอย่างนั้นคุณอาจชอบงานวิจัย Infinigram มีการพูดถึงกันเมื่อไม่นานมานี้
      https://news.ycombinator.com/item?id=40266791
  • มีที่ไหนที่คนไม่ค่อยรู้เรื่องอย่างผมจะไป "ถามผู้เชี่ยวชาญ AI" ได้ไหม?
    อย่างเช่นผมอยากถามว่าทำไม LLM ถึงไม่ตอบแบบกำหนดตายตัวเหมือนกันทุกครั้ง ทั้งที่ได้รับพรอมป์ต์เดียวกัน
    ผมอยากเรียนรู้เรื่องนี้ และอาจต้องลองตามวิดีโอ YouTube แนว "สร้าง LLM ใน 1 ชั่วโมง" ดูก็ได้

    • ในซอฟต์แวร์มีตัวสร้างตัวเลขสุ่มที่ใช้เลือกหนึ่งตัวจากบรรดา โทเค็นถัดไปที่เป็นผู้สมัคร ซึ่งโมเดลให้น้ำหนักไว้ตามความน่าจะเป็นอยู่จริง ๆ
      ในกระบวนการเลือกนี้อาจมีปุ่มปรับหลายอย่างที่ใช้บังคับลักษณะของคำตอบ หากคุณต้องการให้เป็นแบบกำหนดตายตัวและเข้าถึงซอฟต์แวร์ได้โดยตรง ก็สามารถตั้งเป็น top-k = 1 หรือ temperature = 0.0 ได้ ขึ้นอยู่กับซอฟต์แวร์ที่ใช้
      โดยทั่วไปค่าเริ่มต้นมักไม่เป็นแบบกำหนดตายตัว เพราะถ้าทำให้กำหนดตายตัวเต็มที่ คุณภาพผลลัพธ์มักจะไม่ค่อยดี
    • คำตอบเรื่องนี้ดูได้จากวิดีโอของ 3blue1brown
      โมเดล LLM จะส่งออกเวกเตอร์ความน่าจะเป็นของโทเค็นต่าง ๆ และผู้ใช้ LLM จะใช้ความสุ่มเลือกโทเค็นจากรายการที่มีความเป็นไปได้สูง
    • เพราะโดยแก่นแล้ว LLM คือ เมทริกซ์ความน่าจะเป็น
      เมื่อป้อนพรอมป์ต์เข้าไป มันจะคำนวณความน่าจะเป็นของคำถัดไป แล้วทำซ้ำกระบวนการนั้นจนกลายเป็นประโยคในที่สุด ความน่าจะเป็นที่เรียนรู้มานั้นอิงจากข้อมูลฝึก
      ด้วยความที่เป็นโมเดลความน่าจะเป็นแบบนี้ จึงไม่กำหนดตายตัว 100% และนอกจากนี้โมเดลอย่าง ChatGPT ก็จงใจมีพารามิเตอร์ temperature เพื่อเพิ่มความสุ่มให้กับกระบวนการทั้งหมด
      ถ้าอยากอ่านต่อ คำตอบนี้อิงจากงานวิจัยนี้: The Matrix: A Bayesian learning model for LLMs, https://arxiv.org/abs/2402.03175
    • ในระบบส่วนใหญ่สามารถควบคุมสิ่งนี้ได้ด้วยพารามิเตอร์การอนุมานชื่อ temperature
      แต่ถ้าตั้งอุณหภูมิให้ต่ำที่สุดเท่าที่ทำได้ คุณภาพคำตอบก็มักจะตกลงมาก ระบบอาจติดอยู่กับ local optimum บางจุดและวนซ้ำไปมา คำตอบแบบนั้นอาจ "กำหนดตายตัว" ก็จริง แต่ไม่ได้ดีนัก
    • บทความนี้เป็นจุดเริ่มต้นที่ดี เพราะอธิบายได้ค่อนข้างเป็นระบบโดยยังไม่หลุดจากภาพรวม
      https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-...
  • ไม่มีของฟรี ดังนั้นในมุมมองของผมตรงนี้ก็น่าจะมี path loss บางอย่างอยู่
    ตัวอย่างเช่น trajectory แบบ Jacobi บางส่วนตัดเส้นทางที่มีอุณหภูมิสูงกว่าออกไปตามนิยาม ในมุมมองของการค้นคืนข้อมูลนี่อาจเป็นข้อดีด้วยซ้ำ แต่ถ้าคุณอยากเพิ่มความสร้างสรรค์ให้สูงสุด มันอาจเป็นข้อเสีย

    • มีทั้งอัลกอริทึมที่ดีกว่าและแย่กว่า
      ผมไม่แน่ใจว่าแนวคิด "ไม่มีของฟรี" จะใช้ได้อย่างมีนัยสำคัญเป็นพิเศษเสมอไปหรือไม่ บางอย่างก็ไม่ได้อยู่บน Pareto frontier
  • อยากได้คำอธิบายเพิ่มเติมอย่างละเอียดเกี่ยวกับส่วนที่บอกว่า "วิธี speculative decoding มีต้นทุนหน่วยความจำเพิ่มเติมระหว่างการอนุมาน"
    ใน speculative decoding โมเดลที่เล็กกว่าจะสร้าง "กิ่ง" ที่เร็วกว่าแต่มีโอกาสไม่แม่นยำ จากนั้นจึงใช้โมเดลใหญ่ตรวจสอบกิ่งเหล่านี้ แต่ speculative decoding ต้องใช้หน่วยความจำเพียงเท่ากับโทเคนของสาขาเดียวเท่านั้น และโทเคนของกิ่งอื่น ๆ จะถูก mask ไว้เฉย ๆ ระหว่างการอนุมาน ถ้ามีบริบทขนาด 1000 และมีกิ่งยาว 5 โทเคนราว 30 กิ่ง ภาระหน่วยความจำเพิ่มเติมก็อยู่ที่ 3% ซึ่งถือว่าเล็กน้อยมาก ถ้าขนาดบริบทเล็กกว่าจำนวนกิ่งมาก ก็อดสงสัยไม่ได้ว่าผู้ใช้ LLM เชิงกำเนิดที่มีหน้าต่างบริบทแค่ 50 โทเคนจะกังวลเรื่องความเร็วในการสร้างจริงหรือ
    นอกจากนี้ เทคนิค speculative decoding ไม่ได้จำกัดอยู่แค่ greedy sampling มันควรทำงานได้ตรงกับโมเดลต้นฉบับทุกประการและสุ่มตัวอย่างตามความน่าจะเป็นคาดหมายได้ วรรณกรรมส่วนใหญ่เกี่ยวกับ speculative decoding รายงานการเพิ่มความเร็วไว้แล้วที่ 2.6~3.5 เท่า ขณะที่บทความบล็อกนี้รายงานความเร็วการสร้างที่ 2.4~3.4 เท่า เลยไม่แน่ใจว่านี่เป็นการอัปเกรดที่ใหญ่ขนาดนั้นหรือไม่
    ข้างบนมีการพูดถึง speculative decoding แล้ว และเทคนิคที่ผู้เขียนนำมาเปรียบเทียบดูเหมือนจะเป็น Medusa2 กับ Eagle แต่ปัญหาหลักยังเหมือนเดิม ไม่ว่าจะใช้วิธีไหนในการทำนายโทเคนล่วงหน้า ก็มีบางจุดที่จำเป็นต้องมีโทเคนก่อนหน้าอย่างเด็ดขาดก่อนจะทำนายโทเคนถัดไป นี่ไม่ใช่ปัญหาของโมเดลหรือเทคนิคใดเทคนิคหนึ่ง แต่เป็นคำถามเชิงคณิตศาสตร์ว่าอะไรทำได้จริง หากการแจกแจงความน่าจะเป็นของโทเคนถัดไปตัวที่ห้าขึ้นอยู่กับสี่โทเคนก่อนหน้าอย่างมาก แล้วจะทำนาย 5 โทเคนพร้อมกันได้อย่างไร? ไม่ว่าจะเป็น speculative decoding, Jacobi decoding หรือการถอดรหัสแบบขนานหลายโทเคนก็เหมือนกัน
    ถ้าวิธีนี้รองรับได้แค่ greedy sampling ก็สงสัยว่าข้อดีคืออะไร ยิ่งเมื่อพิจารณาว่าเทคนิคอื่น ๆ ก็ทำความเร็วที่คาดหวังได้อยู่แล้วก็ยิ่งเป็นเช่นนั้น การเอาความเร็วที่ได้จาก greedy sampling ไปเทียบกับความเร็วจากการสุ่มแบบสุ่มจริง ๆ ก็เหมือนเอาแอปเปิลไปเทียบกับส้ม และต่อให้ดัดแปลงวิธีนี้ให้เข้ากับการสุ่มแบบสุ่มแล้ว ก็ยังสงสัยว่าเพราะปัญหาหลักที่พูดถึงข้างต้น ความเร็วระดับเดียวกันนั้นจะยังคงอยู่หรือไม่

    • ส่วนที่ว่า "ก่อนจะทำนายโทเคนถัดไป จำเป็นต้องมีโทเคนก่อนหน้าอย่างเด็ดขาด" อาจเป็นแกนหลักของงานวิจัยชิ้นนี้ก็ได้
      ผ่าน consistency training งานนี้อาจแสดงให้เห็นว่า แม้จะเดาโทเคนก่อนหน้าผิด LLM ก็ยังสามารถทำนายโทเคนถัดไปอีก n ตัวได้
      อีกด้านหนึ่ง ในทางคณิตศาสตร์ p(x_t|x_1,...,x_t-1) ย่อมขึ้นอยู่กับ x_1 ถึง x_t-1 ทั้งหมดก็จริง แต่ในทางปฏิบัติ สำหรับการทำนาย x_t อาจต้องการเพียง x_1 ถึง x_t-2 และให้ความสนใจกับ x_t-1 น้อยมาก ดังนั้นจึงอาจทำนาย x_t ได้จาก x_1 ถึง x_t-2 ร่วมกับ x_t-1 ที่ไม่แม่นยำ
    • speculative decoding ต้องโหลดโมเดลขนาดเล็กกว่าไว้ในหน่วยความจำ และต้องรัน การอนุมาน ด้วยโมเดลนั้น
  • เนื้อหาน่าสนใจ เป็นไอเดียที่หลายคนน่าจะเคยนึกถึง แต่ตัวบทความและการนำเสนอก็จัดระเบียบมาได้ดี

    • เห็นด้วย ฉันกับรูมเมตเคยคุยเรื่องนี้กันเมื่อ 1 ปีก่อน และยังเอาแนวคิดคล้าย ๆ กันไปใช้กับ การบังคับทิศทาง LLM ได้ด้วย