<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AI-KSK</title>
    <description>The latest articles on DEV Community by AI-KSK (@ai-ksk).</description>
    <link>https://dev.to/ai-ksk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4145687%2Fb1efe52a-9c7c-4abc-9138-8d425fcf96e6.png</url>
      <title>DEV Community: AI-KSK</title>
      <link>https://dev.to/ai-ksk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ai-ksk"/>
    <language>en</language>
    <item>
      <title>Qwen 2511 Masked Repaint: Crop the Masked Block, Edit with a Reference, Paste It Back Seamlessly</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:29:37 +0000</pubDate>
      <link>https://dev.to/ai-ksk/qwen-2511-masked-repaint-crop-the-masked-block-edit-with-a-reference-paste-it-back-seamlessly-51ac</link>
      <guid>https://dev.to/ai-ksk/qwen-2511-masked-repaint-crop-the-masked-block-edit-with-a-reference-paste-it-back-seamlessly-51ac</guid>
      <description>&lt;p&gt;Editing a small region of a large image with a diffusion model normally forces you to downscale the whole picture and lose the detail you cared about. This graph takes the opposite route: paint a mask, crop that region out with padding information, repaint only the crop - with a reference image if you want object transfer - then paste the result back at full resolution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (2 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need to change one object in a high-resolution image without downscaling it.&lt;/li&gt;
&lt;li&gt;You want to put an object from a reference image into a masked region ("everything transfer").&lt;/li&gt;
&lt;li&gt;You want a reusable paste-back step rather than manual compositing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The three-stage construction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why the native nodes failed
&lt;/h3&gt;

&lt;p&gt;When 2511 launched the author tried building masked repaint from ComfyUI's native nodes; he says the results failed completely.&lt;/p&gt;

&lt;p&gt;This graph relies on &lt;strong&gt;Xiaozhi's node plugin&lt;/strong&gt; (his name in the episode). The author swapped the models in the plugin's example workflow and confirmed it still runs stably - that is the version shipped here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: mask, then crop with padding info
&lt;/h3&gt;

&lt;p&gt;Load an image, right-click into the mask editor, paint the region, then prompt. The graph crops a &lt;strong&gt;square&lt;/strong&gt; around your mask and sends only that block onward.&lt;/p&gt;

&lt;p&gt;The crop node carries padding info so stage 3 can put the block back exactly where it came from - that is the difference between a seamless paste-back and a visible patch.&lt;/p&gt;

&lt;p&gt;Crop policy differs by role: the &lt;strong&gt;main image uses pad/fill&lt;/strong&gt; because you do not want to lose content, while the &lt;strong&gt;reference image uses crop&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2: repaint, text-only or with a reference
&lt;/h3&gt;

&lt;p&gt;Text-only guidance works: the author's example turns an astronaut into a woman.&lt;/p&gt;

&lt;p&gt;For object transfer, add a second image as the reference input. This is the "everything transfer" mode.&lt;/p&gt;

&lt;p&gt;The image feeding is done through a preparer node rather than wiring straight into the text encode, and it accepts a mask input natively.&lt;/p&gt;

&lt;h3&gt;
  
  
  The numbers that matter
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Longest-edge limit 2048&lt;/strong&gt;: this is an upper bound on the longest edge to avoid running out of VRAM or producing bad results, not a resize. The author finds 2048 rendering fine on 2511 - except a 2048x2048 square.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;384&lt;/strong&gt; is the visual encoder's encoding size. It was the same on 2509, which the author reads as 2511 having no major architectural change.&lt;/p&gt;

&lt;p&gt;Model: 2511 plus the &lt;strong&gt;4-step&lt;/strong&gt; accelerator - the configuration he has used since day one.&lt;/p&gt;

&lt;p&gt;Want a bigger repaint block? Raise the initial image size at the start; the crop that follows grows with it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the repaint-and-paste-back graph and load the target image.&lt;/li&gt;
&lt;li&gt;Right-click into the mask editor and paint the region you want to change.&lt;/li&gt;
&lt;li&gt;Write the prompt; add a reference image if you are transferring an object.&lt;/li&gt;
&lt;li&gt;Keep the longest-edge limit at &lt;strong&gt;2048&lt;/strong&gt; as a VRAM guard rather than a resize.&lt;/li&gt;
&lt;li&gt;Run: the graph crops a padded square, repaints it with 2511 + the &lt;strong&gt;4-step&lt;/strong&gt; accelerator, and pastes it back.&lt;/li&gt;
&lt;li&gt;If the repainted block is too small, raise the initial image size rather than editing the crop settings.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;重绘贴回 2511局部重绘 万物迁移&lt;/strong&gt; - 54 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_image_edit_2511_fp8mixed.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_2.5_vl_7b_fp8_scaled.safetensors&lt;/code&gt; / qwen_image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · sgm_uniform · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Qwen-Edit-2511-Lightning-4steps-V1.0-bf16.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;重绘贴回 2511局部重绘&lt;/strong&gt; - 55 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_image_edit_2511_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_2.5_vl_7b_fp8_scaled.safetensors&lt;/code&gt; / qwen_image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · sgm_uniform · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Qwen-Edit-2511-Lightning-4steps-V1.0-bf16.safetensors&lt;/code&gt; @ 1; &lt;code&gt;Qwen-edit-2511-multiple-angles.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Depends on a third-party node plugin&lt;/strong&gt;; without it the native ComfyUI route does not work (per the author's own attempt).&lt;/li&gt;
&lt;li&gt;A 2048x2048 square is called out as the case that does not hold up.&lt;/li&gt;
&lt;li&gt;Paste-back seams depend on the padded crop; moving or resizing the block afterwards breaks the alignment.&lt;/li&gt;
&lt;li&gt;The "strongest open-source edit model" framing is the author's opinion, not a measured comparison.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - 重绘贴回 2511局部重绘 万物迁移: &lt;a href="https://www.runninghub.ai/post/2017885601479004162/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2017885601479004162/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - 重绘贴回 2511局部重绘: &lt;a href="https://www.runninghub.ai/post/2018213964676603905/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2018213964676603905/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=nlkrfEaScM0" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=nlkrfEaScM0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1SK68BwE33" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1SK68BwE33&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>InfiniteTalk Goes Native in ComfyUI: Single and Dual Lip-Sync Loops, Plus the LTX-2 Distilled Route</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:29:33 +0000</pubDate>
      <link>https://dev.to/ai-ksk/infinitetalk-goes-native-in-comfyui-single-and-dual-lip-sync-loops-plus-the-ltx-2-distilled-route-2hcn</link>
      <guid>https://dev.to/ai-ksk/infinitetalk-goes-native-in-comfyui-single-and-dual-lip-sync-loops-plus-the-ltx-2-distilled-route-2hcn</guid>
      <description>&lt;p&gt;InfiniteTalk is a Wan 2.1-based lip-sync method, and ComfyUI now supports it natively - the author says faster and better than the earlier KJ implementation, with only minor degradation for two-person shots. The interesting part is the loop: feed the rendered clip back as the next segment's first frame, compute the iteration count from the audio length, and you get near-infinite duration. The episode also updates the LTX-2 distilled talking-head graph.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (4 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need a talking clip longer than the ~3-second first window.&lt;/li&gt;
&lt;li&gt;You have one portrait and one audio track and want a repeatable loop.&lt;/li&gt;
&lt;li&gt;You want two characters alternating lines from a single image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the infinite loop is built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  First segment, then extend
&lt;/h3&gt;

&lt;p&gt;The first generation takes &lt;strong&gt;81 frames&lt;/strong&gt;, about &lt;strong&gt;3.24 seconds&lt;/strong&gt; at &lt;strong&gt;25 fps&lt;/strong&gt; - and the author says do not change that frame rate.&lt;/p&gt;

&lt;p&gt;The loop is deliberately simple: the previous clip goes into &lt;code&gt;Value 1&lt;/code&gt;, &lt;code&gt;Value 1&lt;/code&gt; feeds Talk-to-Video, the output goes to Batch Image, and the rendered clip is wired back into &lt;code&gt;Value 1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Each extension adds &lt;strong&gt;72 frames&lt;/strong&gt; (81 minus 9), i.e. about &lt;strong&gt;2.8 seconds&lt;/strong&gt; per loop.&lt;/p&gt;

&lt;h3&gt;
  
  
  The loop count is arithmetic, not guesswork
&lt;/h3&gt;

&lt;p&gt;Detect the audio length in milliseconds, subtract &lt;strong&gt;3240&lt;/strong&gt; ms (the first 81-frame segment), divide by &lt;strong&gt;2880&lt;/strong&gt; ms (each 72-frame extension), and round up. That is the iteration count.&lt;/p&gt;

&lt;p&gt;With that, the whole thing is close to automatic: you supply image, audio, start second and length, width and height.&lt;/p&gt;

&lt;h3&gt;
  
  
  480P, not 720P - and why
&lt;/h3&gt;

&lt;p&gt;The model is the &lt;strong&gt;480P&lt;/strong&gt; image-to-video build. The author is explicit that the 720P model is unnecessary and gives worse results - on his non-human test character the mouth did not move at all.&lt;/p&gt;

&lt;p&gt;SkyReels V3, a newer audio-to-video model, performs roughly on par with the 480P model, so either is fine here.&lt;/p&gt;

&lt;p&gt;The graph follows the official example; the author does a &lt;strong&gt;vocal separation&lt;/strong&gt; pass before feeding audio, to keep other noise from disturbing the lip-sync.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two people: two audios, one image, two masks
&lt;/h3&gt;

&lt;p&gt;The dual graph takes two audio tracks - character 1's lines, then character 2's - and two images that are actually the &lt;strong&gt;same image&lt;/strong&gt;, differentiated by painting each speaker's region in the mask editor.&lt;/p&gt;

&lt;p&gt;The author's honest read: two-person output is still mostly "one talks, then the other". True multi-turn dialogue is not there yet; he expects it eventually.&lt;/p&gt;

&lt;p&gt;480P looks soft, so he runs &lt;strong&gt;FlashVSR&lt;/strong&gt; upscale over the result - which he says cleans it up a lot.&lt;/p&gt;

&lt;h3&gt;
  
  
  The LTX-2 distilled talking head
&lt;/h3&gt;

&lt;p&gt;The LTX-2 lip-sync graph is updated from an open-source Hugging Face project that released its workflow.&lt;/p&gt;

&lt;p&gt;The first render uses the &lt;strong&gt;distilled&lt;/strong&gt; model - you can see 8 steps in the sigma values. The &lt;strong&gt;Camera Control LoRA&lt;/strong&gt; is critical for keeping the shot stable; bypassing it visibly hurts results, so leave it on.&lt;/p&gt;

&lt;p&gt;You load an image and set width, height and frame count; frame rate and length are computed. His example renders &lt;strong&gt;289 frames&lt;/strong&gt;, and he says ComfyUI's LTX-2 optimisation now makes 500-600 frames per run feasible - effectively near-infinite duration in one pass.&lt;/p&gt;

&lt;p&gt;LTX-2 prompts are sensitive, especially for non-human characters; that is also where LTX-2 has a natural edge over portrait-only pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the single-person InfiniteTalk graph; load one image and one audio track.&lt;/li&gt;
&lt;li&gt;Set the audio start second and the length to process, then width and height.&lt;/li&gt;
&lt;li&gt;Run: the first segment is &lt;strong&gt;81 frames&lt;/strong&gt; at &lt;strong&gt;25 fps&lt;/strong&gt; (~3.24 s).&lt;/li&gt;
&lt;li&gt;Extend by looping - previous clip into &lt;code&gt;Value 1&lt;/code&gt;, back through Talk-to-Video and Batch Image.&lt;/li&gt;
&lt;li&gt;Compute the loop count as &lt;code&gt;ceil((audio_ms - 3240) / 2880)&lt;/code&gt; so the length matches the audio.&lt;/li&gt;
&lt;li&gt;For two people, use the dual graph: two audios, the same image twice, two painted masks. Then run FlashVSR to sharpen.&lt;/li&gt;
&lt;li&gt;For the LTX-2 route, load an image, set width/height/frames, and leave the Camera Control LoRA on.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;FlashVSR V1.1放大&lt;/strong&gt; - 4 nodes
&lt;/h4&gt;

&lt;p&gt;No UNET/CLIP/VAE sampler chain in this graph - it is a processing or composite graph. Node inventory: &lt;code&gt;FlashVSRNode&lt;/code&gt;, &lt;code&gt;VHS_LoadVideo&lt;/code&gt;, &lt;code&gt;VHS_VideoCombine&lt;/code&gt;, &lt;code&gt;LayerUtility: ImageScaleByAspectRatio V2&lt;/code&gt; (4 nodes).&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Ltx 2蒸馏对口型&lt;/strong&gt; - 106 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LTXVideo\v2\ltx-2-19b-distilled-fp8_transformer_only.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual CLIP&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gemma_3_12B_it_fp8_scaled.safetensors&lt;/code&gt; + &lt;code&gt;ltx-2-19b-embeddings_connector_distill_bf16.safetensors&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LTX2_video_vae_bf16.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;768x512 · 241 frames · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LTX\v2\ltx-2-19b-distilled-lora_resized_dynamic_fro09_avg_rank_175_bf16.safetensors&lt;/code&gt; @ 0.6; &lt;code&gt;ltx-2-19b-distilled-lora_resized_dynamic_fro09_avg_rank_175_bf16.safetensors&lt;/code&gt; @ 0.6; &lt;code&gt;ltx-2-19b-lora-camera-control-static.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;单人InfiniteTalk无限时长原生循环&lt;/strong&gt; - 68 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SkyReelsV3-A2V_fp8_scaled_mixed.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;umt5_xxl_fp8_e4m3fn_scaled.safetensors&lt;/code&gt; / wan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Wan2.1_VAE.pth&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 4 · scheduler normal · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 4 · scheduler normal · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors&lt;/code&gt; @ 1; &lt;code&gt;Wan_2_1_T2V_14B_720p_rCM_lora_average_rank_94_bf16.safetensors&lt;/code&gt; @ 0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;双人InfiniteTalk无限时长原生循环&lt;/strong&gt; - 65 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;wan2.1_i2v_720p_scaled_fp8_e4m3_lightx2v_comfyui.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;umt5_xxl_fp8_e4m3fn_scaled.safetensors&lt;/code&gt; / wan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Wan2.1_VAE.pth&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 4 · scheduler normal · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 4 · scheduler normal · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Wan_2_1_T2V_14B_720p_rCM_lora_average_rank_94_bf16.safetensors&lt;/code&gt; @ 0.3; &lt;code&gt;lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The 25 fps is fixed&lt;/strong&gt; by the 81-frame / 3.24 s arithmetic; changing it breaks the loop count.&lt;/li&gt;
&lt;li&gt;Two-person output is still sequential, not true multi-turn dialogue - the author says so.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;480P is soft&lt;/strong&gt;; without an upscale pass the result looks unclear.&lt;/li&gt;
&lt;li&gt;The loop extends duration, not expressiveness: drift accumulates over many iterations.&lt;/li&gt;
&lt;li&gt;Frame counts of 500-600 per run are the author's report under ComfyUI's current optimisation, not a hard limit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - FlashVSR V1.1放大: &lt;a href="https://www.runninghub.ai/post/2018310765513547778/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2018310765513547778/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Ltx 2蒸馏对口型: &lt;a href="https://www.runninghub.ai/post/2018224320958439425/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2018224320958439425/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - 单人InfiniteTalk无限时长原生循环: &lt;a href="https://www.runninghub.ai/post/2018256491320451073/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2018256491320451073/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - 双人InfiniteTalk无限时长原生循环: &lt;a href="https://www.runninghub.ai/post/2018267797146570753/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2018267797146570753/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=OjsHOyPtF0s" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=OjsHOyPtF0s&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1mwFLzTELL" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1mwFLzTELL&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>LTX-2 Adapter LoRA: Image-to-Video Consistency at 60fps, Distilled vs Full-Quality Graphs</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:29:03 +0000</pubDate>
      <link>https://dev.to/ai-ksk/ltx-2-adapter-lora-image-to-video-consistency-at-60fps-distilled-vs-full-quality-graphs-3g0i</link>
      <guid>https://dev.to/ai-ksk/ltx-2-adapter-lora-image-to-video-consistency-at-60fps-distilled-vs-full-quality-graphs-3g0i</guid>
      <description>&lt;p&gt;LTX-2 image-to-video had a known failure: when the described motion was not strong enough, the model produced a nearly static clip. This episode tests the Adapter LoRA update, which the author says fixes that and improves consistency, motion coherence and generalisation - and ships two graphs at 60 fps 1080p, one full-quality and one distilled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (2 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your image-to-video clips come out too static when the prompt is modest.&lt;/li&gt;
&lt;li&gt;You need 60 fps at 1080p from a single reference image.&lt;/li&gt;
&lt;li&gt;You want a quality-first and a cost-first graph for the same model family.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two graphs, one adapter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The adapter fixes the static-clip problem
&lt;/h3&gt;

&lt;p&gt;The Adapter LoRA is trained on top of earlier LTX-2 video work. The concrete failure it addresses: when the text is not explicit enough about motion, the base model would simply not move.&lt;/p&gt;

&lt;p&gt;The author reports improved character consistency (in his 10-second two-person example), better motion coherence, better style retention and stronger generalisation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-distilled graph: 25 steps, then 2x upscale
&lt;/h3&gt;

&lt;p&gt;The full-quality graph runs &lt;strong&gt;25 steps&lt;/strong&gt; in the first pass without an accelerator, then a second sampling pass that does a &lt;strong&gt;2x upscale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The second pass can use an accelerated model - the author always has. Because the accelerated path runs at &lt;strong&gt;CFG 1&lt;/strong&gt;, the negative prompt is inert there, which is why he wires the LTX-2 negative-prompt enhancement node to make negatives count again.&lt;/p&gt;

&lt;p&gt;The prompt side has an automation: paste the official system prompt, then write a short description and a language model polishes it into the final prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Distilled graph: 8 steps, merged adapter, uncensored
&lt;/h3&gt;

&lt;p&gt;The distilled graph swaps in the &lt;strong&gt;V6.2&lt;/strong&gt; merged model, which is uncensored-capable and has the Adapter LoRA &lt;strong&gt;merged in&lt;/strong&gt; - so the LoRA slot stays empty on purpose.&lt;/p&gt;

&lt;p&gt;It is designed to produce good results in &lt;strong&gt;8 steps&lt;/strong&gt; on the first pass. The author's sample deliberately uses large motion to stress it, and says the amplitude is a prompt choice, not a fixed property.&lt;/p&gt;

&lt;p&gt;Audio generation is also improved in this build, per the author.&lt;/p&gt;

&lt;h3&gt;
  
  
  Negative keywords worth stealing
&lt;/h3&gt;

&lt;p&gt;The distilled path uses the LTX-2 negative-prompt node; the three values control how strongly the negative applies.&lt;/p&gt;

&lt;p&gt;Concrete use: put subtitle-related words in the negative keywords so the model does not burn Chinese subtitles into the frame - a small trick that solves a recurring annoyance.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the graph you want: non-distilled for quality, V6.2 distilled for throughput.&lt;/li&gt;
&lt;li&gt;Set width, height and &lt;strong&gt;length in seconds&lt;/strong&gt;, then the frame rate - the author runs &lt;strong&gt;60 fps&lt;/strong&gt; without trouble.&lt;/li&gt;
&lt;li&gt;Write positive and negative prompts; for the non-distilled graph the negative prompt is active.&lt;/li&gt;
&lt;li&gt;Non-distilled: run the &lt;strong&gt;25-step&lt;/strong&gt; first pass, then the &lt;strong&gt;2x upscale&lt;/strong&gt; second pass.&lt;/li&gt;
&lt;li&gt;Distilled: run &lt;strong&gt;8 steps&lt;/strong&gt;; the adapter is merged, so do not add the LoRA again. Use the negative-prompt node and put subtitle words in the negative keywords if the model keeps burning text into frames.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;ltx2_i2v去蒸馏图到视频一致性60帧1080p&lt;/strong&gt; - 54 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ltx-2-19b-dev-fp8_transformer_only.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual CLIP&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gemma_3_12B_it_fp8_e4m3fn.safetensors&lt;/code&gt; + &lt;code&gt;ltx-2-19b-embeddings_connector_bf16.safetensors&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LTX2_video_vae_bf16.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;768x512 · 97 frames · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ltx-2-19b-distilled-lora_resized_dynamic_fro09_avg_rank_175_bf16.safetensors&lt;/code&gt; @ 0.6; &lt;code&gt;LTX-2-Image2Vid-Adapter.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;ltx2_i2v蒸馏图到视频一致性60帧1080p&lt;/strong&gt; - 54 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;ltx2-phr00tmerge-nsfw-v62.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dual CLIP&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;gemma_3_12B_it_fp8_e4m3fn.safetensors&lt;/code&gt; + &lt;code&gt;ltx-2-19b-embeddings_connector_bf16.safetensors&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;LTX2_video_vae_bf16.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 8 · scheduler simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;768x512 · 97 frames · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;LTX-2-Image2Vid-Adapter.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Distilled + CFG 1 means the negative prompt is off&lt;/strong&gt; unless the LTX-2 negative node is wired; that is a graph detail people miss.&lt;/li&gt;
&lt;li&gt;The distilled build is uncensored-capable, which shifts responsibility to the user.&lt;/li&gt;
&lt;li&gt;60 fps at 1080p is what the author ran, not a guaranteed ceiling on smaller cards.&lt;/li&gt;
&lt;li&gt;Consistency improvement is described qualitatively; no numeric metric is given.&lt;/li&gt;
&lt;li&gt;The 10-second two-person example is one sample, not a benchmark set.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - ltx2_i2v去蒸馏图到视频一致性60帧1080p: &lt;a href="https://www.runninghub.ai/post/2019396485409939457/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2019396485409939457/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - ltx2_i2v蒸馏图到视频一致性60帧1080p: &lt;a href="https://www.runninghub.ai/post/2019439198570287106/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2019439198570287106/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=VYBoOk7pCJA" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=VYBoOk7pCJA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1wiFzzwEoR" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1wiFzzwEoR&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>LTX-2 Rapid Merge: Uncensored Merged Model, Updated Adapter LoRA, Four Workflows in One Image</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:28:59 +0000</pubDate>
      <link>https://dev.to/ai-ksk/ltx-2-rapid-merge-uncensored-merged-model-updated-adapter-lora-four-workflows-in-one-image-29jd</link>
      <guid>https://dev.to/ai-ksk/ltx-2-rapid-merge-uncensored-merged-model-updated-adapter-lora-four-workflows-in-one-image-29jd</guid>
      <description>&lt;p&gt;This is a merged LTX-2 checkpoint from the same author who did the Wan-era merges, now with the Adapter LoRA update folded in. The claim is better video quality as well as uncensored output, and the episode packages four graphs - text-to-video, image-to-video, first/last frame, and lip-sync - into one image. The notes are practical: what each widget does, which ones are inert in which mode, and how long a 1080p / 121-frame run takes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; this episode ships &lt;strong&gt;no workflow JSON&lt;/strong&gt;. Every claim below comes from the episode subtitles/description and the published page; no node-level parameter is invented.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You want an LTX-2 merge that runs from one deployable image instead of hand-assembling nodes.&lt;/li&gt;
&lt;li&gt;You need both an SFW and an uncensored checkpoint available without switching images.&lt;/li&gt;
&lt;li&gt;You are deploying LTX-2 on a consumer GPU and want the author's known-good settings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is in the image
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Four graphs, fully localised
&lt;/h3&gt;

&lt;p&gt;The image ships &lt;strong&gt;four workflows&lt;/strong&gt;: text-to-video, image-to-video, first/last-frame, and image-to-video lip-sync. The UI strings are translated to Chinese.&lt;/p&gt;

&lt;p&gt;Two checkpoints are bundled - an &lt;strong&gt;SFW&lt;/strong&gt; and an &lt;strong&gt;NSFW&lt;/strong&gt; build - so you switch model rather than switching image.&lt;/p&gt;

&lt;p&gt;The author recommends renting a &lt;strong&gt;consumer-grade GPU&lt;/strong&gt;: ComfyUI's LTX-2 optimisation is good enough that a datacentre card is not required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Settings that matter in text-to-video
&lt;/h3&gt;

&lt;p&gt;Width, height, source frame rate, and &lt;strong&gt;output frame rate set to 48&lt;/strong&gt; - because the graph interpolates 2x afterwards. Then the frame count and the output directory (default is fine).&lt;/p&gt;

&lt;p&gt;First-frame and last-frame strength are exposed; the last frame is what the first/last-frame mode uses. In pure text-to-video &lt;strong&gt;both strengths are inert&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Output frame range &lt;code&gt;0:-1&lt;/code&gt; means no crop. The range exists so you can trim a strange head or tail frame when a run produces one.&lt;/p&gt;

&lt;p&gt;Cost reference from the author: a &lt;strong&gt;1080p, 121-frame&lt;/strong&gt; generation takes a bit over &lt;strong&gt;70 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image-to-video and the compression-artifact dial
&lt;/h3&gt;

&lt;p&gt;Image-to-video adds an image loader, and now the &lt;strong&gt;first-frame strength&lt;/strong&gt; actually applies.&lt;/p&gt;

&lt;p&gt;A compression-artifact setting becomes active: raise it for a blurry, noisy source, lower it for a clean one. ComfyUI's default is &lt;strong&gt;33&lt;/strong&gt;; this flow ships &lt;strong&gt;28&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;First/last frame is the same graph with a second image slot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lip-sync
&lt;/h3&gt;

&lt;p&gt;The lip-sync graph is the earlier RunningHub distilled lip-sync flow adapted to this merged model.&lt;/p&gt;

&lt;p&gt;You set width, height and frame rate; the &lt;strong&gt;frame count is computed from the audio&lt;/strong&gt;. The author's example audio is 18 seconds - extract the vocals, trim to the section you want (his example uses 5 seconds), and the graph derives a sensible length from it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Register on the compute platform (the episode says registration grants some free hours), find the LTX2-Rapid-Merges image, and deploy an instance on a consumer GPU.&lt;/li&gt;
&lt;li&gt;Copy the startup command from the image page, paste it into JupyterLab, and wait for ComfyUI.&lt;/li&gt;
&lt;li&gt;Open the workflow panel and choose text-to-video, image-to-video, first/last frame or lip-sync.&lt;/li&gt;
&lt;li&gt;Set width, height and source fps; set output fps to &lt;strong&gt;48&lt;/strong&gt; because the graph interpolates 2x.&lt;/li&gt;
&lt;li&gt;Set the frame count and keep the output range at &lt;code&gt;0:-1&lt;/code&gt; unless a bad head or tail frame needs trimming.&lt;/li&gt;
&lt;li&gt;For image-to-video, load the image and set the compression-artifact value - &lt;strong&gt;28&lt;/strong&gt; in this flow, &lt;strong&gt;33&lt;/strong&gt; is the ComfyUI default; raise it for noisy sources.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No workflow JSON in this episode.&lt;/strong&gt; No node-level parameters are claimed; the description is limited to what the video and the published page state.&lt;/p&gt;

&lt;p&gt;No JSON ships with this episode, so no sampler values are quoted. The numbers above (output fps 48, frame range 0:-1, compression artifact 28 vs 33, 121 frames / 1080p / ~70 s) are the values the author states in the video.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No workflow JSON and no mirror URL were recorded for this episode&lt;/strong&gt; - the deployment pointer lives only in the video description, so this write-up documents behaviour, not a redistributable file.&lt;/li&gt;
&lt;li&gt;The 70-second figure is the author's observation for 1080p / 121 frames on his rented card, not a benchmark.&lt;/li&gt;
&lt;li&gt;First/last-frame strengths are inert in text-to-video; setting them there does nothing.&lt;/li&gt;
&lt;li&gt;The merge's quality claims are the author's; no side-by-side against the upstream LTX-2 build is shown.&lt;/li&gt;
&lt;li&gt;Uncensored output shifts responsibility to the user - local rules and platform terms still apply.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=bjdc30M_twg" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=bjdc30M_twg&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: 无&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Qwen-Image-Edit 2511 + VNCCS Pose Studio: Pose and Lighting Control Without Opening a 3D App</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:28:30 +0000</pubDate>
      <link>https://dev.to/ai-ksk/qwen-image-edit-2511-vnccs-pose-studio-pose-and-lighting-control-without-opening-a-3d-app-1l91</link>
      <guid>https://dev.to/ai-ksk/qwen-image-edit-2511-vnccs-pose-studio-pose-and-lighting-control-without-opening-a-3d-app-1l91</guid>
      <description>&lt;p&gt;Keeping one character consistent while changing the pose usually means a round trip through Blender or Poser. VNCCS Pose Studio puts the mannequin, the pose and the lighting inside ComfyUI, and the 2511 editing model takes three images from it - the pose render, your source image, and the detected skeleton. The author reports the pose control is very precise, and shows that the node also pushes a lighting prompt unless you switch that off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (1 file); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need one character in a new pose without losing the face or costume.&lt;/li&gt;
&lt;li&gt;You want to light the character without leaving ComfyUI.&lt;/li&gt;
&lt;li&gt;You batch several poses from the same source image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the three-image encoding works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Three images into one text-encode node
&lt;/h3&gt;

&lt;p&gt;The graph feeds &lt;strong&gt;three images&lt;/strong&gt; into the Qwen-Image-Edit-Plus text-encode node: the pose render from Pose Studio, the source image you loaded, and the skeleton image the node detects from your target pose.&lt;/p&gt;

&lt;p&gt;The node is not only a pose editor - it combines mannequin building, posing and lighting - which is why no external software is needed.&lt;/p&gt;

&lt;p&gt;The author hand-built this graph because the RunningHub side had not yet picked up the project's example workflow; the project is open source and the example graphs ship with it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The controls you actually touch
&lt;/h3&gt;

&lt;p&gt;Body: gender, age, weight, muscle, height, head size - the author's description is simply "you are building a person here".&lt;/p&gt;

&lt;p&gt;Rotation: chest size plus XYZ sliders that rotate the whole character rather than one bone.&lt;/p&gt;

&lt;p&gt;Camera: the output width and height, the zoom and the orientation radar; the author recommends keeping the same aspect ratio as the source image, and &lt;code&gt;reset&lt;/code&gt; re-centres the camera on the character.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lighting, and the switch that matters
&lt;/h3&gt;

&lt;p&gt;The node emits a lighting prompt, so results are affected by light even when you only wanted a pose change. There is a &lt;strong&gt;keep-light&lt;/strong&gt; option: click it and the original lighting is preserved.&lt;/p&gt;

&lt;p&gt;Background: you can load an image purely to align a pose to it. Lighting can be added, kept or removed individually.&lt;/p&gt;

&lt;h3&gt;
  
  
  Output modes
&lt;/h3&gt;

&lt;p&gt;With several poses defined (pose 1, pose 2, ...) you can either output an image list or have the node &lt;strong&gt;concatenate them into one sheet&lt;/strong&gt;, with a per-row count you set.&lt;/p&gt;

&lt;p&gt;There is undo, redo, reset preview, copy/paste and import/export for the pose state - it is a small editor, not a one-shot node.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Load one image - background or no background both work.&lt;/li&gt;
&lt;li&gt;Pose the mannequin in the node; press &lt;code&gt;reset&lt;/code&gt; if the camera drifts off the character.&lt;/li&gt;
&lt;li&gt;Keep the output aspect ratio equal to the source image's ratio; the author scales by pixels.&lt;/li&gt;
&lt;li&gt;Feed the three images into the Qwen-Image-Edit-Plus text encode (pose render, source, skeleton).&lt;/li&gt;
&lt;li&gt;Choose whether to keep the original light, or let the node's lighting prompt apply.&lt;/li&gt;
&lt;li&gt;Run; if you defined several poses, pick list output or a concatenated sheet.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;一致性姿态与光影控制VNCCS Pose Studio+2511&lt;/strong&gt; - 25 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_image_edit_2511_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_2.5_vl_7b_fp8_scaled.safetensors&lt;/code&gt; / qwen_image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;VNCCS_PoseStudioQIE2511_V2.safetensors&lt;/code&gt; @ 1; &lt;code&gt;Qwen-Image-Edit-2511-Lightning-4steps-V1.0-bf16.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One character.&lt;/strong&gt; The graph is built for single-character consistency, not crowds.&lt;/li&gt;
&lt;li&gt;The lighting prompt is on by default; pose-only edits need the keep-light switch.&lt;/li&gt;
&lt;li&gt;Aspect ratio has to follow the source image, so exotic output shapes are not the target.&lt;/li&gt;
&lt;li&gt;The graph was hand-built against a project version RunningHub had not yet mirrored; upstream example graphs may differ.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - 一致性姿态与光影控制VNCCS Pose Studio+2511: &lt;a href="https://www.runninghub.ai/post/2020409094468800513/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2020409094468800513/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=iTMudoGSbBA" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=iTMudoGSbBA&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1iTcwzJEtD" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1iTcwzJEtD&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Seedance 2.0 Post-Production in ComfyUI: Watermark Removal, GIMM Frame Interpolation, FlashVSR Upscale</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:28:26 +0000</pubDate>
      <link>https://dev.to/ai-ksk/seedance-20-post-production-in-comfyui-watermark-removal-gimm-frame-interpolation-flashvsr-36cm</link>
      <guid>https://dev.to/ai-ksk/seedance-20-post-production-in-comfyui-watermark-removal-gimm-frame-interpolation-flashvsr-36cm</guid>
      <description>&lt;p&gt;Seedance 2.0 clips come out of Xiaoyunque with a corner watermark and a modest frame rate. This episode chains two ComfyUI graphs to fix both: a MiniMax remover built on the early Wan 2.1 work to take the watermark out by masking it, then a GIMM interpolation pass and a FlashVSR upscale. The author reports the watermark is "almost gone" and the upscaled result reaches roughly 2K after a 960-pixel constraint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (2 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You generate clips yourself and want them clean and high-frame-rate before editing.&lt;/li&gt;
&lt;li&gt;Your delivery target wants 32 or 60 fps from a 16 fps source.&lt;/li&gt;
&lt;li&gt;You need a repeatable post chain instead of a one-off manual fix.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two graphs, two jobs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Watermark removal
&lt;/h3&gt;

&lt;p&gt;Load the video. If your clip did not come from Xiaoyunque and the watermark is not in the bottom-right, run the graph once while keeping the first frame, then paint the mask on that frozen frame - the author also paints the top-left when the mark is there.&lt;/p&gt;

&lt;p&gt;Constrain the size, then write a prompt describing what is under the mask. The graph masks the watermark area in grey and lets the model inpaint it.&lt;/p&gt;

&lt;p&gt;The model is MiniMax's early video watermark remover built on &lt;strong&gt;Wan 2.1&lt;/strong&gt;. It is self-accelerating; the author adds a LightX2V accelerator as insurance for better results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interpolation, then upscale
&lt;/h3&gt;

&lt;p&gt;The second graph is a straight line: load the source, set the interpolation multiplier, set the upscale multiplier, run.&lt;/p&gt;

&lt;p&gt;The author's settings: &lt;strong&gt;2x interpolation&lt;/strong&gt; with the source locked at &lt;strong&gt;16 fps&lt;/strong&gt; (so 32 fps out) and &lt;strong&gt;3x upscale&lt;/strong&gt; after a &lt;strong&gt;960-pixel&lt;/strong&gt; size constraint, which lands close to 2K.&lt;/p&gt;

&lt;p&gt;Frame interpolation first, upscale second - the author does not reverse that order.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where the clips come from
&lt;/h3&gt;

&lt;p&gt;The source is Xiaoyunque's web app (a Jianying/CapCut platform), using Seedance 2.0 in "immersive short film" mode. You upload references with the plus button and can address them as &lt;code&gt;@图1&lt;/code&gt;, &lt;code&gt;@图2&lt;/code&gt; in the prompt, which the author notes also sidesteps some input restrictions.&lt;/p&gt;

&lt;p&gt;Daily login gives one free clip of up to &lt;strong&gt;15 seconds&lt;/strong&gt;; each invited friend brings &lt;strong&gt;188 credits&lt;/strong&gt;, capped at three. Face reference is flagged as not yet supported in this mode.&lt;/p&gt;

&lt;h3&gt;
  
  
  The 'ComfyUI is dying' argument
&lt;/h3&gt;

&lt;p&gt;The episode closes on the community worry that hosted models make local workflows pointless. The author's answer is narrow and reasonable: open tooling runs offline, has no queue and no content ceiling, and stays useful as the component you use when you need a specific adjustment rather than a whole clip.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the watermark-removal graph and load the clip.&lt;/li&gt;
&lt;li&gt;If the watermark is not bottom-right, keep the first frame and paint the mask over the mark on that frame.&lt;/li&gt;
&lt;li&gt;Constrain the output size and prompt what should appear where the watermark was.&lt;/li&gt;
&lt;li&gt;Run; the MiniMax remover inpaints the masked region.&lt;/li&gt;
&lt;li&gt;Open the interpolation + upscale graph, load the cleaned clip, set &lt;strong&gt;2x&lt;/strong&gt; interpolation and &lt;strong&gt;3x&lt;/strong&gt; upscale, with the size constraint at 960 px.&lt;/li&gt;
&lt;li&gt;Render and check for interpolation artifacts on fast motion.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;minimax remover 视频去水印&lt;/strong&gt; - 26 nodes
&lt;/h4&gt;

&lt;p&gt;No UNET/CLIP/VAE sampler chain in this graph - it is a processing or composite graph. Node inventory: &lt;code&gt;MaskToImage&lt;/code&gt;, &lt;code&gt;WanVideoEncode&lt;/code&gt;, &lt;code&gt;PreviewImage&lt;/code&gt;, &lt;code&gt;VHS_VideoCombine&lt;/code&gt;, &lt;code&gt;WanVideoMiniMaxRemoverEmbeds&lt;/code&gt;, &lt;code&gt;LoadWanVideoT5TextEncoder&lt;/code&gt;, &lt;code&gt;GrowMaskWithBlur&lt;/code&gt;, &lt;code&gt;WanVideoVAELoader&lt;/code&gt; (26 nodes).&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;视频补帧+放大&lt;/strong&gt; - 7 nodes
&lt;/h4&gt;

&lt;p&gt;No UNET/CLIP/VAE sampler chain in this graph - it is a processing or composite graph. Node inventory: &lt;code&gt;GIMMVFI_interpolate&lt;/code&gt;, &lt;code&gt;LayerUtility: ImageScaleByAspectRatio V2&lt;/code&gt;, &lt;code&gt;DownloadAndLoadGIMMVFIModel&lt;/code&gt;, &lt;code&gt;FlashVSRNode&lt;/code&gt;, &lt;code&gt;VHS_LoadVideo&lt;/code&gt;, &lt;code&gt;PreviewImage&lt;/code&gt;, &lt;code&gt;VHS_VideoCombine&lt;/code&gt; (7 nodes).&lt;/p&gt;

&lt;p&gt;These are video-processing graphs: there is no UNET, CLIP, VAE or KSampler to quote. The only numeric settings are the ones in the node widgets (interpolation multiplier, upscale multiplier, 960-pixel constraint), which the video states and the JSON carries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The remover needs a mask.&lt;/strong&gt; It works when you tell it where the watermark is; it is not a blind detector.&lt;/li&gt;
&lt;li&gt;The model is an &lt;strong&gt;early MiniMax/Wan 2.1&lt;/strong&gt; build, not a purpose-trained 2026 remover.&lt;/li&gt;
&lt;li&gt;Interpolation cannot invent detail: very fast or occluded motion will smear.&lt;/li&gt;
&lt;li&gt;Xiaoyunque's free quota (one clip per day, 15 s) and the missing face reference limit what you can source.&lt;/li&gt;
&lt;li&gt;Removing watermarks is only appropriate on footage you own or are licensed to process - the tool has no rights model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - 视频补帧+放大: &lt;a href="https://www.runninghub.ai/post/2021549838894108674/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2021549838894108674/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - minimax remover 视频去水印: &lt;a href="https://www.runninghub.ai/post/2021475821034151938/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2021475821034151938/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=yp0dcysS4XY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=yp0dcysS4XY&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1REcbzdEdn" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1REcbzdEdn&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Anima 2B: An Anime Model Trained Without a Single AI-Generated Image, From Text-to-Image to Tiled Upscale</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:27:53 +0000</pubDate>
      <link>https://dev.to/ai-ksk/anima-2b-an-anime-model-trained-without-a-single-ai-generated-image-from-text-to-image-to-tiled-5bd0</link>
      <guid>https://dev.to/ai-ksk/anima-2b-an-anime-model-trained-without-a-single-ai-generated-image-from-text-to-image-to-tiled-5bd0</guid>
      <description>&lt;p&gt;Anima is a 2-billion-parameter anime model built with Comfy Org, trained on millions of anime images and 800k non-anime artworks with &lt;strong&gt;no synthetic data&lt;/strong&gt; - no AI-generated images were used to train it. This episode runs the whole path: text-to-image, image-to-image anime conversion driven by a Qwen3-VL caption pass, and tiled upscale. The model is a preview build, not an accelerated one, and it is small enough that the author reckons 6 GB of VRAM, possibly even 4 GB, can run it locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (3 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You want an anime model that was not trained on AI-generated images.&lt;/li&gt;
&lt;li&gt;You need to convert a photo or 3D render into anime style with denoise control.&lt;/li&gt;
&lt;li&gt;Your target size exceeds what the model handles natively, so you need tiled upscale.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the pipeline is built
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The model itself
&lt;/h3&gt;

&lt;p&gt;2B parameters, trained jointly with Comfy Org on millions of anime images plus 800k non-anime art images, &lt;strong&gt;zero synthetic data&lt;/strong&gt;. In 2025 terms 2B is not large; the selling point is the data policy.&lt;/p&gt;

&lt;p&gt;It is a &lt;strong&gt;preview&lt;/strong&gt; build and explicitly not an accelerated model, so it needs a real step budget. The author expects a more stable release later.&lt;/p&gt;

&lt;p&gt;The author reads it as NSFW-capable ("should support NSFW"), and frames it as worth trying for anime illustrators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Text encoder and prompt language
&lt;/h3&gt;

&lt;p&gt;The text encoder is &lt;strong&gt;Qwen3&lt;/strong&gt;, and the author recommends &lt;strong&gt;English&lt;/strong&gt; prompts for accuracy.&lt;/p&gt;

&lt;p&gt;Native text-to-image size is limited, which is precisely why the upscale stage is part of the pipeline rather than an optional extra.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image-to-image: denoise is the dial
&lt;/h3&gt;

&lt;p&gt;For conversion the author lands on a &lt;strong&gt;denoise around 0.7&lt;/strong&gt; as the upper useful value: higher changes more, lower changes less.&lt;/p&gt;

&lt;p&gt;A 1080p input fed straight in produces artifacts, so the image has to be passed through a &lt;strong&gt;pixel constraint&lt;/strong&gt; before encoding. With that constraint the results are reasonable.&lt;/p&gt;

&lt;p&gt;Captions come from a &lt;strong&gt;Qwen3-VL&lt;/strong&gt; reverse-caption pass (the author calls it Tesser-style reverse prompting), which is what makes photo-to-anime conversion controllable without hand-written prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tiled upscale done carefully
&lt;/h3&gt;

&lt;p&gt;The upscale is the usual tile pipeline: set the target size by pixels, split into roughly &lt;strong&gt;four tiles&lt;/strong&gt;, and caption each tile from the reverse prompt.&lt;/p&gt;

&lt;p&gt;The author raised the &lt;strong&gt;tile overlap to 0.35&lt;/strong&gt; specifically to stop seams appearing on this model.&lt;/p&gt;

&lt;p&gt;Noise must stay low during the upscale pass or the tiles come out strange. After stitching, the author reports no obvious seams and a visible gain in detail.&lt;/p&gt;

&lt;p&gt;Prompt style is flexible: natural language or tag-style both work, and the project page provides prompting guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the text-to-image graph; write the prompt in English and check the subject details against the output.&lt;/li&gt;
&lt;li&gt;For conversion, open the image-to-image graph, load the source, and apply a pixel constraint before encoding.&lt;/li&gt;
&lt;li&gt;Set denoise around &lt;strong&gt;0.7&lt;/strong&gt; - higher for more change, lower for less.&lt;/li&gt;
&lt;li&gt;Run a Qwen3-VL reverse-caption pass to get the prompt, then sample.&lt;/li&gt;
&lt;li&gt;Open the tiled-upscale graph, set the target size in pixels, split into about four tiles, raise overlap to &lt;strong&gt;0.35&lt;/strong&gt;, and keep noise low.&lt;/li&gt;
&lt;li&gt;Stitch and inspect the seams.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Anima分块放大&lt;/strong&gt; - 26 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;anima-preview.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_06b_base.safetensors&lt;/code&gt; / stable_diffusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 31 · cfg 4 · er_sde · simple · denoise 0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Gundam_RX78_Flux.safetensors&lt;/code&gt; @ 0.85&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Anima图生图&lt;/strong&gt; - 13 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;anima-preview.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_06b_base.safetensors&lt;/code&gt; / stable_diffusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 31 · cfg 4 · er_sde · simple · denoise 0.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Anima文生图&lt;/strong&gt; - 10 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;anima-preview.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_06b_base.safetensors&lt;/code&gt; / stable_diffusion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 30 · cfg 4 · er_sde · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;1024x1024 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Preview build&lt;/strong&gt;, not an accelerated model: it needs a full step budget to look right.&lt;/li&gt;
&lt;li&gt;Native resolution is small; upscaling is mandatory for production sizes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character/IP LoRAs carry their own licences&lt;/strong&gt; - the graph shown uses a third-party Gundam LoRA as an example.&lt;/li&gt;
&lt;li&gt;The 4-6 GB VRAM estimate is the author's inference from model and encoder file sizes, not a measured floor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - Anima分块放大: &lt;a href="https://www.runninghub.ai/post/2021929692445544449/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2021929692445544449/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Anima图生图: &lt;a href="https://www.runninghub.ai/post/2021929700087566337/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2021929700087566337/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Anima文生图: &lt;a href="https://www.runninghub.ai/post/2021929707570208769/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2021929707570208769/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=J2A8JWDCUhk" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=J2A8JWDCUhk&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1FscqzREni" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1FscqzREni&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Z-Image Base + ControlNet 2.1 + Turbo: Two-Stage Repair, and Why the 8/4-Step Accelerators Are a Bad Trade</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:27:47 +0000</pubDate>
      <link>https://dev.to/ai-ksk/z-image-base-controlnet-21-turbo-two-stage-repair-and-why-the-84-step-accelerators-are-a-jhb</link>
      <guid>https://dev.to/ai-ksk/z-image-base-controlnet-21-turbo-two-stage-repair-and-why-the-84-step-accelerators-are-a-jhb</guid>
      <description>&lt;p&gt;Z-Image Base controls well and looks mediocre. This episode tests ControlNet 2.1 on Base, then repairs the aesthetics by splitting sampling: Base drives the high-noise half, Turbo takes the low-noise half and pulls quality back. It also tests the 8-step and 4-step Base accelerators and reaches a blunt conclusion - with Turbo available, the accelerators are not worth the loss of variety, and they cannot be combined with ControlNet at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (3 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need &lt;strong&gt;precise structural control&lt;/strong&gt; and can accept a Base-quality first pass.&lt;/li&gt;
&lt;li&gt;You want Base's control with Turbo's aesthetics instead of choosing one.&lt;/li&gt;
&lt;li&gt;You are deciding whether a 4-step or 8-step Base accelerator is worth installing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What this episode tests
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The problem: Base controls, but it looks bad
&lt;/h3&gt;

&lt;p&gt;The author's first conclusion: generating with Base plus ControlNet controls almost perfectly, but produces low-aesthetic, low-quality results. Control is not the problem - the base model's finish is.&lt;/p&gt;

&lt;p&gt;The workaround is the same shape as the author's earlier Turbo workflows: a high/low-noise split where the ControlNet acts early and Turbo refines late.&lt;/p&gt;

&lt;h3&gt;
  
  
  ControlNet 2.1 wired as a model patch
&lt;/h3&gt;

&lt;p&gt;The update is ControlNet &lt;strong&gt;2.1&lt;/strong&gt;, which the author notes had shipped 12 days before the video.&lt;/p&gt;

&lt;p&gt;It is loaded through the Z-Image Fun node as a &lt;strong&gt;model patch&lt;/strong&gt;, not as a separate conditioning branch: load an image, pass it through a preprocessor to get the control image, then feed the patch.&lt;/p&gt;

&lt;p&gt;The author explicitly has &lt;strong&gt;not&lt;/strong&gt; tested Base's local-repaint ability with this ControlNet yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two-stage repair in numbers
&lt;/h3&gt;

&lt;p&gt;The author reports a &lt;strong&gt;16-step&lt;/strong&gt; total: &lt;strong&gt;8 high-noise on Base&lt;/strong&gt;, then &lt;strong&gt;8 low-noise on Turbo&lt;/strong&gt;, then one more pass through Turbo to compose the final image.&lt;/p&gt;

&lt;p&gt;The prompt has to match the control image. The author points out that if the prompt and the control content disagree, the result shows it - his phrasing is that you do not want a knife behind the scene.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accelerators: 8-step and 4-step, measured
&lt;/h3&gt;

&lt;p&gt;The 8-step and 4-step models are distilled LoRAs for Base. The author's test set is a text-to-image comparison, plus a difficulty case (a duel scene) where Base without acceleration shows some quality damage.&lt;/p&gt;

&lt;p&gt;His conclusions: acceleration does raise speed and can even clean up that damage, but lower step counts force the model to keep high frequencies first and compress low frequencies, so &lt;strong&gt;output variety drops&lt;/strong&gt; - the "gacha" feel of rerolling is reduced.&lt;/p&gt;

&lt;p&gt;Between the two, &lt;strong&gt;4-step is the best value&lt;/strong&gt; if you accept the loss. But an accelerator &lt;strong&gt;cannot be combined with ControlNet&lt;/strong&gt;, and combining them produces what he calls "utterly terrible" results.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the Base + ControlNet graph; note that the CN is applied as a model patch, not a conditioning branch.&lt;/li&gt;
&lt;li&gt;Load the control image and run it through the preprocessor; set the output size by pixels.&lt;/li&gt;
&lt;li&gt;Write a prompt that matches the control content - mismatches show up in the result.&lt;/li&gt;
&lt;li&gt;Run the high-noise half on Base, pass the latent to the Turbo half, and let it finish.&lt;/li&gt;
&lt;li&gt;Optional final pass: run the composition through Turbo once more to place the result.&lt;/li&gt;
&lt;li&gt;For the accelerator test, switch to the 8-step or 4-step distilled LoRA graph - and do not try to keep the ControlNet in that graph.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image Base +ControlNet&lt;/strong&gt; - 14 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / qwen_image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 30 · cfg 3 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;720x1280 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image Base 8步&amp;amp;4步加速&lt;/strong&gt; - 53 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / qwen_image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 8 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 20 · cfg 3 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 8 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 20 · cfg 3 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 8 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 4 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 8 · cfg 1 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 20 · cfg 3 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 20 · cfg 3 · euler · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;1280x720 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Z-Image-Fun-Lora-Distill-4-Steps-2602-ComfyUI.safetensors&lt;/code&gt; @ 1; &lt;code&gt;Z-Image-Fun-Lora-Distill-8-Steps-2602-ComfyUI.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image Base+ControlNet+Turbo高低噪&lt;/strong&gt; - 44 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / lumina2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 10 · scheduler simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 10 · scheduler simple · denoise 0.51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;512x472 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Z-Image-Fun-Lora-Distill-4-Steps-2602-ComfyUI.safetensors&lt;/code&gt; @ 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base + ControlNet is not usable as-is&lt;/strong&gt; for finished work: control is excellent, aesthetics are not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accelerators and ControlNet do not combine&lt;/strong&gt;, and the author rates the combination as extremely bad.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Variety drops&lt;/strong&gt; with acceleration; 4-step keeps the most value but still costs diversity.&lt;/li&gt;
&lt;li&gt;Base's local repaint with CN 2.1 is explicitly untested in this episode.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - Z Image Base +ControlNet: &lt;a href="https://www.runninghub.ai/post/2022640984902864898/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2022640984902864898/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Z Image Base+ControlNet+Turbo高低噪: &lt;a href="https://www.runninghub.ai/post/2022635998764601346/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2022635998764601346/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Z Image Base 8步&amp;amp;4步加速: &lt;a href="https://www.runninghub.ai/post/2022636633476046849/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2022636633476046849/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=mYpdxdHGlQM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=mYpdxdHGlQM&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1quZ7BpEPE" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1quZ7BpEPE&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Z-Image i2L in ComfyUI: A Reusable LoRA From 6 Images in Seconds, Then a ControlNet Pass</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:27:17 +0000</pubDate>
      <link>https://dev.to/ai-ksk/z-image-i2l-in-comfyui-a-reusable-lora-from-6-images-in-seconds-then-a-controlnet-pass-1bgl</link>
      <guid>https://dev.to/ai-ksk/z-image-i2l-in-comfyui-a-reusable-lora-from-6-images-in-seconds-then-a-controlnet-pass-1bgl</guid>
      <description>&lt;p&gt;Training a LoRA normally costs hours. Z-Image's Image-to-LoRA path claims to produce a reusable LoRA in the low tens of seconds, and this episode tests the updated Z-Image version of that path: 6 images in, a style LoRA out, then a text-to-image run, then the same LoRA inside a depth-ControlNet graph with high/low-noise splitting and tiled upscaling. The author reports the style is recognisably reproduced, while admitting that content from the training set leaks into the output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; parameters below were parsed from the workflow JSON shipped with this episode (3 files); anything the video reports about results is attributed to the author.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You want a &lt;strong&gt;style&lt;/strong&gt; LoRA from a handful of reference images and cannot wait hours for a training run.&lt;/li&gt;
&lt;li&gt;You need the LoRA to be reusable: download it once, then drop it into other ComfyUI graphs.&lt;/li&gt;
&lt;li&gt;You want style transfer &lt;strong&gt;under control&lt;/strong&gt; by combining the i2L LoRA with a depth ControlNet pass.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What changed in this version
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Three graphs, one training node
&lt;/h3&gt;

&lt;p&gt;The episode ships three workflows: &lt;strong&gt;training + test&lt;/strong&gt;, &lt;strong&gt;training + ControlNet test&lt;/strong&gt;, and &lt;strong&gt;training + ControlNet test + tiled upscale&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;All three share the same primitive: a single RunningHub i2L node that takes a batch of images, trains, and hands back a LoRA file. On the online platform the LoRA is downloadable from the task list; running locally it is written to disk.&lt;/p&gt;

&lt;p&gt;The previous version of this trick was built on Qwen-Image; the Z-Image version landed on 30 January. The graph is built on the &lt;strong&gt;Z-Image Base&lt;/strong&gt; family, not Turbo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Base and not Turbo
&lt;/h3&gt;

&lt;p&gt;The author states plainly that this technique does &lt;strong&gt;not&lt;/strong&gt; work with the Turbo model and only works with Base. That is why the ControlNet graph takes Base in the high-noise half and Base again in the low-noise half instead of handing over to Turbo.&lt;/p&gt;

&lt;p&gt;CLIP is wired to the &lt;strong&gt;positive&lt;/strong&gt; conditioning only. The author is explicit that the negative branch must not be fed from the CLIP loader; the official negative prompt is supplied in the graph instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  High/low noise split, then tiled upscale
&lt;/h3&gt;

&lt;p&gt;The point of splitting is not to switch models mid-run: it is to let the ControlNet act &lt;strong&gt;only in the high-noise phase&lt;/strong&gt;, then let the low-noise phase finish the image, before a tiled upscale pass.&lt;/p&gt;

&lt;p&gt;The author reports 50 steps in total, split 25 high-noise / 25 low-noise, and describes the upscale stage as almost fully automatic.&lt;/p&gt;

&lt;p&gt;The ControlNet itself is depth-based: load an image, run it through a preprocessor to get the control image, and scale by pixels rather than by a fixed side length.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the tests actually show
&lt;/h3&gt;

&lt;p&gt;A pure text-to-image run driven by a 6-image training set keeps the style, but reference elements from the training set still show up. The author calls separating style from content "very difficult" and does not claim it is solved.&lt;/p&gt;

&lt;p&gt;When the training set contains many faces, generated characters are affected; removing the faces from the training set lowers that influence noticeably.&lt;/p&gt;

&lt;p&gt;The official guidance is 1-6 training images; the author uses &lt;strong&gt;6&lt;/strong&gt;, calling that "sufficient".&lt;/p&gt;

&lt;h2&gt;
  
  
  How to run it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the training + test graph on RunningHub (or install the open-source node locally, which the author says runs fully offline).&lt;/li&gt;
&lt;li&gt;Load &lt;strong&gt;6&lt;/strong&gt; training images; the official range is 1-6 and the author treats 6 as sufficient.&lt;/li&gt;
&lt;li&gt;Run the i2L node. On the platform, download the LoRA from the task list; locally it is saved to disk.&lt;/li&gt;
&lt;li&gt;Switch to the text-to-image graph, insert the LoRA, and keep the CLIP feed on the positive side only with the official negative prompt.&lt;/li&gt;
&lt;li&gt;For the ControlNet variant: load a control image, run the preprocessor, set the pixel-based size, and let the graph split &lt;strong&gt;50 steps&lt;/strong&gt; into 25 high-noise and 25 low-noise.&lt;/li&gt;
&lt;li&gt;Finish with the tiled upscale graph; the author describes that stage as almost automatic.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image i2L (Image to LoRA)快速lora训练+测试&lt;/strong&gt; - 23 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / lumina2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 50 · cfg 4 · res_multistep · simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;1024x1536 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;(empty slot - the i2L node writes the trained LoRA here at run time) @ 1.1 / clip 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image i2L (Image to LoRA)快速lora训练+联合CN测试+放大&lt;/strong&gt; - 62 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / lumina2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 10 · scheduler simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KSampler&lt;/td&gt;
&lt;td&gt;steps 20 · cfg 3 · euler · simple · denoise 0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;512x472 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Z-Image-Fun-Lora-Distill-4-Steps-2602-ComfyUI.safetensors&lt;/code&gt; @ 1; (empty slot - the i2L node writes the trained LoRA here at run time) @ 1.1 / clip 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Z Image i2L (Image to LoRA)快速lora训练+联合CN测试&lt;/strong&gt; - 43 nodes
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value (from JSON)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UNET loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;z_image_bf16.safetensors&lt;/code&gt; / default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP loader&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;qwen_3_4b.safetensors&lt;/code&gt; / lumina2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VAE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ae.safetensors&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BasicScheduler&lt;/td&gt;
&lt;td&gt;steps 10 · scheduler simple · denoise 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latent size&lt;/td&gt;
&lt;td&gt;512x472 · batch 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Z-Image-Fun-Lora-Distill-4-Steps-2602-ComfyUI.safetensors&lt;/code&gt; @ 1; (empty slot - the i2L node writes the trained LoRA here at run time) @ 1.1 / clip 1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 50-step setting, the 25/25 split and the CFG 4 / sigma shift 8 recommendation are stated in the video; the sampler wiring above is read from the JSON. In the ControlNet graph the KSampler shows 20 steps at cfg 3 with denoise 0.25, i.e. it is a partial-denoise refinement pass after the custom-sampler split.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Styles, not identities.&lt;/strong&gt; The author positions i2L for style reference; content elements from the training set leak into results and that is not fixed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Base only.&lt;/strong&gt; The technique is stated not to work with Turbo, which rules out the fastest Z-Image route.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Face-heavy training sets bias the output.&lt;/strong&gt; Fewer faces in the set, less leakage.&lt;/li&gt;
&lt;li&gt;The "tens of seconds" figure is the author's report from the video, not an independent benchmark.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;RunningHub - Z Image i2L (Image to LoRA)快速lora训练+测试: &lt;a href="https://www.runninghub.ai/post/2023308170269036545/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2023308170269036545/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Z Image i2L (Image to LoRA)快速lora训练+联合CN测试: &lt;a href="https://www.runninghub.ai/post/2023370355200495617/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2023370355200495617/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub - Z Image i2L (Image to LoRA)快速lora训练+联合CN测试+放大: &lt;a href="https://www.runninghub.ai/post/2023308180264067074/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2023308180264067074/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube tutorial: &lt;a href="https://www.youtube.com/watch?v=wT9ob7rFONM" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=wT9ob7rFONM&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili original: &lt;a href="https://www.bilibili.com/video/BV1qXZMBwEC7" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1qXZMBwEC7&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The Last Step Nobody Automates: Batch Frame Interpolation and Upscaling to 4K120</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:27:13 +0000</pubDate>
      <link>https://dev.to/ai-ksk/the-last-step-nobody-automates-batch-frame-interpolation-and-upscaling-to-4k120-16ap</link>
      <guid>https://dev.to/ai-ksk/the-last-step-nobody-automates-batch-frame-interpolation-and-upscaling-to-4k120-16ap</guid>
      <description>&lt;p&gt;Every pipeline ends the same way and most people still do it by hand. This episode packages that last step into seven ComfyUI flows: four single-video tasks and three batch runs that chew through a folder overnight. The stack is GIMM for interpolation, plus FlashVSR, SeedVR2 and LTX-2 for upscaling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; this episode ships &lt;strong&gt;no workflow JSON&lt;/strong&gt; - the graphs are inside the deployed image. All numbers below are the author's on-screen values from the recording, not graph reads.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You generate clips with Seedance 2.0 and need them to look finished rather than draft.&lt;/li&gt;
&lt;li&gt;You have a folder of videos, not one, and you want the queue to run while you sleep.&lt;/li&gt;
&lt;li&gt;You are deciding which of four upscalers fits a given clip.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stack, and why each piece is there
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Author's note&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GIMM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;frame interpolation&lt;/td&gt;
&lt;td&gt;described as close to top-tier among open techniques&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FlashVSR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;upscale&lt;/td&gt;
&lt;td&gt;built on Wan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SeedVR2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;upscale&lt;/td&gt;
&lt;td&gt;targets a longest-side value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LTX-2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;upscale&lt;/td&gt;
&lt;td&gt;no trained model for video upscaling yet; included because the author thinks it is promising&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is the interesting one: a component is shipped precisely because nobody has trained it properly yet, on the bet that video upscaling is where LTX-2 pays off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Deploy the mirror, pick a 48GB 4090, and wait for the instance to come up.&lt;/li&gt;
&lt;li&gt;Open JupyterLab, start a terminal, paste the start command. If your card has more than 48GB, remove the low-VRAM flag first.&lt;/li&gt;
&lt;li&gt;When the address appears, click through into ComfyUI and open the workflow panel.&lt;/li&gt;
&lt;li&gt;Choose one of four single-video flows for a one-off, or one of three batch flows for a folder.&lt;/li&gt;
&lt;li&gt;Set the one meaningful knob for that flow: interpolation multiple, upscale factor, or longest side.&lt;/li&gt;
&lt;li&gt;Run. For batch flows, verify the folder path, the increment field and the batch count before starting.&lt;/li&gt;
&lt;li&gt;Collect results from the ComfyUI &lt;code&gt;output&lt;/code&gt; directory in JupyterLab.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Four single-video flows
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GIMM interpolation.&lt;/strong&gt; Load a video, run. The one knob is the interpolation multiple; &lt;strong&gt;2&lt;/strong&gt; means double the frame count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FlashVSR upscale.&lt;/strong&gt; Load, run. Adjust the scale factor: &lt;strong&gt;2x, 3x or 4x&lt;/strong&gt;, with 4x the ceiling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SeedVR2 upscale.&lt;/strong&gt; Load, run. Adjust the longest-side value; the shipped value is &lt;strong&gt;2560&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LTX-2 video-to-video.&lt;/strong&gt; In practice another upscaler. Load, run, adjust the longest side.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three batch flows
&lt;/h2&gt;

&lt;p&gt;These exist for automation: point them at a folder, and they queue every video in it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a folder (the author names his &lt;code&gt;test1&lt;/code&gt;) and upload as many videos as you want.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shorten the filenames.&lt;/strong&gt; This is the failure mode the author calls out explicitly: clips produced by 小云雀 often carry very long names and will error. Rename them to something short, like &lt;code&gt;1352&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open a terminal, copy the folder's path, paste it into the flow's folder field.&lt;/li&gt;
&lt;li&gt;Set the increment value. It &lt;strong&gt;defaults to 0 and must be reset to 0&lt;/strong&gt; before a run.&lt;/li&gt;
&lt;li&gt;Set the interpolation multiple and the upscale multiple.&lt;/li&gt;
&lt;li&gt;On FlashVSR specifically, the flow pre-scales to &lt;strong&gt;1024&lt;/strong&gt; before multiplying: a multiple of 2 yields 2048, a multiple of 4 yields 4096.&lt;/li&gt;
&lt;li&gt;Set the batch count to the number of files. Ten videos means batch count 10, which queues ten tasks.&lt;/li&gt;
&lt;li&gt;Run. It keeps going in the background, which is the point for overnight jobs.&lt;/li&gt;
&lt;li&gt;Collect results from the &lt;code&gt;output&lt;/code&gt; folder under the ComfyUI directory in JupyterLab.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The SeedVR2 batch caveat
&lt;/h2&gt;

&lt;p&gt;Same structure, one extra trap. Seedance output is typically &lt;strong&gt;30 fps&lt;/strong&gt;, so no frame-rate change is needed. If you load other footage at &lt;strong&gt;29.97 fps&lt;/strong&gt;, normalise it to an integer in the video loader, because the flow multiplies the rate and a non-integer base produces errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rent a &lt;strong&gt;48GB 4090&lt;/strong&gt; for the best value; 5090 and 4090 are cheaper overnight. The author used an &lt;strong&gt;A800&lt;/strong&gt; because he was stress-testing.&lt;/li&gt;
&lt;li&gt;The start command includes a low-VRAM switch. If your card has &lt;strong&gt;more than 48GB&lt;/strong&gt; (48 itself excluded), you can drop it.&lt;/li&gt;
&lt;li&gt;Registration through the link adds platform credit after identity verification.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;p&gt;No JSON exists for this episode, so this is a transcription of the on-screen values:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Interpolation multiple&lt;/td&gt;
&lt;td&gt;2 (2x), adjustable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FlashVSR scale&lt;/td&gt;
&lt;td&gt;2x / 3x / 4x, max 4x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FlashVSR pre-scale&lt;/td&gt;
&lt;td&gt;1024, then multiply (2 → 2048, 4 → 4096)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SeedVR2 longest side&lt;/td&gt;
&lt;td&gt;2560&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch increment field&lt;/td&gt;
&lt;td&gt;defaults to 0, must be 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Batch count&lt;/td&gt;
&lt;td&gt;number of files in the folder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical Seedance frame rate&lt;/td&gt;
&lt;td&gt;30 fps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-integer frame rate case&lt;/td&gt;
&lt;td&gt;29.97 fps, normalise before multiplying&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suggested GPU&lt;/td&gt;
&lt;td&gt;48GB 4090 (author tested on A800)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No downloadable graphs.&lt;/strong&gt; Seven flows live inside the image; the episode folder has no JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filename length is a real failure.&lt;/strong&gt; Long names error out; this is a platform quirk, not a model limit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LTX-2 upscaling is unproven.&lt;/strong&gt; The author says nobody has trained it for this yet, so it is included on potential, not on results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4K120 is the target, not a measured spec.&lt;/strong&gt; The episode title states it; the recording documents the multipliers and pre-scale chain, not per-clip timings or quality scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Batch flows need integer frame rates.&lt;/strong&gt; 29.97 fps inputs are a documented error source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mirror (with referral code): &lt;a href="https://www.compshare.cn/images/7oKVc778yl8g?referral_code=A7fTQUYY9lCDFJwA6MMvoq" rel="noopener noreferrer"&gt;https://www.compshare.cn/images/7oKVc778yl8g?referral_code=A7fTQUYY9lCDFJwA6MMvoq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub workflow: &lt;strong&gt;none for this episode&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://youtu.be/XIkd2Rq8Y8I" rel="noopener noreferrer"&gt;https://youtu.be/XIkd2Rq8Y8I&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili: &lt;a href="https://www.bilibili.com/video/BV1YTZ1BtEHK/" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1YTZ1BtEHK/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>BitDance 14B: A 14-Billion-Parameter Autoregressive Image Model That Is Actually Fast</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:26:44 +0000</pubDate>
      <link>https://dev.to/ai-ksk/bitdance-14b-a-14-billion-parameter-autoregressive-image-model-that-is-actually-fast-592k</link>
      <guid>https://dev.to/ai-ksk/bitdance-14b-a-14-billion-parameter-autoregressive-image-model-that-is-actually-fast-592k</guid>
      <description>&lt;p&gt;Autoregressive image generation has always lost on speed, which is why models like it mostly went unused. BitDance's claim is that it fixes exactly that, and the author's test puts a number on it: about &lt;strong&gt;25 seconds&lt;/strong&gt; per image on a 48GB 4090, with generation quality that is genuinely different from the diffusion models he compares it against.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; this episode ships &lt;strong&gt;no workflow JSON&lt;/strong&gt; - the model runs behind a WebUI, not a ComfyUI graph. All numbers below are the author's on-camera observations, not graph values.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You want to try an autoregressive image model without installing anything locally.&lt;/li&gt;
&lt;li&gt;You care about prompt adherence and final-image convergence more than fine texture detail.&lt;/li&gt;
&lt;li&gt;You need direct English or Chinese text rendering inside the generated image.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What BitDance is
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;14-billion-parameter autoregressive&lt;/strong&gt; image generator. Autoregressive means next-token prediction, applied here to image tokens, which historically makes generation slow: the author's reference point is that autoregressive models like the GLM-Image family are simply slower. BitDance's contribution is speed, not a new architecture.&lt;/p&gt;

&lt;p&gt;Two weight variants ship:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;64X&lt;/strong&gt;, the distilled fast one, used by default after auto-start. Roughly 25 seconds per image in the author's test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16X&lt;/strong&gt;, slower, but able to generate smaller images such as 512-class and 1024-class sizes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the author found, task by task
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Reported result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Portraits&lt;/td&gt;
&lt;td&gt;Reasonable; one sample had a broken hand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail rendering (64X)&lt;/td&gt;
&lt;td&gt;Not especially good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;English text in image&lt;/td&gt;
&lt;td&gt;Works directly; no clear lead over the comparison models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chinese text&lt;/td&gt;
&lt;td&gt;Works&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stylisation&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt adherence&lt;/td&gt;
&lt;td&gt;Top tier, per the author&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex scene&lt;/td&gt;
&lt;td&gt;Handled a multi-subject prompt (elderly man on a plaza bench, pink-haired woman to one side, dog with a blue scarf to the other, clown juggling three specified colours behind, broken paper cup in a corner) with acceptable aesthetics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aesthetics vs Qwen-Image&lt;/td&gt;
&lt;td&gt;Slightly ahead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very long prompts&lt;/td&gt;
&lt;td&gt;Behind Qwen-Image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Convergence&lt;/td&gt;
&lt;td&gt;Strong, which the author attributes to the autoregressive path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity vs other models&lt;/td&gt;
&lt;td&gt;Clearly a different look; an RPG-style illustration separated it from the comparison set immediately&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open the mirror and deploy an instance. The author follows the official recommendation and rents a &lt;strong&gt;48GB 4090&lt;/strong&gt;; overnight rates on 4090 and 5090 are cheaper.&lt;/li&gt;
&lt;li&gt;Register through the link first if you are new; identity verification adds platform credit.&lt;/li&gt;
&lt;li&gt;Wait while the model loads and the service auto-starts.&lt;/li&gt;
&lt;li&gt;Click the BitDance button to open the WebUI.&lt;/li&gt;
&lt;li&gt;Enter a prompt, pick a width and height from the presets, set step count, CFG and whether to randomise the seed.&lt;/li&gt;
&lt;li&gt;The author keeps steps and CFG at their defaults and considers that sufficient.&lt;/li&gt;
&lt;li&gt;Switch to the 1.0 variant if you want to compare the non-distilled behaviour.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;p&gt;No JSON exists for this episode. What the material actually establishes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Basis&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Parameters&lt;/td&gt;
&lt;td&gt;14B, autoregressive&lt;/td&gt;
&lt;td&gt;spoken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed, 64X&lt;/td&gt;
&lt;td&gt;~25 s per image&lt;/td&gt;
&lt;td&gt;author's observation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed, 16X&lt;/td&gt;
&lt;td&gt;slower&lt;/td&gt;
&lt;td&gt;spoken, no figure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;48GB 4090&lt;/td&gt;
&lt;td&gt;platform recommendation quoted by the author&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Startup&lt;/td&gt;
&lt;td&gt;model auto-loads, service auto-starts&lt;/td&gt;
&lt;td&gt;spoken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controls exposed&lt;/td&gt;
&lt;td&gt;prompt, width/height presets, steps, CFG, seed toggle&lt;/td&gt;
&lt;td&gt;on screen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nothing beyond that is claimed, because there is no graph file to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hands break.&lt;/strong&gt; The author shows one portrait with a collapsed hand, and calls the results "acceptable" rather than good.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detail at 64X is soft.&lt;/strong&gt; This is an explicit negative finding, not an oversight.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Long prompts lose.&lt;/strong&gt; Against Qwen-Image on very long text, BitDance is behind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The timing is one observation.&lt;/strong&gt; 25 seconds on one card, one session, is not a throughput benchmark.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No ComfyUI graph yet.&lt;/strong&gt; The author expects ComfyUI support soon; at the time of recording this is a WebUI-only route.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcript variance.&lt;/strong&gt; The load-time figure is quoted as about five minutes in this episode's subtitle; a duplicate transcript of the same talk elsewhere in the source tree says 15. Treat startup time as "several minutes" rather than a precise number.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mirror (with referral code): &lt;a href="https://www.compshare.cn/images/TuPWGieO4ed8?referral_code=A7fTQUYY9lCDFJwA6MMvoq" rel="noopener noreferrer"&gt;https://www.compshare.cn/images/TuPWGieO4ed8?referral_code=A7fTQUYY9lCDFJwA6MMvoq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RunningHub workflow: &lt;strong&gt;none for this episode&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/watch?v=bfKBYjkFy3Y" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=bfKBYjkFy3Y&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili: &lt;a href="https://www.bilibili.com/video/BV1VFZXBjEDG" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1VFZXBjEDG&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>FireRed Image Edit 1.0 vs Qwen 2511: Five Single-Image Edits, Two Graphs, One Honest Verdict</title>
      <dc:creator>AI-KSK</dc:creator>
      <pubDate>Sun, 08 Nov 2026 16:26:40 +0000</pubDate>
      <link>https://dev.to/ai-ksk/firered-image-edit-10-vs-qwen-2511-five-single-image-edits-two-graphs-one-honest-verdict-59j8</link>
      <guid>https://dev.to/ai-ksk/firered-image-edit-10-vs-qwen-2511-five-single-image-edits-two-graphs-one-honest-verdict-59j8</guid>
      <description>&lt;p&gt;FireRed Image Edit 1.0 looks like a Qwen 2511 derivative with a nudge, and the author's testing lands exactly there: not a class above 2511, but more reliable on single-image edits, and worse once you feed it multiple images. This episode runs five edit tasks across two graph variants to get to that answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence note:&lt;/strong&gt; this episode ships &lt;strong&gt;three workflow JSON files (28, 29 and 28 nodes)&lt;/strong&gt;. All graph values below are read from them; the comparison results are the author's on-camera tests, reported as such.&lt;/p&gt;

&lt;h2&gt;
  
  
  When this is useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You edit one image at a time and need the untouched regions to stay untouched.&lt;/li&gt;
&lt;li&gt;You rely on an 8-step Lightning accelerator and want to know whether an edit model still holds up with it.&lt;/li&gt;
&lt;li&gt;You are deciding between FireRed and 2511 for a multi-image task and would rather not find out the hard way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The two graphs, and when each one applies
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Anti-drift (&lt;code&gt;防偏移&lt;/code&gt;), with a reference latent.&lt;/strong&gt; This is the safe variant. When you edit one region, the reference latent keeps the rest of the frame stable. Use it whenever "do not touch anything else" is the requirement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Divergent (&lt;code&gt;发散&lt;/code&gt;), looser.&lt;/strong&gt; This allows larger changes. The trade-off is explicit in the recording: face similarity drops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual-image (&lt;code&gt;双图&lt;/code&gt;).&lt;/strong&gt; A third graph for two input images. The author tested it and recommends sticking with 2511 for this case instead.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The three graphs are structurally close to the 2511 counterparts. In the author's words, you mostly swap the backbone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the graphs actually load
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Backbone: &lt;code&gt;FireRed-Image-Edit-1.0_fp8_e4m3fn.safetensors&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Text encoder: &lt;code&gt;qwen_2.5_vl_7b_fp8_scaled.safetensors&lt;/code&gt;, &lt;code&gt;CLIPLoader&lt;/code&gt; type &lt;strong&gt;qwen_image&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;VAE: &lt;code&gt;qwen_image_vae.safetensors&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Accelerator: &lt;code&gt;Qwen-Image-Lightning-8steps-V2.0 bf16.safetensors&lt;/code&gt;, strength &lt;strong&gt;1.0&lt;/strong&gt; on the two single-image graphs and &lt;strong&gt;0.66&lt;/strong&gt; on the dual-image graph&lt;/li&gt;
&lt;li&gt;Sampler: &lt;strong&gt;8 steps&lt;/strong&gt;, CFG &lt;strong&gt;1&lt;/strong&gt;, &lt;code&gt;euler&lt;/code&gt;, &lt;code&gt;simple&lt;/code&gt;, denoise 1&lt;/li&gt;
&lt;li&gt;Empty latent: &lt;code&gt;928x1664&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Front-end scale: &lt;code&gt;ImageScaleToTotalPixels&lt;/code&gt; at &lt;strong&gt;1.0&lt;/strong&gt;; two intermediate scalers at &lt;strong&gt;3.0&lt;/strong&gt; are bypassed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That 8-step Lightning pairing is the practical core of the release: the model was not retrained for speed, the accelerator was bolted on, and the author says a 4-step accelerator made no visible difference on the anti-drift graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  The five single-image tests
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Test&lt;/th&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Result reported&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Place a person into a city scene&lt;/td&gt;
&lt;td&gt;FireRed integrated the subject with the scene lighting better; the 2511 result looked pasted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Night scene to dusk&lt;/td&gt;
&lt;td&gt;FireRed again&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Hand holding a cup&lt;/td&gt;
&lt;td&gt;FireRed, with more natural hands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Remove a woman from the frame&lt;/td&gt;
&lt;td&gt;FireRed clean; the 2511 result showed grid-like artifacts on the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Change a garment's colour&lt;/td&gt;
&lt;td&gt;FireRed, with higher saturation and a stronger response to the prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bonus&lt;/td&gt;
&lt;td&gt;Glass cup to ceramic cup&lt;/td&gt;
&lt;td&gt;FireRed, with a more convincing glossy surface&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The author's read on why: FireRed seems to accept more of the prompt and act on it, which reads as a small win within single-image editing rather than a different tier of model.&lt;/p&gt;

&lt;p&gt;Then the counter-example: for a four-way multi-image comparison the best result came from &lt;strong&gt;2511&lt;/strong&gt;, which is why he recommends 2511 there and says FireRed shows no clear advantage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Pick the graph by intent: anti-drift for surgical edits, divergent for larger changes, dual-image only if you must.&lt;/li&gt;
&lt;li&gt;Load the source image. If you are doing a targeted edit, mask the region first.&lt;/li&gt;
&lt;li&gt;Keep the front-end scaler at 1.0; the 3.0 scalers are bypassed in the shipped files and are not needed for these tests.&lt;/li&gt;
&lt;li&gt;Leave the Lightning LoRA at 1.0 (0.66 on the dual-image graph) and the sampler at 8 steps / CFG 1 / euler / simple.&lt;/li&gt;
&lt;li&gt;Write a short, direct instruction. The author notes his own prompts were very simple, and that FireRed still responded well.&lt;/li&gt;
&lt;li&gt;Run the anti-drift graph first when fidelity to the original matters, then re-run in the divergent graph only if the edit is too timid.&lt;/li&gt;
&lt;li&gt;For multi-image input, use the divergent graph and expect less face similarity; the author still prefers 2511 there.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Parameter basis
&lt;/h2&gt;

&lt;p&gt;Read from the three JSON files in &lt;code&gt;工作流及封面(视频184)&lt;/code&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Node&lt;/th&gt;
&lt;th&gt;Anti-drift&lt;/th&gt;
&lt;th&gt;Divergent&lt;/th&gt;
&lt;th&gt;Dual-image&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nodes&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;UNETLoader&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;FireRed fp8_e4m3fn&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;LoraLoaderModelOnly&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lightning 8-steps, 1.0&lt;/td&gt;
&lt;td&gt;1.0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.66&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;KSampler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8 / 1 / euler / simple&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;EmptySD3LatentImage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;928x1664&lt;/td&gt;
&lt;td&gt;928x1664&lt;/td&gt;
&lt;td&gt;928x1664&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ImageScaleToTotalPixels&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1.0 active, 3.0 x2 bypassed&lt;/td&gt;
&lt;td&gt;same&lt;/td&gt;
&lt;td&gt;1.0 x2 active, one 3.0 bypassed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not a new tier.&lt;/strong&gt; The author says outright that FireRed is close to 2511 and that scores do not separate them much.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-image is the weak spot.&lt;/strong&gt; Four-image comparison went to 2511.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accelerator risk.&lt;/strong&gt; Every test used the Lightning accelerator, and the author flags that acceleration may itself introduce instability in results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single-image only.&lt;/strong&gt; All five comparisons are single-image edits; nothing here validates batch or sequential edits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual judgement.&lt;/strong&gt; Five tasks, no metric, and the author reads them himself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation caveat.&lt;/strong&gt; He notes the multi-image gap might be a ComfyUI implementation detail rather than a model limitation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Episode resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anti-drift graph: &lt;a href="https://www.runninghub.ai/post/2024514356171509762/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2024514356171509762/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Divergent graph: &lt;a href="https://www.runninghub.ai/post/2024514345513787393/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2024514345513787393/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dual-image graph: &lt;a href="https://www.runninghub.ai/post/2024517003498754050/?inviteCode=rh-v1111" rel="noopener noreferrer"&gt;https://www.runninghub.ai/post/2024517003498754050/?inviteCode=rh-v1111&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mirror: &lt;strong&gt;none for this episode&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/watch?v=luvedSu-t_I" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=luvedSu-t_I&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bilibili: &lt;a href="https://www.bilibili.com/video/BV1R3ZBBrEik" rel="noopener noreferrer"&gt;https://www.bilibili.com/video/BV1R3ZBBrEik&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>comfyui</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
