mcpField
F
flux-txt2img

flux-txt2img

github.com/artokunクリエイティブ・メディア87639 回インストール2 日前に更新
リポジトリ

flux-txt2img について

Flux を使った ComfyUI のテキストから画像を生成するワークフローを扱うスキルガイドです。Flux.1 Dev SRPO、Flux 2 Klein 9B、Flux 2 Turbo LoRA のモデル接続、プロンプト条件付け、サンプラー設定を説明します。

主な機能

  1. 01Flux ワークフローの三つの構成
  2. 02モデルとエンコーダーの設定
  3. 03ガイダンスとプロンプト条件付け
  4. 04モデル別のサンプラー設定
  5. 05解像度と VRAM の指針
  6. 06LoRA の適用

活用シーン

  1. 01Flux.1 Dev SRPO のグラフ構築
  2. 02蒸留版 Klein による4ステップ生成
  3. 03Turbo LoRA によるサンプリングの高速化
  4. 04プロンプトに応じたガイダンスと解像度の調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/artokun/comfyui-mcp --skill flux-txt2img

インストール後、Claude Code で/flux-txt2imgを入力して読み込まれたか確認します。

詳細

Flux テキストから画像を生成するワークフロー

概要

Flux は、Black Forest Labs のガイダンス蒸留拡散モデルファミリーです。KSampler CFG(常に 1.0 に設定する必要があります)の代わりに、専用の FluxGuidance ノードを使用します。ローカルでは 3 種類のバリアントを利用できます。

  1. Flux.1 Dev SRPO. SRPO アライメントでファインチューニングされた Flux.1 Dev です。DualCLIPLoader(T5XXL + CLIP-L)を使用します。BF16 専用です。
  2. Flux 2 Klein 9B. Flux 2 の蒸留バリアントです。単一の CLIPLoader(Qwen3-8B)+ flux2-vae.safetensors を使用します。4 ステップで高速に生成できます。
  3. Flux 2 Turbo LoRA. Flux.1 Dev に適用し、4 ステップで生成します。

モデル

Flux.1 Dev SRPO
コンポーネントノードモデル備考
UNETUNETLoaderflux.1-dev-SRPO-BFL-bf16.safetensors22.7GB、BF16 専用 — FP8 では正常に生成できません
CLIPDualCLIPLoader (type=flux)clip_name1: t5xxl_fp8_e4m3fn.safetensors、clip_name2: clip_l.safetensorsT5XXL(4.7GB)+ CLIP-L(235MB)
VAEVAELoaderae.safetensors標準 Flux VAE(320MB)。Z-Image も同じ VAE アーキテクチャ を使用しますが、重みは異なります。Z-Image の VAE は別ファイル(z-image-ae.safetensors)であり、こちらではありません
Flux 2 Klein 9B
コンポーネントノードモデル備考
UNETUNETLoaderbigLove_klein1.safetensors17.3GB、Klein 9B バリアント
CLIPCLIPLoader (type=flux2)qwen_3_8b_fp8mixed.safetensorstext_encoders/ 内の Qwen3-8B(8.3GB)。flux2 を使用してください。flux ではありません。どちらも列挙型に存在しますが、flux はサンプラーで失敗します
VAEVAELoaderflux2-vae.safetensorsFlux 2 専用 VAE(321MB)

Klein 9B と Flux.1 Dev の違い:Klein は T5XXL + CLIP-L ではなく、Qwen3-8B テキストエンコーダーを使用します。VAE も異なり(flux2-vae.safetensors)、別のものを使用します。蒸留版 9B は 4 ステップで動作します。ベース版 9B では CFG 5.0 で約 50 ステップが必要です。FP8 では約 20GB の VRAM に収まります。

Flux 2 Turbo LoRA(Flux.1 Dev に適用)
コンポーネントノードモデル備考
LoRALoraLoaderModelOnlyflux2-turbo-lora.safetensors2.6GB、強度 1.0
代替 LoRALoraLoaderModelOnlyFlux2TurboComfyv2.safetensorsコミュニティ版、同じサイズ

コンディショニング

