
เวิร์กโฟลว์ Qwen-Image-2.1: เชนโหนด ปุ่มปรับ และสิ่งที่เปลี่ยนแปลงไปนับตั้งแต่วันที่ศูนย์
- Orcaใหม่Orca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 ต่อ 1 ล้านโทเค็น · 61 tok/s
- openaiใหม่OpenAI: GPT-6.1 Sol2026-09-2952ความฉลาด
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856ความฉลาด
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 ต่อ 1 ล้านโทเค็น · 311 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238ความฉลาด
- OpenAIOpenAI: GPT-6 Sol2026-09-2248ความฉลาด
- AnthropicAnthropic: Claude Opus 5.52026-09-2258ความฉลาด
- xAIGrok 4.72026-09-2146ความฉลาด
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 ต่อ 1 ล้านโทเค็น · 42 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 ต่อ 1 ล้านโทเค็น · 239 tok/s
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-09-1040ความฉลาด
- OpenAIOpenAI: GPT-6 Astra2026-09-0453ความฉลาด77การเขียนโค้ด
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241ความฉลาด76การเขียนโค้ด
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245ความฉลาด76การเขียนโค้ด
- AnthropicAnthropic: Claude Fable 5.12026-09-0153ความฉลาด82การเขียนโค้ด
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 ต่อ 1 ล้านโทเค็น · 56 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 ต่อ 1 ล้านโทเค็น · 120 tok/s
- z-aiZ.ai: GLM 5.3 Flash2026-08-2642ความฉลาด72การเขียนโค้ด
- DeepSeekDeepSeek: DeepSeek V4 Flash Vision (Exp)2026-08-21$0.22 / $0.66 ต่อ 1 ล้านโทเค็น · 212 tok/s
- z-aiZ.ai: GLM 5.32026-08-1845ความฉลาด75การเขียนโค้ด
สิ่งที่คุณได้จากหน้านี้คือQwen-Image-2.1กราฟที่คุณสามารถสร้างใหม่ตั้งแต่ต้นและทำซ้ำได้ — ห่วงโซ่ของโหนดตามชื่อที่ตัวโหลดใช้จริง ปุ่มปรับสี่หรือห้าปุ่มที่ตัดสินว่าเอาต์พุตจะออกมาตรงกับสิ่งที่คุณขอหรือไม่ และการตั้งค่าสองอย่างที่ผู้คนเปลี่ยนโดยไม่รู้ตัวว่าพวกเขาได้เปลี่ยนตารางสัญญาณรบกวนไปแล้ว ตัวโมเดลเองคือการเปิดตัวแบบรวม text-to-image และการแก้ไขภาพของผู้ขาย ที่เปิดซอร์สเมื่อวันที่ 20 กันยายน 2026 ภายใต้สัญญาอนุญาตเพื่อการวิจัย: พารามิเตอร์ 7B ในองค์ประกอบการสร้างภาพ เลเยอร์ DiT แบบ single-stream จำนวน 32 เลเยอร์ VAE แบบ RGBA 64 แชนเนลที่การบีบอัดเชิงพื้นที่ 16 เท่า และรูปอ้างอิงสูงสุดสิบรูปบนเส้นทางการแก้ไข วันที่นั้นอยู่ตรงนี้เพื่อบอกคุณว่าคุณกำลังต่อเช็กพอยต์ตัวไหน ไม่ใช่เพื่อประกาศอะไร กราฟคือหัวข้อเรื่อง และกราฟก็มีประวัติการแก้ไขที่ควรอ่านก่อนที่คุณจะเชื่อภาพหน้าจอของคนอื่น — เทมเพลตที่แจกในวันนี้ไม่ใช่เทมเพลตที่แจกในวันแรก และความแตกต่างสี่ข้อก็คือสิ่งที่ผู้อ่านมักเข้าใจผิดพอดี
หน้านี้อธิบายกราฟใด
ทุกอย่างด้านล่างนี้อ่านมาจากที่เก็บเทมเพลตเวิร์กโฟลว์ของ ComfyUI Comfy-Org/workflow_templatesที่รีวิชันซึ่งเป็นปัจจุบัน ณ วันที่ 13 ตุลาคม 2026 โดยทำงานบน ComfyUI stable v0.39.0 (เผยแพร่เมื่อ 5 ตุลาคม 2026) ชื่อโหนดคือชื่อที่แสดงซึ่งตัวโหลดใช้ในกราฟ เมื่อโหนดใดถูกเพิ่มหรือเปลี่ยนชื่อระหว่างรีวิชัน จะมีการระบุวันที่ไว้ เส้นทางไปยังไฟล์เหล่านี้คือหน้าสอนใช้งานของ ComfyUI เองสำหรับ Qwen-Image-2.1 — มีเทมเพลตสามแบบอยู่ในนั้น และหน้านี้ทำตามเทมเพลตแบบข้อความเป็นภาพ จากนั้นจึงดัดแปลงมัน
เทมเพลตทั้งสามคือ Qwen-Image-2.1 Text to Image, Qwen-Image-2.1 Image Edit และ Remove Background: Qwen-Image-2.1ตัวสุดท้ายไม่ใช่กราฟที่แตกต่างออกไป: เอกสารของ ComfyUI ระบุว่ามันนำกราฟย่อยสำหรับแก้ไขภาพกลับมาใช้ซ้ำ โดยใช้พรอมต์ "ลบพื้นหลัง และส่งออกเป็นภาพ PNG" ดังนั้นจึงมีสองกราฟให้เรียนรู้ และหนึ่งในนั้นเป็นเทมเพลตพรอมต์ที่วางทับอยู่บนอีกกราฟหนึ่ง
เชนโหนด ตามลำดับ
เทมเพลตแปลงข้อความเป็นภาพเป็นซับกราฟ — โหนดที่พับเก็บได้หนึ่งโหนดบนแคนวาสซึ่งมีอินพุตที่เปิดเผยสิบแปดรายการ — ห่อหุ้มเชนสิบสามโหนด ภายในนั้น ลำดับคือ:
• UNETLoader — โหลด qwen_image_2.1_int8_convrot.safetensors โดยปล่อย weight dtype ไว้ที่ default นี่คือโมเดล diffusion และไฟล์ที่คุณเลือกตรงนี้คือสิ่งแรกที่ตัดสินว่าการรันของคุณจะตรงกับของคนอื่นหรือไม่
• Qwen Image 2.1 Cache — อยู่ระหว่างโหลดเดอร์กับแซมเพลอร์ ในเทมเพลตปัจจุบันถือเป็นโหนดที่ขาดไม่ได้ แต่สามารถบายพาสได้ และเป็นโหนดที่มีโอกาสหายไปจากกราฟที่คุณดาวน์โหลดมาในสัปดาห์แรกมากที่สุด
• KSampler — รับโมเดลจากโหนดแคช, คอนดิชันนิงเชิงบวกและลบจากตัวเข้ารหัสข้อความ, และ latent ว่างเปล่า วิดเจ็ตของมันในเทมเพลตที่จัดส่งมาอ่านว่า: seed 0, control fixed, steps 25, cfg 1, sampler euler, scheduler simple, denoise 1.
• EmptyLatentImage — ความกว้างและความสูงถูกเชื่อมเข้ามาจากResolution Selector โหนดที่อยู่นอกซับกราฟ และอินพุตตัวที่สามของมัน คือ batch size ถูกตั้งค่ามาให้ที่1.
• VAEDecode → SaveImageAdvanced — ตัวถอดรหัสส่งพิกเซลไปยังโหนดบันทึก โดยคำนำหน้าชื่อไฟล์คือ Qwen_image_2.1 และรูปแบบที่มีมาให้คือ PNG, 8-บิต, sRGB ทั้งนี้ PNG ไม่ใช่เรื่องเพียงผิวเผินในที่นี้ เพราะ VAE มีสี่แชนเนล ดังนั้น PNG 8-บิตจึงเป็นสิ่งที่รักษาแชนเนลอัลฟาให้คงอยู่ตลอดเส้นทางไปสู่ดิสก์
• CLIPLoader — โหลด qwen3vl_8b_int8_convrot.safetensors โดยตั้งค่าประเภทเป็น qwen_image Qwen3-VL 8B เป็น text encoder และยังเป็น vision tower ที่ใช้读取ภาพอ้างอิงของคุณด้วย
• Text Encode Qwen Image 2.1 (รหัสโหนด TextEncodeQwenImage21) — กำหนดเงื่อนไขให้พรอมป์ต โดยรับ clip, พรอมป์ต, พรอมป์ตเชิงลบ, VAE ที่ไม่บังคับ, จำนวนเต็มความละเอียด และชุดสล็อตรูปภาพที่ขยายเพิ่มอัตโนมัติชื่อ image_1 ถึง image_16 โดยคืนค่าสามอย่าง ได้แก่ conditioning เชิงบวก, conditioning เชิงลบ และ latent หนึ่งตัว latent นั้นคือส่วนที่คนมักมองข้าม — มันเป็น latent ว่างที่มีขนาดเท่ากับรูปอ้างอิงรูปแรก และบนกราฟ text-to-image มันไม่ถูกใช้งานเพราะ latent ว่างนั้นมาจาก Resolution Selector แทน
• VAELoader — qwen_image_2.1_vae_bf16.safetensors โดยป้อนให้ทั้งตัวถอดรหัสและเส้นทางภาพอ้างอิงของตัวเข้ารหัสข้อความ
สาขาเสริมเป็นส่วนสุดท้าย CLIPLoader ตัวที่สองโหลด qwen3.5_9b_qwen_image_2.1_pe_t2i.int8_convrot.safetensors โดยตั้งค่า type เป็น stable_diffusion — ไม่ใช่ qwen_image และความต่างนี้เป็นเจตนา เพราะนี่คือเช็คพอยต์สำหรับสร้างข้อความ ไม่ใช่ตัวเข้ารหัสภาพ มันป้อนเข้าสู่ Generate Textโหนด ซึ่งเอาต์พุตจะผ่าน Preview Any ไปยังพรอมป์ต์เชิงบวกของแซมเพลอร์ โดยสลับด้วย ComfySwitchNode ที่ต่อสายเข้ากับอินพุต refine_prompt และ Primitive String (Multiline)โหนดเก็บพรอมป์ต์ระบบที่การเขียนใหม่ทำตาม และคุณสามารถอ่านและแก้ไขได้
นับทั้งเชนดูแล้ว จะเห็นว่ามีหกโหนดที่เป็นงานจริง ๆ: โหลดโมเดล diffusion, โหลด text encoder, โหลด VAE, เข้ารหัส prompt, สุ่มตัวอย่างจาก latent ว่าง, ถอดรหัสและบันทึก ส่วนที่เหลือในเทมเพลตเป็นเรื่องหน่วยความจำหรือความสะดวกเท่านั้น

