Tinkering with DFlash2: How to Speed Up Local AI Models
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
> **ที่มา:** [YouTube — Tonbi's AI Garage](https://www.youtube.com/watch?v=NtLoOc_vvSo) · เผยแพร่ 27 ส.ค. 2026 · ~23:47 นาที
# สรุปภาษาไทย — Tinkering with DFlash2: How to Speed Up Local AI Models > **ที่มา:** [YouTube — Tonbi's AI Garage](https://www.youtube.com/watch?v=NtLoOc_vvSo) · เผยแพร่ 27 ส.ค. 2026 · ~23:47 นาที > *สรุปโดยอัตโนมัติ — เนื้อหาต้นฉบับ © Tonbi's AI Garage* ## วิดีโอนี้เกี่ยวกับอะไร Tonbi อธิบาย **DFlash 2** (Inco AI) — เทคนิค speculative decoding ที่เร่งโมเดล local ได้โดยไม่ต้อง retrain — ตั้งแต่หลักการจนทดลองจริงบน DGX Spark เทียบ 3 แบบ: ไม่ใส่ drafter vs DFlash vs DFlash 2 ## ประเด็นหลัก 1. **ทำไมโมเดล local ช้า:** decoding ธรรมดาเขียนทีละ token — 1 forward pass อ่าน weight ทั้งหมด (เช่น 60 GB) เพื่อ token เดียว เหมือนอ่านสารานุกรมทั้งเล่มเพื่อเขียนคำเดียว · GPU แทบไม่ได้ compute แค่รอ memory 2. **Speculative decoding:** ใช้โมเดลเล็ก (drafter) เดาล่วงหน้าสองสาม token แล้วให้โมเดลหลักตรวจทีเดียวรอบเดียว — เหมือนผู้ช่วยเขียนดินสอล่วงหน้า บอสอ่านครั้งเดียวตัดสินว่าอะไรรอดเป็นหมึก · ตัวชี้วัดเดียวคือ acceptance (เหลือบนกระดาษกี่ตัวหลังตรวจ) 3. **ปัญหาของวิธีเดิม:** drafter เองก็เขียนทีละ token (4 ตัว = 4 pass) — แก้ปัญหา serial ก้อนใหญ่ด้วยการแลกเป็น pass ใหญ่ + serial ก้อนเล็ก 4. **DFlash (ตัวแรก):** ยื่นช่องว่างให้ทีละแถว เติมพร้อมกันหมดใน pass เดียว (ไอเดียเดียวกับ image diffusion ได้ภาพทั้งภาพทีเดียว) เลยเรียก **block diffusion** (D = diffusion) — เหมือนคนแก้ครอสเวิร์ดเขียนทุกช่องพร้อมกัน · ข้อเสีย: แต่ละตำแหน่งเดาอิสระ ไม่สอดคล้องกัน 5. **drafter คืออะไร:** ไม่ใช่โมเดลแคบกว่าแต่ตื้นกว่า — block กว้างเท่าโมเดลใหญ่แต่มี 5 layer แทน 52 (เครื่องจักรเดียวกันแค่รื้อชั้นออก) · ต้องฝึกมาคู่กัน หยิบแปะมั่วไม่ได้ · block size 16 = เติม 16 ช่องต่อ pass · ท้าย block อ่อนกว่าหัวมากเพราะตำแหน่ง 16 แทบไม่รู้ว่าตำแหน่ง 15 ตกลงอะไร 6. **ของใหม่ชิ้นที่ 1 — path selector:** คำถูกมักอยู่ใน ranked list อยู่แล้ว (ตำแหน่งแรก: ตัวบนสุดถูก 85.4% แต่คำถูกอยู่ใน top 16 ถึง 99.5% — เหมือน autocomplete มือถือ) เลยเก็บ 16 candidate ต่อตำแหน่ง ให้คะแนนคู่เพื่อนบ้าน แล้วเดิน path สอดคล้องสุด (แก้ปัญหา the the) — เลือกถูกกว่าทำนาย ใช้พารามิเตอร์น้อยกว่าวิธี DSpark 40 เท่า 7. **ของใหม่ชิ้นที่ 2 — two-tap convolution:** แก้ suffix decay (candidate ท้าย block แย่ลงเพราะ capacity) — ให้ทุกคำแอบดูคำก่อนหน้าหนึ่งก้าว (kernel size 2) · ตำแหน่ง 7: 72.9% → 77.6% ด้วยพารามิเตอร์เพิ่มแค่ 3% (เทียบเพิ่ม 10 layer ได้พอๆ กันแต่แพงกว่ามาก) 8. **ต้นทุน:** เพิ่ม ~216 ล้านพารามิเตอร์ (convolution 110.9M + selector 105.1M) = 400 MB บนดิสก์ · เวลาต่อรอบเพิ่มแค่ ~1.3% 9. **ผลทดลองจริง (Muse Glimmmer 30B บน DGX Spark):** C1: ไม่มี drafter 4.3 token/วิ → DFlash 12.29 → **DFlash 2 ได้ 15.12 (เร็วขึ้น 3.5 เท่า)** · DFlash 2 ชนะ DFlash 1 ได้ 23% (C4 aggregate 29.3%) · acceptance length 3.251 → 4.112 · acceptance rate 15 → 20.83 · ใช้ verification pass น้อยกว่าเพื่อ output เท่าเดิม (1,224 serial) · trade-off: startup นานกว่า + กิน memory มากกว่า (ระวังถ้าชิด memory wall) 10. **คำตัดสิน:** ใช้ DFlash 2 สำหรับงาน Muse Glimmer ที่สน latency บน Spark — acceptance อธิบายความเร็วได้จริง (output ต่อ verification มากกว่า 26–36%) ## ใครควรดู สาย local AI ที่อยากเข้าใจ speculative decoding แบบเห็นภาพ + มีผลทดลองจริงพร้อมตัวเลขบนฮาร์ดแวร์ไม่กี่พันดอลลาร์ --- *Attribution: Tinkering with DFlash2 — Tonbi's AI Garage (youtube.com/watch?v=NtLoOc_vvSo), เผยแพร่ 27 ส.ค. 2026*
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
ตอนนี้คือยุคทองของ local AI มากกว่าที่เคย คุณรันโมเดลทรงพลังที่ใกล้ frontier ของห้องแล็บปิดได้ที่บ้าน บนเครื่องตัวเอง บน GPU หรืออย่างผมบน DGX Spark DGX Spark ออกมาสักพักแล้ว แต่ข้อร้องเรียนแรกๆ ของโมเดล local คือช้ามาก ก็จริง เทียบกับของที่รันใน data center โมเดลบนเครื่องเราช้ากว่าในหลายเคส แต่ไม่เสมอไป ขอบคุณนวัตกรรมใหม่ๆ ช่องนี้จะคุยเทคนิคพวกนี้เยอะ เทคนิคที่พ่อมดสาย local ใช้เร่งและเพิ่มคุณภาพโมเดล local น่าตื่นเต้นตรงงานพวกนี้ทำระดับบุคคลในชุมชนโอเพนซอร์ส ไม่ต้องทำงาน OpenAI หรือ Anthropic ก็ทำได้ ทำเองได้ด้วยฮาร์ดแวร์ไม่กี่พันดอลลาร์ วันนี้จะแนะนำเทคนิคหนึ่งชื่อ DFlash 2 ตอนแรกจะคุยแค่ DFlash แต่เขาออก DFlash 2 พอดี เขียนบล็อกโดย Inco AI สัปดาห์ก่อน เขาปล่อย DFlash เดือนมกราคม ตอนนี้ฮิตมากในฐานะวิธี speculative decoding speculative decoding น่าสนใจเพราะเร่งโมเดล local ง่ายสุด ไม่ต้อง retrain อะไร มักเป็นอย่างแรกที่คนหยิบเมื่อ optimize รุ่นใหม่ นี่คือ inco.ai เห็น GGlu ประกาศว่า DFlash 2 มาแล้ว คลิปนี้ผมจะแจกแจงว่า DFlash กับ DFlash 2 คืออะไร ตอนท้ายจะทดลองบน DGX Spark รันสามโมเดล ตัวหนึ่งโมเดลเปล่าๆ ตัวหนึ่งใส่ DFlash ตัวหนึ่งใช้ DFlash 2 ดูส่วนต่าง performance และสำคัญสุดคือความเร็ว มาเริ่มกัน ถ้าอยากยกระดับเอเจนต์ของตัวเอง ลองดูโปรเจกต์ Agent Wikis ของผม ที่นั่นมี knowledge base ที่ผมใช้ทุกวันทั้งค้นคว้าทำคลิปและสร้างโปรเจกต์ หัวข้อมี Hermes agent กับ hyperframes กับเครื่องมือ local AI และอีกเพียบ wiki มาตรฐานเปิดให้ใช้ฟรีทั้งหมด แต่ถ้าสมัคร Agent Wikis Pro จะได้ Excel wiki ด้วย รวมถึง custom skill ที่ผมพัฒนาร่วมกับเอเจนต์มาตลอดหลายเดือน Pro เดือนละ 9.99 ดอลลาร์เท่านั้น สมัครตอนนี้ล็อกเรทราคานี้ตลอดชีพ ตอนนี้ผมกำลังทำโปรไฟล์เอเจนต์เฉพาะทางกับเทมเพลตเวิร์กโฟลว์อัตโนมัติ พอของพวกนี้ออก ราคา Pro จะขึ้น เลยแนะนำให้สมัครวันนี้ที่ agentwikis.com ขอบคุณทุกคนที่สนับสนุนครับ กลับเข้าวิดีโอกันต่อ ทบทวนเร็วๆ ว่า decoding คืออะไร เพราะศัพท์นี้สำคัญ โมเดลเขียนทีละ token แปะต่อท้าย แล้วทำนายตัวถัดไป การทำนายแต่ละครั้งเรียก forward pass forward pass หนึ่งครั้งอ่าน weight ทุกตัวในโมเดลออกจาก memory ทั้งหมดเพื่อ token เดียว นึกภาพออกว่าช้าแค่ไหนถ้าไม่มีท่าพิเศษ เหมือนอ่านสารานุกรมทั้งเล่มตั้งแต่ปกถึงปกเพื่อเขียนคำเดียว แล้วทำใหม่เพื่อคำถัดไป นี่คือ decoding ธรรมดา สี่ token ต้องสี่ pass pass วิ่งผ่านทุกอัน อันแรกไม่เท่าไร แต่จะตอบ answer แล้วทำนายว่ามันคืออะไร อย่าง pass สี่ตรง 42 ต้องย้อนอ่านทั้งหมดทุก pass อ่าน weight 60 GB ใหม่หมดในตัวอย่างนี้ GPU แทบไม่ได้ compute แค่รอ memory นี่คือที่มาของ speculative decoding วิธีเดาล่วงหน้าแล้วตรวจทีเดียว มีชื่อเรียกหลายแบบ เทคนิคย่อยหลายตัว MTP ฮิตมาก multi-token prediction แต่นี่คือหมวดใหญ่ ได้ยิน speculative decoding หมายถึงพวกไหนก็ได้ แต่ละ forward pass ตรวจหลายตำแหน่งพร้อมกันได้อยู่แล้ว ก็หาอะไรมาให้ตรวจสิ มันใช้โมเดลถูกๆ ชื่อ drafter โมเดลเล็กมาก แยกจากโมเดลหลัก หน้าที่เดียวคือเดา token ถัดๆ ไป ไม่ต้องทีละ token ทีละคำ drafter เดาล่วงหน้าสองสามตัว เห็นไหมตัวอย่างนี้ drafter เสนอมาสี่ตัว คำตอบคือ seven โมเดลหลักเลยตรวจรอบเดียวว่าตอบรับ guess พวกนี้ไหม acceptance กับ acceptance rate สำคัญมาก เดี๋ยวพูดถึง เคสนี้เก็บไว้สามตัว นึกภาพผู้ช่วยเขียนดินสอล่วงหน้า บอสอ่านหน้าทั้งหน้าครั้งเดียวแล้วตัดสินว่าอะไรรอดเป็นหมึก อะไรที่โมเดลหลักไม่เห็นด้วยก็ทิ้งไป DFlash เปลี่ยนอะไรจากนี้ พิเศษยังไง drafter ในวิธีนี้มีปัญหาเดียวกับโมเดลหลัก drafter ก็เป็น language model เขียนทีละ token เหมือนกัน จะเสนอ block สี่ตัว ต้องรันสี่ pass ของตัวเองรอตัวก่อนหน้า แต่ละ pass ถูก โมเดลเล็ก weight น้อยกว่ามาก แต่เขาบอกว่า แก้ปัญหา serial ก้อนใหญ่ด้วยการแลกเป็น pass ใหญ่บวกปัญหา serial ก้อนเล็ก คำถามที่ DFlash ถามคือขั้นตรวจเช็กสี่ตำแหน่งใน pass เดียวได้ ทำไมขั้น draft จะผลิตสี่ตำแหน่งใน pass เดียวไม่ได้บ้าง คำตอบคือได้ ยื่นช่องว่างให้ทีละแถว เคสนี้เห็นสี่ช่องแทนประโยคให้ต่อ แล้วขอให้เติมพร้อมกันหมด pass เดียวออกมาทั้ง block ไม่มี loop ในเขียนทีละ token ไอเดียนี้เคยได้ยินคำว่า diffusion มาก่อน stable diffusion โมเดล generative AI ดังมาก ซีรีส์เดียวกัน ไอเดียเดียวกับ image diffusion ได้ภาพทั้งภาพทีเดียวแทนทีละ pixel เลยเรียก block diffusion นี่คือที่มาของ D ใน DFlash ตรงนี้ขั้นเดียว ผลแค่ข้อเสนอ นึกภาพคนแก้ครอสเวิร์ดที่เขียนคำตอบทุกช่องพร้อมกัน แทนทำแนวนอนให้จบก่อนค่อยทำแนวตั้ง ข้อควรระวังใหญ่ นี่คือกุญแจของคอนเซปต์ที่เหลือ แต่ละตำแหน่งเดาอิสระจากกัน ไม่มีอะไรบังคับให้สอดคล้องกัน ข้างใน drafter ที่ใช้คืออะไร คือชั้นของ transformer block ชั้นเดียว ผมมีคลิป transformer ถ้าอยากลึกถึงพื้นฐาน transformer block ทำสองอย่าง ทุกตำแหน่งมองทุกตำแหน่งอื่นเรียก attention แล้วแต่ละอันประมวลของตัวเองเรียก feed forward นี่คือหนึ่งในห้า layer ของ drafter อ่านจาก checkpoint ตรงๆ หนึ่ง layer มี attention query key value output กับ feed forward กับ layer norm สองตัว ผมมีคลิปพื้นฐาน transformer ดูซีรีส์ machine learning ได้ถ้าอยากลงลึก แต่นี่คือหนึ่ง layer สำคัญคือ block พวกนี้กว้างเท่าโมเดลใหญ่เป๊ะ drafter ไม่ใช่โมเดลแคบกว่า แต่ตื้นกว่า มี block แบบเดียวกันห้าอันแทน 52 อัน drafter พวกนี้มักฝึกมาพร้อมโมเดล หยิบ drafter ไหนแปะโมเดลไหนไม่ได้ เพราะต้อง match กันแบบนี้ อย่านึกว่าเป็น pocket edition ของโมเดลใหญ่ แต่เป็นเครื่องจักรเดียวกันแค่รื้อชั้นออกเกือบหมด นี่คือภาพอีกมุม drafter นี้ห้า layer block size 16 คือความกว้าง แต่ละ layer ผ่าน 16 ช่อง เติมทีเดียวใน pass เดียว ห้า layer คือความสูง แถวนี้วนกี่รอบก่อน commit จำไว้ใช้ทีหลัง ตำแหน่งได้ยินเพื่อนบ้านผ่าน attention ห้ารอบทำให้ตำแหน่ง 16 มีโอกาสน้อยมากที่จะรู้ว่าตำแหน่ง 15 ตกลงอะไร ท้าย block เลยอ่อนกว่าหัว block มาก กลับมาเรื่อง acceptance เพราะเป็นตัวแปรสำคัญ ทุกอย่างจากนี้วัดด้วยเลขเดียว token ที่ผลิตได้หารด้วยจำนวนครั้งที่โมเดลใหญ่ต้องรัน drafter จะให้สักห้าหก token เห็นไหมวิธีทำงาน ไม่มี drafter หนึ่ง pass ได้ token เดียว อย่าง DFlash เดาได้หลายตัว หนึ่ง pass ได้หลาย token acceptance สำคัญ acceptance length ด้วย อย่านับว่าเดากี่ตัว ให้นับว่าเหลือบนกระดาษกี่ตัวหลังบอสตรวจเสร็จ ทุกอย่างที่ DFlash 2 ทำเล็งเลขนี้ DFlash เดาแต่ละตำแหน่งอิสระเลยถูก และตรงนี้แหละที่ทิ้ง value ไว้สองจุด นี่คือที่ DFlash 2 พยายามปรับปรุง จุดหนึ่ง คำที่ถูกอยู่ในลิสต์ไหม guess ผิด drafter งงหรือแค่ลังเล คำถามสอง ทำไมท้าย block แย่ลง guess แรกดี อันที่ 16 ไม่ดี มีอะไรหมดตรงนี้ คำถามแรก ประเด็นคือคำที่ถูกมักอยู่ในลิสต์ guess อยู่แล้ว ย้อนนิด แต่ละตำแหน่งไม่ได้ผลิตคำเดียว ไม่ได้มี guess เดียว จริงๆ ผลิต ranked list แล้ว DFlash เอาอันบนสุดของแต่ละลิสต์ เมื่อตัวบนสุดผิด คำตอบที่ถูกอยู่ลึกแค่ไหน เพราะน่าจะมีคำตอบถูกใน ranked list ใช่ไหม นักวิจัยพบว่าตำแหน่งแรก ตัวบนสุดถูก 85.4 เปอร์เซ็นต์ แต่ token ที่ถูกอยู่ใน top 16 ถึง 99.5 เปอร์เซ็นต์ เกือบตลอดใน top 16 นี่คือชาร์ตของ DFlash ห้า layer วัดบน GSM8K พวกนี้คือตำแหน่งต่างๆ ตำแหน่งแรกอย่างที่บอก ตัวบน 85 ส่วน top 16 ได้ 99 ยิ่งลงไปเลขยิ่งลด เพราะอย่างที่อธิบาย ยิ่งท้าย block performance ยิ่งตก แต่ acceptance ใน top 16 ยังสูงกว่ามาก สำคัญเพราะไม่ได้ทำนายอะไรใหม่ คำตอบอยู่แล้ว แค่ในลิสต์ analogy ตรงนี้คือ autocomplete มือถือ พิมพ์ไป ข้อเสนอแรกอาจผิด แต่ดูลงไป อันดับห้าอันดับหก คำตอบที่ถูกอยู่ตรงนั้น ไม่มีประโยชน์ยกเลิกหมดแล้วทำใหม่เมื่อคำตอบอยู่ลึกลงไปนิดเดียว มันเลยใช้ referee ตัวจิ๋วเลือก path ที่ถูก สมมติตัวเลือกอิสระพังเฉพาะจุด แต่ละอันเข้าท่าแต่เข้ากันไม่ได้ ตัวอย่างตรงนี้ ตำแหน่งหนึ่งว่า the ตำแหน่งสองก็ว่า the ติดอ่างตายตอนตรวจเพราะมี the the ไม่ได้ DFlash 2 เลยเก็บ 16 candidate ต่อตำแหน่ง ให้คะแนนคู่เพื่อนบ้าน แล้วเดิน path ดีสุด เลยต่อ the กับ answer is 62 ได้ เห็นไหม acceptance สูงขึ้นเมื่อเลือก path แบบนี้ เทคนิค speculative decoding อีกตัวที่ฮิต dspark วิธีนั้นทำนายซ้ำตามลำดับ แต่ DFlash 2 มองว่าเลือกถูกกว่าทำนาย DSpark ซึ่งเป็นคู่แข่ง สร้าง vocabulary เต็มของแต่ละตำแหน่งตามลำดับ เลือกจาก candidate ที่มีอยู่ชนะไป ใช้พารามิเตอร์น้อยกว่า 40 เท่า คำถามสอง ทำไมท้าย block แย่ลง คำตอบตรงๆ คือ selection ฉลาดแค่ไหนก็ช่วยไม่ได้ candidate เองแย่ลง inco เรียก suffix decay มองว่าเป็นปัญหา capacity ห้า layer อาจเล็กไปที่จะอุ้ม block 16 ตำแหน่ง เขาเสนอเพิ่ม depth ควรช่วยท้ายสุดมากสุด แล้วก็จริง นึกภาพคำที่ 16 คือ guess ต่อจาก guess ต่อจาก guess ต่อจาก guess ยิ่งไกลยิ่งมัว พูดถึง depth คือ layer เห็นไหมเพิ่ม layer ตำแหน่งลึก acceptance ดีขึ้น สาม layer ได้ 65 เปอร์เซ็นต์ สิบห้า layer ได้ 78.7 เปอร์เซ็นต์ แลกด้วยพารามิเตอร์สามเท่าบวกเวลา 15.2 เปอร์เซ็นต์ depth เองทื่อมาก เพิ่มสิบ layer เพิ่ม capacity ทุกที่รวมตำแหน่งหนึ่งที่ไม่มีอะไรให้เก็บ ปัญหาหลักคือตำแหน่ง 16 หรือ 7 ท้ายๆ ลงไป คำตอบคือให้ทุกคำแอบดูคำก่อนหน้า ถ้า attention บีบงานใน block ออก ก็ให้งานนั้นมีเครื่องจักรของตัวเอง งานเล็ก block สี่ถึง 16 token ไม่เยอะ สำคัญคือเพื่อนบ้าน กุญแจตรงนี้ convolution ดูตำแหน่งปัจจุบันกับถอยหลังหนึ่งก้าว เห็นผลในตัวเลข ห้า layer ตำแหน่งเจ็ดได้ 72.9 เปอร์เซ็นต์ แต่ห้า layer บวก convolution ได้ 77.6 เปอร์เซ็นต์ ด้วยพารามิเตอร์เพิ่มแค่ 3 เปอร์เซ็นต์กับเวลาเพิ่มนิดเดียว kernel เดียวที่เอื้อมกลับหนึ่งตำแหน่งกู้คืนสิ่งที่สิบ layer เพิ่มให้ได้เกือบหมด ปรากฏว่า suffix decay เป็นปัญหา local นี่เอง นั่นคือ DFlash 2 ทั้งหมดคือส่วนต่างใช่ไหม ต่อจาก DFlash แต่เพิ่มของใหม่สองอย่าง หนึ่งคือ path selector เก็บ 16 candidate ต่อตำแหน่งแล้วเดิน path สอดคล้องสุด กับ two-tap convolution ใหม่ให้แต่ละตำแหน่งแอบดูย้อนหนึ่งก้าว ท้ายเลยไม่ decay ต้นทุนในแง่ checkpoint ที่กำลังจะรัน แต่ละรุ่นต่างนิดหน่อย convolution 110.9 ล้านพารามิเตอร์ เพราะสอง module ต่อ layer ห่อ attention กับ feed forward selector 105.1 ล้าน รวมเพิ่มราว 216 ล้านพารามิเตอร์ 400 MB บนดิสก์สำหรับโมเดลนี้ เพิ่มเวลาต่อรอบราว 1.3 เปอร์เซ็นต์ drafter ตัวเดิมแค่เพิ่ม key ใหม่สี่ตัว นี่คือชาร์ตเทียบ DFlash กับ DFlash 2 เห็น selector top K เดิมไม่มี 16 selector rank 256 convolution kernel size สอง group size 16 นั่นคือแจกแจง จบคำอธิบาย หวังว่าเข้าใจ ผมลดรูปบางส่วน แต่ภาพรวมน่าจะชัดว่า DFlash กับ DFlash 2 คืออะไร ออกจากสไลด์ มาทดลองจริงบน DGX Spark โมเดลที่ใช้คือ Muse Glimmer 30B assistant เพราะทำได้ตรงไปตรงมาใช้โมเดลเดียวทั้งแบบไม่มี drafter แบบ DFlash และ DFlash 2 DFlash 2 เพิ่งออกสัปดาห์ก่อน โมเดลที่ adapt แล้วยังน้อย จำกัดแค่นี้ น่าจะเทียบ apple-to-apple ได้พอควรใช้รุ่นโอเพนซอร์สล่าสุดของ Meta อย่าง Muse Glimmer นี่คือที่ Inco เจอเอง เขารันบน H200 แรงกว่า DGX Spark ผมเยอะ เขาเจอแบบไม่มี drafter acceptance length Q1 ได้หนึ่งอยู่แล้ว DFlash ได้ 5.43 กับ DFlash 2 ได้ 6.54 นำไปสู่ token ต่อวินาทีมากกว่าและ speedup สูงกว่า เดี๋ยวลองดู นี่คือแผนเต็ม ประกอบกับเอเจนต์ เห็นสามรันที่จะทำ โมเดลเดียว Muse Glimmer 30B รัน baseline ไม่มี drafter เลย แล้ว DFlash แล้ว DFlash 2 ทำใน Hermes Agent อยู่บน DGX Spark นี่คือ profile ที่ทดลองส่วนใหญ่ ตอนนี้ให้มันรีวิวไฟล์ spec การทดลอง session ใหม่ แล้วเริ่มจริง ขั้นแรก baseline ไม่มี speculative decoding เลย รู้ว่าข้อความบนจอเยอะ แต่นี่คือวิธีรันผ่าน safety pre-flight สร้าง environment แยก pin model revision ให้ใช้ revision เดียวกันทุกรัน เทสต์ ล็อก server setting แล้วเริ่มรัน ผมจะทำ setup ต้นๆ แล้วรันแรกไม่มี drafter เก็บ log สร้าง environment เสร็จ pre-flight ผ่าน ตอนนี้โหลด weight ใช้เวลาหน่อย แล้วรันเทสต์แรก หลักๆ ดูความเร็ว แต่ดู acceptance length, acceptance rate กับ quality test ด้วย ทดลองเสร็จ รันครบทุกอัน รันข้ามคืนเลยบรรยายทุกขั้นไม่ได้ แต่มีผลแล้ว ใส่สไลด์ให้สวย มาดูว่าเจออะไร นี่คือผลรันบน Muse Glimmer 30B เห็น C1 พวก C คือ concurrency stream พร้อมกันกี่สาย C1 คือหนึ่ง C6 คือหก session หกสายพร้อมกันนึกแบบนั้น C1 แบบไม่มี drafter ได้ 4.3 token ต่อวินาที ช้ามาก ใส่ DFlash 1 เด้งเป็น 12.29 แล้ว DFlash 2 ดีขึ้นอีก 15.12 ส่วน C6 รันพร้อมกันหกสายก็ดีขึ้น ไม่แรงเท่าเคสเดี่ยว แต่ต่างชัด เร็วขึ้น 3.5 เท่าด้วย DFlash 2 เทียบไม่มี drafter เลย DFlash 2 เทียบ DFlash 1 ที่ C1 เร็วขึ้น 23 เปอร์เซ็นต์ แล้ว 29.3 เปอร์เซ็นต์ที่ C4 aggregate สำคัญสุดคือเลขพวกนี้ accepted length กับ acceptance rate เห็น C1 กับ DFlash 1 acceptance length 3.251 token ส่วน DFlash 2 ได้ 4.112 acceptance rate 15 เด้งเป็น 20.83 ดีขึ้นชัดทุกตัว เห็น total correct draft token ในรันนี้เพิ่ม จำนวน proposed draft token ลดลง verification count ก็ต่ำลง นี่คือ verification pass ใช่ไหม pass น้อยลง แต่เร็วขึ้น acceptance rate กับ acceptance length สูงขึ้น กลไกตรงกับผล DFlash 2 ใช้ target verification pass น้อยกว่าเพื่อปล่อย output เท่าเดิม 1,224 serial กับ 3,72 concurrent output token นั่นคือคำอธิบายตรงสุดของ throughput ที่วัดได้ trade-off เล็กๆ ใช้ startup นานกว่า เห็นตรงนี้ peak compute residency มากกว่าเดิมหน่อย ไม่มากกว่า DFlash มาก แต่มากกว่าแบบไม่มี drafter ชัด รันได้ไม่มีปัญหา แต่จำไว้ถ้ารันโมเดลชิด memory wall นี่คือ takeaway จากการเทสต์ Hibana ตรงนี้ DFlash 2 คือผู้ชนะใช้จริงสำหรับ target นี้ speedup ชัด กรณีนี้ acceptance อธิบายความเร็วจริงอย่างที่รู้ version two DFlash 2 ผลิต output ต่อ target verification มากกว่า 26 ถึง 36 เปอร์เซ็นต์ ใช้ verification pass น้อยลงในงบ token เท่าเดิม นั่นคือที่มาของความเร็ว คำตัดสินใช้จริง ใช้ DFlash 2 สำหรับงาน Muse Glimmer ที่สน latency บน Spark พิสูจน์แล้วบน DGX Spark ผมเอง จบคลิปนี้ หวังว่าได้รู้ว่า DFlash คืออะไร speculative decoding โดยรวม เทคนิคมีแบบไหน อย่างที่บอก local AI ตอนนี้น่าตื่นเต้น คนเก่งคนขยันเยอะมาก ทำงานให้ชุมชนโอเพนซอร์ส หาเทคนิคพวกนี้ ทดลองกัน ห้องแล็บใหญ่อย่าง Inco AI ปล่อย DFlash 2 มา ชุมชน local AI เอาไปลองหาวิธีใช้ดีสุด น่าตื่นเต้นมาก หวังว่าได้เทคนิคไป คอมเมนต์บอกหน่อยว่าคิดไง จะเอาไปใช้ท่าไหน ลองหรือยัง นี่ผมรันทดลองครั้งแรก ประทับใจผล จบคลิปนี้ ขอบคุณที่รับชมครับ
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| DFlash / DFlash 2 | DFlash |
| Inco AI (inco.ai) | Inco AI |
| speculative decoding | speculative decoding |
| MTP (multi-token prediction) | MTP |
| DSpark (rival) | DSpark |
| decoding (ordinary) | decoding |
| token | token |
| forward pass | forward pass |
| weight (60 GB) | weight |
| memory (waiting on) | memory |
| drafter | drafter |
| acceptance / rate / length | acceptance |
| Q1 (acceptance length = 1) | Q1 |
| block diffusion (D) | block diffusion |
| diffusion / stable diffusion | diffusion |
| crossword solver | crossword solver |
| pencil / ink (boss) | pencil / ink |
| serial problem | serial problem |
| transformer block | transformer block |
| checkpoint | checkpoint |
| attention | attention |
| feed forward | feed forward |
| query key value output | query key value |
| layer norm | layer norm |
| shallower (5 vs 52 layers) | shallower |
| pocket edition | pocket edition |
| block size 16 | block size |
| width / height / slot / commit | width / height |
| neighbor | neighbor |
| suffix decay | suffix decay |
| capacity issue | capacity |
| depth (layers) | depth |
| ranked list / top pick / top 16 | ranked list |
| GSM8K | GSM8K |
| phone autocomplete | autocomplete |
| referee (tiny) | referee |
| candidate (16/position) | candidate |
| neighboring pair (scoring) | neighboring pair |
| best path (walk) | best path |
| the the (stutter) | the the |
| vocabulary (rebuild) | vocabulary |
| 40x fewer parameters | 40x |
| two-tap convolution | convolution |
| kernel size 2 / group size 16 | kernel size |
| selector top K 16 / rank 256 | selector |
| tap / peak (peek) | peak |
| 216M params (110.9+105.1M) | parameters |
| 400 MB on disk | 400 MB |
| 1.3% time per cycle | 1.3% |
| DGX Spark | DGX Spark |
| H200 | H200 |
| Muse Glimmer 30B (Meta) | Muse Glimmer |
| apples-to-apples | apples-to-apples |
| no drafter (baseline) | baseline |
| C1 / C4 / C6 (concurrency) | concurrency |
| token per second / speedup | speedup |
| serial / concurrent output | serial |
| verification pass / count | verification |
| proposed vs correct draft tokens | draft token |
| throughput | throughput |
| startup (longer) | startup |
| peak compute residency | residency |
| memory wall | memory wall |
| latency sensitive / serving | latency |
| safety pre-flight | pre-flight |
| isolated environment | isolated |
| model revision (pin) | revision |
| server setting (lock) | server setting |
| log / weight download | log |
| overnight run | overnight |
| Hibana test | Hibana |
| practical winner / verdict | verdict |
| 26–36% more per verification | 26–36% |
| local magician / community | community |
| OpenAI / Anthropic | OpenAI |
| data center / GPU | data center |
| Agent Wikis / Pro $9.99 | Agent Wikis |
| Hyperframes | Hyperframes |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:04,781 ตอนนี้คือยุคทองของ local AI มากกว่าที่เคย 2 00:00:04,781 --> 00:00:08,745 คุณรันโมเดลทรงพลังที่ใกล้ frontier 3 00:00:08,745 --> 00:00:13,759 ของห้องแล็บปิดได้ที่บ้าน บนเครื่องตัวเอง บน 4 00:00:13,759 --> 00:00:18,073 GPU หรืออย่างผมบน DGX Spark DGX Spark
เปิดดูซับไตเติ้ลทั้งหมด (304 segments)
1 00:00:00,000 --> 00:00:04,781 ตอนนี้คือยุคทองของ local AI มากกว่าที่เคย 2 00:00:04,781 --> 00:00:08,745 คุณรันโมเดลทรงพลังที่ใกล้ frontier 3 00:00:08,745 --> 00:00:13,759 ของห้องแล็บปิดได้ที่บ้าน บนเครื่องตัวเอง บน 4 00:00:13,759 --> 00:00:18,073 GPU หรืออย่างผมบน DGX Spark DGX Spark 5 00:00:18,073 --> 00:00:23,203 ออกมาสักพักแล้ว แต่ข้อร้องเรียนแรกๆ ของโมเดล 6 00:00:23,203 --> 00:00:28,100 local คือช้ามาก ก็จริง เทียบกับของที่รันใน 7 00:00:28,100 --> 00:00:33,347 data center โมเดลบนเครื่องเราช้ากว่าในหลายเคส 8 00:00:33,347 --> 00:00:37,078 แต่ไม่เสมอไป ขอบคุณนวัตกรรมใหม่ๆ 9 00:00:37,078 --> 00:00:42,442 ช่องนี้จะคุยเทคนิคพวกนี้เยอะ เทคนิคที่พ่อมดสาย 10 00:00:42,442 --> 00:00:46,873 local ใช้เร่งและเพิ่มคุณภาพโมเดล local 11 00:00:46,873 --> 00:00:52,936 น่าตื่นเต้นตรงงานพวกนี้ทำระดับบุคคลในชุมชนโอเพนซอร์ส 12 00:00:52,936 --> 00:00:57,833 ไม่ต้องทำงาน OpenAI หรือ Anthropic ก็ทำได้ 13 00:00:57,833 --> 00:01:02,147 ทำเองได้ด้วยฮาร์ดแวร์ไม่กี่พันดอลลาร์ 14 00:01:02,147 --> 00:01:06,461 วันนี้จะแนะนำเทคนิคหนึ่งชื่อ DFlash 2 15 00:01:06,461 --> 00:01:11,708 ตอนแรกจะคุยแค่ DFlash แต่เขาออก DFlash 2 พอดี 16 00:01:11,708 --> 00:01:16,606 เขียนบล็อกโดย Inco AI สัปดาห์ก่อน เขาปล่อย 17 00:01:16,606 --> 00:01:21,386 DFlash เดือนมกราคม ตอนนี้ฮิตมากในฐานะวิธี 18 00:01:21,386 --> 00:01:26,167 speculative decoding speculative decoding 19 00:01:26,167 --> 00:01:31,180 น่าสนใจเพราะเร่งโมเดล local ง่ายสุด ไม่ต้อง 20 00:01:31,180 --> 00:01:36,078 retrain อะไร มักเป็นอย่างแรกที่คนหยิบเมื่อ 21 00:01:36,078 --> 00:01:40,975 optimize รุ่นใหม่ นี่คือ inco.ai เห็น GGlu 22 00:01:40,975 --> 00:01:46,338 ประกาศว่า DFlash 2 มาแล้ว คลิปนี้ผมจะแจกแจงว่า 23 00:01:46,338 --> 00:01:51,469 DFlash กับ DFlash 2 คืออะไร ตอนท้ายจะทดลองบน 24 00:01:51,469 --> 00:01:56,249 DGX Spark รันสามโมเดล ตัวหนึ่งโมเดลเปล่าๆ 25 00:01:56,249 --> 00:02:00,797 ตัวหนึ่งใส่ DFlash ตัวหนึ่งใช้ DFlash 2 26 00:02:00,797 --> 00:02:06,044 ดูส่วนต่าง performance และสำคัญสุดคือความเร็ว 27 00:02:06,044 --> 00:02:10,824 มาเริ่มกัน ถ้าอยากยกระดับเอเจนต์ของตัวเอง 28 00:02:10,824 --> 00:02:15,605 ลองดูโปรเจกต์ Agent Wikis ของผม ที่นั่นมี 29 00:02:15,605 --> 00:02:17,237 knowledge base 30 00:02:17,237 --> 00:02:22,717 ที่ผมใช้ทุกวันทั้งค้นคว้าทำคลิปและสร้างโปรเจกต์ 31 00:02:22,717 --> 00:02:27,031 หัวข้อมี Hermes agent กับ hyperframes 32 00:02:27,031 --> 00:02:31,579 กับเครื่องมือ local AI และอีกเพียบ wiki 33 00:02:31,579 --> 00:02:36,826 มาตรฐานเปิดให้ใช้ฟรีทั้งหมด แต่ถ้าสมัคร Agent 34 00:02:36,826 --> 00:02:42,073 Wikis Pro จะได้ Excel wiki ด้วย รวมถึง custom 35 00:02:42,073 --> 00:02:47,320 skill ที่ผมพัฒนาร่วมกับเอเจนต์มาตลอดหลายเดือน 36 00:02:47,320 --> 00:02:51,051 Pro เดือนละ 9.99 ดอลลาร์เท่านั้น 37 00:02:51,051 --> 00:02:54,782 สมัครตอนนี้ล็อกเรทราคานี้ตลอดชีพ 38 00:02:54,782 --> 00:03:02,594 ตอนนี้ผมกำลังทำโปรไฟล์เอเจนต์เฉพาะทางกับเทมเพลตเวิร์กโฟลว์อัตโนมัติ 39 00:03:02,594 --> 00:03:06,092 พอของพวกนี้ออก ราคา Pro จะขึ้น 40 00:03:06,092 --> 00:03:10,756 เลยแนะนำให้สมัครวันนี้ที่ agentwikis.com 41 00:03:10,756 --> 00:03:13,788 ขอบคุณทุกคนที่สนับสนุนครับ 42 00:03:13,788 --> 00:03:18,918 กลับเข้าวิดีโอกันต่อ ทบทวนเร็วๆ ว่า decoding 43 00:03:18,918 --> 00:03:23,699 คืออะไร เพราะศัพท์นี้สำคัญ โมเดลเขียนทีละ 44 00:03:23,699 --> 00:03:27,663 token แปะต่อท้าย แล้วทำนายตัวถัดไป 45 00:03:27,663 --> 00:03:32,793 การทำนายแต่ละครั้งเรียก forward pass forward 46 00:03:32,793 --> 00:03:38,157 pass หนึ่งครั้งอ่าน weight ทุกตัวในโมเดลออกจาก 47 00:03:38,157 --> 00:03:41,771 memory ทั้งหมดเพื่อ token เดียว 48 00:03:41,771 --> 00:03:46,086 นึกภาพออกว่าช้าแค่ไหนถ้าไม่มีท่าพิเศษ 49 00:03:46,086 --> 00:03:52,848 เหมือนอ่านสารานุกรมทั้งเล่มตั้งแต่ปกถึงปกเพื่อเขียนคำเดียว 50 00:03:52,848 --> 00:03:58,095 แล้วทำใหม่เพื่อคำถัดไป นี่คือ decoding ธรรมดา 51 00:03:58,095 --> 00:04:02,992 สี่ token ต้องสี่ pass pass วิ่งผ่านทุกอัน 52 00:04:02,992 --> 00:04:06,607 อันแรกไม่เท่าไร แต่จะตอบ answer 53 00:04:06,607 --> 00:04:11,621 แล้วทำนายว่ามันคืออะไร อย่าง pass สี่ตรง 42 54 00:04:11,621 --> 00:04:16,868 ต้องย้อนอ่านทั้งหมดทุก pass อ่าน weight 60 GB 55 00:04:16,868 --> 00:04:21,765 ใหม่หมดในตัวอย่างนี้ GPU แทบไม่ได้ compute 56 00:04:21,765 --> 00:04:26,312 แค่รอ memory นี่คือที่มาของ speculative 57 00:04:26,312 --> 00:04:30,860 decoding วิธีเดาล่วงหน้าแล้วตรวจทีเดียว 58 00:04:30,860 --> 00:04:35,524 มีชื่อเรียกหลายแบบ เทคนิคย่อยหลายตัว MTP 59 00:04:35,524 --> 00:04:38,905 ฮิตมาก multi-token prediction 60 00:04:38,905 --> 00:04:44,152 แต่นี่คือหมวดใหญ่ ได้ยิน speculative decoding 61 00:04:44,152 --> 00:04:48,466 หมายถึงพวกไหนก็ได้ แต่ละ forward pass 62 00:04:48,466 --> 00:04:52,430 ตรวจหลายตำแหน่งพร้อมกันได้อยู่แล้ว 63 00:04:52,430 --> 00:04:56,511 ก็หาอะไรมาให้ตรวจสิ มันใช้โมเดลถูกๆ 64 00:04:56,511 --> 00:05:04,790 ชื่อ drafter โมเดลเล็กมาก แยกจากโมเดลหลัก หน้าที่เดียวคือเดา token ถัดๆ 65 00:05:04,790 --> 00:05:08,871 ไป ไม่ต้องทีละ token ทีละคำ drafter 66 00:05:08,871 --> 00:05:13,418 เดาล่วงหน้าสองสามตัว เห็นไหมตัวอย่างนี้ 67 00:05:13,418 --> 00:05:17,499 drafter เสนอมาสี่ตัว คำตอบคือ seven 68 00:05:17,499 --> 00:05:22,047 โมเดลหลักเลยตรวจรอบเดียวว่าตอบรับ guess 69 00:05:22,047 --> 00:05:26,711 พวกนี้ไหม acceptance กับ acceptance rate 70 00:05:26,711 --> 00:05:31,491 สำคัญมาก เดี๋ยวพูดถึง เคสนี้เก็บไว้สามตัว 71 00:05:31,491 --> 00:05:35,106 นึกภาพผู้ช่วยเขียนดินสอล่วงหน้า 72 00:05:35,106 --> 00:05:41,752 บอสอ่านหน้าทั้งหน้าครั้งเดียวแล้วตัดสินว่าอะไรรอดเป็นหมึก 73 00:05:41,752 --> 00:05:46,649 อะไรที่โมเดลหลักไม่เห็นด้วยก็ทิ้งไป DFlash 74 00:05:46,649 --> 00:05:50,847 เปลี่ยนอะไรจากนี้ พิเศษยังไง drafter 75 00:05:50,847 --> 00:05:55,627 ในวิธีนี้มีปัญหาเดียวกับโมเดลหลัก drafter 76 00:05:55,627 --> 00:05:59,941 ก็เป็น language model เขียนทีละ token 77 00:05:59,941 --> 00:06:05,188 เหมือนกัน จะเสนอ block สี่ตัว ต้องรันสี่ pass 78 00:06:05,188 --> 00:06:09,502 ของตัวเองรอตัวก่อนหน้า แต่ละ pass ถูก 79 00:06:09,502 --> 00:06:14,283 โมเดลเล็ก weight น้อยกว่ามาก แต่เขาบอกว่า 80 00:06:14,283 --> 00:06:19,297 แก้ปัญหา serial ก้อนใหญ่ด้วยการแลกเป็น pass 81 00:06:19,297 --> 00:06:24,427 ใหญ่บวกปัญหา serial ก้อนเล็ก คำถามที่ DFlash 82 00:06:24,427 --> 00:06:29,557 ถามคือขั้นตรวจเช็กสี่ตำแหน่งใน pass เดียวได้ 83 00:06:29,557 --> 00:06:33,988 ทำไมขั้น draft จะผลิตสี่ตำแหน่งใน pass 84 00:06:33,988 --> 00:06:37,136 เดียวไม่ได้บ้าง คำตอบคือได้ 85 00:06:37,136 --> 00:06:39,702 ยื่นช่องว่างให้ทีละแถว 86 00:06:39,702 --> 00:06:43,433 เคสนี้เห็นสี่ช่องแทนประโยคให้ต่อ 87 00:06:43,433 --> 00:06:48,563 แล้วขอให้เติมพร้อมกันหมด pass เดียวออกมาทั้ง 88 00:06:48,563 --> 00:06:52,527 block ไม่มี loop ในเขียนทีละ token 89 00:06:52,527 --> 00:06:57,191 ไอเดียนี้เคยได้ยินคำว่า diffusion มาก่อน 90 00:06:57,191 --> 00:07:02,205 stable diffusion โมเดล generative AI ดังมาก 91 00:07:02,205 --> 00:07:07,452 ซีรีส์เดียวกัน ไอเดียเดียวกับ image diffusion 92 00:07:07,452 --> 00:07:12,349 ได้ภาพทั้งภาพทีเดียวแทนทีละ pixel เลยเรียก 93 00:07:12,349 --> 00:07:17,246 block diffusion นี่คือที่มาของ D ใน DFlash 94 00:07:17,246 --> 00:07:20,511 ตรงนี้ขั้นเดียว ผลแค่ข้อเสนอ 95 00:07:20,511 --> 00:07:26,225 นึกภาพคนแก้ครอสเวิร์ดที่เขียนคำตอบทุกช่องพร้อมกัน 96 00:07:26,225 --> 00:07:30,072 แทนทำแนวนอนให้จบก่อนค่อยทำแนวตั้ง 97 00:07:30,072 --> 00:07:35,436 ข้อควรระวังใหญ่ นี่คือกุญแจของคอนเซปต์ที่เหลือ 98 00:07:35,436 --> 00:07:38,467 แต่ละตำแหน่งเดาอิสระจากกัน 99 00:07:38,467 --> 00:07:43,598 ไม่มีอะไรบังคับให้สอดคล้องกัน ข้างใน drafter 100 00:07:43,598 --> 00:07:48,495 ที่ใช้คืออะไร คือชั้นของ transformer block 101 00:07:48,495 --> 00:07:51,993 ชั้นเดียว ผมมีคลิป transformer 102 00:07:51,993 --> 00:07:56,424 ถ้าอยากลึกถึงพื้นฐาน transformer block 103 00:07:56,424 --> 00:08:01,437 ทำสองอย่าง ทุกตำแหน่งมองทุกตำแหน่งอื่นเรียก 104 00:08:01,437 --> 00:08:06,335 attention แล้วแต่ละอันประมวลของตัวเองเรียก 105 00:08:06,335 --> 00:08:10,882 feed forward นี่คือหนึ่งในห้า layer ของ 106 00:08:10,882 --> 00:08:16,246 drafter อ่านจาก checkpoint ตรงๆ หนึ่ง layer มี 107 00:08:16,246 --> 00:08:21,026 attention query key value output กับ feed 108 00:08:21,026 --> 00:08:26,273 forward กับ layer norm สองตัว ผมมีคลิปพื้นฐาน 109 00:08:26,273 --> 00:08:30,587 transformer ดูซีรีส์ machine learning 110 00:08:30,587 --> 00:08:35,834 ได้ถ้าอยากลงลึก แต่นี่คือหนึ่ง layer สำคัญคือ 111 00:08:35,834 --> 00:08:40,731 block พวกนี้กว้างเท่าโมเดลใหญ่เป๊ะ drafter 112 00:08:40,731 --> 00:08:45,279 ไม่ใช่โมเดลแคบกว่า แต่ตื้นกว่า มี block 113 00:08:45,279 --> 00:08:49,360 แบบเดียวกันห้าอันแทน 52 อัน drafter 114 00:08:49,360 --> 00:08:53,674 พวกนี้มักฝึกมาพร้อมโมเดล หยิบ drafter 115 00:08:53,674 --> 00:08:59,037 ไหนแปะโมเดลไหนไม่ได้ เพราะต้อง match กันแบบนี้ 116 00:08:59,037 --> 00:09:03,935 อย่านึกว่าเป็น pocket edition ของโมเดลใหญ่ 117 00:09:03,935 --> 00:09:09,531 แต่เป็นเครื่องจักรเดียวกันแค่รื้อชั้นออกเกือบหมด 118 00:09:09,531 --> 00:09:14,429 นี่คือภาพอีกมุม drafter นี้ห้า layer block 119 00:09:14,429 --> 00:09:19,675 size 16 คือความกว้าง แต่ละ layer ผ่าน 16 ช่อง 120 00:09:19,675 --> 00:09:24,922 เติมทีเดียวใน pass เดียว ห้า layer คือความสูง 121 00:09:24,922 --> 00:09:29,586 แถวนี้วนกี่รอบก่อน commit จำไว้ใช้ทีหลัง 122 00:09:29,586 --> 00:09:33,901 ตำแหน่งได้ยินเพื่อนบ้านผ่าน attention 123 00:09:33,901 --> 00:09:36,349 ห้ารอบทำให้ตำแหน่ง 16 124 00:09:36,349 --> 00:09:41,479 มีโอกาสน้อยมากที่จะรู้ว่าตำแหน่ง 15 ตกลงอะไร 125 00:09:41,479 --> 00:09:45,560 ท้าย block เลยอ่อนกว่าหัว block มาก 126 00:09:45,560 --> 00:09:50,691 กลับมาเรื่อง acceptance เพราะเป็นตัวแปรสำคัญ 127 00:09:50,691 --> 00:09:54,772 ทุกอย่างจากนี้วัดด้วยเลขเดียว token 128 00:09:54,772 --> 00:10:00,135 ที่ผลิตได้หารด้วยจำนวนครั้งที่โมเดลใหญ่ต้องรัน 129 00:10:00,135 --> 00:10:05,266 drafter จะให้สักห้าหก token เห็นไหมวิธีทำงาน 130 00:10:05,266 --> 00:10:10,629 ไม่มี drafter หนึ่ง pass ได้ token เดียว อย่าง 131 00:10:10,629 --> 00:10:15,876 DFlash เดาได้หลายตัว หนึ่ง pass ได้หลาย token 132 00:10:15,876 --> 00:10:20,424 acceptance สำคัญ acceptance length ด้วย 133 00:10:20,424 --> 00:10:22,639 อย่านับว่าเดากี่ตัว 134 00:10:22,639 --> 00:10:27,769 ให้นับว่าเหลือบนกระดาษกี่ตัวหลังบอสตรวจเสร็จ 135 00:10:27,769 --> 00:10:32,433 ทุกอย่างที่ DFlash 2 ทำเล็งเลขนี้ DFlash 136 00:10:32,433 --> 00:10:35,465 เดาแต่ละตำแหน่งอิสระเลยถูก 137 00:10:35,465 --> 00:10:40,828 และตรงนี้แหละที่ทิ้ง value ไว้สองจุด นี่คือที่ 138 00:10:40,828 --> 00:10:44,560 DFlash 2 พยายามปรับปรุง จุดหนึ่ง 139 00:10:44,560 --> 00:10:49,224 คำที่ถูกอยู่ในลิสต์ไหม guess ผิด drafter 140 00:10:49,224 --> 00:10:54,354 งงหรือแค่ลังเล คำถามสอง ทำไมท้าย block แย่ลง 141 00:10:54,354 --> 00:10:59,368 guess แรกดี อันที่ 16 ไม่ดี มีอะไรหมดตรงนี้ 142 00:10:59,368 --> 00:11:04,148 คำถามแรก ประเด็นคือคำที่ถูกมักอยู่ในลิสต์ 143 00:11:04,148 --> 00:11:06,713 guess อยู่แล้ว ย้อนนิด 144 00:11:06,713 --> 00:11:11,844 แต่ละตำแหน่งไม่ได้ผลิตคำเดียว ไม่ได้มี guess 145 00:11:11,844 --> 00:11:16,508 เดียว จริงๆ ผลิต ranked list แล้ว DFlash 146 00:11:16,508 --> 00:11:21,288 เอาอันบนสุดของแต่ละลิสต์ เมื่อตัวบนสุดผิด 147 00:11:21,288 --> 00:11:24,087 คำตอบที่ถูกอยู่ลึกแค่ไหน 148 00:11:24,087 --> 00:11:28,867 เพราะน่าจะมีคำตอบถูกใน ranked list ใช่ไหม 149 00:11:28,867 --> 00:11:33,531 นักวิจัยพบว่าตำแหน่งแรก ตัวบนสุดถูก 85.4 150 00:11:33,531 --> 00:11:38,778 เปอร์เซ็นต์ แต่ token ที่ถูกอยู่ใน top 16 ถึง 151 00:11:38,778 --> 00:11:42,859 99.5 เปอร์เซ็นต์ เกือบตลอดใน top 16 152 00:11:42,859 --> 00:11:47,873 นี่คือชาร์ตของ DFlash ห้า layer วัดบน GSM8K 153 00:11:47,873 --> 00:11:52,887 พวกนี้คือตำแหน่งต่างๆ ตำแหน่งแรกอย่างที่บอก 154 00:11:52,887 --> 00:11:58,134 ตัวบน 85 ส่วน top 16 ได้ 99 ยิ่งลงไปเลขยิ่งลด 155 00:11:58,134 --> 00:12:03,497 เพราะอย่างที่อธิบาย ยิ่งท้าย block performance 156 00:12:03,497 --> 00:12:08,744 ยิ่งตก แต่ acceptance ใน top 16 ยังสูงกว่ามาก 157 00:12:08,744 --> 00:12:13,758 สำคัญเพราะไม่ได้ทำนายอะไรใหม่ คำตอบอยู่แล้ว 158 00:12:13,758 --> 00:12:18,538 แค่ในลิสต์ analogy ตรงนี้คือ autocomplete 159 00:12:18,538 --> 00:12:23,319 มือถือ พิมพ์ไป ข้อเสนอแรกอาจผิด แต่ดูลงไป 160 00:12:23,319 --> 00:12:27,983 อันดับห้าอันดับหก คำตอบที่ถูกอยู่ตรงนั้น 161 00:12:27,983 --> 00:12:35,095 ไม่มีประโยชน์ยกเลิกหมดแล้วทำใหม่เมื่อคำตอบอยู่ลึกลงไปนิดเดียว 162 00:12:35,095 --> 00:12:39,993 มันเลยใช้ referee ตัวจิ๋วเลือก path ที่ถูก 163 00:12:39,993 --> 00:12:43,374 สมมติตัวเลือกอิสระพังเฉพาะจุด 164 00:12:43,374 --> 00:12:48,738 แต่ละอันเข้าท่าแต่เข้ากันไม่ได้ ตัวอย่างตรงนี้ 165 00:12:48,738 --> 00:12:53,285 ตำแหน่งหนึ่งว่า the ตำแหน่งสองก็ว่า the 166 00:12:53,285 --> 00:12:58,648 ติดอ่างตายตอนตรวจเพราะมี the the ไม่ได้ DFlash 167 00:12:58,648 --> 00:13:02,496 2 เลยเก็บ 16 candidate ต่อตำแหน่ง 168 00:13:02,496 --> 00:13:07,277 ให้คะแนนคู่เพื่อนบ้าน แล้วเดิน path ดีสุด 169 00:13:07,277 --> 00:13:11,824 เลยต่อ the กับ answer is 62 ได้ เห็นไหม 170 00:13:11,824 --> 00:13:16,488 acceptance สูงขึ้นเมื่อเลือก path แบบนี้ 171 00:13:16,488 --> 00:13:21,152 เทคนิค speculative decoding อีกตัวที่ฮิต 172 00:13:21,152 --> 00:13:26,282 dspark วิธีนั้นทำนายซ้ำตามลำดับ แต่ DFlash 2 173 00:13:26,282 --> 00:13:31,646 มองว่าเลือกถูกกว่าทำนาย DSpark ซึ่งเป็นคู่แข่ง 174 00:13:31,646 --> 00:13:36,776 สร้าง vocabulary เต็มของแต่ละตำแหน่งตามลำดับ 175 00:13:36,776 --> 00:13:40,624 เลือกจาก candidate ที่มีอยู่ชนะไป 176 00:13:40,624 --> 00:13:45,172 ใช้พารามิเตอร์น้อยกว่า 40 เท่า คำถามสอง 177 00:13:45,172 --> 00:13:50,302 ทำไมท้าย block แย่ลง คำตอบตรงๆ คือ selection 178 00:13:50,302 --> 00:13:55,665 ฉลาดแค่ไหนก็ช่วยไม่ได้ candidate เองแย่ลง inco 179 00:13:55,665 --> 00:14:00,679 เรียก suffix decay มองว่าเป็นปัญหา capacity 180 00:14:00,679 --> 00:14:05,926 ห้า layer อาจเล็กไปที่จะอุ้ม block 16 ตำแหน่ง 181 00:14:05,926 --> 00:14:10,474 เขาเสนอเพิ่ม depth ควรช่วยท้ายสุดมากสุด 182 00:14:10,474 --> 00:14:15,371 แล้วก็จริง นึกภาพคำที่ 16 คือ guess ต่อจาก 183 00:14:15,371 --> 00:14:20,734 guess ต่อจาก guess ต่อจาก guess ยิ่งไกลยิ่งมัว 184 00:14:20,734 --> 00:14:25,515 พูดถึง depth คือ layer เห็นไหมเพิ่ม layer 185 00:14:25,515 --> 00:14:30,762 ตำแหน่งลึก acceptance ดีขึ้น สาม layer ได้ 65 186 00:14:30,762 --> 00:14:36,009 เปอร์เซ็นต์ สิบห้า layer ได้ 78.7 เปอร์เซ็นต์ 187 00:14:36,009 --> 00:14:40,323 แลกด้วยพารามิเตอร์สามเท่าบวกเวลา 15.2 188 00:14:40,323 --> 00:14:45,337 เปอร์เซ็นต์ depth เองทื่อมาก เพิ่มสิบ layer 189 00:14:45,337 --> 00:14:46,969 เพิ่ม capacity 190 00:14:46,969 --> 00:14:51,633 ทุกที่รวมตำแหน่งหนึ่งที่ไม่มีอะไรให้เก็บ 191 00:14:51,633 --> 00:14:56,297 ปัญหาหลักคือตำแหน่ง 16 หรือ 7 ท้ายๆ ลงไป 192 00:14:56,297 --> 00:15:01,544 คำตอบคือให้ทุกคำแอบดูคำก่อนหน้า ถ้า attention 193 00:15:01,544 --> 00:15:03,643 บีบงานใน block ออก 194 00:15:03,643 --> 00:15:08,540 ก็ให้งานนั้นมีเครื่องจักรของตัวเอง งานเล็ก 195 00:15:08,540 --> 00:15:11,921 block สี่ถึง 16 token ไม่เยอะ 196 00:15:11,921 --> 00:15:16,818 สำคัญคือเพื่อนบ้าน กุญแจตรงนี้ convolution 197 00:15:16,818 --> 00:15:21,016 ดูตำแหน่งปัจจุบันกับถอยหลังหนึ่งก้าว 198 00:15:21,016 --> 00:15:26,146 เห็นผลในตัวเลข ห้า layer ตำแหน่งเจ็ดได้ 72.9 199 00:15:26,146 --> 00:15:31,277 เปอร์เซ็นต์ แต่ห้า layer บวก convolution ได้ 200 00:15:31,277 --> 00:15:36,174 77.6 เปอร์เซ็นต์ ด้วยพารามิเตอร์เพิ่มแค่ 3 201 00:15:36,174 --> 00:15:40,605 เปอร์เซ็นต์กับเวลาเพิ่มนิดเดียว kernel 202 00:15:40,605 --> 00:15:45,968 เดียวที่เอื้อมกลับหนึ่งตำแหน่งกู้คืนสิ่งที่สิบ 203 00:15:45,968 --> 00:15:50,749 layer เพิ่มให้ได้เกือบหมด ปรากฏว่า suffix 204 00:15:50,749 --> 00:15:55,996 decay เป็นปัญหา local นี่เอง นั่นคือ DFlash 2 205 00:15:55,996 --> 00:16:00,426 ทั้งหมดคือส่วนต่างใช่ไหม ต่อจาก DFlash 206 00:16:00,426 --> 00:16:05,790 แต่เพิ่มของใหม่สองอย่าง หนึ่งคือ path selector 207 00:16:05,790 --> 00:16:10,571 เก็บ 16 candidate ต่อตำแหน่งแล้วเดิน path 208 00:16:10,571 --> 00:16:14,651 สอดคล้องสุด กับ two-tap convolution 209 00:16:14,651 --> 00:16:18,966 ใหม่ให้แต่ละตำแหน่งแอบดูย้อนหนึ่งก้าว 210 00:16:18,966 --> 00:16:23,513 ท้ายเลยไม่ decay ต้นทุนในแง่ checkpoint 211 00:16:23,513 --> 00:16:27,594 ที่กำลังจะรัน แต่ละรุ่นต่างนิดหน่อย 212 00:16:27,594 --> 00:16:32,491 convolution 110.9 ล้านพารามิเตอร์ เพราะสอง 213 00:16:32,491 --> 00:16:37,039 module ต่อ layer ห่อ attention กับ feed 214 00:16:37,039 --> 00:16:42,052 forward selector 105.1 ล้าน รวมเพิ่มราว 216 215 00:16:42,052 --> 00:16:47,183 ล้านพารามิเตอร์ 400 MB บนดิสก์สำหรับโมเดลนี้ 216 00:16:47,183 --> 00:16:52,080 เพิ่มเวลาต่อรอบราว 1.3 เปอร์เซ็นต์ drafter 217 00:16:52,080 --> 00:16:55,578 ตัวเดิมแค่เพิ่ม key ใหม่สี่ตัว 218 00:16:55,578 --> 00:17:00,358 นี่คือชาร์ตเทียบ DFlash กับ DFlash 2 เห็น 219 00:17:00,358 --> 00:17:05,605 selector top K เดิมไม่มี 16 selector rank 256 220 00:17:05,605 --> 00:17:10,386 convolution kernel size สอง group size 16 221 00:17:10,386 --> 00:17:14,817 นั่นคือแจกแจง จบคำอธิบาย หวังว่าเข้าใจ 222 00:17:14,817 --> 00:17:20,180 ผมลดรูปบางส่วน แต่ภาพรวมน่าจะชัดว่า DFlash กับ 223 00:17:20,180 --> 00:17:25,544 DFlash 2 คืออะไร ออกจากสไลด์ มาทดลองจริงบน DGX 224 00:17:25,544 --> 00:17:29,858 Spark โมเดลที่ใช้คือ Muse Glimmer 30B 225 00:17:29,858 --> 00:17:30,958 assistant 226 00:17:30,958 --> 00:17:36,205 เพราะทำได้ตรงไปตรงมาใช้โมเดลเดียวทั้งแบบไม่มี 227 00:17:36,205 --> 00:17:40,869 drafter แบบ DFlash และ DFlash 2 DFlash 2 228 00:17:40,869 --> 00:17:46,232 เพิ่งออกสัปดาห์ก่อน โมเดลที่ adapt แล้วยังน้อย 229 00:17:46,232 --> 00:17:50,546 จำกัดแค่นี้ น่าจะเทียบ apple-to-apple 230 00:17:50,546 --> 00:17:55,793 ได้พอควรใช้รุ่นโอเพนซอร์สล่าสุดของ Meta อย่าง 231 00:17:55,793 --> 00:18:00,807 Muse Glimmer นี่คือที่ Inco เจอเอง เขารันบน 232 00:18:00,807 --> 00:18:05,938 H200 แรงกว่า DGX Spark ผมเยอะ เขาเจอแบบไม่มี 233 00:18:05,938 --> 00:18:11,185 drafter acceptance length Q1 ได้หนึ่งอยู่แล้ว 234 00:18:11,185 --> 00:18:16,431 DFlash ได้ 5.43 กับ DFlash 2 ได้ 6.54 นำไปสู่ 235 00:18:16,431 --> 00:18:21,212 token ต่อวินาทีมากกว่าและ speedup สูงกว่า 236 00:18:21,212 --> 00:18:26,109 เดี๋ยวลองดู นี่คือแผนเต็ม ประกอบกับเอเจนต์ 237 00:18:26,109 --> 00:18:31,356 เห็นสามรันที่จะทำ โมเดลเดียว Muse Glimmer 30B 238 00:18:31,356 --> 00:18:36,253 รัน baseline ไม่มี drafter เลย แล้ว DFlash 239 00:18:36,253 --> 00:18:41,150 แล้ว DFlash 2 ทำใน Hermes Agent อยู่บน DGX 240 00:18:41,150 --> 00:18:45,465 Spark นี่คือ profile ที่ทดลองส่วนใหญ่ 241 00:18:45,465 --> 00:18:50,478 ตอนนี้ให้มันรีวิวไฟล์ spec การทดลอง session 242 00:18:50,478 --> 00:18:55,259 ใหม่ แล้วเริ่มจริง ขั้นแรก baseline ไม่มี 243 00:18:55,259 --> 00:19:00,623 speculative decoding เลย รู้ว่าข้อความบนจอเยอะ 244 00:19:00,623 --> 00:19:05,753 แต่นี่คือวิธีรันผ่าน safety pre-flight สร้าง 245 00:19:05,753 --> 00:19:10,533 environment แยก pin model revision ให้ใช้ 246 00:19:10,533 --> 00:19:15,314 revision เดียวกันทุกรัน เทสต์ ล็อก server 247 00:19:15,314 --> 00:19:19,745 setting แล้วเริ่มรัน ผมจะทำ setup ต้นๆ 248 00:19:19,745 --> 00:19:24,176 แล้วรันแรกไม่มี drafter เก็บ log สร้าง 249 00:19:24,176 --> 00:19:29,306 environment เสร็จ pre-flight ผ่าน ตอนนี้โหลด 250 00:19:29,306 --> 00:19:34,086 weight ใช้เวลาหน่อย แล้วรันเทสต์แรก หลักๆ 251 00:19:34,086 --> 00:19:39,450 ดูความเร็ว แต่ดู acceptance length, acceptance 252 00:19:39,450 --> 00:19:43,764 rate กับ quality test ด้วย ทดลองเสร็จ 253 00:19:43,764 --> 00:19:49,011 รันครบทุกอัน รันข้ามคืนเลยบรรยายทุกขั้นไม่ได้ 254 00:19:49,011 --> 00:19:53,792 แต่มีผลแล้ว ใส่สไลด์ให้สวย มาดูว่าเจออะไร 255 00:19:53,792 --> 00:19:58,922 นี่คือผลรันบน Muse Glimmer 30B เห็น C1 พวก C 256 00:19:58,922 --> 00:20:03,586 คือ concurrency stream พร้อมกันกี่สาย C1 257 00:20:03,586 --> 00:20:06,501 คือหนึ่ง C6 คือหก session 258 00:20:06,501 --> 00:20:11,515 หกสายพร้อมกันนึกแบบนั้น C1 แบบไม่มี drafter 259 00:20:11,515 --> 00:20:16,529 ได้ 4.3 token ต่อวินาที ช้ามาก ใส่ DFlash 1 260 00:20:16,529 --> 00:20:21,659 เด้งเป็น 12.29 แล้ว DFlash 2 ดีขึ้นอีก 15.12 261 00:20:21,659 --> 00:20:25,390 ส่วน C6 รันพร้อมกันหกสายก็ดีขึ้น 262 00:20:25,390 --> 00:20:30,404 ไม่แรงเท่าเคสเดี่ยว แต่ต่างชัด เร็วขึ้น 3.5 263 00:20:30,404 --> 00:20:35,068 เท่าด้วย DFlash 2 เทียบไม่มี drafter เลย 264 00:20:35,068 --> 00:20:39,965 DFlash 2 เทียบ DFlash 1 ที่ C1 เร็วขึ้น 23 265 00:20:39,965 --> 00:20:44,512 เปอร์เซ็นต์ แล้ว 29.3 เปอร์เซ็นต์ที่ C4 266 00:20:44,512 --> 00:20:49,876 aggregate สำคัญสุดคือเลขพวกนี้ accepted length 267 00:20:49,876 --> 00:20:54,540 กับ acceptance rate เห็น C1 กับ DFlash 1 268 00:20:54,540 --> 00:20:59,554 acceptance length 3.251 token ส่วน DFlash 2 269 00:20:59,554 --> 00:21:04,567 ได้ 4.112 acceptance rate 15 เด้งเป็น 20.83 270 00:21:04,567 --> 00:21:09,931 ดีขึ้นชัดทุกตัว เห็น total correct draft token 271 00:21:09,931 --> 00:21:15,178 ในรันนี้เพิ่ม จำนวน proposed draft token ลดลง 272 00:21:15,178 --> 00:21:20,541 verification count ก็ต่ำลง นี่คือ verification 273 00:21:20,541 --> 00:21:25,905 pass ใช่ไหม pass น้อยลง แต่เร็วขึ้น acceptance 274 00:21:25,905 --> 00:21:29,869 rate กับ acceptance length สูงขึ้น 275 00:21:29,869 --> 00:21:35,116 กลไกตรงกับผล DFlash 2 ใช้ target verification 276 00:21:35,116 --> 00:21:40,363 pass น้อยกว่าเพื่อปล่อย output เท่าเดิม 1,224 277 00:21:40,363 --> 00:21:44,911 serial กับ 3,72 concurrent output token 278 00:21:44,911 --> 00:21:50,158 นั่นคือคำอธิบายตรงสุดของ throughput ที่วัดได้ 279 00:21:50,158 --> 00:21:55,521 trade-off เล็กๆ ใช้ startup นานกว่า เห็นตรงนี้ 280 00:21:55,521 --> 00:22:00,068 peak compute residency มากกว่าเดิมหน่อย 281 00:22:00,068 --> 00:22:04,732 ไม่มากกว่า DFlash มาก แต่มากกว่าแบบไม่มี 282 00:22:04,732 --> 00:22:07,997 drafter ชัด รันได้ไม่มีปัญหา 283 00:22:07,997 --> 00:22:12,778 แต่จำไว้ถ้ารันโมเดลชิด memory wall นี่คือ 284 00:22:12,778 --> 00:22:17,792 takeaway จากการเทสต์ Hibana ตรงนี้ DFlash 2 285 00:22:17,792 --> 00:22:23,038 คือผู้ชนะใช้จริงสำหรับ target นี้ speedup ชัด 286 00:22:23,038 --> 00:22:25,137 กรณีนี้ acceptance 287 00:22:25,137 --> 00:22:29,918 อธิบายความเร็วจริงอย่างที่รู้ version two 288 00:22:29,918 --> 00:22:35,048 DFlash 2 ผลิต output ต่อ target verification 289 00:22:35,048 --> 00:22:40,412 มากกว่า 26 ถึง 36 เปอร์เซ็นต์ ใช้ verification 290 00:22:40,412 --> 00:22:43,910 pass น้อยลงในงบ token เท่าเดิม 291 00:22:43,910 --> 00:22:48,923 นั่นคือที่มาของความเร็ว คำตัดสินใช้จริง ใช้ 292 00:22:48,923 --> 00:22:54,170 DFlash 2 สำหรับงาน Muse Glimmer ที่สน latency 293 00:22:54,170 --> 00:22:58,601 บน Spark พิสูจน์แล้วบน DGX Spark ผมเอง 294 00:22:58,601 --> 00:23:03,382 จบคลิปนี้ หวังว่าได้รู้ว่า DFlash คืออะไร 295 00:23:03,382 --> 00:23:08,279 speculative decoding โดยรวม เทคนิคมีแบบไหน 296 00:23:08,279 --> 00:23:12,710 อย่างที่บอก local AI ตอนนี้น่าตื่นเต้น 297 00:23:12,710 --> 00:23:17,723 คนเก่งคนขยันเยอะมาก ทำงานให้ชุมชนโอเพนซอร์ส 298 00:23:17,723 --> 00:23:23,087 หาเทคนิคพวกนี้ ทดลองกัน ห้องแล็บใหญ่อย่าง Inco 299 00:23:23,087 --> 00:23:27,168 AI ปล่อย DFlash 2 มา ชุมชน local AI 300 00:23:27,168 --> 00:23:31,482 เอาไปลองหาวิธีใช้ดีสุด น่าตื่นเต้นมาก 301 00:23:31,482 --> 00:23:36,496 หวังว่าได้เทคนิคไป คอมเมนต์บอกหน่อยว่าคิดไง 302 00:23:36,496 --> 00:23:39,644 จะเอาไปใช้ท่าไหน ลองหรือยัง 303 00:23:39,644 --> 00:23:44,541 นี่ผมรันทดลองครั้งแรก ประทับใจผล จบคลิปนี้ 304 00:23:44,541 --> 00:23:46,640 ขอบคุณที่รับชมครับ