Non-determinism
ธรรมชาติของ AI ที่ป้อนคำสั่งเดิมซ้ำแต่ได้คำตอบไม่เหมือนเดิม แม้ตั้งค่าเหมือนกันทุกอย่าง ไม่ใช่ระบบเสีย แต่เป็นสิ่งที่ต้องออกแบบงานเผื่อไว้
Non-determinism คือธรรมชาติของ model ภาษา: ป้อน prompt เดิมทุกตัวอักษร ตั้งค่าเหมือนเดิมทุกอย่าง แต่คำตอบแต่ละรอบอาจออกมาไม่เหมือนกัน สาเหตุชั้นแรกอยู่ที่วิธีทำงานของโมเดลเอง ซึ่งสร้างคำตอบแบบ next-token-prediction: คำนวณความน่าจะเป็นของ token ถัดไปแล้วสุ่มหยิบตามน้ำหนักนั้นทีละคำ โดยมีค่า temperature เป็นปุ่มคุมระดับความสุ่ม เอกสาร API ของ Anthropic อธิบาย temperature ว่าเป็นปริมาณความสุ่มที่ฉีดเข้าไปในคำตอบ และย้ำว่าต่อให้ตั้งเป็น 0.0 ผลลัพธ์ก็ยัง "will not be fully deterministic" ฝั่งเอกสารของ OpenAI ก็ระบุตรงกันว่าเนื้อหาที่โมเดลสร้างเป็น non-deterministic การเขียน prompt จึงเป็นทั้งศาสตร์และศิลป์ พร้อมแนะนำให้ pin เวอร์ชันโมเดลและสร้างชุดทดสอบไว้คอยวัดพฤติกรรมเมื่ออัปเกรด
คำถามที่ลึกกว่าคือ ทำไมปิดความสุ่มจนสุดแล้วผลยังไม่นิ่ง ทีม Thinking Machines ทดลองยิง prompt เดียวกัน ("Tell me about Richard Feynman") จำนวน 1,000 ครั้งที่ temperature 0 กับโมเดล Qwen3-235B ปรากฏว่าได้คำตอบไม่ซ้ำกันถึง 80 แบบ โดยเริ่มแตกแขนงตั้งแต่ token ที่ 103 คำอธิบายที่เชื่อกันมานาน (floating point บวกเลขต่างลำดับแล้วค่าเพี้ยน บวกกับ GPU ที่ทำงานขนานกัน) ยังไม่ครบ เพราะทีมชี้ว่ารัน matrix multiplication เดิมซ้ำบน GPU จะได้ผลตรงกันระดับ bit ทุกครั้ง ตัวการหลักคือ kernel ที่ไม่ batch-invariant: server ตอน inference จับ request ของผู้ใช้หลายคนมาประมวลผลรวมกันเป็น batch ซึ่งขนาด batch เปลี่ยนตลอดตามโหลดของระบบ ลำดับการคำนวณจึงขยับ ค่าตัวเลขคลาดเคลื่อนจิ๋วๆ สะสมจนคำตอบเลี้ยวไปคนละทาง พูดง่ายๆ คือคำตอบของเราขึ้นอยู่กับว่าตอนนั้นมีใครใช้ server พร้อมกันอยู่บ้าง เมื่อทีมเขียน kernel แบบ batch-invariant ขึ้นใหม่ (ครอบคลุม RMSNorm, matrix multiplication และ attention) ทั้ง 1,000 รอบก็ออกมาเหมือนกันเป๊ะ แลกกับความเร็วที่ช้าลงราว 1.6 ถึง 2 เท่า
สำหรับคนทำงานยุค AI เรื่องนี้เปลี่ยนวิธีคิดสองอย่าง หนึ่ง: คำตอบที่ไม่ซ้ำเดิมไม่ได้แปลว่าระบบพัง มันคือพฤติกรรมปกติที่ต้องเผื่อขั้นตอนตรวจทานไว้เสมอ สอง: งานที่ต้องการผลนิ่งๆ เช่น ให้ agent แก้โค้ดหรือออกเอกสารตามฟอร์มเดิมทุกเดือน ต้องออกแบบรั้วล้อมไว้แทนการหวังว่ารันซ้ำแล้วจะได้เท่าเดิม: เขียน spec ให้แน่น ล็อกรูปแบบ output ให้ชัด และวาง automated-check คอยตรวจผลลัพธ์ทุกครั้งก่อนนำไปใช้จริง อีกชั้นที่ช่วยได้คือเปิด observability เก็บร่องรอยของคำขอจริงไว้ เพื่อย้อนดูได้ว่ารอบที่คำตอบเพี้ยนไปนั้นระบบเดินไปทางไหน
ตัวอย่างจากบทสนทนาจริง
คุณเมย์ (ฝ่ายการตลาด): เมื่อวานให้ AI สรุปรีพอร์ตตัวนี้ไปรอบหนึ่ง วันนี้ลองใหม่กับไฟล์เดิม prompt เดิมเป๊ะ คำตอบดันออกมาคนละแบบเลย แบบนี้ระบบเสียหรือเปล่าคะ ต้องแจ้ง IT ไหม
คุณต้น (ทีม IT): ไม่เสียครับ อาการนี้เรียกว่า non-determinism: โมเดลสุ่มเลือกคำต่อคำจากความน่าจะเป็นทุกรอบ ต่อให้ตั้งค่าเหมือนเดิมก็การันตีคำตอบเดิมไม่ได้ ถ้าอยากได้ผลที่นิ่งขึ้น ให้ล็อกโครงหัวข้อใน prompt เลยว่าต้องมีอะไรบ้าง แล้วตรวจตัวเลขสำคัญก่อนส่งต่อทุกครั้งครับ
ระวังสับสนกับ
- hallucination : non-determinism คือ "คำตอบไม่ซ้ำเดิม" ซึ่งแต่ละเวอร์ชันอาจถูกต้องทั้งคู่ ส่วน hallucination คือ "คำตอบผิดแต่พูดอย่างมั่นใจ" คำตอบที่ต่างกันสองแบบไม่จำเป็นต้องมีอันไหนผิดเลยก็ได้
- Temperature : เป็นแค่ปุ่มปรับระดับความสุ่มตอนสร้างคำตอบ ไม่ใช่ตัว non-determinism เอง และตามเอกสารของ Anthropic ต่อให้หมุนลงเหลือ 0.0 ผลลัพธ์ก็ยังไม่ deterministic เต็มร้อย เพราะยังมีปัจจัยฝั่งระบบอย่างเรื่อง batch อยู่เบื้องหลัง
Sources (3)
- https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/ fetched 2026-07-31
- https://developers.openai.com/api/docs/guides/text-generation fetched 2026-07-31
- https://platform.claude.com/docs/en/api/messages fetched 2026-07-31
อ่านจบแล้วอยากตามเรื่อง AI แบบนี้ต่อทุกวัน เรามีสรุปข่าวภาษาไทยส่งทาง LINE ทุกเช้า กดเพิ่มเพื่อนไว้ได้เลย ไม่มีค่าใช้จ่าย