black-forest-labs/flux

⭐ 22,921 🍴 1,631 Python📄 Apache License 2.0(コード)、モデルは個別ライセンス GitHubで見る →

主な特徴

  • 120億パラメータの大規模トランスフォーマーモデル
  • 優れたテキストレンダリング能力(画像内の文字生成)
  • 高い解剖学的正確性(手、顔、体の描写)
  • 多様なモデルバリエーション(高速版、高品質版、編集特化版)
  • 包括的な安全対策(NSFW検出、著作権保護)
  • TensorRT対応による高速推論
  • 柔軟なライセンス体系(商用利用可能なSchnell、研究用のDev)

リポジトリ解析: black-forest-labs/flux

基本情報

  • リポジトリ名: black-forest-labs/flux
  • 主要言語: Python
  • スター数: 22,921
  • フォーク数: 1,631
  • 最終更新: 活発に更新中
  • ライセンス: Apache License 2.0(コード)、モデルは個別ライセンス
  • トピックス: AI, image-generation, text-to-image, diffusion-models, machine-learning

概要

一言で言うと

FLUXは、Black Forest Labsが開発した最先端の画像生成AIモデルファミリーで、120億パラメータの整流フロートランスフォーマーを使用し、テキストから画像への変換、画像編集、構造制御など多様な画像生成タスクに対応します。

詳細説明

FLUXは、Stable Diffusionの元開発チームが設立したBlack Forest Labsによる次世代画像生成モデルです。rectified flow transformerという新しいアーキテクチャを採用し、従来のモデルを大幅に上回る品質と機能を実現しています。特に、テキストレンダリング、解剖学的正確性(手や顔)、プロンプトの忠実な再現において業界最高水準の性能を誇ります。モデルは用途に応じて複数のバリエーションが用意されており、高速生成から高品質生成、画像編集まで幅広いニーズに対応しています。

主な特徴

  • 120億パラメータの大規模トランスフォーマーモデル
  • 優れたテキストレンダリング能力(画像内の文字生成)
  • 高い解剖学的正確性(手、顔、体の描写)
  • 多様なモデルバリエーション(高速版、高品質版、編集特化版)
  • 包括的な安全対策(NSFW検出、著作権保護)
  • TensorRT対応による高速推論
  • 柔軟なライセンス体系(商用利用可能なSchnell、研究用のDev)

使用方法

インストール

前提条件

  • Python 3.10以上
  • PyTorch 2.6.0
  • CUDA対応GPU(推奨)
  • 最小6GB VRAM(量子化使用時)、推奨24GB+ VRAM

インストール手順

# 方法1: 標準インストール(ソースから)
cd $HOME && git clone https://github.com/black-forest-labs/flux
cd $HOME/flux
python3.10 -m venv .venv
source .venv/bin/activate
pip install -e ".[all]"

# 方法2: TensorRTサポート付きインストール
cd $HOME && git clone https://github.com/black-forest-labs/flux
enroot import 'docker://$oauthtoken@nvcr.io#nvidia/pytorch:25.01-py3'
enroot create -n pti2501 nvidia+pytorch+25.01-py3.sqsh
enroot start --rw -m ${PWD}/flux:/workspace/flux -r pti2501
cd flux
pip install -e ".[tensorrt]" --extra-index-url https://pypi.nvidia.com

# 方法3: Diffusersライブラリ経由
pip install git+https://github.com/huggingface/diffusers.git

基本的な使い方

Hello World相当の例

# 最小限のテキストから画像生成(高速版)
python -m flux t2i --name flux-schnell \
  --prompt "a cute cat saying hello world" \
  --width 1024 --height 1024

# インタラクティブモード
python -m flux t2i --name flux-schnell --loop
# プロンプトを入力: a beautiful sunset over mountains

実践的な使用例

# Pythonスクリプトでの使用例
import torch
from flux.util import load_flow_model, load_ae, load_t5, load_clip
from flux.sampling import denoise, get_noise, prepare, unpack

# モデルの読み込み
model_name = "flux-schnell"
model = load_flow_model(model_name, device="cuda")
ae = load_ae(model_name, device="cuda")
t5 = load_t5(device="cuda")
clip = load_clip(device="cuda")

