
ในวงการสร้างภาพและวิดีโอด้วย AI คำว่า "ลดจำนวน Step" มักฟังดูเหมือนการลดขั้นตอนจาก 30 รอบเหลือ 4 รอบ แล้วหวังว่าจะได้ผลลัพธ์เหมือนเดิม
แต่ความจริงมีรายละเอียดมากกว่านั้น
การลดจาก 30 Step เหลือ 4 Step อาจทำให้วิดีโอเร็วขึ้นหลายเท่า แต่ก็อาจกระทบทั้งรายละเอียด ความต่อเนื่องของภาพ และความสมเหตุสมผลของการเคลื่อนไหว ขึ้นอยู่กับว่าเป็นการลด Step แบบธรรมดา หรือเป็นโมเดลที่ผ่านการฝึกแบบ distillation มาโดยเฉพาะ
Diffusion model เริ่มต้นจากข้อมูลที่เต็มไปด้วย noise แล้วค่อย ๆ ปรับให้กลายเป็นภาพหรือวิดีโอที่ตรงกับ prompt
ในแต่ละ Step โมเดลจะดู latent ที่มีอยู่ แล้วคาดเดาว่าควรลบ noise ตรงไหน และปรับข้อมูลไปในทิศทางใด เพื่อให้เข้าใกล้ผลลัพธ์สุดท้ายมากขึ้น
ภาพรวมจึงประมาณนี้:
Noise
↓
Step 1: เริ่มเห็นโครงสร้าง
↓
Step 2: รูปร่างและองค์ประกอบเริ่มชัด
↓
Step 3: ปรับความสัมพันธ์ของวัตถุและการเคลื่อนไหว
↓
Step 4 เป็นต้นไป: เก็บรายละเอียดและแก้ artifact
↓
ภาพหรือวิดีโอสุดท้าย
แต่ละ Step ไม่ได้หมายความว่าโมเดลคิดเรื่องใหม่ทุกครั้งเหมือนมนุษย์นั่งวิเคราะห์ การทำงานใกล้เคียงกับการค่อย ๆ ขัดข้อมูลที่ยังหยาบและมี noise ให้กลายเป็นผลลัพธ์ที่สมบูรณ์ขึ้น
ถ้าเอาโมเดลทั่วไปที่เคยใช้ 30 Step มาบังคับให้ทำงานแค่ 4 Step โดยไม่ได้ฝึกมาเพื่อสิ่งนี้ คุณภาพมักลดลงอย่างเห็นได้ชัด
สิ่งที่อาจเกิดขึ้นมีตั้งแต่:
รายละเอียดผิว ผม และพื้นผิวลดลง
ขอบวัตถุไม่คม หรือมี artifact เพิ่มขึ้น
ใบหน้าและมือผิดรูปง่ายขึ้น
วัตถุเปลี่ยนรูปร่างระหว่างเฟรม
การเคลื่อนไหวไม่ต่อเนื่อง
วัตถุหายหรือโผล่ขึ้นมาแบบไม่มีเหตุผล
ความสัมพันธ์ระหว่างวัตถุผิดเพี้ยน
ในกรณีวิดีโอ ปัญหาไม่ได้อยู่แค่ที่ภาพคมไหม แต่รวมถึงความต่อเนื่องระหว่างเฟรมด้วย ตัวอย่างเช่น มือถือแก้วในเฟรมแรก ยกแก้วในเฟรมที่สอง แต่แก้วเปลี่ยนรูปหรือนิ้วทะลุแก้วในเฟรมถัดไป
โมเดลแบบ 4 Step ที่ดีไม่ได้เกิดจากการตัด 26 ขั้นตอนทิ้งเฉย ๆ
โดยทั่วไปจะใช้กระบวนการที่เรียกว่า distillation ซึ่งฝึก student model ให้เลียนแบบผลลัพธ์ของ teacher ที่ใช้ Step จำนวนมาก
โมเดลเดิมอาจทำงานประมาณนี้:
Noise → A → B → C → D → E → F → G → Final
ส่วน student model จะถูกฝึกให้กระโดดระยะไกลขึ้น:
Noise → C → F → Final
แต่ละ Step ของ student จึงต้องแก้ข้อมูลจำนวนมากกว่าเดิม มันไม่ได้ทำงานเบาลงแบบตรง ๆ แต่ถูกฝึกให้แต่ละรอบมีประสิทธิภาพสูงขึ้น
ลองเปรียบเทียบกับการทำก๋วยเตี๋ยวก็ได้ครับ
การทำแบบ 30 Step เหมือนเราค่อย ๆ ปรุงชามหนึ่งทีละนิด ชิมน้ำซุป เติมน้ำปลา เติมพริก แล้วชิมซ้ำหลายรอบ ทุกครั้งมีโอกาสแก้รสได้ละเอียดขึ้น ส่วนโมเดล 4 Step ที่ผ่าน distillation มาแล้วเหมือนพ่อครัวที่ฝึกจนรู้ว่า ถ้าน้ำซุปมีรสแบบนี้ ควรเติมเครื่องปรุงทีเดียวในปริมาณเท่าไร จึงทำงานน้อยรอบกว่า แต่ยังได้รสใกล้เคียงเดิม ถ้าลดรอบของพ่อครัวที่ยังไม่เคยฝึกให้ทำแบบนี้ อาหารก็มีโอกาสจืด เค็ม หรือรสไม่เข้าที่ได้ง่าย
ดังนั้น 4 Step model กับโมเดล 30 Step ที่เอามารันแค่ 4 Step จึงไม่ใช่สิ่งเดียวกัน
มีผล โดยเฉพาะกับรายละเอียดขนาดเล็ก เมื่อมี Step มากขึ้น โมเดลมีโอกาสแก้ไขสิ่งเหล่านี้ได้มากขึ้น:
ขอบวัตถุ
รายละเอียดใบหน้าและเส้นผม
ลวดลายเสื้อผ้า
พื้นผิวโลหะ ไม้ น้ำ และกระจก
ตัวหนังสือ
แสงและเงาขนาดเล็ก
noise และ artifact
แต่เพิ่ม Step ไม่ได้แปลว่าภาพจะคมขึ้นเสมอไป หากเกินจุดที่เหมาะสม คุณภาพอาจไม่ได้ดีขึ้นมาก
คุณภาพยังขึ้นกับความสามารถของโมเดล การฝึกและ dataset, resolution, จำนวนเฟรม, scheduler, quantization, prompt และค่า guidance ด้วย
มีผลทางอ้อม แต่ไม่ได้เพิ่มความฉลาดหลักของโมเดล
สมมติว่าโมเดลถูกฝึกมาให้เข้าใจฉากที่มีคนโยนลูกบอล หากใช้ Step น้อยเกินไป โมเดลอาจไม่มีโอกาสปรับ trajectory ให้สมบูรณ์ จึงเกิดวิดีโอที่ลูกบอลลอยผิดทิศทาง เปลี่ยนขนาด หายไปกลางอากาศ หรือไม่ตกตามแรงโน้มถ่วง
การเพิ่ม Step อาจช่วยให้โมเดลแก้ปัญหาเหล่านี้ได้ดีขึ้น เพราะมีโอกาส refine latent มากขึ้น
แต่ถ้าโมเดลไม่เข้าใจฉากนั้นตั้งแต่แรก การเพิ่ม Step ก็ไม่ได้ทำให้มันกลายเป็นนักฟิสิกส์ ถ้าโมเดลไม่เข้าใจว่าแก้วควรอยู่ในมือ หรือไม่เข้าใจว่าน้ำควรไหลลงตามแรงโน้มถ่วง การเพิ่มจาก 4 Step เป็น 40 Step อาจช่วยลดความผิดพลาดบางอย่าง แต่ไม่ได้เปลี่ยนความสามารถพื้นฐานของโมเดล
ความสามารถด้าน logic และ physics มาจาก network, ข้อมูลฝึก, สถาปัตยกรรม, วิธี distill และ sampling algorithm ร่วมกัน จำนวน Step เป็นเพียงส่วนหนึ่ง
ถ้าการสร้างวิดีโอหนึ่งครั้งต้องเรียก DiT 30 ครั้ง แล้วลดเหลือ 4 ครั้ง ปริมาณการคำนวณในส่วนนี้ก็ลดลงมาก ทำให้ทดลอง prompt ได้เร็วขึ้นและสร้างวิดีโอได้จำนวนมากขึ้น
จำนวน forward pass ที่ลดลงช่วยลดภาระ GPU และอาจทำให้การสร้างวิดีโอทำได้ง่ายขึ้นบนเครื่องที่มีข้อจำกัดด้าน VRAM หรือ memory bandwidth
สำหรับระบบ cloud หรือ production server การลดจำนวนรอบคำนวณช่วยลดเวลา GPU ต่อ request แม้ต้นทุนจริงยังขึ้นกับ resolution, จำนวนเฟรม และ configuration อื่น ๆ
ถ้ารู้แล้วว่าจะใช้ H3 เป็นหลัก และไม่ได้เปลี่ยน LoRA ทุก request การ fuse weights และ optimize execution path ไว้ล่วงหน้าก็สมเหตุสมผล
มือ ใบหน้า ตัวหนังสือ ของเหลว วัตถุโปร่งใส และลวดลายซับซ้อน อาจยังเป็นจุดที่โมเดล 4 Step ทำได้แย่กว่าในบางสถานการณ์
รูปร่างตัวละครอาจเปลี่ยน เสื้อผ้าอาจสลับลาย แขนขาอาจบิด หรือวัตถุอาจหลุดจากตำแหน่ง โดยเฉพาะ prompt ที่มีการกระทำหลายขั้น
FastH3 เหมาะกับโมเดลหรือ variant ที่กำหนดไว้แล้ว แต่เปลี่ยน LoRA หรือ model variant ระหว่าง request ได้ยากกว่าแนวทาง Turbo LoRA ที่เก็บ adapter แยกไว้
โมเดล 4 Step มักถูกฝึกให้ทำงานกับ scheduler และค่าบางชุด หากตั้งค่าผิด คุณภาพอาจตกเร็วกว่าระบบที่มี Step มากกว่า
FastH3 คุ้มถ้าใช้ H3 เป็นโมเดลหลัก ต้องการความเร็วสูง และ workflow ไม่ได้เปลี่ยนบ่อย เหมาะกับ production server ที่มีหน้าที่ชัดเจน เช่น สร้างวิดีโอแนวเดียวกันจำนวนมาก
Turbo LoRA อาจเหมาะกว่า ถ้ายังอยู่ในช่วงทดลอง ต้องเปลี่ยน LoRA หรือ model variant บ่อย และต้องการให้ server เดียวรองรับงานหลายรูปแบบ
เปรียบเทียบง่าย ๆ:
Turbo LoRA เหมือนโต๊ะทำงานที่เปลี่ยนเครื่องมือได้ตลอดเวลา
FastH3 เหมือนเครื่องจักรที่สร้างมาเพื่อผลิตสินค้าชนิดเดียวจำนวนมาก
อย่าตัดสินจาก screenshot เดียว วิดีโอที่ดูคมในเฟรมแรกไม่ได้หมายความว่าจะดีตลอดทั้งคลิป
ควรทดสอบ prompt ที่มี:
คนเดินหรือวิ่ง
มือหยิบจับสิ่งของ
คนถือแก้วหรืออุปกรณ์
ของเหลวไหล
วัตถุชนกัน
ตัวละครหมุนตัว
กล้องแพนหรือเคลื่อนที่
การเคลื่อนไหวต่อเนื่องหลายช่วง
ควรบันทึกทั้งเวลา render, VRAM, ความคมชัด, ความสม่ำเสมอของตัวละคร, ความต่อเนื่องของวัตถุ, ความถูกต้องของการเคลื่อนไหว และอัตราที่ต้อง generate ใหม่
บางครั้งโมเดลที่เร็วกว่า 2 เท่าอาจไม่ได้ประหยัดเวลาจริง ถ้าต้อง generate ใหม่หลายรอบเพราะ motion เสียหรือมี artifact
การลดจากหลายสิบ Step เหลือ 4 Step ไม่ได้หมายความว่าโมเดลฉลาดน้อยลงโดยอัตโนมัติ และไม่ได้หมายความว่าภาพจะเสียคุณภาพเสมอไป
ประเด็นสำคัญคือ 4 Step นั้นเกิดขึ้นได้อย่างไร
ถ้าเป็นการเอาโมเดลปกติมาตัด Step ทิ้ง คุณภาพมักลดลงทั้งด้านรายละเอียดและความต่อเนื่องของ motion
แต่ถ้าเป็นโมเดลที่ผ่าน distillation มาแล้ว แต่ละ Step จะถูกฝึกให้ทำงานหนักขึ้นและกระโดดข้ามระยะทางได้ไกลกว่าเดิม จึงสามารถรักษาคุณภาพไว้ได้มากกว่าที่คาด
สำหรับคนที่ต้องการสร้าง H3 บน DGX Spark อย่างจริงจัง FastH3 มีโอกาสคุ้มมาก โดยเฉพาะถ้าตั้งเครื่องเป็น dedicated H3 generation server
แต่ถ้ายังทดลองหลาย LoRA หลายสไตล์ Turbo LoRA จะเหมาะกว่า
Turbo LoRA เหมาะกับคนที่ต้องการความยืดหยุ่น ส่วน FastH3 เหมาะกับคนที่ตัดสินใจแล้วว่าจะใช้ H3 แบบไหน และต้องการรีดความเร็วให้ได้มากที่สุด
สิ่งที่ต้อง benchmark ไม่ใช่แค่ภาพคมไหม แต่คือวิดีโอเคลื่อนไหวต่อเนื่องและทำตาม prompt ได้ดีแค่ไหน
