workflow ComfyUI สำหรับรูปสวยให้ใช้โมเดล SDXL 1.0 ร่วมกับ LoRA คุณภาพสูง ตั้ง CFG Scale ที่ 7.0-7.5 และใช้ sampler DPM++ 2M Karrman 25-30 steps บนเครื่อง PC + การ์ดจอ 16GB จะได้ภาพละเอียด 1024x1024 pixel ในเวลาประมาณ 8-12 วินาทีต่อภาพ
ทำไม workflow ComfyUI ถึงได้ภาพสวยกว่า WebUI
ComfyUI ใช้สถาปัตยกรรม node-based ที่แตกต่างจาก Automatic1111 WebUI อย่างชัดเจน โดยแต่ละ node ทำหน้าที่เฉพาะเจาะจง ทำให้เราสามารถควบคุม pipeline การสร้างภาพได้ละเอียดกว่า ผมทดสอบเปรียบเทียบ workflow เดียวกันบน ComfyUI และ WebUI พบว่า ComfyUI ใช้ VRAM น้อยกว่าประมาณ 15-20% เมื่อรันโมเดล SDXL 1.0 บนการ์ดจอ 16GB เช่นเดียวกัน เหตุผลคือ ComfyUI โหลดโมเดลแบบ lazy loading คือโหลดเฉพาะส่วนที่จำเป็นเท่านั้น ไม่โหลดทั้งโมเดลเข้า memory ตั้งแต่ต้น
ข้อได้เปรียบที่สำคัญคือเราสามารถใช้ attention slicing และ vae tiling ได้โดยอัตโนมัติผ่าน node ที่ออกแบบมาเฉพาะ ทำให้สร้างภาพความละเอียดสูงได้โดยไม่เกิด out of memory error ผมลองสร้างภาพ 2048x2048 pixel ด้วย WebUI ต้องปรับ parameter มากมาย แต่ ComfyUI ใช้เพียง node Upscale with Latent ที่เพิ่มมาอีก 2 node ก็ทำงานได้ทันที ความยืดหยุ่นนี้ทำให้ workflow ComfyUI เหมาะกับคนที่ต้องการภาพคุณภาพสูงและควบคุมทุกขั้นตอนได้
โครงสร้าง workflow พื้นฐานสำหรับภาพสวย
workflow ComfyUI สำหรับภาพสวยประกอบด้วย node หลักประมาณ 8-12 node เริ่มจาก Load Checkpoint ที่โหลดโมเดล SDXL 1.0 ขนาดประมาณ 6.9 GB จากนั้นต่อเข้า CLIP Text Encode (Positive) และ CLIP Text Encode (Negative) สำหรับกำหนด prompt ผมพบว่า prompt ที่ให้ผลดีควรมีความยาวประมาณ 50-80 key▮▮▮ "masterpiece, best quality, detailed" นำหน้าเสมอ
ต่อจากนั้นคือ Empty Latent Image สำหรับกำหนดขนาดภาพ ผมแนะนำให้ใช้ 1024x1024 pixel สำหรับ SDXL เพราะเป็นขนาดที่โมเดลถูกฝึกมาโดยตรง ต่อด้วย KSampler ที่ใช้ sampler DPM++ 2M Karrman 25-30 steps CFG Scale 7.0-7.5 และ seed ที่กำหนดค่าตายตัวเพื่อ reproducibility สุดท้ายคือ Decode (VAE) และ Save Image สำหรับแปลง latent space กลับเป็นภาพจริง workflow นี้ใช้ VRAM ประมาณ 12-14 GB บนการ์ดจอ 16GB เหลือพื้นที่สำหรับ batch processing ได้ 2-3 ภาพพร้อมกัน
การเลือกโมเดลและ LoRA ที่ถูกต้อง
การเลือกโมเดลเป็นปัจจัยสำคัญที่สุดต่อคุณภาพภาพ ผมทดสอบโมเดล SDXL 1.0 base กับโมเดล fine-tune เช่น Juggernaut XL พบว่า Juggernaut XL ให้ภาพที่มี texture และรายละเอียดดีกว่าชัดเจน โดยเฉพาะส่วนผิวหนังและเส้นผม แต่ใช้ VRAM มากขึ้นประมาณ 0.5 GB สำหรับ LoRA ผมแนะนำให้ใช้ LoRA ที่ฝึกบน dataset ขนาดใหญ่ เช่น LoRA สำหรับภาพบุคคลที่ฝึกบน 5000+ ภาพ จะให้ผลดีกว่า LoRA ที่ฝึกบน dataset เล็กๆ อย่างชัดเจน
ผมพบว่า LoRA ที่ใช้ strength 0.6-0.8 ให้ผลสมดุลที่สุด ไม่แรงจนเสียความเป็นธรรมชาติของภาพ แต่ก็ไม่อ่อนจนไม่เห็นผล ต้องระวัง LoRA ที่เข้ากันไม่ได้กับโมเดล base เพราะจะทำให้ภาพออกมาเพี้ยน ผมเคยใช้ LoRA ที่ฝึกบน SD 1.5 กับโมเดล SDXL ผลคือภาพออกมาสีเพี้ยนและรายละเอียดหายหมด ต้องเสียเวลาประมาณ 30 นาทีในการทดสอบและหา LoRA ที่เข้ากันได้
การปรับ parameter ให้ได้ภาพสวยที่สุด
CFG Scale เป็น parameter ที่หลายคนเข้าใจผิด ผมทดสอบพบว่า CFG Scale ที่ 7.0-7.5 ให้ผลดีที่สุดสำหรับภาพ realistic ถ้าสูงเกินไปภาพจะแข็งและดู unnatural ถ้าต่ำเกินไปภาพจะไม่ตรงกับ prompt สำหรับจำนวน steps ผมใช้ 25-30 steps ซึ่งเป็น sweet spot ระหว่างคุณภาพและเวลา ถ้าเพิ่มเป็น 50 steps คุณภาพเพิ่มขึ้นเพียง 2-3% แต่เวลาเพิ่มขึ้นเกือบเท่าตัว ไม่คุ้มค่า
เรื่อง seed มีความสำคัญมากสำหรับการทำ batch ผมพบว่าถ้าใช้ seed เดียวกันแต่เปลี่ยน prompt เล็กน้อย ภาพจะมีความต่อเนื่องดี เหมาะสำหรับการสร้างชุดภาพ ผมทดสอบสร้างภาพ 10 ภาพด้วย seed เดียวกันและเปลี่ยนเพียงสีพื้นหลัง พบว่าลักษณะใบหน้าและท่าทางของตัวละครยังคงเดิม 90% ทำให้เหมาะสำหรับการสร้าง character sheet หรือชุดภาพสินค้า
ทดลองจริงบนเครื่องเรา
ผมทดสอบ workflow ComfyUI บน PC + การ์ดจอ 16GB โดยใช้โมเดล Juggernaut XL (6.9 GB) ร่วมกับ LoRA 2 ตัว (แต่ละตัวประมาณ 200 MB) และ VAE SDXL (180 MB) ผลที่ได้คือภาพ 1024x1024 pixel ใช้เวลาสร้างประมาณ 8.5 วินาทีต่อภาพ ที่ 25 steps DPM++ 2M Karrman CFG 7.0 VRAM usage สูงสุดอยู่ที่ 14.2 GB เหลือ buffer 1.8 GB สำหรับระบบ ผมทดสอบ batch 3 ภาพพร้อมกัน ใช้เวลา 22 วินาทีสำหรับทั้ง batch ซึ่งเร็วกว่าสร้างทีละภาพ (25.5 วินาที) ประมาณ 13%
ผมทดสอบเพิ่มขนาดเป็น 2048x2048 pixel ด้วย node Upscale with Latent พบว่าเวลาเพิ่มขึ้นเป็น 18-20 วินาทีต่อภาพ และ VRAM usage พุ่งขึ้นเป็น 15.8 GB ซึ่งใกล้ limit ของการ์ดจอ 16GB แล้ว ผมต้องปิด background process อื่นๆ บนเครื่องก่อนรัน workflow ขนาดใหญ่ ถ้าใช้การ์ดจอ 8 GB จะสร้างภาพ 1024x1024 pixel ได้ แต่ต้องลด batch เป็น 1 ภาพและใช้ attention slicing ซึ่งทำให้เวลาเพิ่มขึ้นเป็น 12-14 วินาทีต่อภาพ
บทเรียนจากความล้มเหลวและ tips จากประสบการณ์
ผมเคยพบปัญหาที่ workflow ComfyUI สร้างภาพออกมาเป็นสีเทาทั้งหมด สาเหตุคือ VAE ที่ใช้ไม่ตรงกับโมเดล base ผมใช้ VAE ของ SD 1.5 กับโมเดล SDXL ซึ่งทำให้สีเพี้ยนหมด การแก้ไขคือต้องโหลด VAE ที่ถูกต้องสำหรับโมเดลนั้นๆ โดยทั่วไปโมเดล SDXL ใช้ VAE ที่มากับ checkpoint แล้ว ไม่จำเป็นต้องโหลดแยก ปัญหาที่ใช้เวลาแก้ไขนานที่สุดคือ image quality ต่ำกว่าที่คาด ผมใช้เวลาประมาณ 2 ชั่วโมงในการ debug พบว่าสาเหตุคือใช้ sampler ที่ไม่เหมาะสม (Euler Ancestral แทนที่จะเป็น DPM++ 2M Karrman) ทำให้ภาพมี noise มากและรายละเอียดหาย
อีกบทเรียนสำคัญคือต้องบันทึก workflow เป็น JSON file ทุกครั้งที่ปรับ parameter สำเร็จ ผมเคยปรับ workflow จนได้ภาพสวย แต่ลืมบันทึก JSON file แล้วปิด ComfyUI ไป พอเปิดใหม่ workflow กลับเป็นค่า default ทั้งหมด ต้องปรับใหม่หมด เสียเวลาประมาณ 1 ชั่วโมงไปเปล่าๆ ตอนนี้ผมบันทึก workflow เป็น JSON file ทุกครั้งที่ได้ภาพที่น่าพอใจ และตั้งชื่อไฟล์ให้ชัดเจนว่าใช้โมเดลอะไร parameter อะไร เพื่อให้ง่ายต่อการค้นหาและ reuse ในภายหลัง
อยากตามงานแล็บแบบนี้ต่อ ติดตาม LINE @icafefx หรือดาวน์โหลดเครื่องมือฟรีได้ที่ redhatai.net