# テキストエンコーディング
prompt = "a futuristic city with flying cars"
x = get_noise(1, 1024, 1024, device="cuda", seed=42)
inp = prepare(t5, clip, x, prompt=prompt)

# 画像生成
x = denoise(model, **inp, timesteps=4)
x = unpack(x, 1024, 1024)
x = ae.decode(x)

# 画像の保存
from torchvision import transforms
img = transforms.ToPILImage()(x[0].cpu())
img.save("output.png")

高度な使い方

# 画像編集(Kontextモデル)
python -m flux kontext \
  --img_cond_path original_image.jpg \
  --prompt "change the car color to red" \
  --track_usage

# 構造制御付き生成(Canny Edge)
python -m flux control --name flux-canny-dev \
  --control_image edge_map.png \
  --prompt "a detailed architectural drawing"

# インペインティング(部分的な画像修正)
python -m flux fill \
  --img_cond_path image.jpg \
  --img_mask_path mask.png \
  --prompt "a wooden table"

# 画像バリエーション生成(Redux)
python -m flux redux --name flux-dev \
  --img_cond_path reference.jpg \
  --prompt "similar style but different composition"

ドキュメント・リソース

公式ドキュメント

  • README.md: 基本的な使用方法とインストール手順
  • docs/text-to-image.md: テキストから画像生成の詳細ガイド
  • docs/image-editing.md: 画像編集機能の使用方法
  • docs/structural-conditioning.md: 構造制御(Canny/Depth)の説明
  • docs/fill.md: インペインティング・アウトペインティングガイド
  • model_cards/: 各モデルの詳細仕様と性能指標

サンプル・デモ

  • demo_gr.py: Gradioベースのウェブデモ(基本的な画像生成)
  • demo_st.py: Streamlitデモ(テキストから画像、画像から画像)
  • demo_st_fill.py: インペインティング専用のStreamlitデモ

チュートリアル・ガイド

  • CLIコマンドリファレンス
  • インタラクティブモードの使用方法
  • TensorRT最適化ガイド
  • 商用ライセンス使用時の設定方法
  • Diffusersライブラリとの統合方法

技術的詳細

アーキテクチャ

全体構造

FLUXは、rectified flow transformerと呼ばれる新しいアーキテクチャを採用。画像とテキストのトークンを並列処理する二重ストリーム構造と、それらを統合する単一ストリーム構造を組み合わせています。

ディレクトリ構成

flux/
├── src/
│   └── flux/
│       ├── model.py         # コアモデル実装
│       ├── sampling.py      # サンプリングアルゴリズム
│       ├── util.py          # ユーティリティ関数
│       ├── math.py          # 数学的操作
│       ├── content_filters.py  # 安全性フィルター
│       ├── cli.py           # CLIインターフェース
│       ├── cli_control.py   # 構造制御CLI
│       ├── cli_fill.py      # インペインティングCLI
│       ├── cli_kontext.py   # 画像編集CLI
│       └── cli_redux.py     # バリエーション生成CLI
├── docs/                    # ドキュメント
├── model_cards/            # モデル仕様書
├── model_licenses/         # ライセンス情報
└── assets/                 # サンプル画像

主要コンポーネント

  • Flux: メイントランスフォーマーモデル

    • 場所: src/flux/model.py
    • 構成: DoubleStreamBlock × 19 + SingleStreamBlock × 38
    • パラメータ: 120億(隠れ層3072、ヘッド数24)
  • AutoEncoder (VAE): 画像エンコード/デコード

    • スケールファクター: 0.3611
    • シフトファクター: 0.1159
    • 潜在空間: 16チャンネル
  • Text Encoders: テキスト理解

    • T5-XXL: セマンティック理解用
    • CLIP: 画像-テキストアライメント用

技術スタック

コア技術

  • 言語: Python 3.10+
  • フレームワーク: PyTorch 2.6.0
  • 主要ライブラリ:
    • transformers: T5/CLIPエンコーダー
    • safetensors: モデル保存形式
    • fire: CLIフレームワーク
    • opencv-python: 画像処理

開発・運用ツール

  • 最適化: TensorRT(NVIDIA GPU用)
  • ウェブデモ: Gradio、Streamlit
  • 統合: Diffusers、ComfyUI対応
  • 安全性: NSFW検出、著作権フィルター

