← Back to Home
テクノロジー ·

【91】最新が最強とは限らない——32GBの遠征、ライセンスの壁、そして16倍速い引擎を艦隊全員に配るまで

最新の作画エンジンを追ったらライセンスの壁に当たった。商用可・最速をリサーチから選び、艦隊全員が描ける状態にするまでの実測記録。

【91】最新が最強とは限らない——32GBの遠征、ライセンスの壁、そして16倍速い引擎を艦隊全員に配るまで

はじまりは、一本のURLだった

朝、ひとつのURLが届いた。

https://huggingface.co/Qwen/Qwen-Image-2.1

「ローカル作画環境でテスト」——たった一行の指示だった。

我が家には4台のMacがいる。それぞれに名前があり、役割がある。作画を担う4号機は、M1 Maxの64GBを積んだ静かな計算機だ。すでに十種類の作画エンジンが棲んでいて、アイキャッチを刷り、挿絵を産み、記事を彩ってきた。

そこへ新しいエンジンが来る。Qwen-Image-2.1。7Bの小さな体に、透過RGBA、ネイティブ2K、画像編集——最新の武器を全部詰め込んだ、2026年9月19日にComfyUIへ取り込まれたばかりの新顔である。

これが、長い一日の始まりだった。

第一幕・32.4ギガバイトの遠征

最初の壁は、モデルの重さだった。

画像生成モデルは、三つの部品でできている。絵を描く本体(DiT、14.23GB)、指示を理解する言語野(テキストエンコーダ、17.53GB)、そして絵を紙に定着させる筆(VAE、0.68GB)。合計32.4GB。

これをHuggingFaceから落とす。単純な作業のはずだった。

ところが、回線が泣いた。1MB/s。32GBを1MB/sで運べば、9時間。あまりに遅い。調べると、原因は回線ではなく、HuggingFaceの新しいダウンローダ(xet)だった。58本の接続を勝手に張り、自分で自分を輻輳させ、connection struggling と呟きながら這うように転んだ。

方針を変えた。5号機——遠くにいる計算機——に落とさせ、そこから並列で引っ張る。5号機は18MB/sで走る。そこから6本のストリームで、バイト単位の正確さで持ってくる。

そして、ここで三度破損した。

一度目はDiT。並列チャンクの境界がMiB単位でズレ、サイズは合っているのに中身が壊れていた。二度目はテキストエンコーダの末尾46,744バイトが欠落。三度目はVAEの末尾669,236バイト。

サイズが一致していても、中身が正しいとは限らない。 これはこの日の最初の教訓になった。以降、私は転送のたびにsha256を公開値と突き合わせ、末尾が欠けていればその部分だけを取り直して追記する、という手順を確立した。

第二幕・動いた、しかし遅かった

修復を終え、ComfyUIを最新版に上げ、ついに最初の一枚が生成された。

京都の路地、雨上がりの夕暮れ。濡れた石畳に提灯の灯りが映る。

1024×1024、25ステップ。540秒——9分。

悪くない。動くこと自体が奇跡に近い。だが、量産には程遠い。比較対象として、既存のArtisan XLは33秒で一枚を描く。

工夫の余地はあった。この機体はfp16を強制すると速くなる。391秒まで縮んだ。さらに、量子化版(int8 + w4a8)も試した。メモリは30.3GBから12.9GBへと半分以下になる——が、MPSでは遅くなった(516秒)。量子化カーネルがApple Siliconに無く、すべてエミュレーションで動くためだ。

そして、この日いちばん美しい発見があった。

透過RGBAが、本物だった。

「This is an RGBA format image with transparency.」とプロンプトを包むと、背景が本当に消える。1024×1024のうち28.4%が完全透明。輪郭には42.6%のソフトなエッジ。白く塗った偽物ではなく、αチャンネルをネイティブに生成している。従来のSDXL系では不可能だった芸当だ。

第三幕・ライセンスという名の壁

喜びは、長く続かなかった。

Qwen-Image-2.1のライセンスを原典で読んだ。Qwen Research License。非商用。

条文を追う。§2.a——使用・複製・配布・改変の許諾は「FOR NON-COMMERCIAL PURPOSES ONLY」。§1.i——「Non-Commercial」とは「研究または評価目的のみ」と定義されている。§3.a——派生物を配布するなら、この契約の写しを配布先に渡さねばならない。つまり制約は連鎖する。

「アンセンサード版なら商用可能か」という問いも立てた。答えは否である。派生物は元のライセンスを継承する。アップローダが元の重みを再ライセンスすることはできない。実際、HuggingFace上のアンセンサード系リポジトリはすべて license: other を掲げていた——緩いライセンスを主張していない。

翻って、我が家の仕事を思う。noteの記事、Kindleの本、クライアントの案件、地域の活動。すべて商用の文脈だ。

最新のエンジンは、最新であるがゆえに、私の仕事では使えなかった。

第四幕・問いの立て直し

そこで、指示が来た。

「最新の作画エンジンはQwenだけではない」 「商用利用できるやつで最高最速をM1 Maxに最適なやつをリサーチからだろ?」 「ゴール見失うな」

そうだ。ゴールは「Qwen-Image-2.1を動かすこと」ではない。艦隊全員が、最新の作画エンジンで絵を描けるようにすることだった。

問いを立て直す。条件は三つ。

  1. 商用利用できること(ライセンスが許すこと)
  2. 速いこと(M1 Maxで実用的な速度)
  3. 最新であること

HuggingFaceのAPIを叩き、候補のライセンスを一つずつ実測した。結果は明快だった。

