อ่านรวดเดียว แต่เขียนทีละคำ
loop ในบทที่ 1 (เดา → ต่อท้าย → เดาใหม่) เวลาหมดไปตรงไหน?
ขั้นอ่าน prompt (prefill)ช่วงแรกของการตอบ ที่โมเดลประมวลผล token ทั้งหมดใน prompt พร้อมกันรวดเดียว แล้วได้ token แรกของคำตอบดูคำศัพท์ทั้งหมด: prompt รู้ครบแล้ว จึงดันทั้ง 7,000 token ผ่านทุกชั้นพร้อมกัน อ่านน้ำหนักครั้งเดียวใช้กับทุก token การ์ดจึงทำงานเต็มที่ ต่อ token จึงเร็ว
ขั้นเขียนคำตอบ (decode, decoding phase)ช่วงที่โมเดลเขียนคำตอบทีละ token แต่ละก้าวต้องรันโมเดลหนึ่งรอบ จึงช้ากว่าขั้นอ่าน prompt เมื่อคิดต่อ tokenดูคำศัพท์ทั้งหมด: token ที่ 2 ต้องรอ token ที่ 1 จึงรันรอบละ token ทุกรอบต้องอ่านน้ำหนักทั้งโมเดลจากหน่วยความจำ แกนคำนวณได้แต่รอ ต่อ token จึงช้า
decode กินเวลาการ์ดมากกว่า หลายเจ้าจึงคิดราคา output แพงกว่า input (หน้า 10)
ลองคิดตาม (prefill 5,000 และ decode 40 token ต่อวินาที)
- อ่าน prompt: 7,000 ÷ 5,000 = 1.4 วินาที
- เขียนคำตอบ: 300 ÷ 40 = 7.5 วินาที
- รวม 8.9 วินาที
prompt เป็น 95.9% ของ token แต่ใช้แค่ 15.7% ของเวลารอ
งานจริงจึงวัด 2 ค่า: เวลาจนคำแรกโผล่ (time to first token, TTFT)เวลาตั้งแต่ส่งคำขอจนเห็น token แรกของคำตอบ รวมเวลาต่อคิวและเวลาอ่าน promptดูคำศัพท์ทั้งหมด (ต่อคิว + prefill) และ token ต่อวินาทีตอนเขียน
อ่าน prompt (prefill) ทำพร้อมกันได้รวดเดียว แต่เขียนคำตอบ (decode) ต้องทีละ token token ของคำตอบจึงช้ากว่าหลายเท่า

มังคุด
อ่าน prompt พร้อมกันได้ แล้วทำไมเขียนคำตอบพร้อมกันไม่ได้ล่ะ?