3 ポイント 投稿者 GN⁺ 2024-10-15 | 1件のコメント | WhatsAppで共有
  • Replicateで FLUX の実行速度 が大幅に向上し、最適化コードまで公開されたことで、実装の確認やカスタム拡張が可能になった
  • エンドツーエンド測定基準で FLUX.1 [schnell] は 512x512・4 steps で 0.29秒、1024x1024・4 steps で 0.72秒まで短縮された
  • 速度改善は flux-fp8-api ベースの最適化、torch.compile、nightly Torch の高速な CuDNN attention カーネル、新しい同期 HTTP API を組み合わせた結果
  • flux-fp8-api量子化 は出力をわずかに変えるが、品質への影響は小さく、必要なら go_fast=false で無効化できる
  • Replicate は FLUX の改善内容を公開し、AI Compiler Study Group や研究者たちとともに 高速なオープンソース FLUX を作る方向で協力している

FLUX の実行速度と公開デモ

  • Replicate で FLUX モデルの実行がさらに高速化され、最適化実装は オープンソース として公開された
  • 米国西部で Python クライアントを使って測定したエンドツーエンドの速度は次のとおり
  • FLUX.1 [schnell] のデモはリアルタイム入力方式で提供されており、アプリ全体とソースコードも確認できる

最適化手法と品質制御

  • Replicate の多くのモデルはコミュニティが貢献しているが、FLUX モデルは Black Forest Labs と協力して維持されている
  • 速度改善には 2 つの取り組みが適用された
    • Alex Redden の flux-fp8-api を出発点とし、torch.compile と nightly Torch ビルドの高速な CuDNN attention カーネル を使用
    • Replicate の新しい 同期 HTTP API を追加し、すべての画像モデルがより高速に動作するようにした
  • flux-fp8-api量子化 はモデル出力をわずかに変えるが、品質への影響は小さかった
    • FLUX.1 [schnell] と FLUX.1 [dev] で数千件のプロンプト出力を比較するツールがあり、比較結果を直接見られる
    • go_fast 入力を false に設定すると、その最適化を無効化できる
  • モデル提供者が品質に影響する最適化を適用しているか不明な場合が多いため、Replicate は最適化手法を公開し、ユーザーが無効化できるようにしている

オープンソースコードと活用ルート