มีอะไรเปลี่ยนไประหว่างกราฟ day-zero กับกราฟนี้
นี่คือส่วนที่ควรรู้ก่อนที่คุณจะคัดลอกเวิร์กโฟลว์จากภาพหน้าจอในบทช่วยสอน เพราะเทมเพลต Qwen-Image-2.1 ถูกแก้ไขห้าครั้งหลังจากที่เปิดตัวครั้งแรก และการแก้ไขเหล่านั้นไม่ใช่แค่การเปลี่ยนแปลงเพียงผิวเผิน
• 20 กันยายน 2026 — เทมเพลตแรก คอมมิต 96309bd530, "เพิ่มเทมเพลต Qwen Image 2.1" มีเจ็ดโหนดในซับกราฟ text-to-image: ตัวโหลด, เอนโคเดอร์, เลเทนต์ว่าง, แซมเพลอร์, ดีโคเดอร์ ตัวโหลด CLIP ถูกตั้งค่าให้ใช้ตัวเข้ารหัสข้อความ bfloat16, qwen3vl_8b_bf16.safetensors — ไฟล์ขนาด 16.33 GB
• 20 กันยายน 2026 ต่อมาในวันเดียวกัน คอมมิต 371a7b7171 ได้เปลี่ยนตัวโหลดนั้นเป็น qwen3vl_8b_int8_convrot.safetensors ไฟล์ขนาด 8.71 GB พร้อมข้อความ "เปลี่ยน CLIP ของ Qwen Image 2.1 เป็น int8 convrot" บันทึกของเทมเพลตเองระบุว่า "โหลดโดยเทมเพลต ใช้หน่วยความจำน้อยลง" เวิร์กโฟลว์ที่สร้างจากไฟล์ของช่วงเช้ากับที่สร้างจากไฟล์ของช่วงเย็นไม่ใช่เวิร์กโฟลว์เดียวกัน
• 25 กันยายน 2026 โหนด Qwen Image 2.1 Cache ปรากฏในกราฟเป็นครั้งแรก พร้อมกับสาขาการปรับปรุงพรอมป์ตทั้งหมด — ตัวโหลด CLIP ตัวที่สอง, Generate Text, Preview Any, สวิตช์, โหนดซิสเต็มพรอมป์ต ก่อนวันที่นี้ไม่มีโหนดแคชให้ตั้งค่าและไม่มีขั้นตอนการเขียนใหม่ให้ปิด เทมเพลตแก้ไขภาพได้รับการเพิ่มอินพุตที่สอดคล้องกันในวันเดียวกัน หมายเหตุ text-to-image ก็ได้รับการเพิ่มในรีวิชันนี้ทั้งบรรทัด 4 เมกะพิกเซลและตัวห่อพรอมป์ตภาพโปร่งใส
• 28 กันยายน 2026 มีการเพิ่มขนาดไฟล์เข้าไปในบันทึกประกอบการดาวน์โหลด — เป็นการเปลี่ยนแปลงด้านเอกสาร ไม่ใช่การเปลี่ยนแปลงของกราฟ แต่เป็นจุดที่ตัวเลขซึ่งผู้อ่านใช้เทียบกับตัวจัดการดาวน์โหลดของตนนั้นมีที่มาจาก
• 30 กันยายน 2026. คอมมิต 9fae1041be, "Qwen Image 2.1: อัปเดตการตั้งค่า PE" — ครั้งสุดท้ายที่เทมเพลต 2.1 ใด ๆ ถูกแก้ไข. นี่คือสิ่งที่สำคัญที่สุดและมองเห็นได้น้อยที่สุด. ค่าสามค่าบนโหนด Generate Text ถูกเปลี่ยน: งบโทเค็น max_length จาก 16256 ลงมาเป็น 4096, ค่าปรับการทำซ้ำจาก 1.05 เป็น 1.0, และ thinking จากปิดเป็นเปิด, โดยหมายเหตุของโหนดเองตอนนี้กล่าวว่า checkpoint "ถูกฝึกด้วยบล็อกการให้เหตุผลและสูญเสียคุณภาพหากไม่มีมัน". หมายเหตุของเทมเพลตอธิบายค่าก่อนหน้านี้ว่าเป็นค่าอย่างเป็นทางการและกล่าวว่าขีดจำกัดนี้มีอยู่เพื่อ "การเขียนใหม่ครั้งเดียวไม่สามารถทำงานเป็นเวลาหลายนาที".
สิ่งที่ไม่เปลี่ยนแปลงคือครึ่งที่มีประโยชน์ของเรื่องนี้ บล็อกการสุ่มตัวอย่างเหมือนกันทุกไบต์ระหว่างเทมเพลตเริ่มต้นกับของวันนี้: steps 25, cfg 1, euler, simple, denoise 1, การควบคุม seed แบบคงที่, latent ว่างที่เอาต์พุตของ Resolution Selector, ขนาดแบตช์ 1 กราฟนี้ไม่เคยถูกแก้โดยการย้าย sampler มันถูกแก้โดยการเปลี่ยนว่าโหลดไฟล์ text-encoder ไฟล์ใด เพิ่มโหนดแคช และแก้ไขการตั้งค่าของ prompt-enhancer เอง
ยังมีอีกหนึ่งชั้นที่อยู่ใต้กราฟ คอร์ของ ComfyUI ยังคงเปลี่ยนแปลงไปเรื่อย ๆ หลังจากที่เทมเพลตลงตัวแล้ว: v0.38.0 เมื่อวันที่ 29 กันยายน ปรับปรุงตรรกะตำแหน่ง KV cache ของ Qwen 2.1 และ v0.39.0 เมื่อวันที่ 5 ตุลาคม ได้ปล่อย "แก้ไขอาการแครชเมื่อเลือกแคช int8 หรือ int4 ใน qwen image 2.1" หากกราฟของคุณเป็นเวอร์ชันล่าสุดของวันนี้ และบิลด์ของคุณเก่ากว่านั้น ดรอปดาวน์แคชไม่ใช่ตัวเลือกที่ช้า แต่คือการแครช