CLIPTextEncodeFlux(Flux.1 Dev に推奨)

各テキストエンコーダーに個別のプロンプト欄を用意します。

{
  "class_type": "CLIPTextEncodeFlux",
  "inputs": {
    "clip": ["<dual_clip>", 0],
    "clip_l": "short prompt for CLIP-L",
    "t5xxl": "detailed description for T5XXL",
    "guidance": 3.5
  }
}

clip_l は主要な意味的特徴を捉えます。t5xxl は説明を拡張し、洗練します。簡単に使う場合は、両方の欄に同じプロンプトを入力してください。ガイダンスはこのノードに組み込まれているため、別途 FluxGuidance を使用する必要はありません。

FluxGuidance(代替方法)

CLIPTextEncodeFlux ではなく標準の CLIPTextEncode を使う場合は、ガイダンスを別途適用します。

{
  "class_type": "FluxGuidance",
  "inputs": {
    "conditioning": ["<clip_text_encode>", 0],
    "guidance": 3.5
  }
}
ガイダンス値
シナリオガイダンス備考
短いプロンプト3.5–4.0プロンプトへの追従性が高まります
長い/複雑なプロンプト1.0–1.5創造性の幅が広がります
リアリズム2.5肌の光沢を抑え、ディテールを豊かにします
標準3.5ほとんどの用途でのデフォルト値
ネガティブコンディショニング

Flux は、従来のネガティブプロンプトに対応していません(ガイダンス蒸留済み、CFG=1.0)。ConditioningZeroOut を使用してください。

{
  "class_type": "ConditioningZeroOut",
  "inputs": { "conditioning": ["<positive_cond>", 0] }
}

または、ネガティブ入力に空の CLIPTextEncode を使用してください。

サンプラー設定

Flux.1 Dev SRPO
パラメーター標準備考
steps20範囲:20–28
cfg1.0常に 1.0 — ガイダンスは FluxGuidance を介して適用します
sampler_nameipndmSRPO の作者推奨
schedulerbetaSRPO の作者推奨
guidance3.5CLIPTextEncodeFlux または FluxGuidance を介して設定します
denoise1.0

SRPO の作者は ipndm/beta の組み合わせを推奨しています。標準の Flux 設定(euler/simple)も使用できますが、このファインチューニングモデルでは ipndm/beta のほうが良い結果になります。

Flux 2 Klein 9B(蒸留版)
パラメーター値備考
steps4蒸留モデルでは 4 ステップが最適です
cfg1.0常に 1.0
sampler_nameeuler
schedulersimple
denoise1.0
Flux 2 Klein 9B(ベース/未蒸留)
パラメータ値備考
steps50最高品質
cfg5.0ベースモデル向けのより高い CFG
sampler_nameeuler
schedulersimple
Flux.1 Dev + Turbo LoRA
パラメータ値備考
steps4Turbo 蒸留済み
cfg1.0
sampler_nameeuler
schedulersimple
lora_strength1.0

解像度

アスペクト解像度メガピクセル
正方形1024x10241.0MP
ポートレート 3:4896x11521.0MP
ランドスケープ 4:31152x8961.0MP
ランドスケープ 16:91344x7681.0MP
ポートレート 9:16768x13441.0MP

Flux はネイティブで約 1 メガピクセルで動作します。寸法は 8 の倍数にする必要があります。

プロンプトスタイル

自然言語による記述。SDXL/Illustrious とは異なり、品質タグは不要です。詳細で説明的なプロンプトが最も効果的です。

Good: "A young woman with auburn hair sits at a sunlit cafe in Paris, wearing a cream linen blazer, soft bokeh background, shot on Sony A7III 85mm f/1.4"
Bad: "masterpiece, best quality, 1girl, cafe, paris"

完全なワークフロー: Flux.1 Dev SRPO

