𝗥𝘂𝗻𝗻𝗶𝗻𝗴 𝗧𝘄𝗼 𝗠𝗼𝗱𝗲𝗹𝘀 𝗼𝗻 𝗢𝗻𝗲 𝗚𝗣𝗨: 𝗧𝗵𝗲 𝗠𝗮𝘁𝗵 𝗕𝗲𝗵𝗶𝗻𝗱 𝗟𝗼𝗰𝗮𝗹 𝗟𝗟𝗠𝘀

ผมรัน agent stack บนเวิร์กสเตชัน โดยโมเดลต่างๆ รันอยู่บน DGX Spark ผ่านเครือข่าย LAN ผมเลือกใช้ vLLM แทน Ollama เพื่อการจัดการหน่วยความจำที่มีประสิทธิภาพมากกว่า

เป้าหมายคือการรันสองโมเดลพร้อมกัน:

ทั้งสองโมเดลเรียกใช้งานผ่าน URL เดียวกันโดยใช้ LiteLLM proxy การตั้งค่านี้ล้มเหลวอยู่หลายครั้งก่อนที่ผมจะค้นพบวิธีการคำนวณที่ถูกต้อง

นี่คือบทเรียนที่ได้จากความพยายามครั้งนี้

𝗪𝗵𝗮𝘁 𝗛𝗮𝗽𝗽𝗲𝗻𝗲𝗱 𝗪𝗶𝘁𝗵 𝗧𝗵𝗲 𝗠𝗲𝗺𝗼𝗿𝘆 𝗧𝗿𝗮𝗽 การตั้งค่า gpu_memory_utilization ไม่ใช่เป้าหมายสำหรับหน่วยความจำที่ว่างอยู่ แต่มันคือสัดส่วนของหน่วยความจำ GPU ทั้งหมด

หากคุณมีหน่วยความจำการ์ดจอ 120 GB และตั้งค่า utilization เป็น 0.80 vLLM จะพยายามจองพื้นที่ 96 GB จากความจุทั้งหมด โดยไม่ได้ดูว่าปัจจุบันมีหน่วยความจำว่างอยู่เท่าไหร่ หากคุณพยายามรันสองโปรเซสพร้อมกัน ผลรวมของเปอร์เซ็นต์ทั้งสองต้องน้อยกว่า 0.95 เพื่อเหลือพื้นที่ไว้สำหรับ overhead ของ CUDA framework

𝗪𝗵𝗮𝘁 𝗛𝗮𝗽𝗽𝗲𝗻𝗲𝗱 𝗪𝗶𝘁𝗵 𝗧𝗵𝗲 𝗠𝗼𝗱𝗲𝗹𝘀 ผมลองใช้โมเดล 80B เวอร์ชัน Thinking แต่มันล้มเหลว โมเดลจะใช้เหตุผลภายในแท็ก <think> แต่ไม่ยอมเรียกใช้งาน tool เลย มันจะหยุดทำงานไปเฉยๆ

ผมจึงต้องเปลี่ยน backbone ของ 80B ไปใช้เวอร์ชัน Instruct แทน ซึ่งช่วยให้ agent สามารถใช้งาน tools ได้อย่างถูกต้อง

𝗧𝗵𝗲 𝗔𝗰𝘁𝘂𝗮𝗹 𝗠𝗮𝘁𝗵 หลังจากทดสอบ ผมพบว่าตัวเลขเหล่านี้ใช้งานได้ดีกับระบบของผม:

• Qwen3-Next-80B (ที่เป้าหมาย 0.80): ใช้หน่วยความจำจริงประมาณ ~87.8 GiB • Qwen3-4B (ที่เป้าหมาย 0.10): ใช้หน่วยความจำจริงประมาณ ~13.8 GiB • การใช้งานรวม: ~101.6 GiB • พื้นที่ว่างที่เหลือ (Free headroom): ~18 GiB

หากผมดัน 80B ไปที่ 0.85 โมเดล 4B จะไม่สามารถเริ่มทำงานได้ เพราะ 80B จะจองพื้นที่มากเกินไปจนไม่เหลือพื้นที่ขั้นต่ำสำหรับโมเดล 4B

𝗠𝘆 𝗣𝗹𝗮𝘆𝗯𝗼𝗼𝗸 𝗳𝗼𝗿 𝗖𝗼-𝗿𝗲𝘀𝗶𝗱𝗲𝗻𝘁 𝗠𝗼𝗱𝗲𝗹𝘀

  1. โหลดโมเดลที่ใหญ่ที่สุดก่อน
  2. ปล่อยให้ระบบเข้าที่ (settle)
  3. รัน nvidia-smi เพื่อดูหน่วยความจำที่ใช้งานจริง
  4. กำหนดขนาดของโมเดลที่เล็กกว่าโดยอิงจากหน่วยความจำที่เหลืออยู่ ลบออก 5 GB สำหรับ overhead
  5. รีสตาร์ททั้งสองโมเดลสองรอบเพื่อให้แน่ใจในความเสถียร

อย่าเดาการตั้งค่าหน่วยความจำของคุณ ให้ใช้คำสั่งนี้เพื่อดูความเป็นจริง: nvidia-smi --query-gpu=memory.used --format=csv

หากการจัดสรรเป้าหมาย (target allocation) และการใช้งานจริงของคุณต่างกันมากกว่า 10% แสดงว่าการคำนวณของคุณผิดพลาด ให้แก้ไขก่อนที่จะ deploy agent stack ของคุณ

Source: https://dev.to/ric03uec/two-qwen3-models-on-one-dgx-spark-the-residency-math-for-local-llm-coding-5bpj

Optional learning community: https://t.me/GyaanSetuAi