หน้าปัดที่ผู้อ่านมีแนวโน้มจะอ่านผิดมากที่สุด
เริ่มจากสิ่งที่เอกสารระบุไว้ตรง ๆ เพราะมันช่วยตัดการเดาส่วนใหญ่ออกไป เวิร์กโฟลว์ Qwen-Image-2.1 ทั้งสามแบบใช้การสุ่มด้วย steps 25, cfg 1, euler sampler และ simple scheduler นั่นคือคำสรุปของ ComfyUI เอง และตรงกับวิดเจ็ตที่มีให้มาแบบตรงเป๊ะ
ความซับซ้อนอยู่ที่ว่า 25 และ 40 ต่างก็เป็นคำตอบที่ถูกต้องสำหรับคำถามที่ต่างกัน การ์ดโมเดลของผู้จำหน่ายเองรันไปป์ไลน์ diffusers ที่ num_inference_steps=40 และค่าดีฟอลต์ของไปป์ไลน์ diffusers ก็คือ 40 เช่นกัน เอกสารของ ComfyUI ระบุว่าไปป์ไลน์ที่เผยแพร่นั้น "ใช้ประมาณ 40 ถึง 50 สเต็ปกับออยเลอร์แซมเพลอร์ และเทมเพลตเริ่มต้นต่ำกว่าที่ 25" ไม่มีตัวเลขใดเป็นข้อผิดพลาด พวกมันคือค่าดีฟอลต์ของกราฟและการรันอ้างอิง
• Steps — ทิศทางและข้อแลกเปลี่ยน ค่าที่ต่ำกว่าจะเร็วกว่า และตามเอกสารของ ComfyUI คุณภาพจะคงอยู่แตกต่างกันไปตามลักษณะงาน: การแก้ไขเฉพาะจุดแบบง่าย ๆ ยังคงคุณภาพได้ที่ 4 ถึง 8 steps "ในขณะที่การแก้ไขที่เขียนใหม่ทั้งเฟรมจะสูญเสียความสอดคล้องและต้องใช้เต็ม 25 steps" รายละเอียดปลีกย่อยที่ดื้อดึงอย่างมือและนิ้ว "จะเข้าที่เมื่อประมาณ 30 steps" และการเพิ่มจาก 25 เป็น 40 ช่วยลดความไม่นิ่งในพื้นที่ที่มีรายละเอียด ทิศทางเป็นแบบโมโนโทนและข้อแลกเปลี่ยนเป็นแบบเส้นตรง: คำแนะนำในเอกสารคือให้ปรับ steps เฉพาะเมื่อมีบางสิ่งเฉพาะเจาะจงที่ยังแก้ไม่สำเร็จ ไม่ใช่เพิ่มเพื่อความปลอดภัย
• Guidance — cfg 1 คือการปิด guidance และนั่นคือเส้นทางที่เผยแพร่ ที่ cfg 1 ComfyUI จะข้ามขั้นตอน negative conditioning ไป ดังนั้น negative prompt จึงไม่มีผล เทมเพลตเก็บค่า cfg 1 ไว้ "ซึ่งเป็นเส้นทางที่ Qwen-Image-2.1 เผยแพร่ออกมา" ไปป์ไลน์ diffusers ก็พูดแบบเดียวกันด้วยถ้อยคำของตัวเอง โดยตั้งค่าเริ่มต้น true_cfg_scale เป็น 1.0 เพราะ "Qwen-Image 2.1 ถูกออกแบบมาให้สุ่มตัวอย่างโดยไม่ใช้ guidance" ปรับเพิ่มเฉพาะเมื่อคุณต้องการให้ negative prompt มีผลจริง ๆ และรู้ถึงราคาที่ต้องจ่าย: cfg 2 ทำตามพรอมป์ที่แน่นขนัดได้ใกล้เคียงกว่า รวมถึงข้อความและตัวเลขเล็ก ๆ "แลกมาด้วยขอบที่คมเกินไป" ค่าที่สูงขึ้นจะเลื่อนการเปิดรับแสงไปทางสว่างเกินหรือมืดเกิน cfg 5 ทำให้คุณภาพแย่ลงอย่างหนัก cfg 0.5 ทำให้ภาพพัง คำแนะนำของ ComfyUI คือให้เปลี่ยนทีละค่าที่ละครั้ง แล้วเปรียบเทียบที่ seed คงที่
• ความละเอียดคือเป้าหมายเชิงเมกะพิกเซล ไม่ใช่รูปสี่เหลี่ยม โหนด Resolution Selector กำหนดอัตราส่วนภาพและงบเมกะพิกเซล โดย 1.0 MP มีค่าประมาณ 1024x1024 Qwen-Image-2.1 สร้างภาพแบบเนทีฟที่ 2K ดังนั้นเป้าหมายสำหรับภาพจัตุรัส 2048x2048 จึงอยู่ที่ประมาณ 4.0 MP ค่าที่เป็นพหุคูณของ 32 คือสิ่งที่โมเดลต้องการ — ทูลทิปบนอินพุต resolution ของ text encoder ระบุว่าภาพอ้างอิงจะถูกปรับขนาดเป็นประมาณ resolution x resolution พิกเซลที่พหุคูณของ 32 โดยคงอัตราส่วนภาพไว้ และตัวช่วยคำนวณขนาดของไปป์ไลน์เองก็ปัดเป็น 32 เช่นกัน การ์ดโมเดลของผู้จำหน่ายเผยแพร่พรีเซ็ต 2K ไว้ดังนี้ 1:1 ที่ 2048x2048, 4:3 ที่ 2400x1792, 3:4 ที่ 1792x2400, 3:2 ที่ 2528x1696, 2:3 ที่ 1696x2528, 16:9 ที่ 2752x1536, 9:16 ที่ 1536x2752
• การตั้งเป้าเกิน 2K ทำให้การยึดตามพรอมป์ตลดลง ไม่ใช่ความคมชัด เป้าหมายที่สูงกว่าขนาด 2K ที่โมเดลได้รับการฝึกมาเป็นอย่างมาก เช่น 4K จะทำให้สูญเสียการยึดตามพรอมป์ต นั่นเป็นพฤติกรรมที่มีการบันทึกไว้ ไม่ใช่การอนุมานจากสถาปัตยกรรม
• ข้อที่ขัดกับสัญชาตญาณจริง ๆ ก็คือ ความละเอียดยังขยับตารางเสียงรบกวน (noise schedule) ด้วย Qwen-Image-2.1 สุ่มตัวอย่างด้วยตัวจัดตารางเวลาแบบ flow-matching Euler ซึ่งการเลื่อน timestep เป็นแบบไดนามิก และไปป์ไลน์จะคำนวณการเลื่อนนั้นจากความยาวของลำดับ latent — นั่นคือ จากจำนวนโทเค็นที่ความละเอียดซึ่งคุณเลือกสร้างออกมา คอนฟิก scheduler ของเช็กพอยต์ตั้งค่า base_shift 0.5 และ max_shift 0.9 ครอบคลุมช่วงลำดับภาพตั้งแต่ 256 ถึง 8192 และไปป์ไลน์จะป้อนความยาวลำดับของการรันของคุณเข้าสู่สูตรนั้นในทุกครั้งที่เรียกใช้ ดังนั้นการเปลี่ยนผืนแคนวาสจึงเปลี่ยนตารางของตัวสุ่มตัวอย่าง ไม่ใช่แค่เฟรมเท่านั้น ในเทมเพลต ComfyUI ไม่มีตัวควบคุม shift ให้ตั้งค่า — อินพุตของ KSampler มี model, positive, negative, latent image, seed, steps, cfg, sampler name และ scheduler และนั่นคือรายการทั้งหมด ถ้าผลลัพธ์ที่ 4 MP ของคุณดูไม่เหมือนผลลัพธ์ที่ 1 MP ในแบบที่คุณอธิบายไม่ได้ด้วยรายละเอียดเพียงอย่างเดียว นี่คือสาเหตุ
• บนกราฟการแก้ไข ความละเอียดทำงานแตกต่างออกไป และเป็นค่าดีฟอลต์ที่มีต้นทุนสูงที่สุดเพียงหนึ่งเดียว เมื่อปิด custom_size — ซึ่งเป็นค่าดีฟอลต์ของเทมเพลต — การแก้ไขจะถูกสร้างขึ้นที่ขนาดของภาพอ้างอิงภาพแรก resolution 0 จะคงภาพอ้างอิงแต่ละภาพไว้ที่ขนาดพิกเซลของตัวเองโดยปัดเป็นจำนวนเท่าของ 32 ดังนั้นภาพถ่ายขนาด 3000x4000 จึงให้ผืนผ้าใบขนาด 3008x4000 ส่วนค่าที่มากกว่า 0 จะปรับสัดส่วนภาพนั้นให้พอดีกับงบพิกเซล resolution x resolution แทน — ซึ่งเป็นจำนวนพิกเซลรวม ไม่ใช่ความกว้าง ตัวอย่างต้นทุนของ ComfyUI เองที่วัดบน RTX 5090: ภาพอ้างอิงขนาด 3000x4000 ที่ resolution 0 ใช้เวลาประมาณ 6 วินาทีต่อหนึ่งรอบ ส่วนการแก้ไขแบบเดียวกันที่ resolution 1024 ใช้เวลาประมาณ 0.3 วินาทีต่อหนึ่งรอบ ที่ขนาดราว 896x1184 เปิด custom_size แล้วดึงผืนผ้าใบจาก Resolution Selector และให้ขนาดใกล้เคียงกับขนาดภาพแรกหลังปรับขนาด "ไม่เช่นนั้นการแก้ไขอาจคลาดเคลื่อนได้"
ดีเทอร์มินิซึม: seed กำหนดอะไรได้บ้าง และอะไรที่มันกำหนดไม่ได้
การกำหนด seed แบบคงที่เป็นสิ่งจำเป็นแต่ยังไม่เพียงพอ และเทมเพลตที่จัดส่งมาด้วยกันนั้นมีความเห็นไม่ตรงกันในเรื่องนี้ KSampler สำหรับ text-to-image มาพร้อมกับการควบคุมแบบ คงที่ ส่วนเทมเพลตสำหรับการแก้ไขทั้งสองแบบ — การแก้ไขภาพและการลบพื้นหลัง — มาพร้อมกับการควบคุมแบบ สุ่ม sampler เดียวกัน ค่าเริ่มต้นเดียวกัน แต่พฤติกรรมตรงกันข้ามเมื่อจัดคิวซ้ำ
สมมติว่า seed ถูกกำหนดไว้คงที่แล้ว นี่คือสิ่งที่ยังทำให้ภาพเปลี่ยนแปลงได้:
• แคช KV นี่คือเรื่องใหญ่ และมีเอกสารยืนยัน ไม่ใช่ตำนาน Qwen-Image-2.1 แคชคีย์และค่าของข้อความและภาพอ้างอิงหลังจากขั้นตอนแรก; ซอร์สของไปป์ไลน์อธิบายว่าสิ่งนี้ใช้ได้เพราะโทเค็นการปรับเงื่อนไขไม่ขึ้นกับขั้นตอนภายใต้การปรับเงื่อนไขเชิงสาเหตุของโมเดล จากนั้นมันกล่าวถึงสิ่งที่สำคัญสำหรับผู้ที่พยายามสร้างภาพซ้ำ: การสลับแคช "ไม่สามารถสร้างภาพเดียวกันซ้ำแบบบิตต่อบิตในความแม่นยำที่ลดลง" เพราะขั้นตอนถอดรหัสให้ความสนใจด้วยรูปแบบลำดับที่แตกต่างจากขั้นตอน prefill ทั้งสองแบ่งไทล์ต่างกันและลงเอยที่การปัดเศษต่างกัน — และความแตกต่างหนึ่ง ULP ที่บล็อกแรกจะถูกขยายโดย 32 บล็อกและทุกขั้นตอนของตัวสุ่มตัวอย่าง ดังนั้น "การตั้งค่าทั้งสองให้ตัวอย่างที่ถูกต้องเท่าเทียมกันแต่แตกต่างกันอย่างเห็นได้ชัด" คำแนะนำของซอร์สเองคือ: แก้ไขตัวอย่างโดยการแก้ไขแฟล็กนี้ ใน ComfyUI แฟล็กนี้อยู่บน Qwen Image 2.1 Cache โหนด โดยมี device (auto, gpu, cpu, off) และ dtype (default, int8, int4)
• ประวัติการเผยแพร่ของโหนดแคชเอง มันยังไม่มีอยู่ก่อนวันที่ 25 กันยายน 2026 ดังนั้นเวิร์กโฟลว์แบบ day-zero จึงไม่มีการตั้งค่าเช่นนั้น และไม่ทำงานเหมือนกับของวันนี้ และ ปิด — การตั้งค่าเพียงอย่างเดียวที่ตัดแคชออก — "จะคำนวณคำนำหน้าใหม่ทุกขั้นตอน ซึ่งช้ากว่า แต่เป็นวิธีเดียวที่จะตัดแคชออก"
• ไฟล์โมเดลใด เทมเพลตจะโหลดโมเดล diffusion แบบ int8 และตัวเข้ารหัสข้อความแบบ int8 หากสลับอันใดอันหนึ่งเป็นไฟล์ bf16 คุณก็ได้เปลี่ยนการคำนวณไปแล้ว บันทึกการดาวน์โหลดจึงระบุทั้งสองแบบพร้อมขนาดไว้ ก็เพราะตัวเลือกนี้เป็นเรื่องจริง
• ตัวเพิ่มประสิทธิภาพพรอมป์ ถ้าเปิดอยู่เมื่อ refine_prompt เปิดอยู่ โมเดลรูปภาพจะสุ่มจากพรอมป์ที่เขียนใหม่ ไม่ใช่พรอมป์ที่คุณพิมพ์ — และการเขียนใหม่นั้นสร้างโดยโหนดGenerate Text แยกต่างหากที่มีพารามิเตอร์การสุ่มของตัวเอง: temperature 1.0, top_k 20, top_p 0.95, ฟิลด์ seed ของตัวเอง และmax_length งบโทเค็น. seed ของ KSampler ของคุณไม่ครอบคลุมสิ่งเหล่านั้นเลย โหนด Preview Any ภายในซับกราฟจะแสดงพรอมป์ที่ไปถึงโมเดลรูปภาพจริง ๆ ซึ่งเป็นวิธีเดียวที่จะรู้ว่าคุณเพิ่งทำซ้ำอะไร
• บิลด์ของ ComfyUI เทมเพลตมีคำเตือนของตัวเอง: โหนดที่หายไปเมื่อโหลดเวิร์กโฟลว์มักหมายความว่าบิลด์นั้นเก่ากว่าโหนด และ Desktop กับ Cloud จะตามรุ่นเสถียร จึงอาจตาม nightly ไม่ทัน
ดังนั้น การทำซ้ำภาพ Qwen-Image-2.1 ของคนอื่นจึงไม่ใช่แค่การสลับ seed มันคือรีวิชันของเทมเพลต ไฟล์โมเดลสองไฟล์ การตั้งค่าความละเอียด steps, cfg, sampler, scheduler อุปกรณ์แคชและ dtype สถานะเปิด/ปิดของ enhancer และ seed ของมันเอง — และสำหรับ edit graph คือขนาดของภาพอ้างอิงแรก ComfyUI ไม่ได้ให้การรับประกันเรื่องการทำซ้ำด้วย seed สำหรับเวิร์กโฟลว์เหล่านี้ และซอร์สของ diffusers ระบุตรง ๆ ว่าการสลับแคชเปลี่ยน sample ดังนั้นให้ถือว่าการตรงกันแบบเป๊ะ ๆ เป็นสิ่งที่คุณต้องประกอบขึ้นมาอย่างตั้งใจ ไม่ใช่สิ่งที่ seed หยิบยื่นให้คุณ

