บล็อก

ทำไมภาพ AI ถึงเร็วขึ้น 3 เท่าด้วยไฟล์ 336 MB: แกะวิธีทำงานของ Pruna LoRA แล้ววัดจริงบน DGX Spark

บทความโดยทีม AIServer.in.th — 25 กันยายน 2026

สัปดาห์ที่แล้วเราเพิ่งส่ง Qwen-Image 2.1 เข้าชุดโมเดลของ AI Server Suite พร้อมโหมด “ข้อความไทยในภาพ” ที่เขียนป้ายภาษาไทยได้สะกดถูก สิ่งเดียวที่ลูกค้าบ่นเหมือนกันหมดคือ มันช้า — กดสร้างป้ายหนึ่งใบ รอ 40 วินาที

วันที่ 24 กันยายน Pruna AI ปล่อย Pruna-Qwen-Image-2.1 ออกมา เป็นไฟล์ LoRA ขนาด 336 MB ที่เสียบทับโมเดลเดิมแล้วอ้างว่าเร็วขึ้นได้ถึง 6.3 เท่า จาก 40 steps เหลือ 8 steps

เราเอามาวัดเองบน DGX Spark 48 ภาพ ได้เร็วขึ้นจริง 3.05 เท่า (36.7 วินาที → 12.0 วินาที) โดยตัวอักษรไทยไม่เสียเลยสักใบจาก 24 คู่

บทความนี้จะอธิบายสองเรื่อง: มันทำงานยังไง และ ทำไมถึงได้ 3 เท่า ไม่ใช่ 5 เท่า — ซึ่งคำตอบข้อหลังมาจากตัวเลขที่เราวัดเอง และบอกอะไรที่มีประโยชน์กับคนทำงานจริงมากกว่าตัวเลขโฆษณา


1. ทำไมโมเดลภาพถึงช้าตั้งแต่แรก

โมเดลสร้างภาพยุคนี้ทำงานแบบ diffusion — เริ่มจากภาพที่เป็นสัญญาณรบกวนล้วน ๆ (noise) แล้วค่อย ๆ “ลบ noise” ทีละนิดจนกลายเป็นภาพ

จุดสำคัญคือคำว่า ทีละนิด แต่ละขั้นคือการยิงข้อมูลผ่านตัวโมเดล 7 พันล้านพารามิเตอร์ หนึ่งรอบเต็ม แล้วเอาผลมาขยับภาพนิดหนึ่ง จากนั้นทำซ้ำ

ค่ามาตรฐานของ Qwen-Image 2.1 คือ 40 ขั้น แปลว่ากว่าจะได้ภาพหนึ่งใบ เครื่องต้องคำนวณโมเดล 7B ครบ 40 รอบ

ทำไมต้องซอยละเอียดขนาดนั้น? เพราะการลบ noise คือการเดินตาม “เส้นทาง” จากความมั่วไปหาภาพ ถ้าก้าวใหญ่เกินจะเลี้ยวพลาดโค้ง ได้ภาพเบลอหรือเละ การซอยถี่ทำให้แต่ละก้าวเล็กพอจะเกาะเส้นทางได้ — จ่ายด้วยเวลา แลกกับความแม่น

คำถามของงานวิจัยสายเร่งความเร็วจึงเป็นคำถามเดียว: จะสอนให้มันก้าวใหญ่โดยไม่ตกโค้งได้ไหม


2. Distillation — ให้ “ครู” สอน “นักเรียน” ให้ก้าวใหญ่

คำตอบคือเทคนิคชื่อ distillation (การกลั่น) หลักการคือ

  • ครู = โมเดลเดิมที่เดิน 40 ก้าว ช้าแต่แม่น
  • นักเรียน = โมเดลที่เราอยากได้ ซึ่งต้องเดินให้ถึงที่เดียวกันด้วย 8 ก้าว

เราเอาครูมาสร้างตัวอย่างจำนวนมหาศาล แล้วฝึกนักเรียนให้ “ไปถึงจุดเดียวกัน” ด้วยก้าวที่ใหญ่กว่า

วิธีฝึกมีหลายสำนัก แต่ละสำนักนิยามคำว่า “ไปถึงจุดเดียวกัน” ไม่เหมือนกัน:

วิธี นิยามของ “เหมือนครู”
Progressive distillation สอนให้นักเรียนทำ 2 ก้าวของครูรวบเป็น 1 ก้าว แล้วทำซ้ำเรื่อย ๆ 40→20→10→…
Consistency / LCM บังคับว่าทุกจุดบนเส้นทางเดียวกันต้องชี้ไปที่ปลายทางเดียวกัน
Adversarial (ADD, SDXL-Turbo) ใส่ “กรรมการ” มาคอยทายว่าภาพไหนของจริง นักเรียนต้องหลอกกรรมการให้ได้
DMD (Distribution Matching Distillation) ไม่สนว่าเดินทางเดียวกันไหม ขอแค่ ภาพที่ออกมาอยู่ในกองเดียวกับของครู