{
  "1": { "class_type": "UNETLoader", "inputs": { "unet_name": "flux.1-dev-SRPO-BFL-bf16.safetensors", "weight_dtype": "default" }},
  "2": { "class_type": "DualCLIPLoader", "inputs": { "clip_name1": "t5xxl_fp8_e4m3fn.safetensors", "clip_name2": "clip_l.safetensors", "type": "flux" }},
  "3": { "class_type": "VAELoader", "inputs": { "vae_name": "ae.safetensors" }},
  "4": { "class_type": "CLIPTextEncodeFlux", "inputs": {
    "clip": ["2", 0],
    "clip_l": "<short prompt>",
    "t5xxl": "<detailed prompt>",
    "guidance": 3.5
  }},
  "5": { "class_type": "ConditioningZeroOut", "inputs": { "conditioning": ["4", 0] }},
  "6": { "class_type": "EmptyLatentImage", "inputs": { "width": 896, "height": 1152, "batch_size": 1 }},
  "7": { "class_type": "KSampler", "inputs": {
    "model": ["1", 0],
    "positive": ["4", 0],
    "negative": ["5", 0],
    "latent_image": ["6", 0],
    "seed": 42, "steps": 20, "cfg": 1, "sampler_name": "ipndm", "scheduler": "beta", "denoise": 1
  }},
  "8": { "class_type": "VAEDecode", "inputs": { "samples": ["7", 0], "vae": ["3", 0] }},
  "9": { "class_type": "SaveImage", "inputs": { "images": ["8", 0], "filename_prefix": "flux_srpo" }}
}

完全なワークフロー: Flux 2 Klein 9B(蒸留、4 ステップ)

{
  "1": { "class_type": "UNETLoader", "inputs": { "unet_name": "bigLove_klein1.safetensors", "weight_dtype": "default" }},
  "2": { "class_type": "CLIPLoader", "inputs": { "clip_name": "qwen_3_8b_fp8mixed.safetensors", "type": "flux2" }},
  "3": { "class_type": "VAELoader", "inputs": { "vae_name": "flux2-vae.safetensors" }},
  "4": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["2", 0], "text": "<prompt>" }},
  "5": { "class_type": "ConditioningZeroOut", "inputs": { "conditioning": ["4", 0] }},
  "6": { "class_type": "EmptyFlux2LatentImage", "inputs": { "width": 1024, "height": 1024, "batch_size": 1 }},
  "7": { "class_type": "KSampler", "inputs": {
    "model": ["1", 0],
    "positive": ["4", 0],
    "negative": ["5", 0],
    "latent_image": ["6", 0],
    "seed": 42, "steps": 4, "cfg": 1, "sampler_name": "euler", "scheduler": "simple", "denoise": 1
  }},
  "8": { "class_type": "VAEDecode", "inputs": { "samples": ["7", 0], "vae": ["3", 0] }},
  "9": { "class_type": "SaveImage", "inputs": { "images": ["8", 0], "filename_prefix": "flux_klein" }}
}

Klein は単一の CLIPLoader(DualCLIPLoader ではない)を type: "flux2" とともに使用し、text_encoders/ にある Qwen3-8B テキストエンコーダーを利用します。CLIP ローダーのパスは models/text_encoders/ から解決されます。

Flux-2 固有の注意点は、いずれもローダーではなく KSampler で失敗するため、エラーが誤ったノードを指し示します:

  • type は flux ではなく flux2 でなければなりません。両方の値が CLIPLoader の列挙型に存在するため、flux は問題なく読み込まれ、その後サンプリング中に停止します。
  • EmptyLatentImage ではなく EmptyFlux2LatentImage を使用してください。Flux 2 は異なる潜在チャネル数を使用します。
  • Klein 9B は Qwen3-8B エンコーダー(Comfy-Org/vae-text-encorder-for-flux-klein-9b の qwen_3_8b*)と組み合わせます。似た名前の qwen_3_4b は klein-4b リポジトリに含まれており、4B モデル用です。これらを不一致にすると mat1 and mat2 shapes cannot be multiplied (512x7680 and 12288x4096) が発生します。ここで 7680 = 2560x3(4B の隠れ次元)であり、12288 = 4096x3(8B)です。これは誤ったファイルのエラーではなく、紛らわしい CLIP エラーとして表示されます。