1件のコメント

 
GN⁺ 2024-10-15
Hacker News のコメント
  • テキストから画像へのモデルは非効率に感じる。テキスト→シーングラフ→意味的にセグメント化された画像→最終画像のように段階を分けることは可能で、そのほうが良いのではないかと思う
    各段階を別々に学習してモジュール化できるし、新しいプロンプトの出力で丸ごと作り直す代わりに、画像をもっと簡単に編集できそうだ。そうすれば「オブジェクト x がオブジェクト y の隣にあり、その上に foo という文字がある」といった生成がはるかに簡単になり、アートスタイルや写実性のレベルは、プロンプト遵守とは切り離された最終レンダリングモデルに任せられる
    ビデオゲームの出力を向上させる video2video や、フレームごとの img2img モデルに近い感じだ
    https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
    https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...

    • 一般に、この手のアプローチはニューラルネットワークベースのモデルでは何度も失敗することが示されてきた
      a→b に進むニューラルネットと b→c に進むニューラルネットを学習できるなら、たいていその組み合わせは a→c に直接進む、より単純なニューラルネットに置き換えられる。a を b に変換する過程で失われる情報があり得るので筋が通る。単一のニューラルネットなら、c を作るのに必要な a の関連情報が上位層へ渡ることを保証できる
    • これは画像認識などの分野で長く失敗してきたが、最終的にはより大きく深い行列で押し切って解決したアプローチと本質的に同じではないかと思う
      特徴を抽出して人間のように推論するやり方はもっともらしいが、結局のところ、コンピュータが純粋に行うパターンマッチングを拡張するほうが簡単だったように見える
    • AIアートはモジュール式のアプローチになるといいと思う。キャラクター、背景、スタイル、カメラワークをそれぞれ別の段階で生成するような形だ
      すべてを一度に説明して、結果が気に入ることを願うやり方は筋が通らない
    • 拡散モデルは本質的にはそれをやっている。ただし「シーングラフ」と「全体画像」の間に明確な境界がないだけだ
      ノイズから始めて、徐々により多くのディテールを追加していく
    • ここには、画像はオブジェクトの集合であるという誤った前提がある。画像は必ずしもそうではない
      私は凍りついた青緑色の桃の産毛の写真が欲しい
  • 非商用ライセンスはオープンソースではない。元の著作権者がメンテナンスをやめた場合、他の人が引き継げないか、ただ働きの奴隷のように働かなければならないからだ
    オープンソースの核心は、元の作者が作業をやめたときに何が可能かにある。オープンソースは誰にでも開発を続けるライセンスを与え、それには当然、対価を得られる能力も含まれる。この側面が抜けているなら、オープンソースと呼ぶべきではない
    FLUX.1 [schnell] だけがオープンソース(Apache2)で、FLUX.1 [dev] は非商用ライセンスだ

    • FLUX.1-schnell モデルをファインチューニングし、蒸留を取り除いた OpenFLUX.1 がある。OpenFLUX.1 は Apache 2.0 ライセンスだ
      https://huggingface.co/ostris/OpenFLUX.1/
    • オープンソースとは、ソースが見えて検査可能という意味ではないのか? ソースを見られるようにしているクローズドソースアプリは知らない
  • FLUX.schnell を手軽に試したいなら、プロンプトを Pollinations の URL に入れればよい
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
    https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
    速度は本当に驚異的だ。L40S GPU 3枚だけで、ユーザー向け画像を30分ごとに8000枚生成している。ちなみに私は Pollinations 側の人間だ

    • ここでの「だけ」という表現は、ほとんどの人にはかなり高価に聞こえる
  • Fluxで一番気に入っている作業は、Substack用の白背景画像を作ること。後に続くテキストが優れていて、アートワークを通じて視覚的にも何かを伝えられる
    [1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...

    • その例は、アーティストたちが怒る理由をよく示していると思う。LLMが特定のアーティストの固有のスタイルを明らかに模倣していて、その結果、そのアーティストは有料の仕事を失うことになる
      これについて明確な立場が自分にあるのかは分からない。技術は進み続けるから。それでも興味深くはある
    • プロンプトを共有してもらえる?
  • Fluxはローカルホスティングの生成システムの中では、プロンプト遵守の面で最有力候補だが、どこにでも現れる浅い被写界深度が、いら立つほど取り除きにくい

    • 芸術的な画像に最適化されているように見える?
  • たった今Midjourneyのサブスクリプションを解約した。自分がやろうとしている作業の基準では、かなり遅れを取っている感じがする
    ReplicateとIdeogramを使うこともかなり悩んだ

    • 最近は自分も、物珍しさを超える価値があるのか疑問に思う。別のツールに乗り換えたのか、それともそうしたツールにもう価値を感じなくなったのか気になる
    • Midjourneyには独特の雰囲気があり、手・足・文字に弱いので使ったことがない
      Emadが失脚してからまだ1年も経っていないのに、ローカルのオープンソースで、より優れたモデルが出てきたのはすごいことだ。こうした企業の堀がどれほど浅いかを示しているし、彼らが莫大な現金を燃やしてくれるおかげで、こちらは恩恵を受けているわけだ
  • FLUX 1.1 が何で学習されたのか知っている人はいる? pro モデルで「カメラのファイル名 + 簡単な単語」という2語のプロンプトでほぼ100枚生成したところ、全部が誰かのスマホ写真のように見えた。
    テキストがなければ、AI画像だとは考えもしなかったレベル。時々、切り取られた写真のように見えたり、食べ物の写真、散らかった食卓やアパートが多く出てきたりする。
    公開 Facebook 投稿、Snapchat、Vkontakte をスクレイピングしたのか? OneDrive や Dropbox の個人画像を買ったのか? 2つ目の単語に女性名を入れると、ほぼ必ず NSFW フィルターが作動する。なので学習セットにかなりプライベートな画像が入っているのではないかと推測している。
    自分で見てほしい。自動再生の音楽に注意。
    people: https://vm.tiktok.com/ZGdeXEhMg/
    food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
    signs: https://vm.tiktok.com/ZGdeXoAgy/
    [edit] こういう画像を見ていると、誰かの私的な写真を見ているようで居心地が悪い。「IMG00012.JPG forbid」のようなプロンプトには、こうした画像を説明できるほど十分な誘導情報がないので、全部学習データから来ているとしか考えられない。
    FLUX 1.1 pro が、以前の公開モデルと根本的に違う学習セットを使ったとは思っていない。ただ、こういう生成に対してより脆弱なのかもしれない。
    感覚が本当に奇妙だ。なので改めて聞くけれど、これらのモデルに使われた学習データについて何か情報はある?

    • flux だけではなく、Stable Diffusion を含む他のモデルでも同じことができる。
      下の Reddit 投稿2つが、このファイル名の慣例について少し扱っている。
      DSC_0001-9999.JPG - Nikon のデフォルト
      DSCF0001-9999.JPG - Fujifilm のデフォルト
      IMG_0001-9999.JPG - 一般的な画像
      P0001-9999.JPG - Panasonic のデフォルト
      CIMG0001-9999.JPG - Casio のデフォルト
      PICT0001-9999.JPG - Sony のデフォルト
      Photo_0001-9999.JPG - Android の写真
      VID_0001-9999.mp4 - 一般的な動画
      さらに 3Dソフトウェアのファイル名版も作った。すべて試したが、効果があったのは一部だけだった。
      Autodesk Filmbox (FBX): my_model0001-9999.fbx
      Stereolithography (STL): Model0001-9999.stl
      3ds Max: 3ds_Scene0001-9999.max
      Cinema 4D: Project0001-9999.c4d
      Maya (ASCII): Animation0001-9999.ma
      SketchUp: SketchUp0001-9999.skp
      [1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
      [2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_...
    • 生の学習データセットが原因である可能性は非常に低いと思う。自分は逆の問題を経験した。「background」トークンがプロンプト内でどう使われているかにほとんど関係なく、画像全体に強いぼかしを入れてしまった一方で、プロンプト解釈はずっと良くなったのが興味深かった。
      テキストに対する強い補正とあわせて、モデルに fluxらしい画像を好ませるための多くのチューニングを行った可能性が高い。
      どんな過程をたどったにせよ、特定の用語が入るだけで LoRA より強く作用するほど、モデルを過敏にしてしまったということだ。
      見せてくれた写真は、全体の文脈では特に注目すべきものではない。デフォルトの画像形式を外れて超写実的な結果を得るのに、大した努力は要らない。個人的には、彼らが超写実性を隠そうとしているというより、人々が望む画像にデフォルトを合わせようとしているのに近いと思う。
    • 自分も同じことを経験して、本当に奇妙だった。最初は良い結果が出ていたのに、その後は崩れた。
      なぜ Flux への批判的なコメントが全部ダウンボートされたりフラグを付けられたりするのか分からないし、かなり変だ。
  • 同程度の品質だと主張して比較ページを示しているが、まずディテールがはるかに少ないのは非常に明らか。さらに悪いのは「曇りの日、緑の谷を見下ろす山道のカーブを曲がる黄色の2017年式 Corvette の3/4前面ビュー」の例だ。
    元のモデルは前面を見せているのに、速度版は Corvette の後面を見せている。まったく別の絵だ。似ているのではなく、際立って違う。
    https://flux-quality-comparison.vercel.app/

  • Meta モデルのスレッドが上がるたびに、本物のオープンソースではないという訂正が大量に来る。
    それなら FLUX についても明確にすべきだ。公開されているモデルのうちオープンソースなのは FLUX schnell だけで、しかもプロプライエタリモデルから蒸留されたものなので、扱いがはるかに難しい。
    皮肉なことに、Meta の Llama モデルは実用上の観点でははるかに許容的なライセンスで、Meta 自身のオープンソースフレームワークや多数のサードパーティツールでファインチューニングするのも非常に簡単だ。一方で FLUX schnell はそうではない。
    オープンソースコミュニティは、Schnell の人為的な制約を修正しようとする OpenFLUX や類似プロジェクトを中心に力を結集すべきだと思う: https://huggingface.co/ostris/OpenFLUX.1

  • 「Replicateのすべての画像モデルをずっと高速にする新しい同期HTTP APIを追加した」とありますが、なぜ同期だと速いのでしょう?クリックして見に行きました
    https://replicate.com/changelog/2024-10-09-synchronous-api
    「クライアントライブラリとAPIがモデル実行をずっと高速にするようになりました。特にファイルが返される場合にそうです」
    …ありがたいのですが?
    開発者としてのもどかしさを共有しているだけです。記憶に残り、私たちが支持者になることを望むなら、もう少しうまく説明してほしいです

    • 2つ目の段落に、文字どおり理由が説明されています。ファイルデータを受け取るために2回目のリクエストが必要なURLを返す代わりに、レスポンス内で実際のファイルデータを返します
    • その通りです。この部分は明確ではありませんでした。以前は何をする必要があったのかを説明する段落をもう1つ追加しました