Pruna ใช้ DMD — การ์ดโมเดลเขียนไว้ตรง ๆ ว่า “Training is based on DMD”


3. DMD ทำงานยังไง

DMD มาจากงานของ MIT/Adobe และเป็นวิธีที่ฉลาดตรงที่เลิกพยายามลอกเส้นทาง

ลองนึกว่าครูวาดรูปแมว 1 ล้านรูป กองรวมกันไว้ นั่นคือ “การกระจายตัว” ของผลงานครู DMD ไม่สนใจว่าครูลากเส้นไหนก่อนหลัง มันสนใจแค่ว่า กองรูปของนักเรียนต้องหน้าตาเหมือนกองรูปของครู

วิธีวัดว่า “สองกองเหมือนกันไหม” DMD ใช้โมเดลสองตัวช่วยดู:

  1. ครูที่แช่แข็งไว้ — บอกว่า “ภาพแบบนี้ ของจริงควรขยับไปทางไหน”
  2. โมเดลผู้ช่วยที่ฝึกไปพร้อมกัน — คอยตามดูว่า “ภาพที่นักเรียนออกตอนนี้ กองอยู่ตรงไหน”

ผลต่างของสองตัวนี้คือทิศที่นักเรียนต้องขยับ ถ้ากองของนักเรียนเบ้ไปทางไหน ผลต่างจะดันกลับมา ฝึกไปเรื่อย ๆ จนสองกองทับกัน

ข้อดีของการเล็งที่ “กอง” แทน “เส้นทาง” คือนักเรียนมีอิสระจะหาทางลัดของตัวเอง ไม่ต้องเลียนแบบครูทีละก้าว จึงบีบลงเหลือ 8 ก้าวได้โดยภาพยังสวย

และข้อเสียก็มาจากจุดเดียวกัน — เพราะเกณฑ์คือ “อยู่ในกองเดียวกัน” ไม่ใช่ “ตรงตามที่สั่งเป๊ะ” นักเรียนจึงมีแนวโน้มออกภาพที่ ดูเป็นธรรมชาติ มากกว่า ตรงคำสั่ง — เดี๋ยวเราจะเห็นผลข้อนี้ชัดมากในหัวข้อ 6


4. ทำไมถึงเป็น LoRA แค่ 336 MB

ปกติ distillation จะได้ “โมเดลใหม่” ออกมาทั้งก้อน ซึ่งกรณีนี้จะหนัก 12 GB แต่ Pruna เลือกเก็บผลการฝึกในรูป LoRA

LoRA (Low-Rank Adaptation) คือการไม่แก้น้ำหนักเดิมเลยสักตัว แต่เก็บ “ส่วนต่าง” ไว้ในเมทริกซ์เล็ก ๆ สองชุดที่คูณกันแล้วได้ขนาดเท่าของเดิม — เหมือนแทนที่จะถ่ายเอกสารหนังสือทั้งเล่มเพื่อแก้ 20 หน้า ก็เก็บแค่ใบแทรก 20 ใบ

ผลคือ:

  • ไฟล์ 336 MB แทน 12 GB
  • ใช้โมเดลฐานตัวเดิม ไม่ต้องโหลดใหม่ ไม่กินดิสก์เพิ่ม
  • ถอดได้ อยากได้คุณภาพเต็มก็ปิด LoRA อยากเร็วก็เปิด ใช้โมเดลก้อนเดียวกัน

ในไฟล์แปลงสำหรับ ComfyUI ระบุไว้ว่าเป็น rank 64, alpha 128 — ตัวเลขนี้คือ “ความหนาของใบแทรก” ยิ่งสูงยิ่งจำรายละเอียดได้มากแต่ไฟล์ใหญ่ขึ้น


5. ของแถมสองอย่างที่ต้องตั้งให้ถูก ไม่งั้นได้ภาพเละ

นี่คือจุดที่คนลองแล้วบ่นว่า “ใช้ไม่ได้” กันเยอะที่สุด เสียบ LoRA แล้วลด steps เฉย ๆ ไม่พอ

หนึ่ง — ตารางก้าวเฉพาะตัว (sigma schedule)
นักเรียนถูกฝึกมาให้ก้าวตามจังหวะหนึ่ง ๆ ที่ไม่เท่ากันทุกก้าว ของ Pruna 8 ขั้นคือ

1.0 → 0.933 → 0.857 → 0.769 → 0.667 → 0.545 → 0.4 → 0.222 → 0

