black-forest-labs/flux
主な特徴
- 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サポート: 効率的なファインチューニング
データフロー・処理フロー
- テキスト入力 → T5/CLIPエンコーダー
- ノイズ初期化 → フローマッチング準備
- 反復デノイジング(4-50ステップ)
- 潜在表現 → VAEデコード → 最終画像
- 安全性フィルター → 透かし埋め込み → 出力
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分野における新たなスタンダードとなる可能性を秘めた、非常に注目すべきプロジェクトです。