- หากเปลี่ยนเป้าหมายมาตรฐานของ LLM อย่าง การทำนายโทเค็นถัดไป ไปเป็นการทำนายโทเค็นในอนาคตหลายตัวพร้อมกัน จะสามารถดึงประสิทธิภาพการสร้างโค้ดและภาษาธรรมชาติให้สูงขึ้นได้ แม้ใช้ข้อมูลงบประมาณการคำนวณเท่าเดิม
- โครงสร้างใช้หลาย output head วางบน Transformer body ที่ใช้ร่วมกัน และในการอนุมานพื้นฐานจะใช้เฉพาะ head สำหรับโทเค็นถัดไป ทำงานเหมือนการสร้างแบบ autoregressive เดิม
- ในโมเดลโค้ด โมเดล 13B parameters แก้ HumanEval ได้มากกว่าโมเดลทำนายโทเค็นถัดไปที่เทียบกันได้ 12% และแก้ MBPP ได้มากกว่า 17% โดยประโยชน์เห็นชัดขึ้นในโมเดลขนาดใหญ่
- head เพิ่มเติมถูกนำไปใช้กับ self-speculative decoding โดยโมเดล 4-token prediction แสดงความเร็วอนุมานเพิ่มขึ้นสูงสุด 3× และโมเดล 8-byte prediction เพิ่มขึ้น 6.4×
- ในงานสังเคราะห์ วิธีนี้เป็นประโยชน์ต่อ induction heads และการอนุมานเชิงอัลกอริทึม และอาจมีผลช่วยลดความต่างของ distribution ระหว่าง teacher forcing ตอนฝึกกับ autoregressive ตอนสร้าง
วิธีทำนายหลายโทเค็น
- language modeling แบบเดิมลดค่า cross-entropy loss ของโทเค็นถัดไปหนึ่งตัวในแต่ละตำแหน่ง
- การทำนายหลายโทเค็นขยายเป้าหมายการฝึกให้ทำนายโทเค็นถัดไป n ตัวพร้อมกันในแต่ละตำแหน่ง
- โครงสร้างโมเดลแบ่งเป็นสามส่วน
- Transformer body ที่ใช้ร่วมกันสร้าง latent representation ของบริบทที่สังเกตได้
- output head อิสระ n ตัวทำนายโทเค็นอนาคตแต่ละตัวแบบขนาน
- shared unembedding matrix คำนวณความน่าจะเป็นของโทเค็นสุดท้าย
- วิธีอนุมานที่ง่ายที่สุดคือ autoregressive prediction ทั่วไปที่ใช้เฉพาะ head สำหรับทำนายโทเค็นถัดไป และสามารถทิ้ง head อื่นได้
- output head เพิ่มเติมสามารถนำไปใช้กับ self-speculative decoding เช่น blockwise parallel decoding หรือ Medusa-like tree attention
การทำให้ใช้หน่วยความจำอย่างมีประสิทธิภาพ
- การ implement แบบตรงไปตรงมาต้องเก็บ logit และ gradient ของแต่ละ head ทั้งหมดไว้ในหน่วยความจำ ทำให้การใช้หน่วยความจำ GPU สูง
- ใน LLM ปัจจุบัน ขนาด vocabulary V ใหญ่กว่ามิติ latent representation d มาก ทำให้ logit vector เป็นคอขวดของหน่วยความจำ GPU
- implementation ที่เสนอจะรัน forward/backward ของ output head แต่ละตัวแบบลำดับ หลังจาก forward pass ของ body ที่ใช้ร่วมกัน
- logit และ gradient ของ head หนึ่งจะถูกปล่อยก่อนข้ามไปยัง head ถัดไป
- body จะเก็บไว้เฉพาะ gradient สะสม
- วิธีนี้ลด peak GPU memory usage จาก O(nV + d) เหลือ O(V + d) โดยไม่เพิ่มต้นทุน runtime
ผลการทดลองกับโมเดลโค้ด
- การทดลองกับข้อมูลจริงเปรียบเทียบโมเดลทำนายโทเค็นถัดไปกับโมเดล n-token prediction โดยใช้จำนวนพารามิเตอร์เท่ากัน
- หากเพิ่มเลเยอร์ n−1 ตัวใน head สำหรับทำนายอนาคต จะลบเลเยอร์ n−1 ตัวออกจาก body ที่ใช้ร่วมกัน
- ฝึกโมเดลหกขนาดตั้งแต่ 300M ถึง 13B ตั้งแต่ต้นด้วย 91B code tokens เป็นอย่างน้อย
- ในการประเมิน MBPP และ HumanEval โมเดลขนาดเล็กอาจแย่กว่าโมเดลฐาน แต่เมื่อ scale ใหญ่ขึ้น การทำนายหลายโทเค็นจะนำหน้า
- โมเดล 13B แก้ปัญหาได้มากกว่าโมเดลทำนายโทเค็นถัดไปที่เทียบกันได้
- แก้ปัญหาได้มากขึ้น 12% ใน HumanEval
- แก้ปัญหาได้มากขึ้น 17% ใน MBPP
- ใน ablation ที่ฝึกโมเดล 7B ด้วย 200B code tokens เปรียบเทียบ n=1, 2, 4, 6, 8
- n=4 ดีที่สุดอย่างสม่ำเสมอใน pass@1, pass@10, pass@100 ของ HumanEval และ MBPP
- ใน APPS/Intro นั้น n=6 นำหน้า
- window size ที่เหมาะสมอาจต่างกันตาม distribution ของข้อมูลอินพุต
ความเร็วอนุมานและโมเดลระดับ byte
- ใช้ greedy self-speculative decoding กับโมเดล 7B 4-token prediction และวัดความเร็ว decoding บน prompt ทดสอบโค้ดและภาษาธรรมชาติที่ไม่ได้ใช้ในการฝึก
- ผลลัพธ์แสดงความเร็วเพิ่มขึ้น 3.0× ในโค้ด และ 2.7× ในข้อความ
- ในโค้ด จากข้อเสนอ 3 ตัว มีโทเค็นที่ถูกยอมรับเฉลี่ย 2.5 ตัว
- โมเดล 8-byte prediction ทำความเร็วอนุมานเพิ่มขึ้น 6.4×
- ในการทดลอง byte-level tokenization ฝึก 7B byte-level transformer ด้วยข้อมูล 314B bytes ซึ่งเทียบเท่าประมาณ 116B tokens
- โมเดล 8-byte prediction แก้ปัญหาได้มากกว่า next-byte prediction
- แก้ปัญหาได้มากขึ้น 67% ใน MBPP pass@1
- แก้ปัญหาได้มากขึ้น 20% ใน HumanEval pass@1
- multi-byte prediction อาจเป็นเส้นทางในการฝึกโมเดล byte-level ให้มีประสิทธิภาพมากขึ้น
หลาย epoch, การ fine-tune และผลลัพธ์ภาษาธรรมชาติ
- แม้ฝึกหลาย epoch ด้วยข้อมูลเดียวกัน การทำนายหลายโทเค็นยังคงได้เปรียบบางส่วนเหนือการทำนายโทเค็นถัดไป
- MBPP pass@1 อยู่ที่ +2.4%
- HumanEval pass@100 อยู่ที่ +3.2%
- ตัวชี้วัดอื่นคล้ายกัน
- ในการ fine-tune บน CodeContests โมเดล 7B ที่ pretrain ด้วย 4-token prediction ดีกว่าโมเดลฐานทำนายโทเค็นถัดไปใน pass@k โดยรวม
- กรณี fine-tune โมเดล 4-token prediction ต่อด้วย loss n′=4 ตามเดิมก็ดีกว่าโมเดลฐาน
- กรณีที่ลบ head เพิ่มเติมออกแล้ว fine-tune ด้วย next-token target ให้ผลดีที่สุดโดยรวม
- ในภาษาธรรมชาติ ฝึกโมเดล 7B ด้วย 200B tokens และประเมิน benchmark มาตรฐาน NLP 6 รายการ
- โมเดล 2-token prediction ใกล้เคียงกับโมเดลฐานทำนายโทเค็นถัดไป
- โมเดล 4-token prediction มีประสิทธิภาพลดลงเล็กน้อย
- อาจจำเป็นต้องใช้ขนาดโมเดลที่ใหญ่ขึ้น
- การประเมินภาษาธรรมชาติแบบ generative แบ่งเป็นงานสรุปและงานคณิตศาสตร์
- ใน summarization benchmark 8 รายการ โมเดล n=2 และ n=4 สูงกว่าโมเดลฐานทำนายโทเค็นถัดไปตาม ROUGE-L F1 ทั้งการฝึก 200B และ 500B tokens
- ในการประเมิน GSM8K 8-shot ที่ 200B tokens นั้น n=2 นำหน้าโมเดลฐาน แต่หลัง 500B tokens รูปแบบกลับด้าน และ n=4 แย่กว่าโดยรวม
induction และการอนุมานเชิงอัลกอริทึมจากงานสังเคราะห์
- induction คือรูปแบบที่เมื่อมี “AB” ในประโยค แล้วต่อมามี “A” ปรากฏอีก ก็จะทำนาย “B” ตามมา
- ฝึกโมเดลขนาด 1M~1B nonembedding parameters ด้วยชุดข้อมูล children stories และวัด induction capability ด้วยชุดทดสอบที่ใส่ชื่อแบบ 2-token แบบสุ่ม
- ในโมเดลขนาดเล็ก 30M หรือต่ำกว่า 2-token prediction loss ช่วยปรับปรุงการสร้าง induction capability อย่างมาก
- ตั้งแต่ 100M ขึ้นไป ประโยชน์นี้หายไป
- ในงานเลขคณิตพหุนาม ฝึกและประเมินนิพจน์ใน F7[X]/(X5) ซึ่งรวม unary negation, addition, multiplication, composition
- การทำนายหลายโทเค็นเพิ่มความแม่นยำในทุกระดับ task difficulty และยังปรับปรุง out-of-domain generalization ได้มาก แม้ค่า absolute จะต่ำ
- ผลของการเปลี่ยน next-token prediction เป็นการทำนายหลายโทเค็นมากกว่าการขยายโมเดลจาก 30M เป็น 100M
เหตุใดจึงอาจได้ผล
- การทำนายหลายโทเค็นอาจบรรเทา distribution mismatch ระหว่างการฝึกแบบ teacher forcing กับ inference-time autoregressive generation
- การทำนายโทเค็นถัดไปอาจมุ่งเน้นการทำนายระยะสั้นและละเลย dependency ระยะยาว
- การทำนายหลายโทเค็นให้ implicit weight มากขึ้นแก่โทเค็นที่สัมพันธ์อย่างแรงกับโทเค็นที่ตามมา
- สามารถตีความสิ่งนี้เป็นการเสริมแรงที่ choice point
- มองว่าการสร้างข้อความที่มีประโยชน์ขึ้นอยู่กับการเลือกการตัดสินใจที่ถูกต้องที่ choice point
- ในการพัฒนาเชิงทฤษฎีสารสนเทศ 2-token prediction ปรากฏในรูปที่เพิ่มความสำคัญของพจน์ mutual information ระหว่าง X และ Y มากกว่า next-token prediction
ข้อจำกัดและต้นทุน
- งานที่ยังเหลือคือวิธีเลือก n โดยอัตโนมัติในการทำนายหลายโทเค็น, การใช้ loss scale และ loss balancing, การปรับ vocabulary size และการพัฒนา auxiliary prediction loss ที่ทำงานใน embedding space
- การฝึกโมเดลทั้งหมดในการทดลองใช้รวมประมาณ 500K GPU hours
- ฮาร์ดแวร์คือ A100-80GB และ H100
- การปล่อยก๊าซรวมโดยประมาณอยู่ที่ราว 50 tCO2eq และถูก offset 100% ผ่าน sustainability program ของ Meta
- เป้าหมายคือเพิ่ม compute และ data efficiency ของโมเดลภาษา แต่ต้องระวัง rebound effects และควรพิจารณาทั้งข้อดีและความเสี่ยงทางสังคมของ LLM
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ในวงการนี้มีอะไรเกิดขึ้นมากเกินไป
ถ้ามีแหล่งข้อมูลที่อธิบายตามลำดับเวลาเหมือนพาเยี่ยมชมโรงงานว่า คำอย่าง ข้อมูล, การฝึกล่วงหน้า, การฝึก, การอนุมาน, mixture of experts, RAG ปรากฏขึ้นตอนไหนในกระบวนการจริงก็คงดี
ส่วนใหญ่ผมไม่รู้ว่าคำเหล่านี้อยู่ตรงไหนในภาพรวม และตอนเห็นคำว่าการฝึกล่วงหน้าครั้งแรก ผมนึกว่าเป็นกระบวนการจัดการข้อมูลก่อนฝึก แต่จริง ๆ แล้วมันก็เป็นการฝึกอีกแบบหนึ่ง
วงการนี้มีอัตราสัญญาณต่อสัญญาณรบกวนต่ำมาก และแม้แต่เอกสารของผู้นำในอุตสาหกรรมอย่าง Langchain ก็มีกรณีที่ล้าสมัยไปแล้วหรือขัดแย้งกันเอง
ตอนกระแสบล็อกเชนร้อนแรงก็คล้ายกัน จึงดูเหมือนเป็นลักษณะของขบวนรถไฮป์
โดยเฉพาะอย่าง RAG ที่ความก้าวหน้าช่วงหลังเร็วมาก จนคงยากที่จะมีหนังสืออ้างอิงที่ทันสมัยอยู่ได้สักพัก ทำให้ยากจะรู้ว่าควรเริ่มจากตรงไหน
ถึงอย่างนั้น เอกสารของเครื่องมือระดับสูงอย่าง LlamaIndex ก็พอเป็นจุดเริ่มต้นที่ดี เพราะไม่ได้อธิบายแนวคิดเองอย่างลึกซึ้งนัก แต่ช่วยให้เห็นว่ามันอยู่ตรงไหนในภาพรวม
ส่วน YouTube ก็เหมือนเดิม คือเต็มไปด้วยคนที่ไม่ใช่ผู้เชี่ยวชาญจำนวนมหาศาลที่พยายามเรียกคลิกด้วยกระแสล่าสุด ผมจึงมองว่าไม่ค่อยเหมาะเป็นจุดเริ่มต้น
แน่นอนว่าทุกอย่างก็เป็นแบบนั้นแหละ แต่แทนที่จะพยายามปะผุสิ่งเหล่านั้น น่าจะดีกว่าถ้าสมมติว่าในอนาคตอันใกล้จะมี สิ่งที่ดีกว่า GPT-4 มาก ออกมา แล้วออกแบบผลิตภัณฑ์ที่แตกต่างบนสมมติฐานนั้น
สำหรับคนที่รู้จัก speculative decoding นี่โดยพื้นฐานแล้วคือการทำ speculative decoding ด้วยตัวเอง
ยังคงนำลำดับ label ที่ทำนายได้ป้อนกลับเข้าเครือข่ายแบบ autoregressive และคงการทำนายไว้เฉพาะถึงจุดที่ตรงกัน
ดังนั้นประสิทธิภาพจึงไม่ได้แย่ลง มีแต่เร็วขึ้น และในที่นี้เร็วขึ้นสูงสุด 3 เท่า ซึ่งถือว่าอยู่ในระดับปกติสำหรับ speculative decoding
มันอาจดีขึ้นได้ด้วย multi-task learning แนวคิดการทำนาย target ที่อยู่ข้างหน้าไปหลายขั้นเป็น auxiliary loss นั้นมีมานานพอสมควรแล้ว และเป็นงานที่ดี
ถ้า speculative decoding ช่วยปรับปรุงประสิทธิภาพด้านการวางแผนได้ด้วย ก็น่าจะถูกนำไปใช้ได้ง่ายขึ้น
speculative decoding ไม่ได้ลดประสิทธิภาพของโมเดลในแง่ความถูกต้องหรือคุณภาพของผลลัพธ์
ในเชิงคณิตศาสตร์ การแจกแจงที่ถูกปรับแล้วซึ่งสุ่มตัวอย่างออกมาจะเหมือนกับเมื่อทำ regular autoregressive decoding และเหตุที่มีความต่างก็เป็นเพราะความสุ่มล้วน ๆ
ถ้าใช้คำว่าประสิทธิภาพในความหมายของความเร็ว speculative decoding ก็อาจทำให้ช้าลงได้ แต่สำหรับอินพุตส่วนใหญ่และการเลือก draft model ที่เหมาะสม ไม่ควรเป็นเช่นนั้น
LLM ไม่ได้พิจารณา การแจกแจงความน่าจะเป็น ของชุด token ที่เป็นไปได้ทั้งหมดจนถึงความยาวเอาต์พุตหนึ่ง ๆ ในการทำนายลำดับหรือ? ผมนึกว่ามันทำแบบนั้นอยู่แล้ว
ถ้าไม่ใช่ ก็น่าประหลาดใจที่มันยังทำงานได้ดีขนาดนี้
เช่น ถ้าความเป็นไปได้และความน่าจะเป็นของลำดับ 2 บิตคือ 00: p=0.36, 01: p=0.04, 10: p=0.30, 11: p=0.30 ลำดับ 2 บิตที่เป็นไปได้มากที่สุดคือ 00
แต่ถ้าทำนาย token ถัดไปเพียงตัวเดียว จะได้ 0: p=0.40, 1: p=0.60 ดังนั้นบิตถัดไปจะดูเหมือนเป็น 1 และเมื่อต้องทำนายบิตถัดจากนั้น ก็จะนำไปสู่จุดเริ่มต้นที่ไม่เหมาะที่สุด
ในลำดับยาว ๆ ยิ่งการแจกแจงความน่าจะเป็นร่วมแยกเป็นการแจกแจงขอบได้ไม่ดีเท่าไร ข้อผิดพลาดก็จะยิ่งเด่นชัดขึ้นเท่านั้น
คิดต่อไปแล้ว น่าจะมีงานศึกษาง่าย ๆ ที่เปลี่ยน loss function แบบ cross entropy ให้พิจารณาเฉพาะ token อนาคตลำดับที่ n ในข้อมูลฝึกข้อความ แล้วพล็อตความสัมพันธ์ระหว่างประสิทธิภาพของ LLM กับ n ได้
ถ้าสมมติว่า LLM ปัจจุบันทั้งหมดเป็น n=1 สมมติฐานก็คือ เราน่าจะหลีกเลี่ยงการพุ่งขึ้นมหาศาลของทรัพยากรที่ต้องใช้ในการทำนายการแจกแจงความน่าจะเป็นร่วมตั้งแต่ token ถัดไป 1 ตัวไปจนถึง n ตัวได้เป็นส่วนใหญ่
เพราะการทำนาย token ลำดับที่ n โดยตรงต้องอาศัยโมเดลข้อมูลที่ดีกว่าโดยนัย อย่างน้อยก็ในข้อความที่มนุษย์สร้างขึ้น และไม่ได้ใช้ได้กับข้อมูลทุกประเภท
LLM ถูกออกแบบมาเพื่อ สุ่มตัวอย่าง ข้อความที่เป็นไปตามการแจกแจงของชุดฝึก ไม่ได้ถูกออกแบบมาเพื่อบอกข้อความ “ที่เป็นไปได้มากที่สุด” ที่ตามมา และจริง ๆ แล้วเราก็ไม่ได้ต้องการแบบนั้น
เพราะจะทำให้ความหลากหลายของเอาต์พุตหายไป
ในตัวอย่างนี้ ถ้าเป็นแอปแชต การสุ่ม 0 ใน 40% และ 1 ใน 60% ก็สมเหตุสมผล
สำหรับการใช้งานอย่างถามตอบที่ประโยคที่เป็นไปได้มากที่สุดมีความสำคัญ beam search ก็ช่วยได้ตามที่คนอื่นพูดไว้
อีกทั้งยังควรพิจารณาด้วยว่าโมเดลสามารถ “มองไปข้างหน้า” และคำนวณ token ในอนาคตไว้ล่วงหน้า แล้วนำสิ่งนั้นมาใช้กับการทำนาย token ปัจจุบันได้
จริง ๆ แล้วมีงานวิจัยอย่าง [1] ที่พูดถึงเรื่องนี้
สุดท้าย การทำนายทีละ token ไม่ใช่วิธีที่ผิด เพราะมนุษย์ก็ทำแบบนั้นเวลาพูด เราทำการ “มองล่วงหน้า” แบบนี้ในหัวก่อนพูด
[1] https://arxiv.org/abs/2404.00859
เท่าที่จำได้ ในผลลัพธ์ของ LLM จะเห็นรูปแบบแปลก ๆ เช่น “an” มักมีความเป็นไปได้น้อยกว่า “a” ทำให้มี คำนามที่ขึ้นต้นด้วยสระ น้อยกว่าที่คาดไว้
กล่าวคือ ถ้าฝึกโมเดลภาษาด้วยการแจกแจงใด ๆ แล้วสุ่มตัวอย่างที่ อุณหภูมิ 1 ก็จะได้การแจกแจงเดียวกันเป๊ะ
ถ้าสุ่มตัวอย่างที่อุณหภูมิต่ำหรือแบบ greedy ก็แน่นอนว่าจะได้การแจกแจงที่ต่างออกไป
มีกลยุทธ์การสุ่มตัวอย่างเพื่อหาค่าเหมาะที่สุดเฉพาะที่หลายแบบ เช่น beam search และก็มีงานด้านการสุ่มตัวอย่างที่เป็นเชิงทั่วโลกมากขึ้นอย่าง speculative decoding อยู่มากเช่นกัน
ปัจจุบัน LLM เริ่มใหม่ตั้งแต่ต้นสำหรับทุกโทเค็นเอาต์พุตจริงหรือ?
ถ้าถามว่า “อะไรทำให้กล้วยมีสีเหลือง?” แล้วมันตอบว่า “Bananas are yellow due to a pigment called bromelain.” ตอนที่เอาต์พุตคำว่า “a” ผมคิดว่าแนวคิดเรื่อง pigment และ bromelain น่าจะถูกกระตุ้นอยู่ในโครงข่ายประสาทในระดับหนึ่งแล้ว
ตอนนี้มันเปลี่ยนใจไปต่อเป็นคำตอบแบบ “an optical illusion...” ไม่ได้แล้ว จึงดูเหมือนว่ามันวางแผนล่วงหน้าไว้แล้วว่าจะพูดถึงสารสีที่ชื่อ bromelain
ตอนที่ LLM เอาต์พุตคำว่า “a” มันจะนำงานที่ทำไปแล้วมาใช้กับคำตอบถัดไปได้ไหม? จะคงสถานะของโครงข่ายประสาทไว้เพื่อคำตอบถัดไปได้ไหม?
“Bananas are yellow due to a” และ “Bananas are yellow due to an”
กรณีแรกอาจตอบว่า “Bananas are yellow due to a pigment called bromelain.” ส่วนกรณีที่สองอาจตอบว่า “Bananas are yellow due to an organic compound called bromelain, which is a yellow pigment.”
ไม่ว่าจะทางไหน แม้ GPT จะเลือก “a” หรือ “an” ก็อาจไม่กระทบต่อความหมายของคำตอบ
แบบสุดโต่ง อาจมองได้ว่า LLM ทำงานด้วยฮิวริสติกโง่ ๆ ว่าโทเค็นถัดจาก “due to” มีโอกาสเป็น “a” 55% และ “an” 45%
แน่นอนว่าความเป็นจริงซับซ้อนกว่านั้น แต่เพียงฮิวริสติกแบบนั้นก็อธิบายพฤติกรรมนี้ได้
ถ้าไม่ได้ใส่ข้อเท็จจริงเกี่ยวกับ bromelain ไว้ในข้อมูลพรีเทรน LLM ก็อาจเติมต่อเป็นเนื้อหาอย่าง “an optical illusion” ได้จริง ๆ
ผมจำได้ว่า GPT-3 เคยทำข้อผิดพลาดเชิงข้อเท็จจริงแบบนั้นค่อนข้างบ่อย แต่ดูเหมือนมันจะเรียนรู้กฎไวยากรณ์ของ “a” กับ “an” ได้
อย่างที่กล่าวไป ผมไม่คิดว่าแนวคิดจำเป็นต้องถูกกระตุ้นไว้ล่วงหน้าจริง ๆ แต่ในความหมายเชิงนัยหรือเชิงอุบัติ อาจมีความเป็นไปได้ที่ การกระตุ้นล่วงหน้า แบบนั้นเกิดขึ้น
KV cache อาจมองได้ว่าเป็นตัวแทนของข้อความจนถึงตอนนี้และความคิดของโมเดลต่อข้อความนั้น
เนื่องจากโมเดลภาษาเรียนรู้ทั้งลำดับไปจนจบ จึงคิดว่ามีโอกาสสูงที่เรื่องแบบนี้จะเกิดขึ้น
การทำนายหลายโทเค็นส่งเสริมพฤติกรรมนี้อย่างชัดเจน แต่ทำได้เฉพาะภายในหน้าต่าง n โทเค็นเล็ก ๆ ที่นิยามไว้เท่านั้น
ขณะเดียวกัน ยังมีงานอีกมากที่พยายามเพิ่มการใช้ประโยชน์จากการคำนวณของโมเดลภาษาแบบ transformer เช่น early exit, mixture of depths และโครงสร้างใหม่ ๆ อย่าง SSM
น่าจะมีการวางแผนเชิงแนวคิดว่าหลัง “a” หรือผู้สมัครอื่น ๆ จะตามด้วยอะไรได้บ้าง แต่การคาดการณ์ระดับสูงเช่นนั้นจะถูกพิจารณาใหม่ตั้งแต่ต้นเมื่อสร้าง “a” ออกมาแล้ว
โมเดลไม่เพียงสามารถเปลี่ยนใจหลังจากสร้างแต่ละคำแล้วเท่านั้น แต่จำเป็นต้องเป็นอย่างนั้นด้วย
ดังนั้น “การวางแผน” แบบนี้จึงเปราะบางมาก และใกล้เคียงกับ แร็ปเปอร์ฟรีสไตล์ ที่สร้างสด ๆ มากกว่ามนุษย์ที่คิดอย่างลึกซึ้งก่อนเลือกคำตอบและสำนวน
LLM แกนหลักรับโทเค็นแล้วส่งออกชุดโทเค็นที่จัดอันดับสำหรับสิ่งที่จะตามมา พร้อม “ระดับความมั่นใจ”
จากนั้นโดยปกติจะมีขั้นตอนการกรองและการค้นหา โดยนำโทเค็นที่จัดอันดับเหล่านั้นป้อนกลับเข้า LLM เพื่อให้ได้โทเค็นที่จัดอันดับเพิ่มเติม และสร้างต้นไม้ความน่าจะเป็นสั้น ๆ
ตัวอย่างเช่น หากป้อนโทเค็น N อันดับแรกกลับเข้าไป แต่ละตัวก็จะสร้างชุดโทเค็น N อันดับแรกชุดใหม่
จากนั้นดูต้นไม้นั้นแล้วทำการกรองพื้นฐาน เช่น เลือกกิ่งที่มีความมั่นใจรวมสูงสุด กิ่งที่มีโทเค็นซ้ำน้อยที่สุด หรือกิ่งที่มีโทเค็นตรงกับโทเค็นอินพุตน้อยที่สุด หรือโดยมากจะผสมเกณฑ์เหล่านี้เข้าด้วยกันและเพิ่มการสุ่มเลือกที่ถ่วงน้ำหนักด้วยความมั่นใจรวมเข้าไปด้วย
ดังนั้นแม้จะให้พรอมป์เดียวกันกับ LLM ที่มีน้ำหนักคงที่สมบูรณ์หลายครั้ง ก็อาจได้เอาต์พุตต่างกัน
กล่าวคือ หากตอบคำถามแบบเจาะจง โมเดลสามารถ “เปลี่ยนใจ” ได้ ทุกโทเค็นที่ถูกสร้างขึ้นจะเปิดโอกาสให้ตัวกรองเอาต์พุตเชิงความน่าจะเป็นเลือกเส้นทางใหม่จากบรรดาเส้นทางเอาต์พุตที่เป็นไปได้
อาจเป็นคำถามที่ซื่อมาก ๆ แต่ถ้าสมมติว่าเราสามารถสร้างเวกเตอร์ที่เข้ารหัสความหมายของทั้งประโยคได้ ทำไมถึงฝึก LLM ให้ทำนาย เวกเตอร์ประโยค นั้นแทนคำคำเดียวไม่ได้ล่ะ?
การฝึก ออโตเอนโคเดอร์ สำหรับภาษา จริง ๆ แล้วง่ายมาก เพราะปริมาณข้อมูลที่อยู่ในข้อความน้อยกว่าเมื่อเทียบกับภาพ/วิดีโอ
ส่วนที่ยากคือการทำให้โมเดลโฟกัสที่ส่วนความหมาย เมื่อสัญญาณทั้งหมดมาจากการตรงกันเป๊ะในสเปซของโทเคน
นั่นจึงนำไปสู่ไอเดียโครงสร้าง joint embedding predictive ของ Yann LeCun
อีกทั้งงานเสริมให้สัญญาณมากขึ้นก็จริง แต่ก็มี trade-off ที่มันเบี่ยงโฟกัสอยู่เสมอ
ในกรณีของเรา ถ้าจำนวนโทเคนที่ทำนายมากเกินไป เราเห็นว่าประสิทธิภาพลดลง
ดังนั้นวิธีทำนายแบบ latent prediction จึงต้องจัดระเบียบให้ได้ว่าอะไรมีประโยชน์
ปัญหาคือหลังจากได้เวกเตอร์ที่แทนคำตอบแล้ว จะต้องมีบางอย่างเหมือนโมเดลอีกตัวที่แปลงคำตอบนั้นกลับเป็นรูปคำ
อาจเป็นอะไรแบบ โมเดล diffusion สำหรับข้อความ
นอกจากนี้ ฟังก์ชันที่โมเดล diffusion นี้ต้องประมาณไม่ใช่ฟังก์ชันหนึ่งต่อหนึ่ง อย่างดีที่สุดก็เป็นฟังก์ชันทั่วถึง และถ้าแย่กว่านั้นอาจไม่ใช่ฟังก์ชันในความหมายทางคณิตศาสตร์ด้วยซ้ำ
เพราะสำหรับ embedding เดียว อาจมีข้อความที่เป็นไปได้จำนวนมาก และส่วนใหญ่ในนั้นอาจไม่ถูกต้องทั้งทางไวยากรณ์หรือความหมาย
สุดท้าย embedding เป็น การแทนแบบมีการสูญเสีย ของข้อมูลบางอย่าง ดังนั้นฟังก์ชันผกผันจะทำให้สูญเสียนัยละเอียดและบริบทไปมาก
LLM หลีกเลี่ยงปัญหาข้างต้นด้วยการทำนายโทเคนถัดไป—และตอนนี้คือ n โทเคนถัดไป—ในลักษณะที่รักษาความสอดคล้องในตัวเองกับคำถามและ n โทเคนก่อนหน้า และฟังก์ชันที่มันประมาณโดยทั่วไปควรใกล้เคียงกับฟังก์ชันทั่วถึง
ตอนนี้โดยคร่าว ๆ มันจัดการกับคำ ดังนั้น AI จึงใช้ได้เฉพาะคำที่รู้ แต่สามารถสังเคราะห์ประโยคใหม่จากคำได้
ถ้า AI ทำงานเป็นหน่วยประโยค มันจะไม่กลายเป็นแค่ท่องประโยคที่เคยเห็นมาแล้วหรือ? แบบนั้นอาจสังเคราะห์ย่อหน้าใหม่ได้ แต่ดูเหมือนจะสร้างประโยคใหม่ไม่ได้
ในภาษาอังกฤษ ผมไม่แน่ใจว่า ประโยค เป็น abstraction ที่มีประโยชน์สำหรับ AI หรือไม่ สำหรับมนุษย์เองก็แค่พอใช้ได้อย่างเฉียดฉิว
ถ้าดูแชต อีเมล หรือคอมเมนต์ YouTube ธรรมดา ๆ จะเห็นว่ามีจำนวนมากที่จริง ๆ แล้วไม่ใช่ประโยค หรือแม้แต่ไม่ใช้เครื่องหมายวรรคตอน
ผมไม่คิดว่าประโยคสอดคล้องกับหน่วยของความหมาย
ประโยคอาจมีสองคำ หรืออาจยาวครึ่งบทความวิชาการภาษาอังกฤษ ขึ้นอยู่กับผู้เขียน อาจคร่อมหกไอเดีย หรือมีแค่ไอเดียเดียวก็ได้
จุดจบของประโยคโดยทั่วไปขึ้นกับนิสัยของผู้เขียนมากกว่าความหมาย
ถ้าแยกประโยคเป็นโทเคน แต่ละโทเคนก็จะได้การแทนเป็นเวกเตอร์
ถ้าไปถึงระดับประโยค พจนานุกรมของโทเคนทั้งหมดก็คงกลายเป็นอนันต์
อาจลองทำด้วยโมเดลที่เร็วกว่าได้ แต่คุณภาพเอาต์พุตน่าจะลดลง
ยังไม่ได้อ่านเปเปอร์ละเอียดมากนัก แต่มีคอมเมนต์เล็ก ๆ ด้านการเรียบเรียง
ภาคผนวก L.2 น่าพอใจ แต่ผมรู้สึกว่าการให้เหตุผลแบบย่อใน 5.2 ยังหลวมไปหน่อย
โดยเฉพาะตรงที่บอกว่า “ทิ้ง” H(Y | X) ใน H(X) + H(Y) = H(X | Y) + 2I(X ; Y) + H(Y | X) ยังไม่ชัดเจน
ถ้าทำนายโทเคนที่สาม Z แล้ว H(Y | X) ก็ควรอยู่ในบริบท C แบบโดยนัย และดังนั้นไม่น่าจะทิ้งได้อย่างอิสระไม่ใช่หรือ?
ในภาคผนวกก็ไม่ได้ทำให้เหตุผลนี้ชัดขึ้นเท่าไร
อย่างไรก็ตาม ไม่ได้สับสนถึงขั้นสงสัยแก่นของข้ออ้าง โดยรวมเป็นปัญหาเรื่อง วิธีนำเสนอ มากกว่า
ถ้าอย่างนั้น ในเป้าหมาย 2 โทเคน H(X) + H(Y) ส่วนไหนคือ ข้อมูลเสริม ที่ช่วยการเรียนรู้ และส่วนไหนคือความสูญเปล่า?
H(X | Y) และ I(X; Y) มีประโยชน์ต่อการสร้างโทเคนถัดไป แต่ H(Y | X) ตามนิยามแล้วคือปริมาณข้อมูลที่ไม่เกี่ยวข้องกับโทเคนถัดไป X
ดังนั้นจึงพูดได้ว่า “การทำนายหลายโทเคนแลกข้อมูลที่มีประโยชน์ I(X; Y) ของ H(Y) กับการคำนวณที่สูญเปล่าสำหรับ H(Y | X)”
แต่ต้องสังเกตว่า H(Y | X) คือเอนโทรปีของโทเคนถัดไปในการทำนาย Y จาก prefix (C, X)
หากกลไก attention สามารถย้ายการคำนวณที่ทำไปแล้วเพื่อทำนาย Y|X ไปยังขั้นถัดไปได้ การคำนวณนั้นจริง ๆ แล้วอาจไม่ใช่ความสูญเปล่า แต่เป็น การคำนวณล่วงหน้า
ผมเคยอ่านบทความที่บอกว่า LLM มีเพียง หน้าต่าง 1 มิติ สู่โลกอย่างแท้จริง
ทุกอย่างเป็นเพียงลำดับโทเคนเท่านั้น
สิ่งอย่างการทำนายหลายตัวแบบนี้อาจช่วยขยายมุมมองนั้นเป็นราว ๆ 1.1 มิติ
ไม่ว่าอย่างไร ก็มีเหตุผลจริง ๆ ว่าต้องขยายหน้าต่างนั้นให้เป็น 2 มิติขึ้นไปด้วยวิธีใดวิธีหนึ่ง
เช่น ถ้ามีทรัพยากรระดับ FAIR และอยากฝึกโมเดลเขียนโค้ด Java ที่ดีจริง ๆ การฝึกให้ทำนาย AST แทนโทเคนก็ดูสมเหตุสมผล
หากต้องทำนายคอมเมนต์ ชื่อตัวระบุ ฯลฯ ก็ยังคงต้องมีรูปแบบที่ผสานกับ LLM ทั่วไป แต่จะไม่โมเดลตัวโปรแกรมเองเป็นสตรีมโทเคน
แทนที่จะเป็นแบบนั้น อาจให้ทำนายสิ่งอย่าง “เพิ่มบล็อก if”, “เพิ่มบล็อกเรียกเมธอดที่มีพารามิเตอร์ 4 ตัว”
นอกจากนี้ยังอาจฝึกโมเดลให้กันตำแหน่งเฉพาะใน context window ไว้สำหรับข้อมูลอย่างสมาชิกของชนิดข้อมูลที่เคอร์เซอร์ปัจจุบัน และผสานลูป inference เข้ากับการวิเคราะห์สถิตแบบ IDE/LSP
แบบนี้จะทำให้โมเดลเห็นข้อมูลได้มากกว่าที่อยู่ในข้อความจริง
เหตุผลที่ตอนนี้ไม่ค่อยเห็นโมเดลแบบนี้ ผมคิดว่าเป็นเพราะต้นทุนวิจัยแบบนี้สูง และคนฝั่ง AI ล้วนเน้น Python เป็นหลัก ขณะที่ Python ไม่ได้ประโยชน์จาก IDE มากนัก
ในแมชชีนเลิร์นนิง คำว่า head ถูกใช้ไม่ค่อยสม่ำเสมอ จึงอาจทำให้สับสนได้
ในเปเปอร์นี้มีทั้งแนวคิด multihead attention และ multiple output heads
multihead attention คือการโฟกัสไปยังบริเวณต่าง ๆ ของอินพุตในสถาปัตยกรรม transformer และในที่นี้อุปมาเชิงชีววิทยาจะใกล้กับ “หัว” ในฐานะหน่วยประมวลผลกลาง
output head หมายถึงเลเยอร์สุดท้ายของโครงข่ายประสาท และสามารถมีได้หลายอันที่ให้เอาต์พุตต่างกันบนพื้นฐานของเลเยอร์ก่อนหน้าชุดเดียวกัน
อันนี้ก็เป็นอุปมาเชิงชีววิทยาแบบหลวม ๆ เช่นกัน แต่ใกล้กับหัวที่อยู่ปลายด้านหนึ่งของร่างกายมากกว่าหัวในความหมายแบบ CPU
ทั้งสองอย่างไม่ใช่อุปมาเปรียบกับหัวเทปที่อ่านข้อมูล
LLM ดูเหมือนจะ “คิด” ในระดับหนึ่งด้วยวิธีป้อนเอาต์พุตของตัวเองกลับเข้าไปเป็นอินพุต ดังนั้นจึงมีการสังเกตมาอย่างต่อเนื่องว่าการบังคับให้โมเดล คิดออกเสียง ช่วยเพิ่มคุณภาพของการอนุมานได้
กล่าวคือ การอนุมานแบบห่วงโซ่ความคิดแตกต่างจากการให้ตอบคำถามทันทีตรงที่มันทำให้โมเดลพูดทวนว่าถูกขอให้ทำอะไร แสดงกลยุทธ์ระดับสูงว่าต้องใช้ข้อมูลใดบ้างเพื่อจะตอบ พูดถึงข้อมูลที่รู้อยู่ และอธิบายว่าข้อมูลนั้นจะส่งผลต่อการอนุมานเบื้องต้นอย่างไร
แต่การให้โมเดลทำนายหลายโทเคนถัดไปในแต่ละช่วงเวลา ทำให้กังวลว่าโดยเนื้อแท้แล้วอาจให้ผลตรงกันข้าม
การพรอมป์แบบห่วงโซ่ความคิดดูเหมือนจะแสดงให้เห็นว่าโมเดล “ฉลาดกว่า” เมื่อมีโทเคน n + m ตัวเป็นอินพุต มากกว่าตอนมีเพียง n ตัว
ดังนั้น การได้ 5 โทเคนถัดไปจาก n ที่กำหนด อาจให้ผลลัพธ์แย่กว่าการได้ 1 โทเคนถัดไปจาก n แล้วได้อีก 1 โทเคนถัดไปจาก n+1 ไปเรื่อย ๆ
ความจริงที่ว่าวิธีเฉพาะนี้ต้องใช้โทเคนมากขึ้นจึงไม่สำคัญ
หากไม่มีโมเดลราคาถูก LLM ก็จะถูกครอบงำด้วยแนวโน้มที่จะตอบด้วยค่าประมาณแทนคำตอบจริงอยู่เสมอ
อีกทั้งกลยุทธ์ speculative decoding ส่วนใหญ่จะให้เอาต์พุตเหมือนกับการรันโมเดลแบบลำดับ
หากทำนายผิด โทเคนนั้นก็จะถูกทิ้ง และที่หายไปมีเพียงความเร็วที่เพิ่มขึ้นเท่านั้น
ถ้าทำนายโทเคน/คำที่ +1 และ +2 อย่างอิสระ ผลลัพธ์ยังจะออกมาถูกหลักไวยากรณ์ได้อย่างไร? ดูเหมือนจะพังบ่อยนะ?
ในบทคัดย่อไม่ได้ระบุชัด แต่คำอธิบายรูปที่ 1 ระบุว่า “ระหว่างการอนุมาน จะใช้เฉพาะหัวเอาต์พุตของโทเคนถัดไปเท่านั้น และอาจเลือกใช้หัวอีกสามหัวเพื่อลดเวลาอนุมานได้”
ถ้านำการทำนายลำดับสูงทั้งหมดมาใช้ ก็อาจใช้ทั้งสามหัวได้ แต่หากทำเช่นนั้นจะไม่สามารถใช้กลยุทธ์การสุ่มตัวอย่างทั่วไปได้
ไม่รู้ว่ามีคนสักกี่คนที่รัน LLM จริง ๆ ด้วยอุณหภูมิ 0 นอกเหนือจากเบนช์มาร์ก และถ้าทำอะไรที่ดีกว่าการใช้อุณหภูมิก็อาจเป็นอีกเรื่องหนึ่ง