สังเกตว่าช่วงต้นก้าวสั้น ช่วงท้ายก้าวยาว ถ้าปล่อยให้ตัวจัดตารางมาตรฐานคำนวณเอง จังหวะจะไม่ตรงกับที่ฝึกมา แล้วภาพจะเละ ใน ComfyUI ต้องป้อนด้วย node ManualSigmas คู่กับ SamplerCustom — ใช้ KSampler ธรรมดาแล้วตั้ง steps=8 ไม่ได้

สอง — ปิด CFG
CFG (classifier-free guidance) คือกลไกที่ทำให้ภาพเกาะคำสั่งมากขึ้น โดยยิงโมเดลสองรอบต่อหนึ่งก้าว (รอบหนึ่งมี prompt รอบหนึ่งไม่มี) แล้วดึงผลต่างให้แรงขึ้น — ราคาคือช้าขึ้นเท่าตัว

โมเดลที่กลั่นมาแบบนี้จะถูกฝึกให้ “ซึมซับผลของ CFG ไว้ในตัวแล้ว” ถ้าไปเปิด CFG ซ้ำอีกจะกลายเป็นดันสองเด้ง ภาพจะไหม้สีเกินจริง เพราะฉะนั้นต้องตั้ง cfg = 1 ซึ่งแปลว่า negative prompt จะไม่มีผลใด ๆ ด้วย (ข้อนี้สำคัญ เดี๋ยวจะพูดถึงอีกที)


6. วัดจริงบน DGX Spark — และทำไมถึงได้ 3 เท่า ไม่ใช่ 5 เท่า

40 ขั้นเหลือ 8 ขั้น คือลดงานลง 5 เท่า แต่เราวัดได้ 3.05 เท่า ทำไม?

เพราะ ไม่ใช่ทุกวินาทีในการสร้างภาพที่เป็นค่าเดินขั้น ยังมีงานที่ต้องทำเท่าเดิมไม่ว่าจะกี่ขั้น ได้แก่การอ่าน prompt ด้วยตัวเข้ารหัสข้อความ (ซึ่งของ Qwen-Image 2.1 เป็นโมเดล 8B ต่างหาก) และการแปลงผลลัพธ์กลับเป็นภาพจริงด้วย VAE

เอาตัวเลขที่วัดได้มาแยกสองส่วนได้ตรง ๆ จากสมการสองตัวแปร:

40 ขั้น: 40c + f = 36.7 วินาที
 8 ขั้น:  8c + f = 12.0 วินาที

แก้ออกมาได้ c ≈ 0.77 วินาทีต่อขั้น และ f ≈ 5.8 วินาทีคงที่

แปลว่าในงาน 1024×1024 บน GB10 การเดิน 40 ขั้นกินเวลา 31 วินาที ส่วนอีก 5.8 วินาทีเป็นค่าคงที่ที่ LoRA ช่วยอะไรไม่ได้เลย — นั่นคือเพดานที่ทำให้ 5 เท่าเหลือ 3 เท่า

ข้อดีของการรู้ตัวเลขนี้คือมันทำนายได้ ถ้าค่าคงที่ ~5.8 วินาทีจริง งานที่ภาพใหญ่ขึ้น (ค่าต่อขั้นแพงขึ้น) ควรได้ตัวคูณที่ดีกว่า เราเลยลองที่ 2048×2048:

40 ขั้น 8 ขั้น เร็วขึ้น
1024×1024 36.7 วิ 12.0 วิ 3.05×
2048×2048 264 วิ 57 วิ 4.63×

แยกส่วนที่ 2K ได้ c ≈ 6.5 วินาทีต่อขั้น, f ≈ 5.2 วินาที — ค่าคงที่เท่าเดิมเป๊ะ ตรงตามที่ทำนาย

บทเรียนสำหรับคนเลือกใช้: ยิ่งงานหนัก LoRA ยิ่งคุ้ม ภาพเล็ก ๆ ที่เดิมก็เร็วอยู่แล้ว จะได้กำไรน้อยกว่าที่โฆษณาเสมอ ไม่ใช่เพราะโฆษณาเกินจริง แต่เพราะตัวเลข 6.3× ของเขาวัดเฉพาะส่วนที่เป็นการเดินขั้นบน H100 ซึ่งคนละสภาพกับเวลาที่ผู้ใช้จับได้จริงตั้งแต่กดปุ่มจนเห็นภาพ


7. แล้วต้องจ่ายอะไรบ้าง

เราวัดโหมดข้อความไทย 12 ข้อความ × 2 seed = 24 คู่ ด้วยตาคนไทย