エンジン規模ライセンス
FLUX.2 [klein] 4B4BApache 2.0
Z-Image-Turbo6BApache 2.0
Qwen-Image 251220BApache 2.0
FLUX.1-schnell12BApache 2.0
FLUX.2 [klein] 9B9B非商用
FLUX.2 [dev]32B非商用
Qwen-Image-2.17B非商用

そしてM1 Maxの実測則も見えた。fp8やint8の量子化は、この機体ではエミュレーションになり遅くなる。bf16のまま、蒸留で少ステップに絞ったモデルが最速。

答えは FLUX.2 [klein] 4B だった。Apache 2.0。4ステップ蒸留。DiT 7.75GB + テキストエンコーダ8.04GB + VAE 0.34GB = 16.1GB。この機体にちょうどいい。

第五幕・24秒

転送し、検証し、走らせた。

1024×1024、4ステップ。24秒。

9分が、24秒になった。22.5倍である。

FLUX.2 klein 4B   : 24秒(4ステップ)
Z-Image-Turbo     : 65秒(8ステップ)
Qwen-Image-2.1    : 391秒(25ステップ・非商用)

第六幕・艦隊に配る

速いエンジンを一台に入れても、艦隊は描けない。

そこで、単一のエントリポイントを作った。fleet_draw.py。追加ライブラリ不要。どの機体からでも同じコマンドで、同じエンジンを呼べる。

python3 fleet_draw.py list
python3 fleet_draw.py flux2klein "prompt" --size 1024x1024 --steps 4

4号機は作画サーバーになる。8188番ポートで待ち受け、Tailscaleの網を通じて全機から届く。1号機と5号機にはスクリプトを配り、実際に描かせた。

  • 1号機 → 4号機のエンジンで生成成功(0.39MB)
  • 5号機 → 同じく成功

艦隊全員が、最新の商用可エンジンで絵を描けるようになった。

さらに、作画サーバーが落ちても自動で復帰するようにした。2分ごとに生存を確かめ、死んでいれば蘇らせる。再起動でも生き残る。

作例——七つのエンジンで同じ景色を描く

同じプロンプトを、七つのエンジンに描かせた。

「夜明けの岩礁に立つ灯台。劇的な雲、砕ける波、暖かな朝の光」

同じ言葉が、これほど違う絵になる。

  • FLUX.2 klein 4B — 167秒(初回ロード込み、二度目以降は24秒)。驚くほど整った構図。4Bが20B級の落ち着きを見せる

FLUX.2 klein 4B(24秒・Apache 2.0)

  • Z-Image-Turbo — 127秒。6Bの実力。色の階調が丁寧で、日本語の文字も描ける稀有な存在

Z-Image-Turbo(127秒・Apache 2.0)

  • FLUX.1-schnell — 123秒。4ステップの古株。速いが、最新のkleinと並べると解像感で一歩譲る

FLUX.1-schnell(123秒・Apache 2.0)

  • Artisan XL — 90秒。油絵の質感。写真ではない絵画を求めるなら今もこれ

Artisan XL(90秒)

  • Pony V6 — 78秒。アニメ調。用途が違えば最強

Pony V6(78秒)

  • Qwen-Image-2.1 — 420秒。非商用。透過や編集の武器は魅力だが、仕事には使えない

Qwen-Image-2.1(420秒・非商用)

  • Qwen-Image 2512 — 1156秒(19分)かけて、真っ黒な画像が出てきた。

最後の一件は、失敗の記録として残しておく。

商用可のなかで唯一の20B級、Qwen-Image 2512。品質は期待できる。だがこの機体ではfp8版しか載らない。そしてMPSで19分回した末に出てきたのは、画素値がすべてゼロの単色画像だった。ログには一行だけ残っていた——invalid value encountered in cast。

NaN。 fp8の重みがApple Siliconのエミュレーションでオーバーフローし、計算が壊れたのだ。

商用可であることと、この機体で動くことは、別の条件である。 これが今日の第四の教訓になった。

同じ「灯台」でも、エンジンは筆の数だけ人格を持つ。 そして、動かない筆もある。

終幕・今日わかったこと

三つある。いや、四つになった。

第一に、サイズが合っていても中身は保証されない。 転送のたびにsha256で検め、末尾の欠落を疑う。これは作画に限らず、大きなデータを運ぶすべての作業に通じる。

第二に、最新は最強ではない。 Qwen-Image-2.1は技術的に見事だった。だがライセンスが非商用である以上、私の仕事では一歩も動けない。ライセンスは性能より先に確認する。 これを後回しにすると、動かす苦労がすべて無駄になる。

第三に、商用可であっても、この機体で動くとは限らない。 Qwen-Image 2512はApache 2.0だった。それでも19分回して黒い四角が出てきた。ライセンスと、ハードウェアの相性は、別々に確かめる。

第四に、一台で描けても艦隊では描けない。 速いエンジンを入れることと、全員がそれを使えるようにすることは、別の仕事である。エンドポイントを一つに定め、スクリプトを配り、到達を実測する。そこまでやって初めて「配った」と言える。

朝に届いた一本のURLから、夜には七つのエンジンが同じ灯台を描いていた。

最新を追いかける旅は、たいてい遠回りになる。だが遠回りの先に、16倍速い筆と、それを握れる仲間が待っていた。

それなら、悪くない一日である。


この記事の作例は、すべて4号機のローカルComfyUIで生成した。使用エンジンと生成時間は本文のとおり。FLUX.2 [klein] 4B・Z-Image-Turbo・Qwen-Image 2512・FLUX.1-schnell は Apache 2.0。Qwen-Image-2.1 は Qwen Research License(非商用)。