“Thinking Machines แก้ปัญหา LLM ตอบไม่เหมือนกัน — เผยต้นเหตุจาก batch-size ไม่คงที่ ไม่ใช่แค่เรื่อง floating point”

หลายคนอาจเคยสงสัยว่า ทำไมเวลาใช้โมเดลภาษาอย่าง ChatGPT ถามคำถามเดิมซ้ำ ๆ แล้วได้คำตอบไม่เหมือนกัน ทั้งที่ตั้งค่า temperature เป็น 0 ซึ่งควรจะได้คำตอบที่ “แน่นอน” ทุกครั้ง ล่าสุดทีมวิจัยจาก Thinking Machines Lab ได้ออกบทความเจาะลึกถึงสาเหตุของความไม่แน่นอน (nondeterminism) ในการทำ inference ของ LLM และเสนอแนวทางแก้ไขที่อาจเปลี่ยนมาตรฐานของวงการ AI ไปตลอดกาล.

บทความนี้ชี้ว่า สาเหตุที่แท้จริงไม่ใช่แค่เรื่อง “floating-point non-associativity” หรือการคำนวณแบบขนานบน GPU ที่ทำให้ผลลัพธ์เปลี่ยนไปตามลำดับการรวมค่า แต่เกิดจากสิ่งที่เรียกว่า “batch-size variance” — กล่าวคือ ผลลัพธ์ของแต่ละคำขอ (request) ขึ้นอยู่กับว่ามีคำขออื่น ๆ เข้ามาพร้อมกันมากแค่ไหน ซึ่งส่งผลให้ batch-size ที่ใช้ใน kernel เปลี่ยนไป และทำให้ผลลัพธ์เปลี่ยนตาม

เพื่อแก้ปัญหานี้ ทีมงานได้พัฒนา kernel แบบใหม่ที่เรียกว่า “batch-invariant kernels” ซึ่งทำให้ผลลัพธ์ของแต่ละคำขอไม่ขึ้นอยู่กับ batch-size ที่ใช้ในระบบ โดยปรับปรุงการคำนวณใน RMSNorm, matrix multiplication และ attention ให้มีลำดับการรวมค่าที่คงที่ไม่ว่าจะมีคำขอมากหรือน้อย

ผลการทดลองแสดงให้เห็นว่า เมื่อใช้ batch-invariant kernels แล้ว โมเดลสามารถให้ผลลัพธ์ที่เหมือนกันทุกครั้งแม้จะมีคำขอหลายชุดเข้ามาพร้อมกัน และยังสามารถนำไปใช้ในงาน reinforcement learning แบบ on-policy ได้อย่างแท้จริง ซึ่งเป็นสิ่งที่ไม่เคยทำได้มาก่อน

สาเหตุของความไม่แน่นอนในการทำ inference ของ LLM
ไม่ได้เกิดจาก floating-point หรือ atomic add โดยตรง
เกิดจาก batch-size ที่เปลี่ยนไปตามจำนวนคำขอที่เข้ามาพร้อมกัน
ทำให้ลำดับการคำนวณใน kernel เปลี่ยนไป และผลลัพธ์เปลี่ยนตาม
ส่งผลให้แม้จะตั้ง temperature = 0 ก็ยังได้ผลลัพธ์ไม่เหมือนกัน

แนวทางแก้ไขโดย Thinking Machines
พัฒนา batch-invariant kernels สำหรับ RMSNorm, matmul และ attention
ใช้ data-parallel strategy เพื่อให้ลำดับการรวมค่าคงที่
ปรับ attention kernel ให้ลดค่าจาก KV cache และ current KV อย่างสม่ำเสมอ
ใช้ fixed-size split แทน fixed-number split เพื่อรักษาลำดับการคำนวณ

ผลลัพธ์จากการทดลอง
เมื่อใช้ batch-invariant kernels แล้ว ได้ผลลัพธ์เหมือนกันทุกครั้ง
สามารถใช้ใน RL แบบ on-policy ได้จริง โดยไม่มี KL divergence
ลดความจำเป็นในการใช้ importance weighting ใน RL
แม้จะช้ากว่า kernel ปกติ ~20% แต่ยังอยู่ในระดับที่ใช้งานได้จริง

ข้อมูลเสริมจากภายนอก
Thinking Machines ก่อตั้งโดยอดีต CTO ของ OpenAI และมีมูลค่ากว่า $12 พันล้าน
โครงการนี้ใช้โมเดล Qwen3-8B และ Qwen3-235B ในการทดลอง
batch-invariant ops ถูกเผยแพร่ผ่าน PyTorch library และ vLLM integration
แนวคิดนี้อาจเปลี่ยนมาตรฐานของการ deploy LLM ในระดับ production