設計パターン・手法

  • Flow Matching: 連続時間フローマッチングによるデノイジング
  • Rotary Position Embeddings (RoPE): 効率的な位置エンコーディング
  • Modulation Mechanism: タイムステップとガイダンスによる制御
  • LoRAサポート: 効率的なファインチューニング

データフロー・処理フロー

  1. テキスト入力 → T5/CLIPエンコーダー
  2. ノイズ初期化 → フローマッチング準備
  3. 反復デノイジング(4-50ステップ)
  4. 潜在表現 → VAEデコード → 最終画像
  5. 安全性フィルター → 透かし埋め込み → 出力

API・インターフェース

公開API

CLIインターフェース

  • 目的: コマンドラインからの画像生成
  • 使用例:
# 基本的な画像生成
python -m flux t2i --name flux-schnell --prompt "sunset" --seed 42

# インタラクティブモード(複数生成)
python -m flux t2i --name flux-dev --loop

プログラマティックAPI

  • 目的: Pythonスクリプトからの制御
  • 使用例:
from flux.util import load_flow_model
model = load_flow_model("flux-schnell", device="cuda")
# カスタムパイプラインの構築

設定・カスタマイズ

設定ファイル

# 環境変数による設定
export HF_TOKEN="your_huggingface_token"  # モデルダウンロード用
export BFL_API_KEY="your_api_key"         # 商用利用追跡用

# TensorRTモデルパス
export FLUX_TENSORRT_PATH="/path/to/tensorrt/models"

拡張・プラグイン開発

  • ModelSpecデータクラスによる新モデル定義
  • カスタムエンコーダーの実装
  • 新しいサンプリングアルゴリズムの追加
  • コンテンツフィルターのカスタマイズ

パフォーマンス・スケーラビリティ

パフォーマンス特性

  • Schnell(高速版): 1-4ステップで生成
  • Dev(高品質版): 50ステップで最高品質
  • TensorRT最適化: 2-4倍の高速化
  • 量子化サポート: NF4、FP8で省メモリ動作

スケーラビリティ

  • バッチ処理対応
  • マルチGPU推論(データ並列)
  • モデルオフローディング(CPU-GPU間)
  • 動的解像度調整

制限事項

  • 高いGPUメモリ要求(最小6GB、推奨24GB+)
  • 商用利用時のライセンス制限(Devモデル)
  • リアルタイム生成は困難(最速でも数秒)

評価・所感

技術的評価

強み

  • 業界最高水準の画像品質
  • 優れたテキストレンダリング能力
  • 包括的な安全対策
  • 多様なモデルバリエーション
  • 活発な開発とエコシステム
  • 元Stable Diffusionチームの技術力

改善の余地

  • テストスイートの欠如
  • ドキュメントの一部不足
  • 高いハードウェア要求
  • ライセンスの複雑さ

向いている用途

  • 高品質な画像生成が必要なクリエイティブワーク
  • マーケティング・広告素材の作成
  • ゲーム・エンターテインメントのアセット生成
  • AIアート・実験的な創作活動
  • 研究・教育目的での使用

向いていない用途

  • リアルタイム生成が必要なアプリケーション
  • 低スペックハードウェアでの運用
  • 事実に基づく情報の視覚化
  • 医療診断など高い正確性が必要な用途

総評

FLUXは、現在利用可能な画像生成AIの中で最も先進的なモデルの一つです。特に、テキストの正確なレンダリング、解剖学的な正確性、プロンプトへの忠実性において、既存のモデル(Stable Diffusion、DALL-E 3)を大きく上回る性能を示しています。

120億パラメータという大規模なモデルサイズと、rectified flow transformerという革新的なアーキテクチャにより、これまでにない品質の画像生成を実現しています。また、複数のモデルバリエーション(高速版、高品質版、編集特化版など)を提供することで、様々なユースケースに対応しています。

一方で、高いハードウェア要求、複雑なライセンス体系、テストの欠如などの課題もあります。しかし、Black Forest Labsの技術力と3100万ドルの資金調達を背景に、これらの課題は今後改善されていくことが期待されます。総合的に見て、FLUXは画像生成AI分野における新たなスタンダードとなる可能性を秘めた、非常に注目すべきプロジェクトです。