David — Ideas · AI Infrastructure · สรุป 28 ต.ค. 2569 · repo เปิด 16 ต.ค. 2569 · ★23.4k
DeepInfer — DeepSeek เปิดโค้ดเครื่องยนต์ที่รันบริการจริง
จากคลิป Geek Daily EP432 "Deepseek ทุบโต๊ะ! แจกโค้ดลับ AI" — ตัวโค้ด สถาปัตยกรรม และข้อแนะนำการประยุกต์กับระบบของเรา
DeepSeek V4.1 FlashInferenceMoE / Wide-EPKV cacheSpeculative decodingApache-2.0
Original slides · 2 pages
Next Step · ที่รักเลือกข้อที่จะลงมือ
น้องเรียงข้อแนะนำตามความคุ้ม (ได้มาก/ทำง่าย) ไว้ในหัวข้อ "ข้อแนะนำสำหรับเรา" — ยังไม่ได้แตะระบบจริงข้อไหน
- •✅ ข้อ 1 ทำแล้ว 28/10 — call แบบ stateless ย้ายเวลาออกจาก system prompt: cache-write 53.7k → 44.9k token ต่อครั้ง (แชท resume วัดแล้วไม่ได้ผล จึงคงเดิม) · AngelaServer 2c2993b
- •✅ ข้อ 3 ทำแล้ว 28/10 — ความจำชนิด state/schedule/health อยู่ 30 วันนับจากครั้งล่าสุดที่ถูกพูดซ้ำหรือถูกใช้ · หมดอายุ 61 แถว (state ที่ใช้งาน 316 → 255) ชนิด work ไม่ใส่อายุเพราะส่วนใหญ่เป็นนิสัยถาวร
- •⏳ ข้ออื่นรอที่รักเลือก (น้องแนะนำข้อ 2 Orasa Agent ต่อ)
- •ℹ️ ไม่แนะนำให้รัน DeepInfer หรือโมเดล DeepSeek เอง — ฮาร์ดแวร์ไม่ถึง และขัดกฎ Claude CLI Only
ตัวโค้ดอยู่ที่ไหน
- •github.com/deepseek-ai/DeepInfer — inference framework ที่ใช้รันบริการ DeepSeek V4.1 Flash จริง · Python + CUDA · Apache-2.0 · เริ่มจาก vLLM แล้วต่อยอด
- •github.com/deepseek-ai/deepseek-recipe — ตัวแปลง JSON ↔ token ด้านหน้า (คือ "gateway คู่หู" ในคลิป) กันการฉีด special token
- •เอกสารหลัก: doc/inference_deployment_qa.md — ถาม-ตอบการ deploy ทั้งระบบ (สำเนาอยู่ AngelaVault/angela-docs/Research/DeepInfer/)
- •ไลบรารี kernel ที่ใช้ร่วม: FlashMLA · DeepGEMM · DeepEP · TileKernels · DeepSelect
ส่วนที่ยังไม่เปิด: ระบบจัดการ KV cache และ load balancer จริง (ผูกกับระบบภายในของ DeepSeek)
ภาพรวมสถาปัตยกรรม
- •แยกงานเป็น 3 ฝั่ง: Vision Encoder (อ่านภาพ) · Prefill (อ่านคำสั่ง) · Decode (เขียนคำตอบ) — แต่ละฝั่งมี load balancer ของตัวเอง
- •Prefill ใช้เครื่อง 8 GPU ธรรมดา (EP2–8) · Decode ใช้ supernode 64–128 GPU (Wide-EP) · VE ใช้ GPU ราคาถูกตัวเดียว
- •KV cache ที่คำนวณแล้วเก็บลง 3FS กลาง ~100 PiB — คำขอที่ขึ้นต้นเหมือนเดิมไม่ต้องคำนวณซ้ำ
- •"20 ชั้นล่างอ่าน 20 ชั้นบนเขียน" ในคลิป = YOCO / SWA bounded replay — ชั้นบนใช้ cache ที่ชั้นล่างทำไว้
ภาพสถาปัตยกรรมจาก repo อยู่ในแกลเลอรีด้านบน
เทคนิคหลัก
| เทคนิค | ทำอะไร | ตัวเลขจากเอกสาร |
|---|---|---|
| Prefill / Decode แยกกัน | อ่านคำสั่งกับเขียนคำตอบใช้เครื่องคนละชุด ปรับ TTFT/TBT แยกกัน | P:D ≈ 1:1 GPU |
| Wide-EP + EPLB | กระจาย expert ของ MoE หลาย GPU และทำสำเนา expert ที่ถูกเรียกบ่อย | moe_lb = 1.090 (ช้าสุด/เฉลี่ย) |
| KV cache กลาง (3FS) | เก็บผล prefill ไว้ใช้ซ้ำทุกเครื่อง ไม่ต้องผูก prefix กับเครื่อง | ~100 PiB · agent 3 วัน · chat 7 วัน |
| Prefill load balancer | แบ่งคำขอตามความยาว 4 ระดับ จัดงานตามงบเวลาต่อ step | <16K / 16–64K / 64–256K / ≥256K |
| DSpark (speculative) | เดา token ล่วงหน้าแล้วตรวจ ใช้ความมั่นใจตัดสินว่าจะตรวจเมื่อไหร่ | draft ยาวสุด 5 token |
| SWA bounded replay (YOCO) | prefill ซ้ำเฉพาะท้ายข้อความ ไม่ต้องทำทั้งเรื่อง | เก็บ 140 token ท้าย |
| Batch-invariant / Deterministic | ผลลัพธ์เหมือนเดิมไม่ว่าจะอยู่ batch ไหน | เฉพาะ NVIDIA |
| Structured outputs | บังคับคำตอบตาม regex / JSON schema / EBNF | ส่ง so_args ใน SamplingParams |
ข้อแนะนำสำหรับเรา
- •1 · เรียง prompt ให้ส่วนคงที่อยู่หน้าเสมอ (prefix cache) — DeepInfer ประหยัดได้มากเพราะคำขอที่ขึ้นต้นเหมือนกันไม่ต้อง prefill ซ้ำ; Claude ก็ cache prefix เหมือนกัน ฝั่งเรา: identity / กฎ / ภาพในใจ System 1 อยู่ต้น prompt ส่วนเวลา·ข้อความใหม่ไว้ท้าย ใน ClaudeBridge และ job ของ Claw — ได้ทั้งเร็วขึ้นและโควตาเหลือมากขึ้น
- •2 · Orasa Agent (40–50 วินาที/คำถาม) — ใช้หลัก "แยกอ่านกับเขียน": วัดเวลาแต่ละขั้นก่อน (ค้น item / ประกอบ context / LLM ตอบ) แล้ว cache ผลค้นของคำถามที่เจอบ่อย และให้ LLM ตอบเป็น structured output สั้นๆ แทนข้อความยาว
- •3 · TTL ตามชนิดงาน — DeepSeek เก็บ cache งาน agent 3 วัน งาน chat 7 วัน เพราะ chat มีหางยาวถูกอ่านซ้ำบ่อย; ความจำของน้องควรตั้งอายุต่างกันตามชนิดเหมือนกัน (บทสนทนา/ความชอบอยู่นาน · สถานะงาน/ตัวเลขตลาดหมดอายุเร็ว)
- •4 · Speculative decoding กับโมเดลน้องบน M6 — 27B ช้ากว่า Opus ~50 เท่า; MLX รองรับ draft model (โมเดลเล็กเดาล่วงหน้า ตัวใหญ่ตรวจ) แบบ DSpark ของ DeepSeek — ลองใน Training Studio ได้โดยไม่ต้องเทรนใหม่
- •5 · กันการฉีด special token ก่อนเข้า chat template (แนวเดียวกับ deepseek-recipe) — ข้อความจาก email/แชท/ไฟล์ลูกค้าที่จะเข้า dataset หรือโมเดล local ต้องล้าง token พิเศษก่อน
- •6 · Deterministic + Structured output สำหรับงานที่ต้องตรวจย้อนได้ — AngelaQuant/AQC และ job contract: ผลแบบ JSON schema เดิมทุกครั้ง เทียบย้อนหลังได้ว่าตัดสินใจเพราะอะไร
- •7 · Load balancing ตามต้นทุนจริง (แนว EPLB) — ใช้ claude_call_meter ดูว่า job ไหนกินโควตา แล้วกระจายเวลารันไม่ให้กองช่วงเดียวกัน
ข้อ 1–3 ไม่แตะเงินจริงและไม่เปลี่ยนสถาปัตยกรรม · ข้อ 4–5 อยู่ใน Training Studio · ข้อ 6 ต้องผ่านกล่องอนุมัติตามกฎ AngelaQuant เดิม
สิ่งที่ไม่แนะนำ
- •ไม่ self-host DeepInfer: ต้องใช้ NVIDIA SM100 (Blackwell) หรือ Huawei Ascend 950 และชุดที่คุ้มคือ prefill 64 + decode 64 GPU — M6 รันไม่ได้
- •ไม่ใช้ DeepSeek เป็น LLM ของน้อง — ขัดกฎเหล็ก Claude CLI Only
- •ไม่เอาตัวเลข "กำไร 80%" / "$38 ต่อ GPU-ชม." ในคลิปไปอ้างกับลูกค้า — ไม่มีใน repo; เลข 80% ในเอกสารคือประสิทธิภาพ load balancing เทียบกับกรณีสมดุลสมบูรณ์ ไม่ใช่กำไร
Open questions
- 1.ข้อไหนในข้อแนะนำที่ที่รักอยากให้น้องลงมือก่อน
- 2.Orasa Agent ตอบช้า 40–50 วินาที — อยากให้น้องวัดก่อนว่าเวลาหมดไปกับขั้นไหน ไหม