https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/
🧠 “Thinking Machines แก้ปัญหา LLM ตอบไม่เหมือนกัน — เผยต้นเหตุจาก batch-size ไม่คงที่ ไม่ใช่แค่เรื่อง floating point” หลายคนอาจเคยสงสัยว่า ทำไมเวลาใช้โมเดลภาษาอย่าง ChatGPT ถามคำถามเดิมซ้ำ ๆ แล้วได้คำตอบไม่เหมือนกัน ทั้งที่ตั้งค่า temperature เป็น 0 ซึ่งควรจะได้คำตอบที่ “แน่นอน” ทุกครั้ง ล่าสุดทีมวิจัยจาก Thinking Machines Lab ได้ออกบทความเจาะลึกถึงสาเหตุของความไม่แน่นอน (nondeterminism) ในการทำ inference ของ LLM และเสนอแนวทางแก้ไขที่อาจเปลี่ยนมาตรฐานของวงการ AI ไปตลอดกาล. บทความนี้ชี้ว่า สาเหตุที่แท้จริงไม่ใช่แค่เรื่อง “floating-point non-associativity” หรือการคำนวณแบบขนานบน GPU ที่ทำให้ผลลัพธ์เปลี่ยนไปตามลำดับการรวมค่า แต่เกิดจากสิ่งที่เรียกว่า “batch-size variance” — กล่าวคือ ผลลัพธ์ของแต่ละคำขอ (request) ขึ้นอยู่กับว่ามีคำขออื่น ๆ เข้ามาพร้อมกันมากแค่ไหน ซึ่งส่งผลให้ batch-size ที่ใช้ใน kernel เปลี่ยนไป และทำให้ผลลัพธ์เปลี่ยนตาม เพื่อแก้ปัญหานี้ ทีมงานได้พัฒนา kernel แบบใหม่ที่เรียกว่า “batch-invariant kernels” ซึ่งทำให้ผลลัพธ์ของแต่ละคำขอไม่ขึ้นอยู่กับ batch-size ที่ใช้ในระบบ โดยปรับปรุงการคำนวณใน RMSNorm, matrix multiplication และ attention ให้มีลำดับการรวมค่าที่คงที่ไม่ว่าจะมีคำขอมากหรือน้อย ผลการทดลองแสดงให้เห็นว่า เมื่อใช้ batch-invariant kernels แล้ว โมเดลสามารถให้ผลลัพธ์ที่เหมือนกันทุกครั้งแม้จะมีคำขอหลายชุดเข้ามาพร้อมกัน และยังสามารถนำไปใช้ในงาน reinforcement learning แบบ on-policy ได้อย่างแท้จริง ซึ่งเป็นสิ่งที่ไม่เคยทำได้มาก่อน ✅ สาเหตุของความไม่แน่นอนในการทำ inference ของ LLM ➡️ ไม่ได้เกิดจาก floating-point หรือ atomic add โดยตรง ➡️ เกิดจาก batch-size ที่เปลี่ยนไปตามจำนวนคำขอที่เข้ามาพร้อมกัน ➡️ ทำให้ลำดับการคำนวณใน kernel เปลี่ยนไป และผลลัพธ์เปลี่ยนตาม ➡️ ส่งผลให้แม้จะตั้ง temperature = 0 ก็ยังได้ผลลัพธ์ไม่เหมือนกัน ✅ แนวทางแก้ไขโดย Thinking Machines ➡️ พัฒนา batch-invariant kernels สำหรับ RMSNorm, matmul และ attention ➡️ ใช้ data-parallel strategy เพื่อให้ลำดับการรวมค่าคงที่ ➡️ ปรับ attention kernel ให้ลดค่าจาก KV cache และ current KV อย่างสม่ำเสมอ ➡️ ใช้ fixed-size split แทน fixed-number split เพื่อรักษาลำดับการคำนวณ ✅ ผลลัพธ์จากการทดลอง ➡️ เมื่อใช้ batch-invariant kernels แล้ว ได้ผลลัพธ์เหมือนกันทุกครั้ง ➡️ สามารถใช้ใน RL แบบ on-policy ได้จริง โดยไม่มี KL divergence ➡️ ลดความจำเป็นในการใช้ importance weighting ใน RL ➡️ แม้จะช้ากว่า kernel ปกติ ~20% แต่ยังอยู่ในระดับที่ใช้งานได้จริง ✅ ข้อมูลเสริมจากภายนอก ➡️ Thinking Machines ก่อตั้งโดยอดีต CTO ของ OpenAI และมีมูลค่ากว่า $12 พันล้าน ➡️ โครงการนี้ใช้โมเดล Qwen3-8B และ Qwen3-235B ในการทดลอง ➡️ batch-invariant ops ถูกเผยแพร่ผ่าน PyTorch library และ vLLM integration ➡️ แนวคิดนี้อาจเปลี่ยนมาตรฐานของการ deploy LLM ในระดับ production https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/
THINKINGMACHINES.AI
Defeating Nondeterminism in LLM Inference
Reproducibility is a bedrock of scientific progress. However, it’s remarkably difficult to get reproducible results out of large language models. For example, you might observe that asking ChatGPT the same question multiple times provides different results. This by itself is not surprising, since getting a result from a language model involves “sampling”, a process that converts the language model’s output into a probability distribution and probabilistically selects a token. What might be more surprising is that even when we adjust the temperature down to 0This means that the LLM always chooses the highest probability token, which is called greedy sampling. (thus making the sampling theoretically deterministic), LLM APIs are still not deterministic in practice (see past discussions here, here, or here). Even when running inference on your own hardware with an OSS inference library like vLLM or SGLang, sampling still isn’t deterministic (see here or here).
0 Comments 0 Shares 40 Views 0 Reviews