มากกว่าหนึ่งภาพ และความทรงจำไปอยู่ที่ไหน
ในการตั้งค่าที่จัดส่งมา กราฟจะสร้างภาพหนึ่งภาพต่อการรัน และปุ่มปรับสำหรับเปลี่ยนค่านั้นก็ไม่น่าตื่นเต้น: EmptyLatentImage อินพุตที่สามของโหนด ซึ่งเป็น batch size ต่อไว้ที่ 1 การเพิ่มค่านั้นคือสิ่งที่ทำให้ sampler ปล่อยภาพหลายภาพจากคิวเดียว
ค่าใช้จ่ายของสิ่งนั้นคือจุดที่เรื่องนี้เริ่มตรงไปตรงมา เทมเพลตบอกคุณได้อย่างชัดเจนว่าแคชอยู่ที่ไหน — auto ใช้ VRAM ที่ว่างอยู่ แล้วจึงใช้ RAM ของระบบ; cpu ดึงข้อมูลล่วงหน้าอยู่เบื้องหลังการคำนวณ และเอกสารอธิบายว่ามันแลกมาด้วยความเร็วที่ลดลงเพียงเล็กน้อย; off คำนวณพรีฟิกซ์ใหม่ทุกสเต็ปและช้ากว่า พวกเขาระบุตัวเลขของฝั่งความแม่นยำ: int8 ลดแคชลงครึ่งหนึ่งโดยมีความแม่นยำประมาณ bf16 และ int4 ลดเหลือหนึ่งในสี่ แต่เพิ่มความผิดพลาดต่อสเต็ปเป็นประมาณสองเท่า สิ่งที่พวกเขาไม่เผยแพร่คือตารางขนาดแบตช์เทียบกับ VRAM และเอกสารของ ComfyUI ก็ไม่เผยแพร่เช่นกัน หากคุณกำลังกำหนดขนาดแบตช์สำหรับการ์ด คำตอบที่ตรงไปตรงมาคือไม่มีตัวเลขจากผู้พัฒนาเจ้าของผลิตภัณฑ์ใดที่ครอบคลุมเรื่องนี้; ปัจจัยที่ปรับได้ซึ่งมีผลตามที่เผยแพร่คืออุปกรณ์แคชและ dtype รวมถึงเป้าหมายความละเอียด ซึ่งเพิ่มทั้งจำนวน latent และพรีฟิกซ์ที่แคชไว้
กับดักแบตช์สองอย่างตั้งอยู่อีกฟากหนึ่งของรั้ว ในไปป์ไลน์ diffusers และทั้งคู่ก็ควรค่าแก่การรู้ เพราะกราฟ ComfyUI ซ่อนมันไว้ ในนั้น num_images_per_prompt จะคูณแบตช์ และถ้าคุณส่งลิสต์ของเจนเนอเรเตอร์ ความยาวของมันต้องตรงกับขนาดแบตช์ที่มีผลจริงพอดี ไม่เช่นนั้นไปป์ไลน์จะเกิดข้อผิดพลาด และลิสต์ของภาพเงื่อนไขคือ "ชุดภาพหนึ่งชุดที่ใช้ร่วมกันโดยทุกพรอมป์ต์ในแบตช์ ไม่ใช่หนึ่งรายการต่อพรอมป์ต์" — คุณไม่สามารถให้พรอมป์ต์แต่ละอันในแบตช์มีภาพอ้างอิงของตัวเองได้ คำแนะนำของแหล่งที่มาคือให้เรียกไปป์ไลน์หนึ่งครั้งต่อพรอมป์ต์แทน ซับกราฟการแก้ไขมีข้อจำกัดรูปร่างเดียวกันในตำแหน่งที่แตกต่างออกไป: ของมัน BatchImagesNode จะแบตช์ภาพอ้างอิงได้สูงสุดสิบภาพเข้าสู่ตัวเข้ารหัสข้อความ ซึ่งเป็นการแบตช์อินพุต ไม่ใช่เอาต์พุต ภาพอ้างอิงสิบภาพไม่ได้ให้ภาพสิบภาพ
Image-to-image จากกราฟเดียวกัน
คุณไม่จำเป็นต้องใช้กราฟที่แตกต่างออกไปสำหรับสิ่งนี้ เทมเพลตการแก้ไขภาพคือเชน text-to-image ที่นำ latent ว่างมาเปลี่ยนเป็นเอาต์พุต latent ของ text encoder แทน โดยมีLoadImage สองโหนดที่ป้อนimage_1 และimage_2 เข้าไปในสล็อตอ้างอิงของ subgraph และมีImageCompare โหนดอยู่ท้ายสุดเพื่อให้คุณเห็นอินพุตเทียบกับเอาต์พุต วางภาพหนึ่งภาพในimage_1 ปล่อยimage_2 ว่างไว้ เขียนคำสั่ง แล้วนั่นคือ image-to-image: ภาพของคุณคือบริบทที่โมเดลอ่าน ไม่ใช่ latent เริ่มต้นที่มันลดสัญญาณรบกวนบางส่วน ไม่มีสไลเดอร์ strength หรือ denoise บนเส้นทางนี้ให้ตั้งค่า เพราะเป้าหมายเริ่มจากสัญญาณรบกวน และข้อมูลอ้างอิงของคุณเข้าผ่าน encoder และ VAE แทน
นี่คือเส้นแบ่ง โดยสรุปอย่างละหนึ่งประโยค เพราะสองสิ่งนี้ห่างกันเพียงการค้นหาครั้งเดียว และผู้คนมักเอื้อมไปหยิบอันที่ผิด
• Image-to-image คือเมื่อคุณต้องการภาพที่แตกต่างออกไป: คุณส่งรูปภาพและคำอธิบายให้โมเดล แล้วโมเดลจะวาดภาพใหม่ที่คล้ายกับภาพของคุณ บนแคนวาสที่คุณเลือก
• การแก้ไข คือเมื่อคุณต้องการเปลี่ยนแปลง: คุณส่งภาพและคำสั่งที่ระบุว่าสิ่งใดควรแตกต่างให้โมเดล พร้อมกับมาสก์หรือรอยวาด (ไม่บังคับ) และโมเดลจะคงส่วนที่เหลือของเฟรมไว้
จุดสังเกตอยู่ตรงประโยคที่คุณกำลังจะพิมพ์ “ทำให้มันดูเหมือนแบบนี้แต่เป็นตอนกลางคืน” คือ i2i; “เปลี่ยนแจ็กเก็ตเป็นสีแดง ปล่อยอย่างอื่นไว้เหมือนเดิม” คือการแก้ไข และบนกราฟนี้ เส้นทางการแก้ไขคือที่ซึ่งมาสก์ ช่องอ้างอิงทั้งสิบ และพฤติกรรมการแก้ไขเฉพาะจุดอยู่ คำถามข้างเคียงนั้นเป็นหัวข้อของหน้าอื่น และอันนี้หยุดอยู่ที่เส้นนั้น เพื่อให้คุณบอกได้ว่าคุณอยู่บนเส้นไหน
เช็คพอยต์เทอร์โบ ในหนึ่งย่อหน้า
ขออ้างอิงสักหนึ่งรายการ เพราะรูปสะกดแบบ turbo อยู่ในตระกูลคำค้นนี้ และผู้อ่านจะได้พบเจอเข้าสักวัน Qwen-Image-2.1-Turbo เป็นเช็กพอยต์แบบ 8 สเต็ปแยกต่างหากของสถาปัตยกรรมการสร้างภาพขนาด 7B ตัวเดียวกัน เปิดตัวเมื่อวันที่ 9 ตุลาคม 2026 และโหลดด้วย QwenImage21Pipeline ตัวเดียวกัน การ์ดโมเดลของมันระบุว่าเช็กพอยต์นี้ "มาพร้อมตารางการสุ่มตัวอย่างที่แนะนำไว้แล้ว จึงพร้อมใช้งานได้ทันทีโดยไม่ต้องกำหนดค่าตัวจัดตารางเวลาด้วยตนเอง" ว่าการสร้างภาพใช้ CFG 1 เป็นค่าเริ่มต้น และการตั้งค่า num_inference_steps เพียงอย่างเดียวไม่ได้แทนที่ตารางเวลาที่บันทึกไว้ — อาร์กิวเมนต์ sigmas ที่ระบุอย่างชัดเจนตอนเรียกใช้ต่างหากที่จะแทนที่ได้ ทั้งหมดนั้นไม่ได้เปลี่ยนเชนของโหนดในหน้านี้เลย: ตัวโหลดเดิม เอนโคเดอร์เดิม โหนดแซมเพลอร์เดิม สิ่งที่เปลี่ยนคือตารางเวลามาจากไหน ซึ่งเป็นสิ่งเดียวที่ควรตรวจสอบในกราฟของคุณ ก่อนที่คุณจะเปรียบเทียบการรันแบบ turbo กับการรันแบบโมเดลฐาน แล้วสรุปว่าโมเดลแย่ลง
สิ่งที่ต้องทำต่อไปในกราฟ
โหลดเทมเพลตจากคลังเทมเพลตของ ComfyUI แทนที่จะโหลดจากภาพหน้าจอ จากนั้นอ่านโหนดทั้งสี่ก่อนที่คุณจะเข้าคิวอะไรก็ตาม บน Resolution Selector, ตั้งค่าอัตราส่วนภาพที่คุณต้องการจริง ๆ และถ้าคุณต้องการ 2K แบบเนทีฟของโมเดล ให้ตั้งเป้าหมาย 4.0 MP จากนั้นบน KSampler, ตรวจสอบว่า control เป็น fixed ถ้าคุณตั้งใจจะทำซ้ำการรันหนึ่งครั้ง และปล่อย steps ไว้ที่ 25 กับ cfg ที่ 1 จนกว่าจะมีบางอย่างที่เฉพาะเจาะจงล้มเหลว บน Qwen Image 2.1 Cache, ตัดสินใจเลือก device และ dtype ตอนนี้ แล้วจดบันทึกไว้ เพราะคุณไม่สามารถเปลี่ยนมันได้ในภายหลัง แล้วนำภาพสองภาพมาเปรียบเทียบกันราวกับว่ามีเพียง prompt ที่เปลี่ยนไป และบน Generate Text โหนด ให้ปล่อย refine_prompt ไว้ปิด จนกว่าคุณจะมี baseline ที่พอใจ — จากนั้นเปิดมัน อ่านข้อความที่เขียนใหม่ใน Preview Any และเก็บ seed ที่คุณใช้อยู่ไว้ เพื่อให้การเปรียบเทียบมีความหมาย