完全なワークフロー: Flux.1 Dev + Turbo LoRA(4 ステップ)

{
  "1": { "class_type": "UNETLoader", "inputs": { "unet_name": "flux.1-dev-SRPO-BFL-bf16.safetensors", "weight_dtype": "default" }},
  "2": { "class_type": "LoraLoaderModelOnly", "inputs": { "model": ["1", 0], "lora_name": "flux2-turbo-lora.safetensors", "strength_model": 1.0 }},
  "3": { "class_type": "DualCLIPLoader", "inputs": { "clip_name1": "t5xxl_fp8_e4m3fn.safetensors", "clip_name2": "clip_l.safetensors", "type": "flux" }},
  "4": { "class_type": "VAELoader", "inputs": { "vae_name": "ae.safetensors" }},
  "5": { "class_type": "CLIPTextEncodeFlux", "inputs": {
    "clip": ["3", 0],
    "clip_l": "<short prompt>",
    "t5xxl": "<detailed prompt>",
    "guidance": 3.5
  }},
  "6": { "class_type": "ConditioningZeroOut", "inputs": { "conditioning": ["5", 0] }},
  "7": { "class_type": "EmptyLatentImage", "inputs": { "width": 1024, "height": 1024, "batch_size": 1 }},
  "8": { "class_type": "KSampler", "inputs": {
    "model": ["2", 0],
    "positive": ["5", 0],
    "negative": ["6", 0],
    "latent_image": ["7", 0],
    "seed": 42, "steps": 4, "cfg": 1, "sampler_name": "euler", "scheduler": "simple", "denoise": 1
  }},
  "9": { "class_type": "VAEDecode", "inputs": { "samples": ["8", 0], "vae": ["4", 0] }},
  "10": { "class_type": "SaveImage", "inputs": { "images": ["9", 0], "filename_prefix": "flux_turbo" }}
}

LoRA サポート

カスタム LoRA(jellyfish など)

UNET と KSampler の間で LoraLoaderModelOnly を使用して Flux LoRA を適用します:

{
  "class_type": "LoraLoaderModelOnly",
  "inputs": {
    "model": ["<unet_or_previous_lora>", 0],
    "lora_name": "<lora_file>.safetensors",
    "strength_model": 1.0
  }
}
Klein LoRA

Klein 9B LoRA は loras/Flux.2 Klein 9B/ サブフォルダーに配置します:

  • klein_slider_detail.safetensors、詳細スライダー LoRA

VRAM の考慮事項

モデルVRAM備考
SRPO BF16 + DualCLIP~24GBRTX 4090 をちょうど使い切ります。BF16 を使用する必要があります — SRPO では FP8 は壊れています
Klein 9B FP8 + Qwen3-8B~20GB4090 に余裕を持って収まります
SRPO + Turbo LoRA~24GBSRPO ベースと同じ
  • 別のモデルファミリーから Flux に切り替える前に、常に clear_vram を実行してください
  • T5XXL は UNET と並ぶ主要な VRAM 消費元です。どちらもサンプリング中はロードされたままになります
  • CLIP-L は小さく(235MB)、無視できる程度です

ヒント

  1. KSampler の CFG は常に 1.0 でなければなりません。すべてのガイダンスは CLIPTextEncodeFlux または FluxGuidance を通じて行います
  2. SRPO には BF16 が必要です。FP8 量子化はこのファインチューニングで壊れた結果を生成することが知られています
  3. 短いプロンプト(1〜2 文)の場合、ガイダンスを 3.5 から 4.0 に上げてください。長いプロンプト(段落)の場合、1.0 から 1.5 に下げてください
  4. Flux は画像内に優れたテキストを生成します。レンダリングするテキストはプロンプト内で引用符で囲んでください
  5. Klein 9B は 4 ステップで最速の選択肢です。迅速な反復に使用し、最終的な品質のために SRPO に切り替えてください

出典

  • 公式: 見つかりませんでした。
  • 実証的: packs/ 内の動作するグラフおよび観察されたレンダリングからのサンプラー値、配線、プロンプトの注意点。ベンダーのプロンプトガイドではありません。

コメント