เรื่องดี: การสะกดไม่เสียเลยสักใบ — ถูก 24/24 ทั้งสองฝั่ง รวมถึงคำที่ยากจริงอย่าง ร้านก๋วยเตี๋ยวเรือ (ไม้ตรีบวกสระซ้อนสองชั้น) ยินดีต้อนรับ / สู่เชียงใหม่ และ ลดล้างสต๊อก 70% นี่เกินความคาดหมายของเรามาก เพราะตัวอักษรคือรายละเอียดเล็กที่สุดในภาพ และเป็นสิ่งแรกที่มักพังเวลาบีบขั้นตอน

เรื่องที่ต้องจ่าย: มันแถมข้อความที่ไม่ได้สั่ง

เจอ คิดเป็น
Pruna 8 ขั้น 4 / 24 17%
ของเดิม 40 ขั้น 1 / 24 4%

อาการคือป้ายมีบรรทัดตัวเล็กมั่ว ๆ พ่วงมาใต้ข้อความจริง และมักเกิดกับฉากที่ “ควรมีข้อความเยอะ” ตามธรรมชาติ เช่นการ์ดเมนูอาหาร หรือป้ายร้านที่มีแถบว่างด้านล่าง ส่วนป้ายสั้น ๆ อย่างป้ายห้ามจอดรถไม่เคยเกิดเลย

ย้อนกลับไปดูหัวข้อ 3 แล้วจะเข้าใจว่าทำไม — DMD ฝึกให้ภาพ “อยู่ในกองเดียวกับของจริง” และในกองรูปป้ายเมนูของจริงทั้งโลก ป้ายเมนูมีข้อความเยอะเป็นเรื่องปกติ นักเรียนจึงเติมให้ตามธรรมชาติของกอง ทั้งที่เราไม่ได้สั่ง เมื่อบวกกับการที่ต้องปิด CFG (ซึ่งเป็นกลไกที่คอยบังคับให้เกาะคำสั่ง) และมีโอกาสแก้ทางแค่ 8 ครั้งแทน 40 ครั้ง ผลจึงออกมาแบบนี้

อีกเรื่องที่เจอ: 2K ใช้ไม่ได้ เราสั่งป้าย ร้านอาหารบ้านสวน ที่ 2048² ได้กลับมาเป็น ร้อาหารเ้าสวน ตัวหนังสือหายไปสองตัว ตรงกับที่การ์ดโมเดลเขียนไว้เองว่าฝึกที่ 1K เท่านั้น — ของที่โมเดลไม่เคยเห็นตอนฝึก มันทำไม่ได้ ไม่มีข้อยกเว้น


8. สรุปสำหรับคนที่จะเอาไปใช้

  1. เร็วขึ้นจริง และตัวอักษรไทยไม่เสีย — นี่คือข่าวดีที่แท้จริงของงานนี้
  2. ตั้งค่าให้ถูกก่อนตัดสิน — ต้องมีตาราง sigma ของเขาและปิด CFG ถ้าเสียบ LoRA แล้วลด steps เฉย ๆ จะได้ภาพเละแล้วสรุปผิดว่าของไม่ดี
  3. ยิ่งภาพใหญ่ยิ่งคุ้ม แต่ ห้ามเกิน 1K เพราะเขาไม่ได้ฝึกมา — สองข้อนี้ขัดกัน ต้องเลือกจุดที่ลงตัว
  4. ระวังข้อความแถม โดยเฉพาะงานป้าย/เมนูที่มีพื้นที่ว่าง — เป็นราคาที่ต้องจ่ายสำหรับความเร็ว 3 เท่า

สำหรับ AI Server Suite เรายังไม่เอาเข้าชุดสินค้าในรอบนี้ เพราะอัตราการแถมข้อความ 17% สูงเกินกว่าจะปล่อยให้ลูกค้าเจอเองโดยไม่มีสวิตช์ควบคุม แต่ทิศทางถูกแล้ว และเราจะลองกดอาการนี้ลงก่อนตัดสินใจอีกครั้ง

หมายเหตุเรื่องสัญญาอนุญาต: LoRA ตัวนี้เป็นงานต่อยอดจาก Qwen-Image 2.1 จึงอยู่ใต้ Qwen Research License เหมือนโมเดลฐาน — ภาพที่คุณสร้างเป็นของคุณ แต่การเอาตัวโมเดลไปใช้ในกิจการควรขอใบอนุญาตเชิงพาณิชย์ก่อน รายละเอียดอยู่ในบทความเรื่อง license ของเราเมื่อวันที่ 22 กันยายน


ทุกตัวเลขในบทความนี้วัดเองบน NVIDIA DGX Spark (GB10) ด้วย Qwen-Image 2.1 int8 ตัวเดียวกับที่อยู่ในชุดโมเดลของ AI Server Suite — 48 ภาพสำหรับชุดหลัก และอีก 8 ภาพสำหรับทดสอบโหมดอื่น